Commit 109dde7e authored by Noel Alonso's avatar Noel Alonso
Browse files

Contempla varios dataDefinition por z y estación

parent 33ea0f68
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -7,11 +7,11 @@ import es.redmic.databaselib.common.repository.BaseRepository;
import es.redmic.db.geodata.properties.fixedsurvey.model.FixedMeasurement;
import es.redmic.db.maintenance.parameter.model.DataDefinition;


public interface FixedMeasurementRepository extends BaseRepository<FixedMeasurement, Long> {

	@Query("select s from FixedMeasurement s where s.fixedSurvey.id = :id and s.z = :z")
	FixedMeasurement findByZAndSurveyStation(@Param("z") double z, @Param("id") Long surveyStationId);
	@Query("select s from FixedMeasurement s where s.fixedSurvey.id = :id and s.z = :z and s.dataDefinition.id = :dataDefinitionId")
	FixedMeasurement findByZAndSurveyStation(@Param("z") double z, @Param("id") Long surveyStationId,
			@Param("dataDefinitionId") Long dataDefinitionId);

	@Query("select s from FixedMeasurement s where s.dataDefinition.id = :id")
	FixedMeasurement findByDataDefinitionId(@Param("id") Long dataDefinitionId);
+43 −36
Original line number Diff line number Diff line
@@ -52,8 +52,10 @@ public abstract class GeoSeriesService<TModel extends FixedSurvey, TDTO extends
			MeasurementDTO measurementDTO = measurementsOrigin.get(i);

			// Guardamos dataDefinition
			DataDefinition dataDefinition = factory.getMapperFacade().map(measurementDTO.getDataDefinition(), DataDefinition.class);
			dataDefinition.setParameterUnit(getParameterUnit(measurementDTO.getParameter().getId(), measurementDTO.getUnit().getId()));
			DataDefinition dataDefinition = factory.getMapperFacade().map(measurementDTO.getDataDefinition(),
					DataDefinition.class);
			dataDefinition.setParameterUnit(
					getParameterUnit(measurementDTO.getParameter().getId(), measurementDTO.getUnit().getId()));
			dataDefinition = dataDefinitionService.saveModel(dataDefinition);

			// Guardamos measurement
@@ -68,10 +70,9 @@ public abstract class GeoSeriesService<TModel extends FixedSurvey, TDTO extends
					DataDefinitionSeriesDTO.class);
			dataDefinitionItem.setZ(fixedMeasurement.getZ());

			HierarchicalParameterDTO parDto = 
					factory.getMapperFacade().map(dataDefinition.getParameterUnit().getParameter(), HierarchicalParameterDTO.class);
			UnitDTO unitDto = 
					factory.getMapperFacade().map(dataDefinition.getParameterUnit().getUnit(), UnitDTO.class);
			HierarchicalParameterDTO parDto = factory.getMapperFacade()
					.map(dataDefinition.getParameterUnit().getParameter(), HierarchicalParameterDTO.class);
			UnitDTO unitDto = factory.getMapperFacade().map(dataDefinition.getParameterUnit().getUnit(), UnitDTO.class);

			MeasurementDTO measurementItem = new MeasurementDTO();
			measurementItem.setDataDefinition(dataDefinitionItem);
@@ -96,20 +97,27 @@ public abstract class GeoSeriesService<TModel extends FixedSurvey, TDTO extends
			DataDefinitionDTO dataDefinitionDTO = measurementDTO.getDataDefinition();
			Double z = dataDefinitionDTO.getZ();
			// Guardamos measurement sin pasar por dto
			FixedMeasurement fixedMeasurement = getFixedMeasurement(model.getId(), z);

			DataDefinition dataDefinition = factory.getMapperFacade().map(dataDefinitionDTO, DataDefinition.class);
			dataDefinition.setParameterUnit(getParameterUnit(measurementDTO.getParameter().getId(), measurementDTO.getUnit().getId()));
			dataDefinition.setParameterUnit(
					getParameterUnit(measurementDTO.getParameter().getId(), measurementDTO.getUnit().getId()));

			FixedMeasurement fixedMeasurement = null;

			// Si data definition es null, el Measurement no existe y hay que insertarlo.
			if (dataDefinitionDTO.getId() == null) {

				if (fixedMeasurement == null) {
				dataDefinition = dataDefinitionService.saveModel(dataDefinition);

				fixedMeasurement = new FixedMeasurement();
				fixedMeasurement.setFixedSurvey(model);
				fixedMeasurement.setZ(z);
				fixedMeasurement.setDataDefinition(dataDefinition);
				fixedMeasurement = fixedMeasurementRepository.save(fixedMeasurement);
				}
				dataDefinition = dataDefinitionService.saveModel(dataDefinition);
			} else {
				// Si el dataDefinition no es null, se espera que exista el Measurement sin
				// modificar la z
				fixedMeasurement = getFixedMeasurement(model.getId(), dataDefinitionDTO.getId(), z);
				// El measurement, en caso de no existir, lanza
				if (fixedMeasurement == null)
					throw new DBNotFoundException("FixedMeasurement",
@@ -121,10 +129,9 @@ public abstract class GeoSeriesService<TModel extends FixedSurvey, TDTO extends
					DataDefinitionSeriesDTO.class);
			dataDefinitionItem.setZ(fixedMeasurement.getZ());

			HierarchicalParameterDTO parDto = 
					factory.getMapperFacade().map(dataDefinition.getParameterUnit().getParameter(), HierarchicalParameterDTO.class);
			UnitDTO unitDto = 
					factory.getMapperFacade().map(dataDefinition.getParameterUnit().getUnit(), UnitDTO.class);
			HierarchicalParameterDTO parDto = factory.getMapperFacade()
					.map(dataDefinition.getParameterUnit().getParameter(), HierarchicalParameterDTO.class);
			UnitDTO unitDto = factory.getMapperFacade().map(dataDefinition.getParameterUnit().getUnit(), UnitDTO.class);

			MeasurementDTO measurementItem = new MeasurementDTO();
			measurementItem.setDataDefinition(dataDefinitionItem);
@@ -146,7 +153,7 @@ public abstract class GeoSeriesService<TModel extends FixedSurvey, TDTO extends
		return parameterUnit;
	}

	private FixedMeasurement getFixedMeasurement(Long surveySationId, Double z) {
		return fixedMeasurementRepository.findByZAndSurveyStation(z, surveySationId);
	private FixedMeasurement getFixedMeasurement(Long surveySationId, Long dataDefinitionId, Double z) {
		return fixedMeasurementRepository.findByZAndSurveyStation(z, surveySationId, dataDefinitionId);
	}
}