Make RelativeDateFormatter available to plugins

Change-Id: I9ab4a50c5eceec3a841c79f120ee67f428038cce
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
Edwin Kempin 2015-07-27 16:37:01 +02:00
parent 010d30592f
commit 76b23722f4
13 changed files with 132 additions and 77 deletions

View File

@ -63,3 +63,16 @@ java_library(
name = 'diffy_image_files', name = 'diffy_image_files',
resources = DIFFY, resources = DIFFY,
) )
java_test(
name = 'client_tests',
srcs = glob(['src/test/java/**/*.java']),
deps = [
':client',
'//lib:junit',
'//lib/jgit:jgit',
],
source_under_test = [':client'],
vm_args = ['-Xmx512m'],
visibility = ['//tools/eclipse:classpath'],
)

View File

@ -0,0 +1,36 @@
// Copyright (C) 2015 The Android Open Source Project
//
// 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.google.gerrit.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.Constants;
public interface CommonConstants extends Constants {
public static final CommonConstants C = GWT.create(CommonConstants.class);
String inTheFuture();
String month();
String months();
String year();
String years();
String oneSecondAgo();
String oneMinuteAgo();
String oneHourAgo();
String oneDayAgo();
String oneWeekAgo();
String oneMonthAgo();
String oneYearAgo();
}

View File

@ -0,0 +1,13 @@
inTheFuture = in the future
month = month
months = months
years = years
year = year
oneSecondAgo = 1 second ago
oneMinuteAgo = 1 minute ago
oneHourAgo = 1 hour ago
oneDayAgo = 1 day ago
oneWeekAgo = 1 week ago
oneMonthAgo = 1 month ago
oneYearAgo = 1 year ago

View File

@ -0,0 +1,33 @@
// Copyright (C) 2015 The Android Open Source Project
//
// 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.google.gerrit.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.Messages;
public interface CommonMessages extends Messages {
public static final CommonMessages M = GWT.create(CommonMessages.class);
String secondsAgo(long seconds);
String minutesAgo(long minutes);
String hoursAgo(long hours);
String daysAgo(long days);
String weeksAgo(long weeks);
String monthsAgo(long months);
String yearsAgo(long years);
String years0MonthsAgo(long years, String yearLabel);
String yearsMonthsAgo(long years, String yearLabel, long months,
String monthLabel);
}

View File

@ -0,0 +1,9 @@
secondsAgo = {0} seconds ago
minutesAgo = {0} minutes ago
hoursAgo = {0} hours ago
daysAgo = {0} days ago
weeksAgo = {0} weeks ago
monthsAgo = {0} months ago
years0MonthsAgo = {0} {1} ago
yearsMonthsAgo = {0} {1}, {2} {3} ago
yearsAgo = {0} years ago

View File

@ -14,7 +14,8 @@
package com.google.gerrit.client; package com.google.gerrit.client;
import com.google.gerrit.client.changes.Util; import static com.google.gerrit.client.CommonConstants.C;
import static com.google.gerrit.client.CommonMessages.M;
import java.util.Date; import java.util.Date;
@ -24,17 +25,11 @@ import java.util.Date;
*/ */
public class RelativeDateFormatter { public class RelativeDateFormatter {
static final long SECOND_IN_MILLIS = 1000; static final long SECOND_IN_MILLIS = 1000;
static final long MINUTE_IN_MILLIS = 60 * SECOND_IN_MILLIS; static final long MINUTE_IN_MILLIS = 60 * SECOND_IN_MILLIS;
static final long HOUR_IN_MILLIS = 60 * MINUTE_IN_MILLIS; static final long HOUR_IN_MILLIS = 60 * MINUTE_IN_MILLIS;
static final long DAY_IN_MILLIS = 24 * HOUR_IN_MILLIS; static final long DAY_IN_MILLIS = 24 * HOUR_IN_MILLIS;
static final long WEEK_IN_MILLIS = 7 * DAY_IN_MILLIS; static final long WEEK_IN_MILLIS = 7 * DAY_IN_MILLIS;
static final long MONTH_IN_MILLIS = 30 * DAY_IN_MILLIS; static final long MONTH_IN_MILLIS = 30 * DAY_IN_MILLIS;
static final long YEAR_IN_MILLIS = 365 * DAY_IN_MILLIS; static final long YEAR_IN_MILLIS = 365 * DAY_IN_MILLIS;
/** /**
@ -48,16 +43,16 @@ public class RelativeDateFormatter {
// shouldn't happen in a perfect world // shouldn't happen in a perfect world
if (ageMillis < 0) { if (ageMillis < 0) {
return Util.C.inTheFuture(); return C.inTheFuture();
} }
// seconds // seconds
if (ageMillis < upperLimit(MINUTE_IN_MILLIS)) { if (ageMillis < upperLimit(MINUTE_IN_MILLIS)) {
long seconds = round(ageMillis, SECOND_IN_MILLIS); long seconds = round(ageMillis, SECOND_IN_MILLIS);
if (seconds == 1) { if (seconds == 1) {
return Util.C.oneSecondAgo(); return C.oneSecondAgo();
} else { } else {
return Util.M.secondsAgo(seconds); return M.secondsAgo(seconds);
} }
} }
@ -65,9 +60,9 @@ public class RelativeDateFormatter {
if (ageMillis < upperLimit(HOUR_IN_MILLIS)) { if (ageMillis < upperLimit(HOUR_IN_MILLIS)) {
long minutes = round(ageMillis, MINUTE_IN_MILLIS); long minutes = round(ageMillis, MINUTE_IN_MILLIS);
if (minutes == 1) { if (minutes == 1) {
return Util.C.oneMinuteAgo(); return C.oneMinuteAgo();
} else { } else {
return Util.M.minutesAgo(minutes); return M.minutesAgo(minutes);
} }
} }
@ -75,9 +70,9 @@ public class RelativeDateFormatter {
if (ageMillis < upperLimit(DAY_IN_MILLIS)) { if (ageMillis < upperLimit(DAY_IN_MILLIS)) {
long hours = round(ageMillis, HOUR_IN_MILLIS); long hours = round(ageMillis, HOUR_IN_MILLIS);
if (hours == 1) { if (hours == 1) {
return Util.C.oneHourAgo(); return C.oneHourAgo();
} else { } else {
return Util.M.hoursAgo(hours); return M.hoursAgo(hours);
} }
} }
@ -85,9 +80,9 @@ public class RelativeDateFormatter {
if (ageMillis < 14 * DAY_IN_MILLIS) { if (ageMillis < 14 * DAY_IN_MILLIS) {
long days = round(ageMillis, DAY_IN_MILLIS); long days = round(ageMillis, DAY_IN_MILLIS);
if (days == 1) { if (days == 1) {
return Util.C.oneDayAgo(); return C.oneDayAgo();
} else { } else {
return Util.M.daysAgo(days); return M.daysAgo(days);
} }
} }
@ -95,9 +90,9 @@ public class RelativeDateFormatter {
if (ageMillis < 10 * WEEK_IN_MILLIS) { if (ageMillis < 10 * WEEK_IN_MILLIS) {
long weeks = round(ageMillis, WEEK_IN_MILLIS); long weeks = round(ageMillis, WEEK_IN_MILLIS);
if (weeks == 1) { if (weeks == 1) {
return Util.C.oneWeekAgo(); return C.oneWeekAgo();
} else { } else {
return Util.M.weeksAgo(weeks); return M.weeksAgo(weeks);
} }
} }
@ -105,32 +100,31 @@ public class RelativeDateFormatter {
if (ageMillis < YEAR_IN_MILLIS) { if (ageMillis < YEAR_IN_MILLIS) {
long months = round(ageMillis, MONTH_IN_MILLIS); long months = round(ageMillis, MONTH_IN_MILLIS);
if (months == 1) { if (months == 1) {
return Util.C.oneMonthAgo(); return C.oneMonthAgo();
} else { } else {
return Util.M.monthsAgo(months); return M.monthsAgo(months);
} }
} }
// up to 5 years use "year, months" rounded to months // up to 5 years use "year, months" rounded to months
if (ageMillis < 5 * YEAR_IN_MILLIS) { if (ageMillis < 5 * YEAR_IN_MILLIS) {
long years = ageMillis / YEAR_IN_MILLIS; long years = ageMillis / YEAR_IN_MILLIS;
String yearLabel = (years > 1) ? Util.C.years() : Util.C.year(); String yearLabel = (years > 1) ? C.years() : C.year();
long months = round(ageMillis % YEAR_IN_MILLIS, MONTH_IN_MILLIS); long months = round(ageMillis % YEAR_IN_MILLIS, MONTH_IN_MILLIS);
String monthLabel = String monthLabel = (months > 1) ? C.months() : (months == 1 ? C.month() : "");
(months > 1) ? Util.C.months() : (months == 1 ? Util.C.month() : "");
if (months == 0) { if (months == 0) {
return Util.M.years0MonthsAgo(years, yearLabel); return M.years0MonthsAgo(years, yearLabel);
} else { } else {
return Util.M.yearsMonthsAgo(years, yearLabel, months, monthLabel); return M.yearsMonthsAgo(years, yearLabel, months, monthLabel);
} }
} }
// years // years
long years = round(ageMillis, YEAR_IN_MILLIS); long years = round(ageMillis, YEAR_IN_MILLIS);
if (years == 1) { if (years == 1) {
return Util.C.oneYearAgo(); return C.oneYearAgo();
} else { } else {
return Util.M.yearsAgo(years); return M.yearsAgo(years);
} }
} }

View File

@ -19,6 +19,7 @@ import static com.google.gerrit.client.RelativeDateFormatter.HOUR_IN_MILLIS;
import static com.google.gerrit.client.RelativeDateFormatter.MINUTE_IN_MILLIS; import static com.google.gerrit.client.RelativeDateFormatter.MINUTE_IN_MILLIS;
import static com.google.gerrit.client.RelativeDateFormatter.SECOND_IN_MILLIS; import static com.google.gerrit.client.RelativeDateFormatter.SECOND_IN_MILLIS;
import static com.google.gerrit.client.RelativeDateFormatter.YEAR_IN_MILLIS; import static com.google.gerrit.client.RelativeDateFormatter.YEAR_IN_MILLIS;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import org.eclipse.jgit.util.RelativeDateFormatter; import org.eclipse.jgit.util.RelativeDateFormatter;

View File

@ -61,7 +61,6 @@ java_test(
'//lib/gwt:dev', '//lib/gwt:dev',
'//lib/gwt:user', '//lib/gwt:user',
'//lib/gwt:gwt-test-utils', '//lib/gwt:gwt-test-utils',
'//lib/jgit:jgit',
], ],
source_under_test = [':ui_module'], source_under_test = [':ui_module'],
vm_args = ['-Xmx512m'], vm_args = ['-Xmx512m'],

View File

@ -201,19 +201,5 @@ public interface ChangeConstants extends Constants {
String diffAllSideBySide(); String diffAllSideBySide();
String diffAllUnified(); String diffAllUnified();
String inTheFuture();
String month();
String months();
String year();
String years();
String oneSecondAgo();
String oneMinuteAgo();
String oneHourAgo();
String oneDayAgo();
String oneWeekAgo();
String oneMonthAgo();
String oneYearAgo();
String votable(); String votable();
} }

View File

@ -183,18 +183,4 @@ buttonClose = Close
diffAllSideBySide = All Side-by-Side diffAllSideBySide = All Side-by-Side
diffAllUnified = All Unified diffAllUnified = All Unified
inTheFuture = in the future
month = month
months = months
years = years
year = year
oneSecondAgo = 1 second ago
oneMinuteAgo = 1 minute ago
oneHourAgo = 1 hour ago
oneDayAgo = 1 day ago
oneWeekAgo = 1 week ago
oneMonthAgo = 1 month ago
oneYearAgo = 1 year ago
votable = Votable: votable = Votable:

View File

@ -60,16 +60,5 @@ public interface ChangeMessages extends Messages {
String groupHasTooManyMembers(String group); String groupHasTooManyMembers(String group);
String groupManyMembersConfirmation(String group, int memberCount); String groupManyMembersConfirmation(String group, int memberCount);
String secondsAgo(long seconds);
String minutesAgo(long minutes);
String hoursAgo(long hours);
String daysAgo(long days);
String weeksAgo(long weeks);
String monthsAgo(long months);
String yearsAgo(long years);
String years0MonthsAgo(long years, String yearLabel);
String yearsMonthsAgo(long years, String yearLabel, long months,
String monthLabel);
String insertionsAndDeletions(int insertions, int deletions); String insertionsAndDeletions(int insertions, int deletions);
} }

View File

@ -43,14 +43,4 @@ groupIsNotAllowed = The group {0} cannot be added as reviewer.
groupHasTooManyMembers = The group {0} has too many members to add them all as reviewers. groupHasTooManyMembers = The group {0} has too many members to add them all as reviewers.
groupManyMembersConfirmation = The group {0} has {1} members. Do you want to add them all as reviewers? groupManyMembersConfirmation = The group {0} has {1} members. Do you want to add them all as reviewers?
secondsAgo = {0} seconds ago
minutesAgo = {0} minutes ago
hoursAgo = {0} hours ago
daysAgo = {0} days ago
weeksAgo = {0} weeks ago
monthsAgo = {0} months ago
years0MonthsAgo = {0} {1} ago
yearsMonthsAgo = {0} {1}, {2} {3} ago
yearsAgo = {0} years ago
insertionsAndDeletions = +{0}, -{1} insertionsAndDeletions = +{0}, -{1}

View File

@ -16,6 +16,7 @@ package com.google.gerrit.plugin.client;
import com.google.gerrit.client.AccountFormatter; import com.google.gerrit.client.AccountFormatter;
import com.google.gerrit.client.DateFormatter; import com.google.gerrit.client.DateFormatter;
import com.google.gerrit.client.RelativeDateFormatter;
import com.google.gerrit.client.info.AccountInfo; import com.google.gerrit.client.info.AccountInfo;
import java.util.Date; import java.util.Date;
@ -44,6 +45,11 @@ public class FormatUtil {
return new DateFormatter(Plugin.get().getUserPreferences()); return new DateFormatter(Plugin.get().getUserPreferences());
} }
/** Format a date using git log's relative date format. */
public static String relativeFormat(Date dt) {
return RelativeDateFormatter.format(dt);
}
/** /**
* Formats an account as a name and an email address. * Formats an account as a name and an email address.
* <p> * <p>