diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-02-12 18:14:50 +0100 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-02-12 18:14:50 +0100 |
commit | ea621e0a3b22a0f31655bf203aa80260418fb567 (patch) | |
tree | 39e45fc65ef10e01158f1ec63c97ab1305f8ffc6 /sonar-core | |
parent | 37456dfe4a5f06a0b835e72c644861f14d3022ff (diff) | |
download | sonarqube-ea621e0a3b22a0f31655bf203aa80260418fb567.tar.gz sonarqube-ea621e0a3b22a0f31655bf203aa80260418fb567.zip |
Replace WorkUnit by WorkDuration for technical debt
Diffstat (limited to 'sonar-core')
9 files changed, 40 insertions, 36 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/IssueUpdater.java b/sonar-core/src/main/java/org/sonar/core/issue/IssueUpdater.java index 538104db87c..4d25d12d296 100644 --- a/sonar-core/src/main/java/org/sonar/core/issue/IssueUpdater.java +++ b/sonar-core/src/main/java/org/sonar/core/issue/IssueUpdater.java @@ -29,7 +29,7 @@ import org.sonar.api.issue.internal.DefaultIssue; import org.sonar.api.issue.internal.DefaultIssueComment; import org.sonar.api.issue.internal.IssueChangeContext; import org.sonar.api.user.User; -import org.sonar.api.utils.WorkUnit; +import org.sonar.api.utils.WorkDuration; import javax.annotation.Nullable; @@ -200,8 +200,8 @@ public class IssueUpdater implements BatchComponent, ServerComponent { return setEffortToFix(issue, currentEffort, context); } - public boolean setTechnicalDebt(DefaultIssue issue, @Nullable WorkUnit value, IssueChangeContext context) { - WorkUnit oldValue = issue.technicalDebt(); + public boolean setTechnicalDebt(DefaultIssue issue, @Nullable WorkDuration value, IssueChangeContext context) { + WorkDuration oldValue = issue.technicalDebt(); if (!Objects.equal(value, oldValue)) { issue.setTechnicalDebt(value); issue.setFieldChange(context, TECHNICAL_DEBT, oldValue != null ? oldValue.toLong() : null, value != null ? value.toLong() : null); @@ -212,8 +212,8 @@ public class IssueUpdater implements BatchComponent, ServerComponent { return false; } - public boolean setPastTechnicalDebt(DefaultIssue issue, @Nullable WorkUnit previousTechnicalDebt, IssueChangeContext context) { - WorkUnit currentTechnicalDebt = issue.technicalDebt(); + public boolean setPastTechnicalDebt(DefaultIssue issue, @Nullable WorkDuration previousTechnicalDebt, IssueChangeContext context) { + WorkDuration currentTechnicalDebt = issue.technicalDebt(); issue.setTechnicalDebt(previousTechnicalDebt); return setTechnicalDebt(issue, currentTechnicalDebt, context); } diff --git a/sonar-core/src/main/java/org/sonar/core/issue/db/IssueDto.java b/sonar-core/src/main/java/org/sonar/core/issue/db/IssueDto.java index 3e34ad2c738..46ef306b3bd 100644 --- a/sonar-core/src/main/java/org/sonar/core/issue/db/IssueDto.java +++ b/sonar-core/src/main/java/org/sonar/core/issue/db/IssueDto.java @@ -26,7 +26,7 @@ import org.apache.commons.lang.builder.ToStringStyle; import org.sonar.api.issue.internal.DefaultIssue; import org.sonar.api.rule.RuleKey; import org.sonar.api.utils.KeyValueFormat; -import org.sonar.api.utils.WorkUnit; +import org.sonar.api.utils.WorkDuration; import javax.annotation.CheckForNull; import javax.annotation.Nullable; @@ -363,12 +363,13 @@ public final class IssueDto implements Serializable { } public static IssueDto toDtoForInsert(DefaultIssue issue, Long componentId, Long rootComponentId, Integer ruleId, Date now) { + WorkDuration debt = issue.technicalDebt(); return new IssueDto() .setKee(issue.key()) .setLine(issue.line()) .setMessage(issue.message()) .setEffortToFix(issue.effortToFix()) - .setTechnicalDebt(issue.technicalDebt() != null ? issue.technicalDebt().toLong() : null) + .setTechnicalDebt(debt != null ? debt.toLong() : null) .setResolution(issue.resolution()) .setStatus(issue.status()) .setSeverity(issue.severity()) @@ -392,12 +393,13 @@ public final class IssueDto implements Serializable { public static IssueDto toDtoForUpdate(DefaultIssue issue, Date now) { // Invariant fields, like key and rule, can't be updated + WorkDuration debt = issue.technicalDebt(); return new IssueDto() .setKee(issue.key()) .setLine(issue.line()) .setMessage(issue.message()) .setEffortToFix(issue.effortToFix()) - .setTechnicalDebt(issue.technicalDebt() != null ? issue.technicalDebt().toLong() : null) + .setTechnicalDebt(debt != null ? debt.toLong() : null) .setResolution(issue.resolution()) .setStatus(issue.status()) .setSeverity(issue.severity()) @@ -415,14 +417,14 @@ public final class IssueDto implements Serializable { .setUpdatedAt(now); } - public DefaultIssue toDefaultIssue() { + public DefaultIssue toDefaultIssue(@Nullable WorkDuration debt) { DefaultIssue issue = new DefaultIssue(); issue.setKey(kee); issue.setStatus(status); issue.setResolution(resolution); issue.setMessage(message); issue.setEffortToFix(effortToFix); - issue.setTechnicalDebt(technicalDebt != null ? WorkUnit.fromLong(technicalDebt) : null); + issue.setTechnicalDebt(debt); issue.setLine(line); issue.setSeverity(severity); issue.setReporter(reporter); diff --git a/sonar-core/src/test/java/org/sonar/core/issue/IssueUpdaterTest.java b/sonar-core/src/test/java/org/sonar/core/issue/IssueUpdaterTest.java index 3a78a443010..ff668b918f0 100644 --- a/sonar-core/src/test/java/org/sonar/core/issue/IssueUpdaterTest.java +++ b/sonar-core/src/test/java/org/sonar/core/issue/IssueUpdaterTest.java @@ -25,7 +25,7 @@ import org.sonar.api.issue.internal.DefaultIssue; import org.sonar.api.issue.internal.FieldDiffs; import org.sonar.api.issue.internal.IssueChangeContext; import org.sonar.api.user.User; -import org.sonar.api.utils.WorkUnit; +import org.sonar.api.utils.WorkDuration; import org.sonar.core.user.DefaultUser; import java.util.Date; @@ -366,42 +366,44 @@ public class IssueUpdaterTest { @Test public void set_past_technical_debt() throws Exception { - issue.setTechnicalDebt(new WorkUnit.Builder().setDays(15).build()); - WorkUnit previousDebt = new WorkUnit.Builder().setDays(10).build(); + WorkDuration newDebt = WorkDuration.createFromValueAndUnit(15, WorkDuration.UNIT.DAYS, 8); + WorkDuration previousDebt = WorkDuration.createFromValueAndUnit(10, WorkDuration.UNIT.DAYS, 8); + issue.setTechnicalDebt(newDebt); boolean updated = updater.setPastTechnicalDebt(issue, previousDebt, context); assertThat(updated).isTrue(); - assertThat(issue.technicalDebt()).isEqualTo(new WorkUnit.Builder().setDays(15).build()); + assertThat(issue.technicalDebt()).isEqualTo(newDebt); assertThat(issue.mustSendNotifications()).isFalse(); FieldDiffs.Diff diff = issue.currentChange().get(TECHNICAL_DEBT); - assertThat(diff.oldValue()).isEqualTo(new WorkUnit.Builder().setDays(10).build().toLong()); - assertThat(diff.newValue()).isEqualTo(new WorkUnit.Builder().setDays(15).build().toLong()); + assertThat(diff.oldValue()).isEqualTo(previousDebt.toLong()); + assertThat(diff.newValue()).isEqualTo(newDebt.toLong()); } @Test public void set_past_technical_debt_without_previous_value() throws Exception { - issue.setTechnicalDebt(new WorkUnit.Builder().setDays(15).build()); + WorkDuration newDebt = WorkDuration.createFromValueAndUnit(15, WorkDuration.UNIT.DAYS, 8); + issue.setTechnicalDebt(newDebt); boolean updated = updater.setPastTechnicalDebt(issue, null, context); assertThat(updated).isTrue(); - assertThat(issue.technicalDebt()).isEqualTo(new WorkUnit.Builder().setDays(15).build()); + assertThat(issue.technicalDebt()).isEqualTo(newDebt); assertThat(issue.mustSendNotifications()).isFalse(); FieldDiffs.Diff diff = issue.currentChange().get(TECHNICAL_DEBT); assertThat(diff.oldValue()).isNull(); - assertThat(diff.newValue()).isEqualTo(new WorkUnit.Builder().setDays(15).build().toLong()); + assertThat(diff.newValue()).isEqualTo(newDebt.toLong()); } @Test public void set_past_technical_debt_with_null_new_value() throws Exception { issue.setTechnicalDebt(null); - WorkUnit previousDebt = new WorkUnit.Builder().setDays(10).build(); + WorkDuration previousDebt = WorkDuration.createFromValueAndUnit(10, WorkDuration.UNIT.DAYS, 8); boolean updated = updater.setPastTechnicalDebt(issue, previousDebt, context); assertThat(updated).isTrue(); assertThat(issue.technicalDebt()).isNull(); assertThat(issue.mustSendNotifications()).isFalse(); FieldDiffs.Diff diff = issue.currentChange().get(TECHNICAL_DEBT); - assertThat(diff.oldValue()).isEqualTo(new WorkUnit.Builder().setDays(10).build().toLong()); + assertThat(diff.oldValue()).isEqualTo(previousDebt.toLong()); assertThat(diff.newValue()).isNull(); } diff --git a/sonar-core/src/test/java/org/sonar/core/issue/db/IssueDtoTest.java b/sonar-core/src/test/java/org/sonar/core/issue/db/IssueDtoTest.java index e87ffb98153..5d505dea49c 100644 --- a/sonar-core/src/test/java/org/sonar/core/issue/db/IssueDtoTest.java +++ b/sonar-core/src/test/java/org/sonar/core/issue/db/IssueDtoTest.java @@ -25,7 +25,7 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.sonar.api.issue.Issue; import org.sonar.api.issue.internal.DefaultIssue; -import org.sonar.api.utils.WorkUnit; +import org.sonar.api.utils.WorkDuration; import java.util.Calendar; import java.util.Date; @@ -79,7 +79,7 @@ public class IssueDtoTest { .setIssueUpdateDate(updatedAt) .setIssueCloseDate(closedAt); - DefaultIssue issue = dto.toDefaultIssue(); + DefaultIssue issue = dto.toDefaultIssue(WorkDuration.create(10, 10, 10, 8)); assertThat(issue.key()).isEqualTo("100"); assertThat(issue.ruleKey().toString()).isEqualTo("squid:AvoidCycle"); assertThat(issue.componentKey()).isEqualTo("org.sonar.sample:Sample"); @@ -87,7 +87,7 @@ public class IssueDtoTest { assertThat(issue.status()).isEqualTo(Issue.STATUS_CLOSED); assertThat(issue.resolution()).isEqualTo(Issue.RESOLUTION_FALSE_POSITIVE); assertThat(issue.effortToFix()).isEqualTo(15.0); - assertThat(issue.technicalDebt()).isEqualTo(new WorkUnit.Builder().setDays(10).setHours(10).setMinutes(10).build()); + assertThat(issue.technicalDebt()).isNotNull(); assertThat(issue.line()).isEqualTo(6); assertThat(issue.severity()).isEqualTo("BLOCKER"); assertThat(issue.message()).isEqualTo("message"); diff --git a/sonar-core/src/test/java/org/sonar/core/issue/db/IssueStorageTest.java b/sonar-core/src/test/java/org/sonar/core/issue/db/IssueStorageTest.java index 5c8b3487f8e..ba9b2eddc7d 100644 --- a/sonar-core/src/test/java/org/sonar/core/issue/db/IssueStorageTest.java +++ b/sonar-core/src/test/java/org/sonar/core/issue/db/IssueStorageTest.java @@ -28,7 +28,7 @@ import org.sonar.api.rules.Rule; import org.sonar.api.rules.RuleFinder; import org.sonar.api.rules.RuleQuery; import org.sonar.api.utils.DateUtils; -import org.sonar.api.utils.WorkUnit; +import org.sonar.api.utils.WorkDuration; import org.sonar.core.persistence.AbstractDaoTestCase; import org.sonar.core.persistence.MyBatis; @@ -54,7 +54,7 @@ public class IssueStorageTest extends AbstractDaoTestCase { .setRuleKey(RuleKey.of("squid", "AvoidCycle")) .setLine(5000) - .setTechnicalDebt(new WorkUnit.Builder().setMinutes(10).build()) + .setTechnicalDebt(WorkDuration.createFromValueAndUnit(10, WorkDuration.UNIT.MINUTES, 8)) .setReporter("emmerik") .setResolution("OPEN") .setStatus("OPEN") @@ -88,7 +88,7 @@ public class IssueStorageTest extends AbstractDaoTestCase { // updated fields .setLine(5000) - .setTechnicalDebt(new WorkUnit.Builder().setMinutes(10).build()) + .setTechnicalDebt(WorkDuration.createFromValueAndUnit(10, WorkDuration.UNIT.MINUTES, 8)) .setChecksum("FFFFF") .setAuthorLogin("simon") .setAssignee("loic") diff --git a/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java b/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java index 69877f81898..2e66f1ebd55 100644 --- a/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java +++ b/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java @@ -89,8 +89,8 @@ public class DefaultTechnicalDebtManagerTest { assertThat(result.rootId()).isEqualTo(1); assertThat(result.ruleKey()).isEqualTo(RuleKey.of("repo", "key")); assertThat(result.function()).isEqualTo("linear"); - assertThat(result.factor()).isEqualTo(new WorkUnit.Builder().setMinutes(30).build()); - assertThat(result.offset()).isEqualTo(new WorkUnit.Builder().setDays(0).build()); + assertThat(result.factor()).isEqualTo(WorkUnit.create(30d, WorkUnit.MINUTES)); + assertThat(result.offset()).isEqualTo(WorkUnit.create(0d, WorkUnit.DAYS)); } @Test @@ -149,8 +149,8 @@ public class DefaultTechnicalDebtManagerTest { assertThat(result.rootId()).isEqualTo(1); assertThat(result.ruleKey()).isEqualTo(RuleKey.of("repo", "key")); assertThat(result.function()).isEqualTo("linear"); - assertThat(result.factor()).isEqualTo(new WorkUnit.Builder().setMinutes(30).build()); - assertThat(result.offset()).isEqualTo(new WorkUnit.Builder().setDays(0).build()); + assertThat(result.factor()).isEqualTo(WorkUnit.create(30d, WorkUnit.MINUTES)); + assertThat(result.offset()).isEqualTo(WorkUnit.create(0d, WorkUnit.DAYS)); } @Test diff --git a/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtModelTest.java b/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtModelTest.java index 4177c144c64..dcf61654fc3 100644 --- a/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtModelTest.java +++ b/sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtModelTest.java @@ -92,8 +92,8 @@ public class DefaultTechnicalDebtModelTest { .setCharacteristic(characteristic) .setRuleKey(ruleKey) .setFunction("linear") - .setFactor(new WorkUnit.Builder().setHours(2).build()) - .setOffset(new WorkUnit.Builder().setHours(0).build()); + .setFactor(WorkUnit.create(2d, WorkUnit.HOURS)) + .setOffset(WorkUnit.create(0d, WorkUnit.HOURS)); sqaleModel.addRootCharacteristic(rootCharacteristic); diff --git a/sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtModelSynchronizerTest.java b/sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtModelSynchronizerTest.java index 17e4bee2e8a..774f80d890d 100644 --- a/sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtModelSynchronizerTest.java +++ b/sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtModelSynchronizerTest.java @@ -142,7 +142,7 @@ public class TechnicalDebtModelSynchronizerTest { RuleKey ruleKey = RuleKey.of("checkstyle", "import"); when(ruleCache.getByRuleKey(ruleKey)).thenReturn(rule); new DefaultRequirement().setRuleKey(ruleKey) - .setFunction("linear").setFactor(new WorkUnit.Builder().setMinutes(30).build()).setCharacteristic(javaCharacteristic).setRootCharacteristic(javaRootCharacteristic); + .setFunction("linear").setFactor(WorkUnit.create(30d, WorkUnit.MINUTES)).setCharacteristic(javaCharacteristic).setRootCharacteristic(javaRootCharacteristic); Reader javaModelReader = mock(Reader.class); when(xmlImporter.importXML(eq(javaModelReader), any(ValidationMessages.class), eq(ruleCache))).thenReturn(javaModel); @@ -195,7 +195,7 @@ public class TechnicalDebtModelSynchronizerTest { // New requirement new DefaultRequirement().setRuleKey(ruleKey2) - .setFunction("linear").setFactor(new WorkUnit.Builder().setHours(1).build()).setCharacteristic(javaCharacteristic).setRootCharacteristic(javaRootCharacteristic); + .setFunction("linear").setFactor(WorkUnit.create(1d, WorkUnit.HOURS)).setCharacteristic(javaCharacteristic).setRootCharacteristic(javaRootCharacteristic); Reader javaModelReader = mock(Reader.class); when(technicalDebtModelRepository.createReaderForXMLFile("java")).thenReturn(javaModelReader); diff --git a/sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtXMLImporterTest.java b/sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtXMLImporterTest.java index d614d7588a0..5dad54e0430 100644 --- a/sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtXMLImporterTest.java +++ b/sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtXMLImporterTest.java @@ -189,7 +189,7 @@ public class TechnicalDebtXMLImporterTest { } private void checkXmlCorrectlyImported(DefaultTechnicalDebtModel sqale, ValidationMessages messages) { - checkXmlCorrectlyImported(sqale, new WorkUnit.Builder().setDays(0).build(), messages); + checkXmlCorrectlyImported(sqale, WorkUnit.create(0d, WorkUnit.DAYS), messages); } private void checkXmlCorrectlyImported(DefaultTechnicalDebtModel sqale, WorkUnit offset, ValidationMessages messages) { |