James Moger
2011-06-01 a3bde69e9b3f3cc6212b0cd5fd7310b6a3301d8c
src/com/gitblit/wicket/WicketUtils.java
@@ -1,7 +1,23 @@
/*
 * Copyright 2011 gitblit.com.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.gitblit.wicket;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
@@ -14,9 +30,12 @@
import org.apache.wicket.resource.ContextRelativeResource;
import org.eclipse.jgit.diff.DiffEntry.ChangeType;
import org.eclipse.jgit.lib.Constants;
import org.wicketstuff.googlecharts.AbstractChartData;
import org.wicketstuff.googlecharts.IChartData;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.models.Metric;
import com.gitblit.utils.JGitUtils.SearchType;
import com.gitblit.utils.StringUtils;
import com.gitblit.utils.TimeUtils;
@@ -102,7 +121,8 @@
         return newImage(wicketId, "file_h_16x16.png");
      } else if (filename.endsWith(".sln")) {
         return newImage(wicketId, "file_vs_16x16.png");
      } else if (filename.endsWith(".csv") || filename.endsWith(".xls") || filename.endsWith(".xlsx")) {
      } else if (filename.endsWith(".csv") || filename.endsWith(".xls")
            || filename.endsWith(".xlsx")) {
         return newImage(wicketId, "file_excel_16x16.png");
      } else if (filename.endsWith(".doc") || filename.endsWith(".docx")) {
         return newImage(wicketId, "file_word_16x16.png");
@@ -120,7 +140,7 @@
         return newImage(wicketId, "file_settings_16x16.png");
      }
      List<String> mdExtensions = GitBlit.self().settings().getStrings(Keys.web.markdownExtensions);
      List<String> mdExtensions = GitBlit.getStrings(Keys.web.markdownExtensions);
      for (String ext : mdExtensions) {
         if (filename.endsWith('.' + ext.toLowerCase())) {
            return newImage(wicketId, "file_world_16x16.png");
@@ -168,40 +188,50 @@
      return new PageParameters("r=" + repositoryName + ",h=" + objectId);
   }
   public static PageParameters newPathParameter(String repositoryName, String objectId, String path) {
   public static PageParameters newPathParameter(String repositoryName, String objectId,
         String path) {
      if (StringUtils.isEmpty(path)) {
         return newObjectParameter(repositoryName, objectId);
      }
      return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",f=" + path);
   }
   public static PageParameters newLogPageParameter(String repositoryName, String objectId, int pageNumber) {
   public static PageParameters newLogPageParameter(String repositoryName, String objectId,
         int pageNumber) {
      if (pageNumber <= 1) {
         return newObjectParameter(repositoryName, objectId);
      }
      return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",page=" + pageNumber);
   }
   public static PageParameters newHistoryPageParameter(String repositoryName, String objectId, String path, int pageNumber) {
   public static PageParameters newHistoryPageParameter(String repositoryName, String objectId,
         String path, int pageNumber) {
      if (pageNumber <= 1) {
         return newObjectParameter(repositoryName, objectId);
      }
      return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",f=" + path + ",page=" + pageNumber);
      return new PageParameters("r=" + repositoryName + ",h=" + objectId + ",f=" + path
            + ",page=" + pageNumber);
   }
   public static PageParameters newBlobDiffParameter(String repositoryName, String baseCommitId, String commitId, String path) {
      return new PageParameters("r=" + repositoryName + ",h=" + commitId + ",f=" + path + ",hb=" + baseCommitId);
   public static PageParameters newBlobDiffParameter(String repositoryName, String baseCommitId,
         String commitId, String path) {
      return new PageParameters("r=" + repositoryName + ",h=" + commitId + ",f=" + path + ",hb="
            + baseCommitId);
   }
   public static PageParameters newSearchParameter(String repositoryName, String commitId, String search, SearchType type) {
   public static PageParameters newSearchParameter(String repositoryName, String commitId,
         String search, SearchType type) {
      if (StringUtils.isEmpty(commitId)) {
         return new PageParameters("r=" + repositoryName + ",s=" + search + ",st=" + type.name());
      }
      return new PageParameters("r=" + repositoryName + ",h=" + commitId + ",s=" + search + ",st=" + type.name());
      return new PageParameters("r=" + repositoryName + ",h=" + commitId + ",s=" + search
            + ",st=" + type.name());
   }
   public static PageParameters newSearchParameter(String repositoryName, String commitId, String search, SearchType type, int pageNumber) {
      return new PageParameters("r=" + repositoryName + ",h=" + commitId + ",s=" + search + ",st=" + type.name() + ",page=" + pageNumber);
   public static PageParameters newSearchParameter(String repositoryName, String commitId,
         String search, SearchType type, int pageNumber) {
      return new PageParameters("r=" + repositoryName + ",h=" + commitId + ",s=" + search
            + ",st=" + type.name() + ",page=" + pageNumber);
   }
   public static String getRepositoryName(PageParameters params) {
@@ -229,21 +259,23 @@
   }
   public static int getPage(PageParameters params) {
      return params.getInt("page", 1); // index from 1
      // index from 1
      return params.getInt("page", 1);
   }
   public static String getUsername(PageParameters params) {
      return params.getString("user", "");
   }
   public static Label createDateLabel(String wicketId, Date date, TimeZone timeZone) {
      DateFormat df = new SimpleDateFormat(GitBlit.self().settings().getString(Keys.web.datestampShortFormat, "MM/dd/yy"));
      String format = GitBlit.getString(Keys.web.datestampShortFormat, "MM/dd/yy");
      DateFormat df = new SimpleDateFormat(format);
      if (timeZone != null) {
         df.setTimeZone(timeZone);
      }
      String dateString = df.format(date);
      String title = TimeUtils.timeAgo(date);
      if ((System.currentTimeMillis() - date.getTime()) < 10 * 24 * 60 * 60 * 1000l) {
      if ((System.currentTimeMillis() - date.getTime()) < 10 * 24 * 60 * 60 * 1000L) {
         String tmp = dateString;
         dateString = title;
         title = tmp;
@@ -255,7 +287,9 @@
   }
   public static Label createTimestampLabel(String wicketId, Date date, TimeZone timeZone) {
      DateFormat df = new SimpleDateFormat(GitBlit.self().settings().getString(Keys.web.datetimestampLongFormat, "EEEE, MMMM d, yyyy h:mm a z"));
      String format = GitBlit.getString(Keys.web.datetimestampLongFormat,
            "EEEE, MMMM d, yyyy h:mm a z");
      DateFormat df = new SimpleDateFormat(format);
      if (timeZone != null) {
         df.setTimeZone(timeZone);
      }
@@ -265,4 +299,65 @@
      WicketUtils.setHtmlTooltip(label, title);
      return label;
   }
   public static IChartData getChartData(Collection<Metric> metrics) {
      final double[] commits = new double[metrics.size()];
      final double[] tags = new double[metrics.size()];
      int i = 0;
      double max = 0;
      for (Metric m : metrics) {
         commits[i] = m.count;
         if (m.tag > 0) {
            tags[i] = m.count;
         } else {
            tags[i] = -1d;
         }
         max = Math.max(max, m.count);
         i++;
      }
      IChartData data = new AbstractChartData(max) {
         private static final long serialVersionUID = 1L;
         public double[][] getData() {
            return new double[][] { commits, tags };
         }
      };
      return data;
   }
   public static double maxValue(Collection<Metric> metrics) {
      double max = Double.MIN_VALUE;
      for (Metric m : metrics) {
         if (m.count > max) {
            max = m.count;
         }
      }
      return max;
   }
   public static IChartData getScatterData(Collection<Metric> metrics) {
      final double[] y = new double[metrics.size()];
      final double[] x = new double[metrics.size()];
      int i = 0;
      double max = 0;
      for (Metric m : metrics) {
         y[i] = m.count;
         if (m.duration > 0) {
            x[i] = m.duration;
         } else {
            x[i] = -1d;
         }
         max = Math.max(max, m.count);
         i++;
      }
      IChartData data = new AbstractChartData(max) {
         private static final long serialVersionUID = 1L;
         public double[][] getData() {
            return new double[][] { x, y };
         }
      };
      return data;
   }
}