for (MeasureModel value : values) {
mapper.insert(value);
if (value.getMeasureData() != null) {
- mapper.insertData(value);
+ mapper.insertData(value.getMeasureData());
}
}
mapper.insert(value);
if (value.getMeasureData() != null) {
- mapper.insertData(value);
+ mapper.insertData(value.getMeasureData());
}
session.commit();
mapper.update(value);
mapper.deleteData(value);
if (value.getMeasureData() != null) {
- mapper.insertData(value);
+ mapper.insertData(value.getMeasureData());
}
session.commit();
*/
package org.sonar.batch.index;
+import org.mockito.ArgumentCaptor;
+
import org.apache.commons.lang.StringUtils;
import org.junit.Before;
import org.junit.Test;
public void should_insert_measure_with_text_data() {
setupData("empty");
- measurePersister.saveMeasure(project, new Measure(ncloc()).setData(SHORT));
- measurePersister.saveMeasure(project, new Measure(ncloc()).setData(LONG));
+ Measure withLargeData = new Measure(ncloc()).setData(LONG);
+ measurePersister.saveMeasure(project, withLargeData);
checkTables("shouldInsertMeasureWithLargeData", "project_measures", "measure_data");
+
+ ArgumentCaptor<MeasureModel> validMeasureModel = ArgumentCaptor.forClass(MeasureModel.class);
+ verify(memoryOptimizer).evictDataMeasure(eq(withLargeData), validMeasureModel.capture());
+ assertThat(validMeasureModel.getValue().getMeasureData().getId()).isNotNull();
}
@Test
<dataset>
<project_measures id="1" VALUE="[null]" METRIC_ID="1" SNAPSHOT_ID="3001" alert_text="[null]" RULES_CATEGORY_ID="[null]"
- RULE_ID="[null]" text_value="SHORT" tendency="[null]" measure_date="[null]" project_id="[null]"
- alert_status="[null]" description="[null]" rule_priority="[null]" characteristic_id="[null]" url="[null]"
- person_id="[null]"
- variation_value_1="[null]" variation_value_2="[null]" variation_value_3="[null]" variation_value_4="[null]" variation_value_5="[null]"/>
-
- <project_measures id="2" VALUE="[null]" METRIC_ID="1" SNAPSHOT_ID="3001" alert_text="[null]" RULES_CATEGORY_ID="[null]"
RULE_ID="[null]" text_value="[null]"
tendency="[null]" measure_date="[null]" project_id="[null]"
alert_status="[null]" description="[null]" rule_priority="[null]" characteristic_id="[null]" url="[null]"
person_id="[null]"
variation_value_1="[null]" variation_value_2="[null]" variation_value_3="[null]" variation_value_4="[null]" variation_value_5="[null]"/>
- <measure_data id="1" measure_id="2" snapshot_id="3001" data="MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OQ=="/>
+ <measure_data id="1" measure_id="1" snapshot_id="3001" data="MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OQ=="/>
</dataset>
*/
package org.sonar.core.persistence;
+import org.sonar.api.database.model.MeasureData;
+
import ch.qos.logback.classic.Level;
import com.google.common.io.Closeables;
import org.apache.ibatis.builder.xml.XMLMapperBuilder;
loadAlias(conf, "Widget", WidgetDto.class);
loadAlias(conf, "WidgetProperty", WidgetPropertyDto.class);
loadAlias(conf, "MeasureModel", MeasureModel.class);
+ loadAlias(conf, "MeasureData", MeasureData.class);
Class<?>[] mappers = {ActiveDashboardMapper.class, AuthorMapper.class, FilterMapper.class, CriterionMapper.class, FilterColumnMapper.class, DashboardMapper.class,
DependencyMapper.class, DuplicationMapper.class, LoadedTemplateMapper.class, PropertiesMapper.class, PurgeMapper.class,
public interface MeasureMapper {
void insert(MeasureModel measure);
- void insertData(MeasureModel data);
+ void insertData(MeasureData data);
void deleteData(MeasureModel data);
)
</insert>
- <insert id="insertData" parameterType="MeasureModel" useGeneratedKeys="true">
+ <insert id="insertData" parameterType="MeasureData" useGeneratedKeys="true" keyProperty="id">
INSERT INTO measure_data (measure_id, snapshot_id, data)
- VALUES (#{id}, #{snapshotId}, #{measureData.data})
+ VALUES (#{measure.id}, #{measure.snapshotId}, #{data})
</insert>
<update id="deleteData" parameterType="MeasureModel">
)
</insert>
- <insert id="insertData" databaseId="oracle" parameterType="MeasureModel" useGeneratedKeys="true">
+ <insert id="insertData" databaseId="oracle" parameterType="MeasureData" keyColumn="id" useGeneratedKeys="true" keyProperty="id">
INSERT INTO measure_data (id, measure_id, snapshot_id, data)
- VALUES (measure_data_seq.NEXTVAL, #{id}, #{snapshotId}, #{measureData.data})
+ VALUES (measure_data_seq.NEXTVAL, #{measure.id}, #{measure.snapshotId}, #{data})
</insert>
</mapper>