forked from Abdulbari/sgeUpdated
Fix issue in updating datacenter
Found a hibernate cascade issue and was fixed by reuse the existing collection instaed of creating a new one in updating the datacenter entity
This commit is contained in:
@@ -31,10 +31,10 @@ public class DataCenterMapper extends BaseCreateUpdateMapper<DataCenter, DataCen
|
|||||||
private final ActivitySubUnitService activitySubUnitService;
|
private final ActivitySubUnitService activitySubUnitService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public DataCenterMapper(AreaService areaService, SectorService sectorService,
|
public DataCenterMapper(AreaService areaService, SectorService sectorService,
|
||||||
SubSectorService subSectorService, EmissionSourceService emissionSourceService,
|
SubSectorService subSectorService, EmissionSourceService emissionSourceService,
|
||||||
EmissionScopeService emissionScopeService, ConsuptionUnitService consuptionUnitService,
|
EmissionScopeService emissionScopeService, ConsuptionUnitService consuptionUnitService,
|
||||||
ActivitySubUnitService activitySubUnitService) {
|
ActivitySubUnitService activitySubUnitService) {
|
||||||
this.areaService = areaService;
|
this.areaService = areaService;
|
||||||
this.sectorService = sectorService;
|
this.sectorService = sectorService;
|
||||||
this.subSectorService = subSectorService;
|
this.subSectorService = subSectorService;
|
||||||
@@ -47,68 +47,71 @@ public class DataCenterMapper extends BaseCreateUpdateMapper<DataCenter, DataCen
|
|||||||
@Override
|
@Override
|
||||||
public DataCenter toEntity(DataCenterCreateInput input) {
|
public DataCenter toEntity(DataCenterCreateInput input) {
|
||||||
DataCenter entity = new DataCenter();
|
DataCenter entity = new DataCenter();
|
||||||
|
|
||||||
// Basic fields
|
// Basic fields
|
||||||
entity.setDataCenter(input.getDataCenter());
|
entity.setDataCenter(input.getDataCenter());
|
||||||
entity.setExternalId(input.getExternalId());
|
entity.setExternalId(input.getExternalId());
|
||||||
entity.setNumber(input.getNumber());
|
entity.setNumber(input.getNumber());
|
||||||
entity.setConsuptionAmount(input.getConsuptionAmount());
|
entity.setConsuptionAmount(input.getConsuptionAmount());
|
||||||
|
|
||||||
// Convert ID references to entities
|
// Convert ID references to entities
|
||||||
if (input.getAreaId() != null) {
|
if (input.getAreaId() != null) {
|
||||||
entity.setArea(areaService.findById(input.getAreaId()).orElse(null));
|
entity.setArea(areaService.findById(input.getAreaId()).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getSectorId() != null) {
|
if (input.getSectorId() != null) {
|
||||||
entity.setSector(sectorService.findById(input.getSectorId()).orElse(null));
|
entity.setSector(sectorService.findById(input.getSectorId()).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getSubSectorId() != null) {
|
if (input.getSubSectorId() != null) {
|
||||||
entity.setSubSector(subSectorService.findById(input.getSubSectorId()).orElse(null));
|
entity.setSubSector(subSectorService.findById(input.getSubSectorId()).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getEmissionScopeId() != null) {
|
if (input.getEmissionScopeId() != null) {
|
||||||
entity.setEmissionScope(emissionScopeService.findById(input.getEmissionScopeId()).orElse(null));
|
entity.setEmissionScope(emissionScopeService.findById(input.getEmissionScopeId()).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getActivitySubUnitId() != null) {
|
if (input.getActivitySubUnitId() != null) {
|
||||||
entity.setActivitySubUnit(activitySubUnitService.findById(input.getActivitySubUnitId()).orElse(null));
|
entity.setActivitySubUnit(activitySubUnitService.findById(input.getActivitySubUnitId()).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
// New attributes
|
// New attributes
|
||||||
entity.setAyposURL(input.getAyposURL());
|
entity.setAyposURL(input.getAyposURL());
|
||||||
entity.setAddress(input.getAddress());
|
entity.setAddress(input.getAddress());
|
||||||
entity.setLatitude(input.getLatitude());
|
entity.setLatitude(input.getLatitude());
|
||||||
entity.setLongitude(input.getLongitude());
|
entity.setLongitude(input.getLongitude());
|
||||||
|
|
||||||
// Handle multiple emission sources if provided
|
// Handle multiple emission sources if provided
|
||||||
if (input.getDataCenterEmissionSources() != null && !input.getDataCenterEmissionSources().isEmpty()) {
|
if (input.getDataCenterEmissionSources() != null && !input.getDataCenterEmissionSources().isEmpty()) {
|
||||||
List<DataCenterEmissionSource> dataCenterEmissionSources = new ArrayList<>();
|
List<DataCenterEmissionSource> dataCenterEmissionSources = new ArrayList<>();
|
||||||
|
|
||||||
for (DataCenterEmissionSourceInput emissionSourceInput : input.getDataCenterEmissionSources()) {
|
for (DataCenterEmissionSourceInput emissionSourceInput : input.getDataCenterEmissionSources()) {
|
||||||
DataCenterEmissionSource dcEmissionSource = new DataCenterEmissionSource();
|
DataCenterEmissionSource dcEmissionSource = new DataCenterEmissionSource();
|
||||||
dcEmissionSource.setDataCenter(entity);
|
dcEmissionSource.setDataCenter(entity);
|
||||||
|
|
||||||
// Set EmissionSource
|
// Set EmissionSource
|
||||||
if (emissionSourceInput.getEmissionSourceId() != null) {
|
if (emissionSourceInput.getEmissionSourceId() != null) {
|
||||||
dcEmissionSource.setEmissionSource(emissionSourceService.findById(UUID.fromString(emissionSourceInput.getEmissionSourceId())).orElse(null));
|
dcEmissionSource.setEmissionSource(emissionSourceService
|
||||||
|
.findById(UUID.fromString(emissionSourceInput.getEmissionSourceId())).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set ConsuptionUnit
|
// Set ConsuptionUnit
|
||||||
if (emissionSourceInput.getConsuptionUnitId() != null) {
|
if (emissionSourceInput.getConsuptionUnitId() != null) {
|
||||||
dcEmissionSource.setConsuptionUnit(consuptionUnitService.findById(UUID.fromString(emissionSourceInput.getConsuptionUnitId())).orElse(null));
|
dcEmissionSource.setConsuptionUnit(consuptionUnitService
|
||||||
|
.findById(UUID.fromString(emissionSourceInput.getConsuptionUnitId())).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set optional fields
|
// Set optional fields
|
||||||
dcEmissionSource.setIsDefault(emissionSourceInput.getIsDefault() != null ? emissionSourceInput.getIsDefault() : false);
|
dcEmissionSource.setIsDefault(
|
||||||
|
emissionSourceInput.getIsDefault() != null ? emissionSourceInput.getIsDefault() : false);
|
||||||
dcEmissionSource.setPercentage(emissionSourceInput.getPercentage());
|
dcEmissionSource.setPercentage(emissionSourceInput.getPercentage());
|
||||||
|
|
||||||
dataCenterEmissionSources.add(dcEmissionSource);
|
dataCenterEmissionSources.add(dcEmissionSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
entity.setDataCenterEmissionSources(dataCenterEmissionSources);
|
entity.setDataCenterEmissionSources(dataCenterEmissionSources);
|
||||||
}
|
}
|
||||||
|
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,83 +121,86 @@ public class DataCenterMapper extends BaseCreateUpdateMapper<DataCenter, DataCen
|
|||||||
if (input.getDataCenter() != null) {
|
if (input.getDataCenter() != null) {
|
||||||
entity.setDataCenter(input.getDataCenter());
|
entity.setDataCenter(input.getDataCenter());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getExternalId() != null) {
|
if (input.getExternalId() != null) {
|
||||||
entity.setExternalId(input.getExternalId());
|
entity.setExternalId(input.getExternalId());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getNumber() != null) {
|
if (input.getNumber() != null) {
|
||||||
entity.setNumber(input.getNumber());
|
entity.setNumber(input.getNumber());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getConsuptionAmount() != null) {
|
if (input.getConsuptionAmount() != null) {
|
||||||
entity.setConsuptionAmount(input.getConsuptionAmount());
|
entity.setConsuptionAmount(input.getConsuptionAmount());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update relationships only if provided
|
// Update relationships only if provided
|
||||||
if (input.getAreaId() != null) {
|
if (input.getAreaId() != null) {
|
||||||
entity.setArea(areaService.findById(input.getAreaId()).orElse(null));
|
entity.setArea(areaService.findById(input.getAreaId()).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getSectorId() != null) {
|
if (input.getSectorId() != null) {
|
||||||
entity.setSector(sectorService.findById(input.getSectorId()).orElse(null));
|
entity.setSector(sectorService.findById(input.getSectorId()).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getSubSectorId() != null) {
|
if (input.getSubSectorId() != null) {
|
||||||
entity.setSubSector(subSectorService.findById(input.getSubSectorId()).orElse(null));
|
entity.setSubSector(subSectorService.findById(input.getSubSectorId()).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getEmissionScopeId() != null) {
|
if (input.getEmissionScopeId() != null) {
|
||||||
entity.setEmissionScope(emissionScopeService.findById(input.getEmissionScopeId()).orElse(null));
|
entity.setEmissionScope(emissionScopeService.findById(input.getEmissionScopeId()).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getActivitySubUnitId() != null) {
|
if (input.getActivitySubUnitId() != null) {
|
||||||
entity.setActivitySubUnit(activitySubUnitService.findById(input.getActivitySubUnitId()).orElse(null));
|
entity.setActivitySubUnit(activitySubUnitService.findById(input.getActivitySubUnitId()).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle multiple emission sources update if provided
|
// Handle multiple emission sources update if provided
|
||||||
if (input.getDataCenterEmissionSources() != null) {
|
if (input.getDataCenterEmissionSources() != null) {
|
||||||
// Clear existing emission sources and add new ones
|
// Clear existing emission sources from the managed collection
|
||||||
entity.getDataCenterEmissionSources().clear();
|
entity.getDataCenterEmissionSources().clear();
|
||||||
|
|
||||||
List<DataCenterEmissionSource> dataCenterEmissionSources = new ArrayList<>();
|
// Add new emission sources to the same managed collection
|
||||||
for (DataCenterEmissionSourceInput emissionSourceInput : input.getDataCenterEmissionSources()) {
|
for (DataCenterEmissionSourceInput emissionSourceInput : input.getDataCenterEmissionSources()) {
|
||||||
DataCenterEmissionSource dcEmissionSource = new DataCenterEmissionSource();
|
DataCenterEmissionSource dcEmissionSource = new DataCenterEmissionSource();
|
||||||
dcEmissionSource.setDataCenter(entity);
|
dcEmissionSource.setDataCenter(entity);
|
||||||
|
|
||||||
if (emissionSourceInput.getEmissionSourceId() != null) {
|
if (emissionSourceInput.getEmissionSourceId() != null) {
|
||||||
dcEmissionSource.setEmissionSource(emissionSourceService.findById(UUID.fromString(emissionSourceInput.getEmissionSourceId())).orElse(null));
|
dcEmissionSource.setEmissionSource(emissionSourceService
|
||||||
|
.findById(UUID.fromString(emissionSourceInput.getEmissionSourceId())).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (emissionSourceInput.getConsuptionUnitId() != null) {
|
if (emissionSourceInput.getConsuptionUnitId() != null) {
|
||||||
dcEmissionSource.setConsuptionUnit(consuptionUnitService.findById(UUID.fromString(emissionSourceInput.getConsuptionUnitId())).orElse(null));
|
dcEmissionSource.setConsuptionUnit(consuptionUnitService
|
||||||
|
.findById(UUID.fromString(emissionSourceInput.getConsuptionUnitId())).orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
dcEmissionSource.setIsDefault(emissionSourceInput.getIsDefault() != null ? emissionSourceInput.getIsDefault() : false);
|
dcEmissionSource.setIsDefault(
|
||||||
|
emissionSourceInput.getIsDefault() != null ? emissionSourceInput.getIsDefault() : false);
|
||||||
dcEmissionSource.setPercentage(emissionSourceInput.getPercentage());
|
dcEmissionSource.setPercentage(emissionSourceInput.getPercentage());
|
||||||
|
|
||||||
dataCenterEmissionSources.add(dcEmissionSource);
|
// Add to the existing managed collection instead of creating a new one
|
||||||
|
entity.getDataCenterEmissionSources().add(dcEmissionSource);
|
||||||
}
|
}
|
||||||
entity.setDataCenterEmissionSources(dataCenterEmissionSources);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// New attributes (partial update - only if provided)
|
// New attributes (partial update - only if provided)
|
||||||
if (input.getAyposURL() != null) {
|
if (input.getAyposURL() != null) {
|
||||||
entity.setAyposURL(input.getAyposURL());
|
entity.setAyposURL(input.getAyposURL());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getAddress() != null) {
|
if (input.getAddress() != null) {
|
||||||
entity.setAddress(input.getAddress());
|
entity.setAddress(input.getAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getLatitude() != null) {
|
if (input.getLatitude() != null) {
|
||||||
entity.setLatitude(input.getLatitude());
|
entity.setLatitude(input.getLatitude());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input.getLongitude() != null) {
|
if (input.getLongitude() != null) {
|
||||||
entity.setLongitude(input.getLongitude());
|
entity.setLongitude(input.getLongitude());
|
||||||
}
|
}
|
||||||
|
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user