aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2013-11-28 11:22:50 +0100
committerJulien Lancelot <julien.lancelot@sonarsource.com>2013-11-28 11:22:50 +0100
commit62ed2a71275f3b751b22691290d848e931cea5cb (patch)
treeb838d28e4887262d94e82db2f09b1bf5919fd19c /sonar-core
parentc20be90eb013ce9fcb3d7105e4b47142006ec5fd (diff)
downloadsonarqube-62ed2a71275f3b751b22691290d848e931cea5cb.tar.gz
sonarqube-62ed2a71275f3b751b22691290d848e931cea5cb.zip
SONAR-4895 Improve migration to correctly populate root_id and add root id in characteristic API
Diffstat (limited to 'sonar-core')
-rw-r--r--sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtFinder.java5
-rw-r--r--sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtModelService.java8
-rw-r--r--sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtModelSynchronizer.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/technicaldebt/db/CharacteristicDto.java19
-rw-r--r--sonar-core/src/main/resources/org/sonar/core/persistence/schema-h2.ddl1
-rw-r--r--sonar-core/src/main/resources/org/sonar/core/technicaldebt/db/CharacteristicMapper.xml6
-rw-r--r--sonar-core/src/test/java/org/sonar/core/technicaldebt/db/CharacteristicDaoTest.java8
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/disable-result.xml2
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/disable.xml2
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/insert_characteristic-result.xml2
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/insert_requirement-result.xml2
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/select_enabled_root_characteristics.xml10
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/select_enabled_root_characteristics_order_by_characteristic_order.xml6
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/shared.xml12
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_characteristic-result.xml2
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_characteristic.xml2
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_requirement-result.xml2
-rw-r--r--sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_requirement.xml2
18 files changed, 60 insertions, 33 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtFinder.java b/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtFinder.java
index 4a512a7d3e9..aebbe56c4e9 100644
--- a/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtFinder.java
+++ b/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtFinder.java
@@ -73,7 +73,7 @@ public class TechnicalDebtFinder implements ServerComponent, BatchComponent {
Characteristic rootCharacteristic = rootCharacteristicDto.toCharacteristic(null);
Characteristic characteristic = characteristicDto.toCharacteristic(rootCharacteristic);
- return requirementDto.toRequirement(RuleKey.of(rule.getRepositoryKey(), rule.getKey()), characteristic);
+ return requirementDto.toRequirement(RuleKey.of(rule.getRepositoryKey(), rule.getKey()), characteristic, rootCharacteristic);
}
private void addRootCharacteristics(TechnicalDebtModel model, List<CharacteristicDto> dtos, Map<Integer, Characteristic> characteristicsById){
@@ -102,9 +102,10 @@ public class TechnicalDebtFinder implements ServerComponent, BatchComponent {
Integer ruleId = dto.getRuleId();
if (ruleId != null) {
Characteristic characteristic = characteristicsById.get(dto.getParentId());
+ Characteristic rootCharacteristic = characteristicsById.get(dto.getRootId());
Rule rule = rulesById.get(ruleId);
RuleKey ruleKey = RuleKey.of(rule.getRepositoryKey(), rule.getKey());
- dto.toRequirement(ruleKey, characteristic);
+ dto.toRequirement(ruleKey, characteristic, rootCharacteristic);
}
}
}
diff --git a/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtModelService.java b/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtModelService.java
index 6a56fb8dcc2..caa856103c3 100644
--- a/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtModelService.java
+++ b/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtModelService.java
@@ -57,17 +57,17 @@ public class TechnicalDebtModelService implements ServerExtension {
}
}
- public void create(Requirement requirement, Integer characteristicId, TechnicalDebtRuleCache ruleCache, SqlSession session) {
+ public void create(Requirement requirement, Integer characteristicId, Integer rootCharacteristicId, TechnicalDebtRuleCache ruleCache, SqlSession session) {
Rule rule = ruleCache.getByRuleKey(requirement.ruleKey());
- CharacteristicDto requirementDto = CharacteristicDto.toDto(requirement, characteristicId, rule.getId());
+ CharacteristicDto requirementDto = CharacteristicDto.toDto(requirement, characteristicId, rootCharacteristicId, rule.getId());
dao.insert(requirementDto, session);
requirement.setId(requirementDto.getId());
}
- public void create(Requirement requirement, Integer characteristicId, TechnicalDebtRuleCache ruleCache) {
+ public void create(Requirement requirement, Integer characteristicId, Integer rootCharacteristicId, TechnicalDebtRuleCache ruleCache) {
SqlSession session = mybatis.openSession();
try {
- create(requirement, characteristicId, ruleCache, session);
+ create(requirement, characteristicId, rootCharacteristicId, ruleCache, session);
session.commit();
} finally {
MyBatis.closeQuietly(session);
diff --git a/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtModelSynchronizer.java b/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtModelSynchronizer.java
index 4828d832851..0c885d13c94 100644
--- a/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtModelSynchronizer.java
+++ b/sonar-core/src/main/java/org/sonar/core/technicaldebt/TechnicalDebtModelSynchronizer.java
@@ -122,7 +122,7 @@ public class TechnicalDebtModelSynchronizer implements ServerExtension {
Rule rule = rulesCache.getByRuleKey(pluginRequirement.ruleKey());
if (!find(existingModel, rule)) {
CharacteristicDto characteristicDto = findCharacteristic(existingModel, pluginRequirement.characteristic().key());
- CharacteristicDto requirementDto = CharacteristicDto.toDto(pluginRequirement, characteristicDto.getId(), rule.getId());
+ CharacteristicDto requirementDto = CharacteristicDto.toDto(pluginRequirement, characteristicDto.getId(), characteristicDto.getRootId(), rule.getId());
dao.insert(requirementDto, session);
}
}
diff --git a/sonar-core/src/main/java/org/sonar/core/technicaldebt/db/CharacteristicDto.java b/sonar-core/src/main/java/org/sonar/core/technicaldebt/db/CharacteristicDto.java
index 99bc0c1f7be..5bbad0f6e58 100644
--- a/sonar-core/src/main/java/org/sonar/core/technicaldebt/db/CharacteristicDto.java
+++ b/sonar-core/src/main/java/org/sonar/core/technicaldebt/db/CharacteristicDto.java
@@ -37,6 +37,7 @@ public class CharacteristicDto implements Serializable {
private String kee;
private String name;
private Integer parentId;
+ private Integer rootId;
private Integer characteristicOrder;
private Integer ruleId;
private String functionKey;
@@ -88,6 +89,16 @@ public class CharacteristicDto implements Serializable {
}
@CheckForNull
+ public Integer getRootId() {
+ return rootId;
+ }
+
+ public CharacteristicDto setRootId(@Nullable Integer rootId) {
+ this.rootId = rootId;
+ return this;
+ }
+
+ @CheckForNull
public Integer getOrder() {
return characteristicOrder;
}
@@ -192,6 +203,7 @@ public class CharacteristicDto implements Serializable {
.setName(name)
.setOrder(characteristicOrder)
.setParent(parent)
+ .setRoot(parent)
.setCreatedAt(createdAt)
.setUpdatedAt(updatedAt);
}
@@ -202,16 +214,18 @@ public class CharacteristicDto implements Serializable {
.setName(characteristic.name())
.setOrder(characteristic.order())
.setParentId(parentId)
+ .setRootId(parentId)
.setEnabled(true)
.setCreatedAt(characteristic.createdAt())
.setUpdatedAt(characteristic.updatedAt());
}
- public Requirement toRequirement(RuleKey ruleKey, Characteristic characteristic) {
+ public Requirement toRequirement(RuleKey ruleKey, Characteristic characteristic, Characteristic rootCharacteristic) {
return new Requirement()
.setId(id)
.setRuleKey(ruleKey)
.setCharacteristic(characteristic)
+ .setRootCharacteristic(rootCharacteristic)
.setFunction(functionKey)
.setFactor(WorkUnit.create(factorValue, factorUnit))
.setOffset(WorkUnit.create(offsetValue, offsetUnit))
@@ -219,10 +233,11 @@ public class CharacteristicDto implements Serializable {
.setUpdatedAt(updatedAt);
}
- public static CharacteristicDto toDto(Requirement requirement, Integer characteristicId, Integer ruleId) {
+ public static CharacteristicDto toDto(Requirement requirement, Integer characteristicId, Integer rootCharacteristicId, Integer ruleId) {
return new CharacteristicDto()
.setRuleId(ruleId)
.setParentId(characteristicId)
+ .setRootId(rootCharacteristicId)
.setFunction(requirement.function())
.setFactorValue(requirement.factor().getValue())
.setFactorUnit(requirement.factor().getUnit())
diff --git a/sonar-core/src/main/resources/org/sonar/core/persistence/schema-h2.ddl b/sonar-core/src/main/resources/org/sonar/core/persistence/schema-h2.ddl
index 1d8e38000f6..4eff6867b75 100644
--- a/sonar-core/src/main/resources/org/sonar/core/persistence/schema-h2.ddl
+++ b/sonar-core/src/main/resources/org/sonar/core/persistence/schema-h2.ddl
@@ -39,6 +39,7 @@ CREATE TABLE "CHARACTERISTICS" (
"NAME" VARCHAR(100),
"DESCRIPTION" VARCHAR(4000),
"PARENT_ID" INTEGER,
+ "ROOT_ID" INTEGER,
"RULE_ID" INTEGER,
"FUNCTION_KEY" VARCHAR(100),
"FACTOR_VALUE" DOUBLE,
diff --git a/sonar-core/src/main/resources/org/sonar/core/technicaldebt/db/CharacteristicMapper.xml b/sonar-core/src/main/resources/org/sonar/core/technicaldebt/db/CharacteristicMapper.xml
index 2ee11c977ce..9d7de18876d 100644
--- a/sonar-core/src/main/resources/org/sonar/core/technicaldebt/db/CharacteristicMapper.xml
+++ b/sonar-core/src/main/resources/org/sonar/core/technicaldebt/db/CharacteristicMapper.xml
@@ -9,6 +9,7 @@
c.kee as kee,
c.name as name,
c.parent_id as parentId,
+ c.root_id as rootId,
c.characteristic_order as characteristicOrder,
c.rule_id as ruleId,
c.function_key as functionKey,
@@ -68,10 +69,10 @@
</select>
<insert id="insert" parameterType="Characteristic" keyColumn="id" useGeneratedKeys="true" keyProperty="id">
- INSERT INTO characteristics (kee, name, parent_id, characteristic_order,
+ INSERT INTO characteristics (kee, name, parent_id, root_id, characteristic_order,
rule_id, function_key, factor_value, factor_unit, offset_value, offset_unit,
enabled, created_at, updated_at)
- VALUES (#{kee}, #{name}, #{parentId}, #{characteristicOrder},
+ VALUES (#{kee}, #{name}, #{parentId}, #{rootId}, #{characteristicOrder},
#{ruleId}, #{functionKey}, #{factorValue}, #{factorUnit}, #{offsetValue}, #{offsetUnit},
#{enabled}, current_timestamp, current_timestamp)
</insert>
@@ -80,6 +81,7 @@
update characteristics set
name=#{name},
parent_id=#{parentId},
+ root_id=#{rootId},
characteristic_order=#{characteristicOrder},
rule_id=#{ruleId},
function_key=#{functionKey},
diff --git a/sonar-core/src/test/java/org/sonar/core/technicaldebt/db/CharacteristicDaoTest.java b/sonar-core/src/test/java/org/sonar/core/technicaldebt/db/CharacteristicDaoTest.java
index c1211dda7fe..b6f75bf764d 100644
--- a/sonar-core/src/test/java/org/sonar/core/technicaldebt/db/CharacteristicDaoTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/technicaldebt/db/CharacteristicDaoTest.java
@@ -53,6 +53,7 @@ public class CharacteristicDaoTest extends AbstractDaoTestCase {
assertThat(rootCharacteristic.getKey()).isEqualTo("PORTABILITY");
assertThat(rootCharacteristic.getName()).isEqualTo("Portability");
assertThat(rootCharacteristic.getParentId()).isNull();
+ assertThat(rootCharacteristic.getRootId()).isNull();
assertThat(rootCharacteristic.getRuleId()).isNull();
assertThat(rootCharacteristic.getOrder()).isEqualTo(1);
assertThat(rootCharacteristic.isEnabled()).isTrue();
@@ -64,6 +65,7 @@ public class CharacteristicDaoTest extends AbstractDaoTestCase {
assertThat(characteristic.getKey()).isEqualTo("COMPILER_RELATED_PORTABILITY");
assertThat(characteristic.getName()).isEqualTo("Compiler related portability");
assertThat(characteristic.getParentId()).isEqualTo(1);
+ assertThat(characteristic.getRootId()).isEqualTo(1);
assertThat(characteristic.getRuleId()).isNull();
assertThat(characteristic.getOrder()).isNull();
assertThat(characteristic.isEnabled()).isTrue();
@@ -75,6 +77,7 @@ public class CharacteristicDaoTest extends AbstractDaoTestCase {
assertThat(requirement.getKey()).isNull();
assertThat(requirement.getName()).isNull();
assertThat(requirement.getParentId()).isEqualTo(2);
+ assertThat(requirement.getRootId()).isEqualTo(1);
assertThat(requirement.getRuleId()).isEqualTo(1);
assertThat(requirement.getOrder()).isNull();
assertThat(requirement.getFunction()).isEqualTo("linear_offset");
@@ -121,6 +124,7 @@ public class CharacteristicDaoTest extends AbstractDaoTestCase {
assertThat(dto).isNotNull();
assertThat(dto.getId()).isEqualTo(3);
assertThat(dto.getParentId()).isEqualTo(2);
+ assertThat(dto.getRootId()).isEqualTo(1);
}
@Test
@@ -131,11 +135,13 @@ public class CharacteristicDaoTest extends AbstractDaoTestCase {
assertThat(dto).isNotNull();
assertThat(dto.getId()).isEqualTo(2);
assertThat(dto.getParentId()).isEqualTo(1);
+ assertThat(dto.getRootId()).isEqualTo(1);
dto = dao.selectCharacteristic("PORTABILITY");
assertThat(dto).isNotNull();
assertThat(dto.getId()).isEqualTo(1);
assertThat(dto.getParentId()).isNull();
+ assertThat(dto.getRootId()).isNull();
assertThat(dao.selectCharacteristic("UNKNOWN")).isNull();
}
@@ -168,6 +174,7 @@ public class CharacteristicDaoTest extends AbstractDaoTestCase {
public void insert_requirement() throws Exception {
CharacteristicDto dto = new CharacteristicDto()
.setParentId(2)
+ .setRootId(1)
.setRuleId(1)
.setFunction("linear_offset")
.setFactorValue(20.0)
@@ -208,6 +215,7 @@ public class CharacteristicDaoTest extends AbstractDaoTestCase {
CharacteristicDto dto = new CharacteristicDto()
.setId(1)
.setParentId(3)
+ .setRootId(1)
.setRuleId(2)
.setFunction("linear")
.setFactorValue(21.0)
diff --git a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/disable-result.xml b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/disable-result.xml
index 1e24e9eba21..81b97e0b518 100644
--- a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/disable-result.xml
+++ b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/disable-result.xml
@@ -1,6 +1,6 @@
<dataset>
- <characteristics id="1" kee="COMPILER_RELATED_PORTABILITY" name="Compiler related portability" parent_id="[null]" rule_id="[null]" characteristic_order="1"
+ <characteristics id="1" kee="COMPILER_RELATED_PORTABILITY" name="Compiler related portability" parent_id="[null]" root_id="[null]" rule_id="[null]" characteristic_order="1"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[false]"
created_at="2013-11-20" updated_at="[null]"/>
diff --git a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/disable.xml b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/disable.xml
index 74fec86e6fb..a970b324456 100644
--- a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/disable.xml
+++ b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/disable.xml
@@ -1,6 +1,6 @@
<dataset>
- <characteristics id="1" kee="COMPILER_RELATED_PORTABILITY" name="Compiler related portability" parent_id="[null]" rule_id="[null]" characteristic_order="1"
+ <characteristics id="1" kee="COMPILER_RELATED_PORTABILITY" name="Compiler related portability" parent_id="[null]" root_id="[null]" rule_id="[null]" characteristic_order="1"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[true]"
created_at="2013-11-20" updated_at="2013-11-22"/>
diff --git a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/insert_characteristic-result.xml b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/insert_characteristic-result.xml
index ed3d4e2c902..b6e2d5df640 100644
--- a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/insert_characteristic-result.xml
+++ b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/insert_characteristic-result.xml
@@ -1,6 +1,6 @@
<dataset>
- <characteristics id="1" kee="COMPILER_RELATED_PORTABILITY" name="Compiler related portability" parent_id="[null]" rule_id="[null]" characteristic_order="1"
+ <characteristics id="1" kee="COMPILER_RELATED_PORTABILITY" name="Compiler related portability" parent_id="[null]" root_id="[null]" rule_id="[null]" characteristic_order="1"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[true]"
created_at="2013-11-20" updated_at="[null]"/>
diff --git a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/insert_requirement-result.xml b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/insert_requirement-result.xml
index 3956e8a76e6..2b1ccb8fd6b 100644
--- a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/insert_requirement-result.xml
+++ b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/insert_requirement-result.xml
@@ -1,6 +1,6 @@
<dataset>
- <characteristics id="1" kee="[null]" name="[null]" parent_id="2" rule_id="1" characteristic_order="[null]"
+ <characteristics id="1" kee="[null]" name="[null]" parent_id="2" root_id="1" rule_id="1" characteristic_order="[null]"
function_key="linear_offset" factor_value="20.0" factor_unit="mn" offset_value="30.0" offset_unit="h" enabled="[true]"
created_at="2013-11-20" updated_at="[null]"/>
diff --git a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/select_enabled_root_characteristics.xml b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/select_enabled_root_characteristics.xml
index 5027540100b..c8200af2825 100644
--- a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/select_enabled_root_characteristics.xml
+++ b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/select_enabled_root_characteristics.xml
@@ -1,25 +1,25 @@
<dataset>
- <characteristics id="1" kee="PORTABILITY" name="Portability" parent_id="[null]" rule_id="[null]" characteristic_order="1"
+ <characteristics id="1" kee="PORTABILITY" name="Portability" parent_id="[null]" root_id="[null]" rule_id="[null]" characteristic_order="1"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[true]"
created_at="2013-11-20" updated_at="2013-11-22"/>
- <characteristics id="2" kee="COMPILER_RELATED_PORTABILITY" name="Compiler related portability" parent_id="1" rule_id="[null]" characteristic_order="[null]"
+ <characteristics id="2" kee="COMPILER_RELATED_PORTABILITY" name="Compiler related portability" parent_id="1" root_id="1" rule_id="[null]" characteristic_order="[null]"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[true]"
created_at="2013-11-20" updated_at="2013-11-22"/>
<!-- requirement -->
- <characteristics id="3" kee="[null]" name="[null]" parent_id="2" rule_id="1"
+ <characteristics id="3" kee="[null]" name="[null]" parent_id="2" root_id="1" rule_id="1"
function_key="linear_offset" factor_value="20.0" factor_unit="mn" offset_value="30.0" offset_unit="h" enabled="[true]"
created_at="2013-11-20" updated_at="[null]"/>
<!-- disabled characteristics -->
- <characteristics id="4" kee="DISABLED_CHARACTERISTIC" name="Disabled characteristic" parent_id="1" rule_id="[null]" characteristic_order="2"
+ <characteristics id="4" kee="DISABLED_CHARACTERISTIC" name="Disabled characteristic" parent_id="1" root_id="1" rule_id="[null]" characteristic_order="2"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[false]"
created_at="2013-11-20" updated_at="2013-11-22"/>
<!-- disabled requirement -->
- <characteristics id="5" kee="[null]" name="[null]" parent_id="4" rule_id="1"
+ <characteristics id="5" kee="[null]" name="[null]" parent_id="4" root_id="4" rule_id="1"
function_key="linear_offset" factor_value="30.0" factor_unit="mn" offset_value="20.0" offset_unit="h" enabled="[false]"
created_at="2013-11-20" updated_at="2013-11-22"/>
diff --git a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/select_enabled_root_characteristics_order_by_characteristic_order.xml b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/select_enabled_root_characteristics_order_by_characteristic_order.xml
index b8148025214..00a47fd34cc 100644
--- a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/select_enabled_root_characteristics_order_by_characteristic_order.xml
+++ b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/select_enabled_root_characteristics_order_by_characteristic_order.xml
@@ -1,14 +1,14 @@
<dataset>
- <characteristics id="1" kee="PORTABILITY" name="Portability" parent_id="[null]" rule_id="[null]" characteristic_order="2"
+ <characteristics id="1" kee="PORTABILITY" name="Portability" parent_id="[null]" root_id="[null]" rule_id="[null]" characteristic_order="2"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[true]"
created_at="2013-11-20" updated_at="2013-11-22"/>
- <characteristics id="2" kee="TESTABILITY" name="Testability" parent_id="[null]" rule_id="[null]" characteristic_order="1"
+ <characteristics id="2" kee="TESTABILITY" name="Testability" parent_id="[null]" root_id="[null]" rule_id="[null]" characteristic_order="1"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[true]"
created_at="2013-11-20" updated_at="2013-11-22"/>
- <characteristics id="3" kee="MAINTAINABILITY" name="Maintainability" parent_id="[null]" rule_id="[null]" characteristic_order="4"
+ <characteristics id="3" kee="MAINTAINABILITY" name="Maintainability" parent_id="[null]" root_id="[null]" rule_id="[null]" characteristic_order="4"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[true]"
created_at="2013-11-20" updated_at="2013-11-22"/>
diff --git a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/shared.xml b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/shared.xml
index e5b8294e829..d84c39d5d41 100644
--- a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/shared.xml
+++ b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/shared.xml
@@ -1,32 +1,32 @@
<dataset>
<!-- Root characteristic -->
- <characteristics id="1" kee="PORTABILITY" name="Portability" parent_id="[null]" rule_id="[null]" characteristic_order="1"
+ <characteristics id="1" kee="PORTABILITY" name="Portability" parent_id="[null]" root_id="[null]" rule_id="[null]" characteristic_order="1"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[true]"
created_at="2013-11-20" updated_at="2013-11-22"/>
<!-- Characteristic -->
- <characteristics id="2" kee="COMPILER_RELATED_PORTABILITY" name="Compiler related portability" parent_id="1" rule_id="[null]" characteristic_order="[null]"
+ <characteristics id="2" kee="COMPILER_RELATED_PORTABILITY" name="Compiler related portability" parent_id="1" root_id="1" rule_id="[null]" characteristic_order="[null]"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[true]"
created_at="2013-11-20" updated_at="2013-11-22"/>
<!-- Requirement -->
- <characteristics id="3" kee="[null]" name="[null]" parent_id="2" rule_id="1"
+ <characteristics id="3" kee="[null]" name="[null]" parent_id="2" root_id="1" rule_id="1"
function_key="linear_offset" factor_value="20.0" factor_unit="mn" offset_value="30.0" offset_unit="h" enabled="[true]"
created_at="2013-11-20" updated_at="[null]"/>
<!-- Disabled root characteristic -->
- <characteristics id="4" kee="DISABLED_ROOT_CHARACTERISTIC" name="Disabled root characteristic" parent_id="[null]" rule_id="[null]" characteristic_order="2"
+ <characteristics id="4" kee="DISABLED_ROOT_CHARACTERISTIC" name="Disabled root characteristic" parent_id="[null]" root_id="[null]" rule_id="[null]" characteristic_order="2"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[false]"
created_at="2013-11-20" updated_at="2013-11-22"/>
<!-- Disabled characteristic -->
- <characteristics id="5" kee="DISABLED_CHARACTERISTIC" name="Disabled characteristic" parent_id="4" rule_id="[null]" characteristic_order="[null]"
+ <characteristics id="5" kee="DISABLED_CHARACTERISTIC" name="Disabled characteristic" parent_id="4" root_id="4" rule_id="[null]" characteristic_order="[null]"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[false]"
created_at="2013-11-20" updated_at="2013-11-22"/>
<!-- Disabled requirement -->
- <characteristics id="6" kee="[null]" name="[null]" parent_id="5" rule_id="1"
+ <characteristics id="6" kee="[null]" name="[null]" parent_id="5" root_id="4" rule_id="1"
function_key="linear_offset" factor_value="30.0" factor_unit="mn" offset_value="20.0" offset_unit="h" enabled="[false]"
created_at="2013-11-20" updated_at="2013-11-22"/>
diff --git a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_characteristic-result.xml b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_characteristic-result.xml
index 9b647c999d7..026a50563e0 100644
--- a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_characteristic-result.xml
+++ b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_characteristic-result.xml
@@ -1,6 +1,6 @@
<dataset>
- <characteristics id="1" kee="COMPILER_RELATED_PORTABILITY" name="New name" parent_id="[null]" rule_id="[null]" characteristic_order="2"
+ <characteristics id="1" kee="COMPILER_RELATED_PORTABILITY" name="New name" parent_id="[null]" rule_id="[null]" root_id="[null]" characteristic_order="2"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[false]"
created_at="2013-11-20" updated_at="2013-11-22"/>
diff --git a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_characteristic.xml b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_characteristic.xml
index 8a5ca549420..b4817ece8fa 100644
--- a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_characteristic.xml
+++ b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_characteristic.xml
@@ -1,6 +1,6 @@
<dataset>
- <characteristics id="1" kee="COMPILER_RELATED_PORTABILITY" name="Compiler related portability" parent_id="[null]" rule_id="[null]" characteristic_order="1"
+ <characteristics id="1" kee="COMPILER_RELATED_PORTABILITY" name="Compiler related portability" parent_id="[null]" root_id="[null]" rule_id="[null]" characteristic_order="1"
function_key="[null]" factor_value="[null]" factor_unit="[null]" offset_value="[null]" offset_unit="[null]" enabled="[true]"
created_at="2013-11-20" updated_at="2013-11-20"/>
diff --git a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_requirement-result.xml b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_requirement-result.xml
index 301e0589798..71c4150f0cf 100644
--- a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_requirement-result.xml
+++ b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_requirement-result.xml
@@ -1,6 +1,6 @@
<dataset>
- <characteristics id="1" kee="[null]" name="[null]" parent_id="3" rule_id="2" characteristic_order="[null]"
+ <characteristics id="1" kee="[null]" name="[null]" parent_id="3" root_id="1" rule_id="2" characteristic_order="[null]"
function_key="linear" factor_value="21.0" factor_unit="h" offset_value="[null]" offset_unit="[null]" enabled="[false]"
created_at="2013-11-20" updated_at="2013-11-22"/>
diff --git a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_requirement.xml b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_requirement.xml
index 3956e8a76e6..2b1ccb8fd6b 100644
--- a/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_requirement.xml
+++ b/sonar-core/src/test/resources/org/sonar/core/technicaldebt/db/CharacteristicDaoTest/update_requirement.xml
@@ -1,6 +1,6 @@
<dataset>
- <characteristics id="1" kee="[null]" name="[null]" parent_id="2" rule_id="1" characteristic_order="[null]"
+ <characteristics id="1" kee="[null]" name="[null]" parent_id="2" root_id="1" rule_id="1" characteristic_order="[null]"
function_key="linear_offset" factor_value="20.0" factor_unit="mn" offset_value="30.0" offset_unit="h" enabled="[true]"
created_at="2013-11-20" updated_at="[null]"/>