aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2014-02-12 18:14:50 +0100
committerJulien Lancelot <julien.lancelot@sonarsource.com>2014-02-12 18:14:50 +0100
commitea621e0a3b22a0f31655bf203aa80260418fb567 (patch)
tree39e45fc65ef10e01158f1ec63c97ab1305f8ffc6 /sonar-core
parent37456dfe4a5f06a0b835e72c644861f14d3022ff (diff)
downloadsonarqube-ea621e0a3b22a0f31655bf203aa80260418fb567.tar.gz
sonarqube-ea621e0a3b22a0f31655bf203aa80260418fb567.zip
Replace WorkUnit by WorkDuration for technical debt
Diffstat (limited to 'sonar-core')
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/IssueUpdater.java10
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/db/IssueDto.java12
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/IssueUpdaterTest.java24
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/db/IssueDtoTest.java6
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/db/IssueStorageTest.java6
-rw-r--r--sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtManagerTest.java8
-rw-r--r--sonar-core/src/test/java/org/sonar/core/technicaldebt/DefaultTechnicalDebtModelTest.java4
-rw-r--r--sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtModelSynchronizerTest.java4
-rw-r--r--sonar-core/src/test/java/org/sonar/core/technicaldebt/TechnicalDebtXMLImporterTest.java2
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) {