diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-03-06 12:15:15 +0100 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-03-06 12:15:22 +0100 |
commit | 94ed63a7c64ddebf9056604535e4439a82ceecae (patch) | |
tree | b8a2bb09bc2fe2653e80f8dda358da0795e8a176 /sonar-server/src/main/java | |
parent | 975dacb594135e449c621d254081f6e179ec51c3 (diff) | |
download | sonarqube-94ed63a7c64ddebf9056604535e4439a82ceecae.tar.gz sonarqube-94ed63a7c64ddebf9056604535e4439a82ceecae.zip |
SONAR-5056 Create new Durations API to format Duration and convert String to Duration
Diffstat (limited to 'sonar-server/src/main/java')
5 files changed, 23 insertions, 24 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/issue/IssueChangelogFormatter.java b/sonar-server/src/main/java/org/sonar/server/issue/IssueChangelogFormatter.java index d87e499e3e2..b8b86d3e60b 100644 --- a/sonar-server/src/main/java/org/sonar/server/issue/IssueChangelogFormatter.java +++ b/sonar-server/src/main/java/org/sonar/server/issue/IssueChangelogFormatter.java @@ -23,6 +23,7 @@ import org.sonar.api.ServerComponent; import org.sonar.api.i18n.I18n; import org.sonar.api.issue.internal.FieldDiffs; import org.sonar.api.utils.Duration; +import org.sonar.api.utils.Durations; import org.sonar.core.issue.IssueUpdater; import org.sonar.server.user.UserSession; @@ -38,9 +39,11 @@ public class IssueChangelogFormatter implements ServerComponent { private static final String ISSUE_CHANGELOG_FIELD = "issue.changelog.field."; private final I18n i18n; + private final Durations durations; - public IssueChangelogFormatter(I18n i18n) { + public IssueChangelogFormatter(I18n i18n, Durations durations) { this.i18n = i18n; + this.durations = durations; } public List<String> format(Locale locale, FieldDiffs diffs) { @@ -72,10 +75,10 @@ public class IssueChangelogFormatter implements ServerComponent { String oldValueString = oldValue != null && !"".equals(oldValue) ? oldValue.toString() : null; if (IssueUpdater.TECHNICAL_DEBT.equals(key)) { if (newValueString != null) { - newValueString = i18n.formatWorkDuration(UserSession.get().locale(), Duration.create(Long.parseLong(newValueString))); + newValueString = durations.format(UserSession.get().locale(), Duration.create(Long.parseLong(newValueString)), Durations.DurationFormat.SHORT); } if (oldValueString != null) { - oldValueString = i18n.formatWorkDuration(UserSession.get().locale(), Duration.create(Long.parseLong(oldValueString))); + oldValueString = durations.format(UserSession.get().locale(), Duration.create(Long.parseLong(oldValueString)), Durations.DurationFormat.SHORT); } } return new IssueChangelogDiffFormat(oldValueString, newValueString); diff --git a/sonar-server/src/main/java/org/sonar/server/issue/ws/IssueShowWsHandler.java b/sonar-server/src/main/java/org/sonar/server/issue/ws/IssueShowWsHandler.java index 116b32da940..3a78d88179f 100644 --- a/sonar-server/src/main/java/org/sonar/server/issue/ws/IssueShowWsHandler.java +++ b/sonar-server/src/main/java/org/sonar/server/issue/ws/IssueShowWsHandler.java @@ -34,6 +34,7 @@ import org.sonar.api.technicaldebt.server.Characteristic; import org.sonar.api.user.User; import org.sonar.api.utils.DateUtils; import org.sonar.api.utils.Duration; +import org.sonar.api.utils.Durations; import org.sonar.api.utils.text.JsonWriter; import org.sonar.api.web.UserRole; import org.sonar.core.component.ComponentDto; @@ -64,15 +65,17 @@ public class IssueShowWsHandler implements RequestHandler { private final ActionService actionService; private final DefaultTechnicalDebtManager technicalDebtManager; private final I18n i18n; + private final Durations durations; public IssueShowWsHandler(IssueFinder issueFinder, IssueService issueService, IssueChangelogService issueChangelogService, ActionService actionService, - DefaultTechnicalDebtManager technicalDebtManager, I18n i18n) { + DefaultTechnicalDebtManager technicalDebtManager, I18n i18n, Durations durations) { this.issueFinder = issueFinder; this.issueService = issueService; this.issueChangelogService = issueChangelogService; this.actionService = actionService; this.technicalDebtManager = technicalDebtManager; this.i18n = i18n; + this.durations = durations; } @Override @@ -115,7 +118,7 @@ public class IssueShowWsHandler implements RequestHandler { .prop("author", issue.authorLogin()) .prop("actionPlan", actionPlanKey) .prop("actionPlanName", actionPlan != null ? actionPlan.name() : null) - .prop("debt", debt != null ? i18n.formatWorkDuration(UserSession.get().locale(), debt) : null) + .prop("debt", debt != null ? durations.format(UserSession.get().locale(), debt, Durations.DurationFormat.SHORT) : null) .prop("creationDate", DateUtils.formatDateTime(issue.creationDate())) .prop("fCreationDate", formatDate(issue.creationDate())) .prop("updateDate", updateDate != null ? DateUtils.formatDateTime(updateDate) : null) diff --git a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java index 619cc7b6625..4a4f73cb465 100644 --- a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java +++ b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java @@ -32,18 +32,17 @@ import org.sonar.api.resources.Languages; import org.sonar.api.resources.ResourceTypes; import org.sonar.api.rules.AnnotationRuleParser; import org.sonar.api.rules.XMLRuleParser; +import org.sonar.api.utils.Durations; import org.sonar.api.utils.HttpDownloader; import org.sonar.api.utils.TimeProfiler; import org.sonar.api.utils.UriReader; import org.sonar.api.utils.internal.TempFolderCleaner; -import org.sonar.api.utils.internal.WorkDurationFactory; import org.sonar.core.component.SnapshotPerspectives; import org.sonar.core.component.db.ComponentDao; import org.sonar.core.config.Logback; import org.sonar.core.i18n.DefaultI18n; import org.sonar.core.i18n.GwtI18n; import org.sonar.core.i18n.RuleI18nManager; -import org.sonar.core.i18n.WorkDurationFormatter; import org.sonar.core.issue.IssueFilterSerializer; import org.sonar.core.issue.IssueNotifications; import org.sonar.core.issue.IssueUpdater; @@ -221,8 +220,7 @@ public final class Platform { rootContainer.addSingleton(DefaultI18n.class); rootContainer.addSingleton(RuleI18nManager.class); rootContainer.addSingleton(GwtI18n.class); - rootContainer.addSingleton(WorkDurationFormatter.class); - rootContainer.addSingleton(WorkDurationFactory.class); + rootContainer.addSingleton(Durations.class); rootContainer.addSingleton(PreviewDatabaseFactory.class); rootContainer.addSingleton(SemaphoreUpdater.class); diff --git a/sonar-server/src/main/java/org/sonar/server/technicaldebt/DebtService.java b/sonar-server/src/main/java/org/sonar/server/technicaldebt/DebtService.java index 8496e53051c..55b2cb52a4f 100644 --- a/sonar-server/src/main/java/org/sonar/server/technicaldebt/DebtService.java +++ b/sonar-server/src/main/java/org/sonar/server/technicaldebt/DebtService.java @@ -22,8 +22,6 @@ package org.sonar.server.technicaldebt; import org.sonar.api.ServerComponent; import org.sonar.api.technicaldebt.server.Characteristic; -import org.sonar.api.utils.internal.WorkDuration; -import org.sonar.api.utils.internal.WorkDurationFactory; import org.sonar.core.technicaldebt.DefaultTechnicalDebtManager; import javax.annotation.CheckForNull; @@ -31,20 +29,14 @@ import javax.annotation.CheckForNull; import java.util.List; /** - * Used through ruby code <pre>Internal.technical_debt</pre> + * Used through ruby code <pre>Internal.debt</pre> */ public class DebtService implements ServerComponent { private final DefaultTechnicalDebtManager finder; - private final WorkDurationFactory workDurationFactory; - public DebtService(DefaultTechnicalDebtManager finder, WorkDurationFactory workDurationFactory) { + public DebtService(DefaultTechnicalDebtManager finder) { this.finder = finder; - this.workDurationFactory = workDurationFactory; - } - - public WorkDuration toWorkDuration(long debt) { - return workDurationFactory.createFromMinutes(debt); } public List<Characteristic> findRootCharacteristics() { diff --git a/sonar-server/src/main/java/org/sonar/server/ui/JRubyI18n.java b/sonar-server/src/main/java/org/sonar/server/ui/JRubyI18n.java index 80a6ba85320..b0a2eb4061e 100644 --- a/sonar-server/src/main/java/org/sonar/server/ui/JRubyI18n.java +++ b/sonar-server/src/main/java/org/sonar/server/ui/JRubyI18n.java @@ -24,6 +24,7 @@ import org.apache.commons.lang.StringUtils; import org.sonar.api.ServerComponent; import org.sonar.api.i18n.I18n; import org.sonar.api.utils.Duration; +import org.sonar.api.utils.Durations; import org.sonar.core.i18n.GwtI18n; import org.sonar.server.user.UserSession; @@ -39,11 +40,13 @@ import java.util.Map; public class JRubyI18n implements ServerComponent { private I18n i18n; + private Durations durations; private Map<String, Locale> localesByRubyKey = Maps.newHashMap(); private GwtI18n gwtI18n; - public JRubyI18n(I18n i18n, GwtI18n gwtI18n) { + public JRubyI18n(I18n i18n, Durations durations, GwtI18n gwtI18n) { this.i18n = i18n; + this.durations = durations; this.gwtI18n = gwtI18n; } @@ -87,12 +90,12 @@ public class JRubyI18n implements ServerComponent { return i18n.ageFromNow(UserSession.get().locale(), date); } - public String formatWorkDuration(Duration duration) { - return i18n.formatWorkDuration(UserSession.get().locale(), duration); + public String formatDuration(Duration duration, String format) { + return durations.format(UserSession.get().locale(), duration, Durations.DurationFormat.valueOf(format)); } - public String formatLongWorkDuration(long duration) { - return formatWorkDuration(Duration.create(duration)); + public String formatLongDuration(long duration, String format) { + return formatDuration(Duration.create(duration), format); } } |