diff --git a/src/main/java/org/openepics/names/repository/tmp/ITmpAuditNameRepository.java b/src/main/java/org/openepics/names/repository/tmp/ITmpAuditNameRepository.java index fec854fb66abb65c626fd8daa85f1836f3f0abe8..f753262f46f76dc2d0b9a781c58b16f9e8d46bb3 100644 --- a/src/main/java/org/openepics/names/repository/tmp/ITmpAuditNameRepository.java +++ b/src/main/java/org/openepics/names/repository/tmp/ITmpAuditNameRepository.java @@ -18,8 +18,12 @@ package org.openepics.names.repository.tmp; +import java.util.Date; +import java.util.List; + import org.openepics.names.repository.model.tmp.TmpAuditName; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; /** @@ -30,4 +34,16 @@ import org.springframework.stereotype.Repository; @Repository public interface ITmpAuditNameRepository extends JpaRepository<TmpAuditName, Long> { + @Query("SELECT tan FROM TmpAuditName tan " + + "WHERE tan.uuid = ?1 " + + "AND tan.status = 'APPROVED' " + + "AND tan.auditId = (select max(tan2.auditId) from TmpAuditName tan2 where tan2.uuid = tan.uuid and tan2.auditId < ?2)") + TmpAuditName findPreviousByUuidAndAuditId(String uuid, Long id); + + @Query("FROM TmpAuditName tan WHERE tan.requested >= ?1 AND tan.requested <= ?2") + List<TmpAuditName> findByRequestedBetween(Date from, Date to); + + @Query("FROM TmpAuditName tan WHERE tan.uuid = ?1") + List<TmpAuditName> findByUuid(String uuid); + } diff --git a/src/main/java/org/openepics/names/repository/tmp/ITmpAuditStructureRepository.java b/src/main/java/org/openepics/names/repository/tmp/ITmpAuditStructureRepository.java index dc24856264d71d4ed70f6df5170b53a23db8b7fd..18ff6f8d09310bea955fc8b5425d4c18c73fb508 100644 --- a/src/main/java/org/openepics/names/repository/tmp/ITmpAuditStructureRepository.java +++ b/src/main/java/org/openepics/names/repository/tmp/ITmpAuditStructureRepository.java @@ -20,6 +20,7 @@ package org.openepics.names.repository.tmp; import org.openepics.names.repository.model.tmp.TmpAuditStructure; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; /** @@ -30,4 +31,11 @@ import org.springframework.stereotype.Repository; @Repository public interface ITmpAuditStructureRepository extends JpaRepository<TmpAuditStructure, Long> { + @Query("SELECT tas FROM TmpAuditStructure tas " + + "WHERE tas.auditTable = ?1 " + + "AND tas.uuid = ?2 " + + "AND tas.status = 'APPROVED' " + + "AND tas.auditId = (select max(tas2.auditId) from TmpAuditStructure tas2 where tas2.uuid = tas.uuid and tas2.auditId < ?3)") + TmpAuditStructure findPreviousByAuditTableAndUuidAndAuditId(String auditTable, String uuid, Long id); + } diff --git a/src/main/java/org/openepics/names/service/DeviceGroupService.java b/src/main/java/org/openepics/names/service/DeviceGroupService.java index 26372b2ac72dfcaeee8592b42e13e9cc37765401..ebc4416758b707b44f35e0240ca1d0c2b403d809 100644 --- a/src/main/java/org/openepics/names/service/DeviceGroupService.java +++ b/src/main/java/org/openepics/names/service/DeviceGroupService.java @@ -34,6 +34,7 @@ import org.openepics.names.repository.model.DeviceType; import org.openepics.names.repository.model.tmp.TmpAuditStructure; import org.openepics.names.repository.model.tmp.TmpDeviceGroup; import org.openepics.names.repository.model.tmp.TmpDiscipline; +import org.openepics.names.repository.tmp.ITmpAuditStructureRepository; import org.openepics.names.repository.tmp.ITmpDeviceGroupRepository; import org.openepics.names.repository.tmp.ITmpDisciplineRepository; import org.openepics.names.repository.tmp.TmpAuditStructureRepository; @@ -47,6 +48,7 @@ import org.openepics.names.util.HolderTmpStructures; import org.openepics.names.util.StructureChoice; import org.openepics.names.util.StructureCommand; import org.openepics.names.util.StructureElementUtil; +import org.openepics.names.util.StructureUtil; import org.openepics.names.util.TextUtil; import org.openepics.names.util.ValidateUtil; import org.openepics.names.util.notification.NotificationUtil; @@ -73,6 +75,7 @@ public class DeviceGroupService { private DeviceGroupRepository deviceGroupRepository; private ITmpDisciplineRepository iTmpDisciplineRepository; private ITmpDeviceGroupRepository iTmpDeviceGroupRepository; + private ITmpAuditStructureRepository iTmpAuditStructureRepository; private TmpDeviceGroupRepository tmpDeviceGroupRepository; private TmpAuditStructureRepository tmpAuditStructureRepository; @@ -84,6 +87,7 @@ public class DeviceGroupService { DeviceGroupRepository deviceGroupRepository, ITmpDisciplineRepository iTmpDisciplineRepository, ITmpDeviceGroupRepository iTmpDeviceGroupRepository, + ITmpAuditStructureRepository iTmpAuditStructureRepository, TmpDeviceGroupRepository tmpDeviceGroupRepository, TmpAuditStructureRepository tmpAuditStructureRepository) { this.deviceTypeService = deviceTypeService; @@ -92,6 +96,7 @@ public class DeviceGroupService { this.deviceGroupRepository = deviceGroupRepository; this.iTmpDisciplineRepository = iTmpDisciplineRepository; this.iTmpDeviceGroupRepository = iTmpDeviceGroupRepository; + this.iTmpAuditStructureRepository = iTmpAuditStructureRepository; this.tmpDeviceGroupRepository = tmpDeviceGroupRepository; this.tmpAuditStructureRepository = tmpAuditStructureRepository; } @@ -136,7 +141,7 @@ public class DeviceGroupService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(deviceGroup, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DEVICEGROUP, StructureCommand.CREATE, null, deviceGroup, holderStructures)); + NotificationUtil.prepareNotification(Type.DEVICEGROUP, StructureCommand.CREATE, null, tmpDeviceGroup, holderTmpStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -183,18 +188,23 @@ public class DeviceGroupService { tmpDeviceGroup.setOrdering(structureElementCommand.getOrdering()); tmpDeviceGroup.setDescription(structureElementCommand.getDescription()); tmpDeviceGroupRepository.updateDeviceGroup(tmpDeviceGroup); - tmpAuditStructureRepository.createTmpAuditStructure(new TmpAuditStructure(TextUtil.UPDATE, tmpDeviceGroup)); + TmpAuditStructure tmpAuditStructure = new TmpAuditStructure(TextUtil.UPDATE, tmpDeviceGroup); + tmpAuditStructureRepository.createTmpAuditStructure(tmpAuditStructure); // </TMP> // previous List<DeviceGroup> previouses = iDeviceGroupRepository.findPreviousByUuidAndId(deviceGroup.getUuid().toString(), deviceGroup.getId()); DeviceGroup previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; + // <TMP> + TmpAuditStructure tmpPreviousAuditStructure = iTmpAuditStructureRepository.findPreviousByAuditTableAndUuidAndAuditId(Type.DEVICEGROUP.name().toLowerCase(), uuid, tmpAuditStructure.getAuditId()); + TmpDeviceGroup tmpPrevious = StructureUtil.convert2DeviceGroup(tmpPreviousAuditStructure); + // </TMP> LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.UPDATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.UPDATE)); return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(deviceGroup, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DEVICEGROUP, StructureCommand.UPDATE, previous, deviceGroup, holderStructures)); + NotificationUtil.prepareNotification(Type.DEVICEGROUP, StructureCommand.UPDATE, tmpPrevious, tmpDeviceGroup, holderTmpStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -240,12 +250,17 @@ public class DeviceGroupService { tmpDeviceGroup.setDeleted(Boolean.TRUE); tmpDeviceGroup.setAttributesProcessed(when, username, null); tmpDeviceGroupRepository.updateDeviceGroup(tmpDeviceGroup); - tmpAuditStructureRepository.createTmpAuditStructure(new TmpAuditStructure(TextUtil.DELETE, tmpDeviceGroup)); + TmpAuditStructure tmpAuditStructure = new TmpAuditStructure(TextUtil.DELETE, tmpDeviceGroup); + tmpAuditStructureRepository.createTmpAuditStructure(tmpAuditStructure); // </TMP> // previous List<DeviceGroup> previouses = iDeviceGroupRepository.findPreviousByUuidAndId(uuid, deviceGroup.getId()); DeviceGroup previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; + // <TMP> + TmpAuditStructure tmpPreviousAuditStructure = iTmpAuditStructureRepository.findPreviousByAuditTableAndUuidAndAuditId(Type.DEVICEGROUP.name().toLowerCase(), uuid, tmpAuditStructure.getAuditId()); + TmpDeviceGroup tmpPrevious = StructureUtil.convert2DeviceGroup(tmpPreviousAuditStructure); + // </TMP> // additional // will propagate to sub structures @@ -262,7 +277,7 @@ public class DeviceGroupService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(deviceGroup, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DEVICEGROUP, StructureCommand.DELETE, previous, deviceGroup, holderStructures)); + NotificationUtil.prepareNotification(Type.DEVICEGROUP, StructureCommand.DELETE, tmpPrevious, tmpDeviceGroup, holderTmpStructures)); } } diff --git a/src/main/java/org/openepics/names/service/DeviceTypeService.java b/src/main/java/org/openepics/names/service/DeviceTypeService.java index 802bb66d471fb9b4f9cd66b5f1c9577ab4e3cfe4..ff55ffb45fc28efeba6be551154d502f747c2909 100644 --- a/src/main/java/org/openepics/names/service/DeviceTypeService.java +++ b/src/main/java/org/openepics/names/service/DeviceTypeService.java @@ -32,6 +32,7 @@ import org.openepics.names.repository.model.DeviceType; import org.openepics.names.repository.model.tmp.TmpAuditStructure; import org.openepics.names.repository.model.tmp.TmpDeviceGroup; import org.openepics.names.repository.model.tmp.TmpDeviceType; +import org.openepics.names.repository.tmp.ITmpAuditStructureRepository; import org.openepics.names.repository.tmp.ITmpDeviceGroupRepository; import org.openepics.names.repository.tmp.ITmpDeviceTypeRepository; import org.openepics.names.repository.tmp.TmpAuditStructureRepository; @@ -45,6 +46,7 @@ import org.openepics.names.util.HolderTmpStructures; import org.openepics.names.util.StructureChoice; import org.openepics.names.util.StructureCommand; import org.openepics.names.util.StructureElementUtil; +import org.openepics.names.util.StructureUtil; import org.openepics.names.util.TextUtil; import org.openepics.names.util.ValidateUtil; import org.openepics.names.util.notification.NotificationUtil; @@ -68,6 +70,7 @@ public class DeviceTypeService { private DeviceTypeRepository deviceTypeRepository; private ITmpDeviceGroupRepository iTmpDeviceGroupRepository; private ITmpDeviceTypeRepository iTmpDeviceTypeRepository; + private ITmpAuditStructureRepository iTmpAuditStructureRepository; private TmpDeviceTypeRepository tmpDeviceTypeRepository; private TmpAuditStructureRepository tmpAuditStructureRepository; @@ -78,6 +81,7 @@ public class DeviceTypeService { DeviceTypeRepository deviceTypeRepository, ITmpDeviceGroupRepository iTmpDeviceGroupRepository, ITmpDeviceTypeRepository iTmpDeviceTypeRepository, + ITmpAuditStructureRepository iTmpAuditStructureRepository, TmpDeviceTypeRepository tmpDeviceTypeRepository, TmpAuditStructureRepository tmpAuditStructureRepository) { this.namesService = namesService; @@ -85,6 +89,7 @@ public class DeviceTypeService { this.deviceTypeRepository = deviceTypeRepository; this.iTmpDeviceGroupRepository = iTmpDeviceGroupRepository; this.iTmpDeviceTypeRepository = iTmpDeviceTypeRepository; + this.iTmpAuditStructureRepository = iTmpAuditStructureRepository; this.tmpDeviceTypeRepository = tmpDeviceTypeRepository; this.tmpAuditStructureRepository = tmpAuditStructureRepository; } @@ -129,7 +134,7 @@ public class DeviceTypeService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(deviceType, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DEVICETYPE, StructureCommand.CREATE, null, deviceType, holderStructures)); + NotificationUtil.prepareNotification(Type.DEVICETYPE, StructureCommand.CREATE, null, tmpDeviceType, holderTmpStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -178,12 +183,17 @@ public class DeviceTypeService { tmpDeviceType.setOrdering(structureElementCommand.getOrdering()); tmpDeviceType.setDescription(structureElementCommand.getDescription()); tmpDeviceTypeRepository.updateDeviceType(tmpDeviceType); - tmpAuditStructureRepository.createTmpAuditStructure(new TmpAuditStructure(TextUtil.UPDATE, tmpDeviceType)); + TmpAuditStructure tmpAuditStructure = new TmpAuditStructure(TextUtil.UPDATE, tmpDeviceType); + tmpAuditStructureRepository.createTmpAuditStructure(tmpAuditStructure); // </TMP> // previous List<DeviceType> previouses = iDeviceTypeRepository.findPreviousByUuidAndId(deviceType.getUuid().toString(), deviceType.getId()); DeviceType previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; + // <TMP> + TmpAuditStructure tmpPreviousAuditStructure = iTmpAuditStructureRepository.findPreviousByAuditTableAndUuidAndAuditId(Type.DEVICETYPE.name().toLowerCase(), uuid, tmpAuditStructure.getAuditId()); + TmpDeviceType tmpPrevious = StructureUtil.convert2DeviceType(tmpPreviousAuditStructure); + // </TMP> // additional namesService.updateNames(previous, deviceType, username); @@ -192,7 +202,7 @@ public class DeviceTypeService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(deviceType, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DEVICETYPE, StructureCommand.UPDATE, previous, deviceType, holderStructures)); + NotificationUtil.prepareNotification(Type.DEVICETYPE, StructureCommand.UPDATE, tmpPrevious, tmpDeviceType, holderTmpStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -238,12 +248,17 @@ public class DeviceTypeService { tmpDeviceType.setDeleted(Boolean.TRUE); tmpDeviceType.setAttributesProcessed(when, username, null); tmpDeviceTypeRepository.updateDeviceType(tmpDeviceType); - tmpAuditStructureRepository.createTmpAuditStructure(new TmpAuditStructure(TextUtil.DELETE, tmpDeviceType)); + TmpAuditStructure tmpAuditStructure = new TmpAuditStructure(TextUtil.DELETE, tmpDeviceType); + tmpAuditStructureRepository.createTmpAuditStructure(tmpAuditStructure); // </TMP> // previous List<DeviceType> previouses = iDeviceTypeRepository.findPreviousByUuidAndId(uuid, deviceType.getId()); DeviceType previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; + // <TMP> + TmpAuditStructure tmpPreviousAuditStructure = iTmpAuditStructureRepository.findPreviousByAuditTableAndUuidAndAuditId(Type.DEVICETYPE.name().toLowerCase(), uuid, tmpAuditStructure.getAuditId()); + TmpDeviceType tmpPrevious = StructureUtil.convert2DeviceType(tmpPreviousAuditStructure); + // </TMP> // additional namesService.deleteNames(deviceType, username); @@ -252,7 +267,7 @@ public class DeviceTypeService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(deviceType, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DEVICETYPE, StructureCommand.DELETE, previous, deviceType, holderStructures)); + NotificationUtil.prepareNotification(Type.DEVICETYPE, StructureCommand.DELETE, tmpPrevious, tmpDeviceType, holderTmpStructures)); } } diff --git a/src/main/java/org/openepics/names/service/DisciplineService.java b/src/main/java/org/openepics/names/service/DisciplineService.java index 6c4d378904f45f3e18017f6ec96a6843f66e3319..a6b8b2a8c2f3d91645ff3ea9c0f6ee1f87d8b10c 100644 --- a/src/main/java/org/openepics/names/service/DisciplineService.java +++ b/src/main/java/org/openepics/names/service/DisciplineService.java @@ -33,6 +33,7 @@ import org.openepics.names.repository.model.DeviceGroup; import org.openepics.names.repository.model.Discipline; import org.openepics.names.repository.model.tmp.TmpAuditStructure; import org.openepics.names.repository.model.tmp.TmpDiscipline; +import org.openepics.names.repository.tmp.ITmpAuditStructureRepository; import org.openepics.names.repository.tmp.ITmpDisciplineRepository; import org.openepics.names.repository.tmp.TmpAuditStructureRepository; import org.openepics.names.repository.tmp.TmpDisciplineRepository; @@ -45,6 +46,7 @@ import org.openepics.names.util.HolderTmpStructures; import org.openepics.names.util.StructureChoice; import org.openepics.names.util.StructureCommand; import org.openepics.names.util.StructureElementUtil; +import org.openepics.names.util.StructureUtil; import org.openepics.names.util.TextUtil; import org.openepics.names.util.ValidateUtil; import org.openepics.names.util.notification.NotificationUtil; @@ -71,6 +73,7 @@ public class DisciplineService { private IDeviceGroupRepository iDeviceGroupRepository; private DisciplineRepository disciplineRepository; private ITmpDisciplineRepository iTmpDisciplineRepository; + private ITmpAuditStructureRepository iTmpAuditStructureRepository; private TmpDisciplineRepository tmpDisciplineRepository; private TmpAuditStructureRepository tmpAuditStructureRepository; @@ -82,6 +85,7 @@ public class DisciplineService { IDeviceGroupRepository iDeviceGroupRepository, DisciplineRepository disciplineRepository, ITmpDisciplineRepository iTmpDisciplineRepository, + ITmpAuditStructureRepository iTmpAuditStructureRepository, TmpDisciplineRepository tmpDisciplineRepository, TmpAuditStructureRepository tmpAuditStructureRepository) { this.namesService = namesService; @@ -90,6 +94,7 @@ public class DisciplineService { this.iDeviceGroupRepository = iDeviceGroupRepository; this.disciplineRepository = disciplineRepository; this.iTmpDisciplineRepository = iTmpDisciplineRepository; + this.iTmpAuditStructureRepository = iTmpAuditStructureRepository; this.tmpDisciplineRepository = tmpDisciplineRepository; this.tmpAuditStructureRepository = tmpAuditStructureRepository; } @@ -133,7 +138,7 @@ public class DisciplineService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(discipline, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DISCIPLINE, StructureCommand.CREATE, null, discipline, holderStructures)); + NotificationUtil.prepareNotification(Type.DISCIPLINE, StructureCommand.CREATE, null, tmpDiscipline, holderTmpStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -182,12 +187,17 @@ public class DisciplineService { tmpDiscipline.setOrdering(structureElementCommand.getOrdering()); tmpDiscipline.setDescription(structureElementCommand.getDescription()); tmpDisciplineRepository.updateDiscipline(tmpDiscipline); - tmpAuditStructureRepository.createTmpAuditStructure(new TmpAuditStructure(TextUtil.UPDATE, tmpDiscipline)); + TmpAuditStructure tmpAuditStructure = new TmpAuditStructure(TextUtil.UPDATE, tmpDiscipline); + tmpAuditStructureRepository.createTmpAuditStructure(tmpAuditStructure); // </TMP> // previous List<Discipline> previouses = iDisciplineRepository.findPreviousByUuidAndId(discipline.getUuid().toString(), discipline.getId()); Discipline previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; + // <TMP> + TmpAuditStructure tmpPreviousAuditStructure = iTmpAuditStructureRepository.findPreviousByAuditTableAndUuidAndAuditId(Type.DISCIPLINE.name().toLowerCase(), uuid, tmpAuditStructure.getAuditId()); + TmpDiscipline tmpPrevious = StructureUtil.convert2Discipline(tmpPreviousAuditStructure); + // </TMP> // additional namesService.updateNames(previous, discipline, username); @@ -196,7 +206,7 @@ public class DisciplineService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(discipline, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DISCIPLINE, StructureCommand.UPDATE, previous, discipline, holderStructures)); + NotificationUtil.prepareNotification(Type.DISCIPLINE, StructureCommand.UPDATE, tmpPrevious, tmpDiscipline, holderTmpStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -243,12 +253,17 @@ public class DisciplineService { tmpDiscipline.setDeleted(Boolean.TRUE); tmpDiscipline.setAttributesProcessed(when, username, null); tmpDisciplineRepository.updateDiscipline(tmpDiscipline); - tmpAuditStructureRepository.createTmpAuditStructure(new TmpAuditStructure(TextUtil.DELETE, tmpDiscipline)); + TmpAuditStructure tmpAuditStructure = new TmpAuditStructure(TextUtil.DELETE, tmpDiscipline); + tmpAuditStructureRepository.createTmpAuditStructure(tmpAuditStructure); // </TMP> // previous List<Discipline> previouses = iDisciplineRepository.findPreviousByUuidAndId(uuid, discipline.getId()); Discipline previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; + // <TMP> + TmpAuditStructure tmpPreviousAuditStructure = iTmpAuditStructureRepository.findPreviousByAuditTableAndUuidAndAuditId(Type.DISCIPLINE.name().toLowerCase(), uuid, tmpAuditStructure.getAuditId()); + TmpDiscipline tmpPrevious = StructureUtil.convert2Discipline(tmpPreviousAuditStructure); + // </TMP> // additional // will propagate to sub structures @@ -267,7 +282,7 @@ public class DisciplineService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(discipline, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DISCIPLINE, StructureCommand.DELETE, previous, discipline, holderStructures)); + NotificationUtil.prepareNotification(Type.DISCIPLINE, StructureCommand.DELETE, tmpPrevious, tmpDiscipline, holderTmpStructures)); } } diff --git a/src/main/java/org/openepics/names/service/SubsystemService.java b/src/main/java/org/openepics/names/service/SubsystemService.java index ccbf26dc1f80758bde05da1821d66c1b4dd04d34..38b10a55e01cd874d7a36874ffff9a6004b94abf 100644 --- a/src/main/java/org/openepics/names/service/SubsystemService.java +++ b/src/main/java/org/openepics/names/service/SubsystemService.java @@ -33,6 +33,7 @@ import org.openepics.names.repository.model.Subsystem; import org.openepics.names.repository.model.tmp.TmpAuditStructure; import org.openepics.names.repository.model.tmp.TmpSubsystem; import org.openepics.names.repository.model.tmp.TmpSystem; +import org.openepics.names.repository.tmp.ITmpAuditStructureRepository; import org.openepics.names.repository.tmp.ITmpSubsystemRepository; import org.openepics.names.repository.tmp.ITmpSystemRepository; import org.openepics.names.repository.tmp.TmpAuditStructureRepository; @@ -71,6 +72,7 @@ public class SubsystemService { private SubsystemRepository subsystemRepository; private ITmpSystemRepository iTmpSystemRepository; private ITmpSubsystemRepository iTmpSubsystemRepository; + private ITmpAuditStructureRepository iTmpAuditStructureRepository; private TmpSubsystemRepository tmpSubsystemRepository; private TmpAuditStructureRepository tmpAuditStructureRepository; @@ -82,6 +84,7 @@ public class SubsystemService { SubsystemRepository subsystemRepository, ITmpSystemRepository iTmpSystemRepository, ITmpSubsystemRepository iTmpSubsystemRepository, + ITmpAuditStructureRepository iTmpAuditStructureRepository, TmpSubsystemRepository tmpSubsystemRepository, TmpAuditStructureRepository tmpAuditStructureRepository) { this.namesService = namesService; @@ -89,6 +92,7 @@ public class SubsystemService { this.subsystemRepository = subsystemRepository; this.iTmpSystemRepository = iTmpSystemRepository; this.iTmpSubsystemRepository = iTmpSubsystemRepository; + this.iTmpAuditStructureRepository = iTmpAuditStructureRepository; this.tmpSubsystemRepository = tmpSubsystemRepository; this.tmpAuditStructureRepository = tmpAuditStructureRepository; } @@ -151,7 +155,7 @@ public class SubsystemService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(subsystem, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SUBSYSTEM, StructureCommand.CREATE, null, subsystem, holderStructures)); + NotificationUtil.prepareNotification(Type.SUBSYSTEM, StructureCommand.CREATE, null, tmpSubsystem, holderTmpStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -208,12 +212,17 @@ public class SubsystemService { tmpSubsystem.setOrdering(structureElementCommand.getOrdering()); tmpSubsystem.setDescription(structureElementCommand.getDescription()); tmpSubsystemRepository.updateSubsystem(tmpSubsystem); - tmpAuditStructureRepository.createTmpAuditStructure(new TmpAuditStructure(TextUtil.UPDATE, tmpSubsystem)); + TmpAuditStructure tmpAuditStructure = new TmpAuditStructure(TextUtil.UPDATE, tmpSubsystem); + tmpAuditStructureRepository.createTmpAuditStructure(tmpAuditStructure); // </TMP> // previous List<Subsystem> previouses = iSubsystemRepository.findPreviousByUuidAndId(subsystem.getUuid().toString(), subsystem.getId()); Subsystem previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; + // <TMP> + TmpAuditStructure tmpPreviousAuditStructure = iTmpAuditStructureRepository.findPreviousByAuditTableAndUuidAndAuditId(Type.SUBSYSTEM.name().toLowerCase(), uuid, tmpAuditStructure.getAuditId()); + TmpSubsystem tmpPrevious = StructureUtil.convert2Subsystem(tmpPreviousAuditStructure); + // </TMP> // additional namesService.updateNames(previous, subsystem, username); @@ -222,7 +231,7 @@ public class SubsystemService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(subsystem, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SUBSYSTEM, StructureCommand.UPDATE, previous, subsystem, holderStructures)); + NotificationUtil.prepareNotification(Type.SUBSYSTEM, StructureCommand.UPDATE, tmpPrevious, tmpSubsystem, holderTmpStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -268,12 +277,17 @@ public class SubsystemService { tmpSubsystem.setDeleted(Boolean.TRUE); tmpSubsystem.setAttributesProcessed(when, username, null); tmpSubsystemRepository.updateSubsystem(tmpSubsystem); - tmpAuditStructureRepository.createTmpAuditStructure(new TmpAuditStructure(TextUtil.DELETE, tmpSubsystem)); + TmpAuditStructure tmpAuditStructure = new TmpAuditStructure(TextUtil.DELETE, tmpSubsystem); + tmpAuditStructureRepository.createTmpAuditStructure(tmpAuditStructure); // </TMP> // previous List<Subsystem> previouses = iSubsystemRepository.findPreviousByUuidAndId(uuid, subsystem.getId()); Subsystem previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; + // <TMP> + TmpAuditStructure tmpPreviousAuditStructure = iTmpAuditStructureRepository.findPreviousByAuditTableAndUuidAndAuditId(Type.SUBSYSTEM.name().toLowerCase(), uuid, tmpAuditStructure.getAuditId()); + TmpSubsystem tmpPrevious = StructureUtil.convert2Subsystem(tmpPreviousAuditStructure); + // </TMP> // additional namesService.deleteNames(subsystem, username); @@ -282,7 +296,7 @@ public class SubsystemService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(subsystem, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SUBSYSTEM, StructureCommand.DELETE, previous, subsystem, holderStructures)); + NotificationUtil.prepareNotification(Type.SUBSYSTEM, StructureCommand.DELETE, tmpPrevious, tmpSubsystem, holderTmpStructures)); } } diff --git a/src/main/java/org/openepics/names/service/SystemGroupService.java b/src/main/java/org/openepics/names/service/SystemGroupService.java index 7a2338e36061dd966c34ceee94449eda51cc0412..9aeb32bed7bfc311d45c3d4b4fc41a5cb73df60a 100644 --- a/src/main/java/org/openepics/names/service/SystemGroupService.java +++ b/src/main/java/org/openepics/names/service/SystemGroupService.java @@ -33,6 +33,7 @@ import org.openepics.names.repository.model.System; import org.openepics.names.repository.model.SystemGroup; import org.openepics.names.repository.model.tmp.TmpAuditStructure; import org.openepics.names.repository.model.tmp.TmpSystemGroup; +import org.openepics.names.repository.tmp.ITmpAuditStructureRepository; import org.openepics.names.repository.tmp.ITmpSystemGroupRepository; import org.openepics.names.repository.tmp.TmpAuditStructureRepository; import org.openepics.names.repository.tmp.TmpSystemGroupRepository; @@ -73,6 +74,7 @@ public class SystemGroupService { private ISystemRepository iSystemRepository; private SystemGroupRepository systemGroupRepository; private ITmpSystemGroupRepository iTmpSystemGroupRepository; + private ITmpAuditStructureRepository iTmpAuditStructureRepository; private TmpSystemGroupRepository tmpSystemGroupRepository; private TmpAuditStructureRepository tmpAuditStructureRepository; @@ -84,6 +86,7 @@ public class SystemGroupService { ISystemRepository iSystemRepository, SystemGroupRepository systemGroupRepository, ITmpSystemGroupRepository iTmpSystemGroupRepository, + ITmpAuditStructureRepository iTmpAuditStructureRepository, TmpSystemGroupRepository tmpSystemGroupRepository, TmpAuditStructureRepository tmpAuditStructureRepository) { this.namesService = namesService; @@ -92,6 +95,7 @@ public class SystemGroupService { this.iSystemRepository = iSystemRepository; this.systemGroupRepository = systemGroupRepository; this.iTmpSystemGroupRepository = iTmpSystemGroupRepository; + this.iTmpAuditStructureRepository = iTmpAuditStructureRepository; this.tmpSystemGroupRepository = tmpSystemGroupRepository; this.tmpAuditStructureRepository = tmpAuditStructureRepository; } @@ -152,7 +156,7 @@ public class SystemGroupService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(systemGroup, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SYSTEMGROUP, StructureCommand.CREATE, null, systemGroup, holderStructures)); + NotificationUtil.prepareNotification(Type.SYSTEMGROUP, StructureCommand.CREATE, null, tmpSystemGroup, holderTmpStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -201,12 +205,17 @@ public class SystemGroupService { tmpSystemGroup.setOrdering(structureElementCommand.getOrdering()); tmpSystemGroup.setDescription(structureElementCommand.getDescription()); tmpSystemGroupRepository.updateSystemGroup(tmpSystemGroup); - tmpAuditStructureRepository.createTmpAuditStructure(new TmpAuditStructure(TextUtil.UPDATE, tmpSystemGroup)); + TmpAuditStructure tmpAuditStructure = new TmpAuditStructure(TextUtil.UPDATE, tmpSystemGroup); + tmpAuditStructureRepository.createTmpAuditStructure(tmpAuditStructure); // </TMP> // previous List<SystemGroup> previouses = iSystemGroupRepository.findPreviousByUuidAndId(uuid, systemGroup.getId()); SystemGroup previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; + // <TMP> + TmpAuditStructure tmpPreviousAuditStructure = iTmpAuditStructureRepository.findPreviousByAuditTableAndUuidAndAuditId(Type.SYSTEMGROUP.name().toLowerCase(), uuid, tmpAuditStructure.getAuditId()); + TmpSystemGroup tmpPrevious = StructureUtil.convert2SystemGroup(tmpPreviousAuditStructure); + // </TMP> // additional namesService.updateNames(previous, systemGroup, username); @@ -215,7 +224,7 @@ public class SystemGroupService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(systemGroup, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SYSTEMGROUP, StructureCommand.UPDATE, previous, systemGroup, holderStructures)); + NotificationUtil.prepareNotification(Type.SYSTEMGROUP, StructureCommand.UPDATE, tmpPrevious, tmpSystemGroup, holderTmpStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -262,12 +271,17 @@ public class SystemGroupService { tmpSystemGroup.setDeleted(Boolean.TRUE); tmpSystemGroup.setAttributesProcessed(when, username, null); tmpSystemGroupRepository.updateSystemGroup(tmpSystemGroup); - tmpAuditStructureRepository.createTmpAuditStructure(new TmpAuditStructure(TextUtil.DELETE, tmpSystemGroup)); + TmpAuditStructure tmpAuditStructure = new TmpAuditStructure(TextUtil.DELETE, tmpSystemGroup); + tmpAuditStructureRepository.createTmpAuditStructure(tmpAuditStructure); // </TMP> // previous List<SystemGroup> previouses = iSystemGroupRepository.findPreviousByUuidAndId(uuid, systemGroup.getId()); SystemGroup previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; + // <TMP> + TmpAuditStructure tmpPreviousAuditStructure = iTmpAuditStructureRepository.findPreviousByAuditTableAndUuidAndAuditId(Type.SYSTEMGROUP.name().toLowerCase(), uuid, tmpAuditStructure.getAuditId()); + TmpSystemGroup tmpPrevious = StructureUtil.convert2SystemGroup(tmpPreviousAuditStructure); + // </TMP> // additional // will propagate to sub structures @@ -286,7 +300,7 @@ public class SystemGroupService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(systemGroup, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SYSTEMGROUP, StructureCommand.DELETE, previous, systemGroup, holderStructures)); + NotificationUtil.prepareNotification(Type.SYSTEMGROUP, StructureCommand.DELETE, tmpPrevious, tmpSystemGroup, holderTmpStructures)); } } diff --git a/src/main/java/org/openepics/names/service/SystemService.java b/src/main/java/org/openepics/names/service/SystemService.java index 25fe6d31fcd78f00e3bbda5d873493daa1e39f4d..260badc3c3af151f0fa00363699eeaca5e7924a3 100644 --- a/src/main/java/org/openepics/names/service/SystemService.java +++ b/src/main/java/org/openepics/names/service/SystemService.java @@ -34,6 +34,7 @@ import org.openepics.names.repository.model.System; import org.openepics.names.repository.model.tmp.TmpAuditStructure; import org.openepics.names.repository.model.tmp.TmpSystem; import org.openepics.names.repository.model.tmp.TmpSystemGroup; +import org.openepics.names.repository.tmp.ITmpAuditStructureRepository; import org.openepics.names.repository.tmp.ITmpSystemGroupRepository; import org.openepics.names.repository.tmp.ITmpSystemRepository; import org.openepics.names.repository.tmp.TmpAuditStructureRepository; @@ -76,6 +77,7 @@ public class SystemService { private SystemRepository systemRepository; private ITmpSystemGroupRepository iTmpSystemGroupRepository; private ITmpSystemRepository iTmpSystemRepository; + private ITmpAuditStructureRepository iTmpAuditStructureRepository; private TmpSystemRepository tmpSystemRepository; private TmpAuditStructureRepository tmpAuditStructureRepository; @@ -88,6 +90,7 @@ public class SystemService { SystemRepository systemRepository, ITmpSystemGroupRepository iTmpSystemGroupRepository, ITmpSystemRepository iTmpSystemRepository, + ITmpAuditStructureRepository iTmpAuditStructureRepository, TmpSystemRepository tmpSystemRepository, TmpAuditStructureRepository tmpAuditStructureRepository) { this.namesService = namesService; @@ -97,6 +100,7 @@ public class SystemService { this.systemRepository = systemRepository; this.iTmpSystemGroupRepository = iTmpSystemGroupRepository; this.iTmpSystemRepository = iTmpSystemRepository; + this.iTmpAuditStructureRepository = iTmpAuditStructureRepository; this.tmpSystemRepository = tmpSystemRepository; this.tmpAuditStructureRepository = tmpAuditStructureRepository; } @@ -159,7 +163,7 @@ public class SystemService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(system, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SYSTEM, StructureCommand.CREATE, null, system, holderStructures)); + NotificationUtil.prepareNotification(Type.SYSTEM, StructureCommand.CREATE, null, tmpSystem, holderTmpStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -216,12 +220,17 @@ public class SystemService { tmpSystem.setOrdering(structureElementCommand.getOrdering()); tmpSystem.setDescription(structureElementCommand.getDescription()); tmpSystemRepository.updateSystem(tmpSystem); - tmpAuditStructureRepository.createTmpAuditStructure(new TmpAuditStructure(TextUtil.UPDATE, tmpSystem)); + TmpAuditStructure tmpAuditStructure = new TmpAuditStructure(TextUtil.UPDATE, tmpSystem); + tmpAuditStructureRepository.createTmpAuditStructure(tmpAuditStructure); // </TMP> // previous List<System> previouses = iSystemRepository.findPreviousByUuidAndId(system.getUuid().toString(), system.getId()); System previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; + // <TMP> + TmpAuditStructure tmpPreviousAuditStructure = iTmpAuditStructureRepository.findPreviousByAuditTableAndUuidAndAuditId(Type.SYSTEM.name().toLowerCase(), uuid, tmpAuditStructure.getAuditId()); + TmpSystem tmpPrevious = StructureUtil.convert2System(tmpPreviousAuditStructure); + // </TMP> // additional namesService.updateNames(previous, system, username); @@ -230,7 +239,7 @@ public class SystemService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(system, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SYSTEM, StructureCommand.UPDATE, previous, system, holderStructures)); + NotificationUtil.prepareNotification(Type.SYSTEM, StructureCommand.UPDATE, tmpPrevious, tmpSystem, holderTmpStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -277,12 +286,17 @@ public class SystemService { tmpSystem.setDeleted(Boolean.TRUE); tmpSystem.setAttributesProcessed(when, username, null); tmpSystemRepository.updateSystem(tmpSystem); - tmpAuditStructureRepository.createTmpAuditStructure(new TmpAuditStructure(TextUtil.DELETE, tmpSystem)); + TmpAuditStructure tmpAuditStructure = new TmpAuditStructure(TextUtil.DELETE, tmpSystem); + tmpAuditStructureRepository.createTmpAuditStructure(tmpAuditStructure); // </TMP> // previous List<System> previouses = iSystemRepository.findPreviousByUuidAndId(uuid, system.getId()); System previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; + // <TMP> + TmpAuditStructure tmpPreviousAuditStructure = iTmpAuditStructureRepository.findPreviousByAuditTableAndUuidAndAuditId(Type.SYSTEM.name().toLowerCase(), uuid, tmpAuditStructure.getAuditId()); + TmpSystem tmpPrevious = StructureUtil.convert2System(tmpPreviousAuditStructure); + // </TMP> // additional // will propagate to sub structures @@ -301,7 +315,7 @@ public class SystemService { return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(system, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SYSTEM, StructureCommand.DELETE, previous, system, holderStructures)); + NotificationUtil.prepareNotification(Type.SYSTEM, StructureCommand.DELETE, tmpPrevious, tmpSystem, holderTmpStructures)); } } diff --git a/src/main/java/org/openepics/names/util/StructureUtil.java b/src/main/java/org/openepics/names/util/StructureUtil.java index f3cc81f2779c742fc2d95d9478f45f640cd1e8e7..e1d75c2df77050ec564afb5c324f450812be2fee 100644 --- a/src/main/java/org/openepics/names/util/StructureUtil.java +++ b/src/main/java/org/openepics/names/util/StructureUtil.java @@ -19,6 +19,7 @@ package org.openepics.names.util; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map.Entry; import java.util.UUID; @@ -30,12 +31,14 @@ import org.openepics.names.repository.model.Discipline; import org.openepics.names.repository.model.Subsystem; import org.openepics.names.repository.model.System; import org.openepics.names.repository.model.SystemGroup; +import org.openepics.names.repository.model.tmp.TmpAuditStructure; import org.openepics.names.repository.model.tmp.TmpDeviceGroup; import org.openepics.names.repository.model.tmp.TmpDeviceType; import org.openepics.names.repository.model.tmp.TmpDiscipline; import org.openepics.names.repository.model.tmp.TmpSubsystem; import org.openepics.names.repository.model.tmp.TmpSystem; import org.openepics.names.repository.model.tmp.TmpSystemGroup; +import org.openepics.names.rest.beans.Status; import com.google.common.collect.Lists; @@ -603,4 +606,79 @@ public class StructureUtil { return listUuid; } + // -------------------------------------------------- + + /** + * Convert an audit structure entry to a system group entry. + * + * @param tmpAuditStructure audit structure entry + * @return system group + */ + public static TmpSystemGroup convert2SystemGroup(TmpAuditStructure tmpAuditStructure) { + return new TmpSystemGroup(tmpAuditStructure.getUuid(), + tmpAuditStructure.getMnemonic(), tmpAuditStructure.getMnemonicEquivalence(), tmpAuditStructure.getOrdering(), tmpAuditStructure.getDescription(), + tmpAuditStructure.getStatus(), tmpAuditStructure.isDeleted(), + tmpAuditStructure.getProcessed(), tmpAuditStructure.getProcessedBy(), tmpAuditStructure.getProcessedComment()); + } + /** + * Convert an audit structure entry to a system entry. + * + * @param tmpAuditStructure audit structure entry + * @return system + */ + public static TmpSystem convert2System(TmpAuditStructure tmpAuditStructure) { + return new TmpSystem(tmpAuditStructure.getUuid(), tmpAuditStructure.getParentId(), + tmpAuditStructure.getMnemonic(), tmpAuditStructure.getMnemonicEquivalence(), tmpAuditStructure.getOrdering(), tmpAuditStructure.getDescription(), + tmpAuditStructure.getStatus(), tmpAuditStructure.isDeleted(), + tmpAuditStructure.getProcessed(), tmpAuditStructure.getProcessedBy(), tmpAuditStructure.getProcessedComment()); + } + /** + * Convert an audit structure entry to a subsystem entry. + * + * @param tmpAuditStructure audit structure entry + * @return subsystem + */ + public static TmpSubsystem convert2Subsystem(TmpAuditStructure tmpAuditStructure) { + return new TmpSubsystem(tmpAuditStructure.getUuid(), tmpAuditStructure.getParentId(), + tmpAuditStructure.getMnemonic(), tmpAuditStructure.getMnemonicEquivalence(), tmpAuditStructure.getOrdering(), tmpAuditStructure.getDescription(), + tmpAuditStructure.getStatus(), tmpAuditStructure.isDeleted(), + tmpAuditStructure.getProcessed(), tmpAuditStructure.getProcessedBy(), tmpAuditStructure.getProcessedComment()); + } + /** + * Convert an audit structure entry to a discipline entry. + * + * @param tmpAuditStructure audit structure entry + * @return discipline + */ + public static TmpDiscipline convert2Discipline(TmpAuditStructure tmpAuditStructure) { + return new TmpDiscipline(tmpAuditStructure.getUuid(), + tmpAuditStructure.getMnemonic(), tmpAuditStructure.getMnemonicEquivalence(), tmpAuditStructure.getOrdering(), tmpAuditStructure.getDescription(), + tmpAuditStructure.getStatus(), tmpAuditStructure.isDeleted(), + tmpAuditStructure.getProcessed(), tmpAuditStructure.getProcessedBy(), tmpAuditStructure.getProcessedComment()); + } + /** + * Convert an audit structure entry to a device group entry. + * + * @param tmpAuditStructure audit structure entry + * @return device group + */ + public static TmpDeviceGroup convert2DeviceGroup(TmpAuditStructure tmpAuditStructure) { + return new TmpDeviceGroup(tmpAuditStructure.getUuid(), tmpAuditStructure.getParentId(), + tmpAuditStructure.getMnemonic(), tmpAuditStructure.getMnemonicEquivalence(), tmpAuditStructure.getOrdering(), tmpAuditStructure.getDescription(), + tmpAuditStructure.getStatus(), tmpAuditStructure.isDeleted(), + tmpAuditStructure.getProcessed(), tmpAuditStructure.getProcessedBy(), tmpAuditStructure.getProcessedComment()); + } + /** + * Convert an audit structure entry to a device type entry. + * + * @param tmpAuditStructure audit structure entry + * @return device type + */ + public static TmpDeviceType convert2DeviceType(TmpAuditStructure tmpAuditStructure) { + return new TmpDeviceType(tmpAuditStructure.getUuid(), tmpAuditStructure.getParentId(), + tmpAuditStructure.getMnemonic(), tmpAuditStructure.getMnemonicEquivalence(), tmpAuditStructure.getOrdering(), tmpAuditStructure.getDescription(), + tmpAuditStructure.getStatus(), tmpAuditStructure.isDeleted(), + tmpAuditStructure.getProcessed(), tmpAuditStructure.getProcessedBy(), tmpAuditStructure.getProcessedComment()); + } + } diff --git a/src/main/java/org/openepics/names/util/notification/NotificationScheduler.java b/src/main/java/org/openepics/names/util/notification/NotificationScheduler.java index 2124ae3c4f6aec1a8970ec8c88416e68d7d11a9a..aa7a1afa5f2bbd5d7ec568991e8a7b4baf346845 100644 --- a/src/main/java/org/openepics/names/util/notification/NotificationScheduler.java +++ b/src/main/java/org/openepics/names/util/notification/NotificationScheduler.java @@ -29,8 +29,8 @@ import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; -import org.openepics.names.repository.INameRepository; -import org.openepics.names.repository.model.Name; +import org.openepics.names.repository.model.tmp.TmpAuditName; +import org.openepics.names.repository.tmp.ITmpAuditNameRepository; import org.openepics.names.service.NotificationService; import org.openepics.names.util.NameCommand; import org.openepics.names.util.ValidateUtil; @@ -54,10 +54,10 @@ public class NotificationScheduler { private static final String NOTIFY_NAMES_FROM_TO_CREATED_UPDATED_DELETED = "Notify names, {0} - {1}, # created: {2}, # updated: {3}, # deleted: {4}"; - @Autowired - private INameRepository iNameRepository; @Autowired private NotificationService notificationService; + @Autowired + private ITmpAuditNameRepository iTmpAuditNameRepository; /** * Notify administrators about changes for names and structures. @@ -101,9 +101,9 @@ public class NotificationScheduler { // find names for previous day // uuid ascending, id ascending // distinct uuids - List<Name> names = iNameRepository.findByRequestedBetween(from, to); + List<TmpAuditName> names = iTmpAuditNameRepository.findByRequestedBetween(from, to); Set<UUID> uuids = new TreeSet<>(); - for (Name name : names) { + for (TmpAuditName name : names) { uuids.add(name.getUuid()); } @@ -123,10 +123,10 @@ public class NotificationScheduler { // deleted for (UUID uuid : uuids) { // prepare - List<Name> extracted = extractByUuid(names, uuid); - List<Name> namesByUuid = iNameRepository.findByUuid(uuid.toString()); - sortById(extracted); - sortById(namesByUuid); + List<TmpAuditName> extracted = extractByUuid(names, uuid); + List<TmpAuditName> namesByUuid = iTmpAuditNameRepository.findByUuid(uuid.toString()); + sortByAuditId(extracted); + sortByAuditId(namesByUuid); int index = -1; for (int i=0; i<namesByUuid.size(); i++) { @@ -141,10 +141,10 @@ public class NotificationScheduler { // created - no previous // updated - is not latest // deleted - is latest and is deleted - Name name = extracted.get(i); + TmpAuditName name = extracted.get(i); if (i == 0 && index == 0) { NotificationUtil.prepareAddNotification(created, NameCommand.CREATE, null, name); - } else if (Boolean.TRUE.equals(name.isLatest()) && Boolean.TRUE.equals(name.isDeleted())) { + } else if (Boolean.TRUE.equals(name.isDeleted())) { NotificationUtil.prepareAddNotification(deleted, NameCommand.DELETE, null, name); } else { NotificationUtil.prepareAddNotification(updated, NameCommand.UPDATE, findPreviousByName(namesByUuid, name), name); @@ -203,10 +203,10 @@ public class NotificationScheduler { * @param uuid uuid * @return list of names */ - private List<Name> extractByUuid(List<Name> list, UUID uuid) { - List<Name> extracted = Lists.newArrayList(); + private List<TmpAuditName> extractByUuid(List<TmpAuditName> list, UUID uuid) { + List<TmpAuditName> extracted = Lists.newArrayList(); if (list != null && !list.isEmpty() && uuid != null) { - for (Name name : list) { + for (TmpAuditName name : list) { if (uuid.equals(name.getUuid())) { extracted.add(name); } @@ -220,8 +220,8 @@ public class NotificationScheduler { * * @param names names */ - private void sortById(List<Name> names) { - Collections.sort(names, (Name arg0, Name arg1) -> arg0.getId().compareTo(arg1.getId())); + private void sortByAuditId(List<TmpAuditName> names) { + Collections.sort(names, (TmpAuditName arg0, TmpAuditName arg1) -> arg0.getAuditId().compareTo(arg1.getAuditId())); } /** @@ -231,14 +231,14 @@ public class NotificationScheduler { * @param name name * @return name */ - private Name findPreviousByName(List<Name> names, Name name) { + private TmpAuditName findPreviousByName(List<TmpAuditName> names, TmpAuditName name) { if (ValidateUtil.isAnyNull(names, name)) { return null; } // sorted list for (int i=0; i<names.size(); i++) { - if (name.getId().equals(names.get(i).getId())) { + if (name.getAuditId().equals(names.get(i).getAuditId())) { return i > 0 ? names.get(i-1) : null; diff --git a/src/main/java/org/openepics/names/util/notification/NotificationUtil.java b/src/main/java/org/openepics/names/util/notification/NotificationUtil.java index df7d8f4c4ba2b2ee117323ba947687e8c9405fe6..85a6de9a6420435f13039cb0620f7c9f54979517 100644 --- a/src/main/java/org/openepics/names/util/notification/NotificationUtil.java +++ b/src/main/java/org/openepics/names/util/notification/NotificationUtil.java @@ -26,16 +26,16 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.apache.commons.lang3.StringUtils; -import org.openepics.names.repository.model.DeviceGroup; -import org.openepics.names.repository.model.DeviceType; -import org.openepics.names.repository.model.Discipline; -import org.openepics.names.repository.model.Name; -import org.openepics.names.repository.model.Structure; -import org.openepics.names.repository.model.Subsystem; -import org.openepics.names.repository.model.System; -import org.openepics.names.repository.model.SystemGroup; +import org.openepics.names.repository.model.tmp.TmpStructure; +import org.openepics.names.repository.model.tmp.TmpAuditName; +import org.openepics.names.repository.model.tmp.TmpDeviceGroup; +import org.openepics.names.repository.model.tmp.TmpDeviceType; +import org.openepics.names.repository.model.tmp.TmpDiscipline; +import org.openepics.names.repository.model.tmp.TmpSubsystem; +import org.openepics.names.repository.model.tmp.TmpSystem; +import org.openepics.names.repository.model.tmp.TmpSystemGroup; import org.openepics.names.rest.beans.Type; -import org.openepics.names.util.HolderStructures; +import org.openepics.names.util.HolderTmpStructures; import org.openepics.names.util.NameCommand; import org.openepics.names.util.StructureCommand; import org.openepics.names.util.StructureUtil; @@ -68,7 +68,7 @@ public class NotificationUtil { * @param previous previous (name) * @param name name */ - public static void prepareAddNotification(List<NotificationName> notifications, NameCommand nameCommand, Name previous, Name name) { + public static void prepareAddNotification(List<NotificationName> notifications, NameCommand nameCommand, TmpAuditName previous, TmpAuditName name) { if (notifications == null) { return; } @@ -88,7 +88,7 @@ public class NotificationUtil { * @param name name * @return notification */ - public static NotificationName prepareNotification(NameCommand nameCommand, Name previous, Name name) { + public static NotificationName prepareNotification(NameCommand nameCommand, TmpAuditName previous, TmpAuditName name) { if (LOGGER.isLoggable(Level.FINER)) { LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.PREPARE_NOTIFICATION, "nameCommand", nameCommand)); LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.PREPARE_NOTIFICATION, "previous", previous)); @@ -140,29 +140,6 @@ public class NotificationUtil { name.getRequestedBy()); } - /** - * Prepare notification and add to list of notifications if notification is available. - * - * @param notifications list of notifications - * @param type type - * @param structureCommandCUD structure command (create update delete) - * @param previous previous (structure) - * @param structure structure - * @param holderStructures holder of system and device structure content - */ - public static void prepareAddNotification(List<NotificationStructure> notifications, - Type type, StructureCommand structureCommandCUD, - Structure previous, Structure structure, HolderStructures holderStructures) { - if (notifications == null) { - return; - } - - NotificationStructure notification = NotificationUtil.prepareNotification(type, structureCommandCUD, previous, structure, holderStructures); - if (notification != null) { - notifications.add(notification); - } - } - /** * Prepare and return notification for system group with information about change. * If information is not correct, <tt>null</tt> is returned. @@ -175,7 +152,7 @@ public class NotificationUtil { * @return notification */ public static NotificationStructure prepareNotification(Type type, StructureCommand structureCommandCUD, - Structure previous, Structure structure, HolderStructures holderStructures) { + TmpStructure previous, TmpStructure structure, HolderTmpStructures holderStructures) { if (LOGGER.isLoggable(Level.FINER)) { LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.PREPARE_NOTIFICATION, "type", type)); LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.PREPARE_NOTIFICATION, "structureCommandCUD", structureCommandCUD)); @@ -224,17 +201,17 @@ public class NotificationUtil { if (ValidateUtil.isAnyEqual(structureCommandCUD, StructureCommand.UPDATE)) { if (Type.SYSTEMGROUP.equals(type)) { - oldMnemonicpath = StructureUtil.getMnemonicPath((SystemGroup) previous, holderStructures); + oldMnemonicpath = StructureUtil.getMnemonicPath((TmpSystemGroup) previous, holderStructures); } else if (Type.SYSTEM.equals(type)) { - oldMnemonicpath = StructureUtil.getMnemonicPath((System) previous, holderStructures); + oldMnemonicpath = StructureUtil.getMnemonicPath((TmpSystem) previous, holderStructures); } else if (Type.SUBSYSTEM.equals(type)) { - oldMnemonicpath = StructureUtil.getMnemonicPath((Subsystem) previous, holderStructures); + oldMnemonicpath = StructureUtil.getMnemonicPath((TmpSubsystem) previous, holderStructures); } else if (Type.DISCIPLINE.equals(type)) { - oldMnemonicpath = StructureUtil.getMnemonicPath((Discipline) previous, holderStructures); + oldMnemonicpath = StructureUtil.getMnemonicPath((TmpDiscipline) previous, holderStructures); } else if (Type.DEVICEGROUP.equals(type)) { - oldMnemonicpath = StructureUtil.getMnemonicPath((DeviceGroup) previous, holderStructures); + oldMnemonicpath = StructureUtil.getMnemonicPath((TmpDeviceGroup) previous, holderStructures); } else if (Type.DEVICETYPE.equals(type)) { - oldMnemonicpath = StructureUtil.getMnemonicPath((DeviceType) previous, holderStructures); + oldMnemonicpath = StructureUtil.getMnemonicPath((TmpDeviceType) previous, holderStructures); } oldMnemonic = StringUtils.stripToEmpty(previous.getMnemonic()); @@ -243,17 +220,17 @@ public class NotificationUtil { } if (Type.SYSTEMGROUP.equals(type)) { - newMnemonicpath = StructureUtil.getMnemonicPath((SystemGroup) structure, holderStructures); + newMnemonicpath = StructureUtil.getMnemonicPath((TmpSystemGroup) structure, holderStructures); } else if (Type.SYSTEM.equals(type)) { - newMnemonicpath = StructureUtil.getMnemonicPath((System) structure, holderStructures); + newMnemonicpath = StructureUtil.getMnemonicPath((TmpSystem) structure, holderStructures); } else if (Type.SUBSYSTEM.equals(type)) { - newMnemonicpath = StructureUtil.getMnemonicPath((Subsystem) structure, holderStructures); + newMnemonicpath = StructureUtil.getMnemonicPath((TmpSubsystem) structure, holderStructures); } else if (Type.DISCIPLINE.equals(type)) { - newMnemonicpath = StructureUtil.getMnemonicPath((Discipline) structure, holderStructures); + newMnemonicpath = StructureUtil.getMnemonicPath((TmpDiscipline) structure, holderStructures); } else if (Type.DEVICEGROUP.equals(type)) { - newMnemonicpath = StructureUtil.getMnemonicPath((DeviceGroup) structure, holderStructures); + newMnemonicpath = StructureUtil.getMnemonicPath((TmpDeviceGroup) structure, holderStructures); } else if (Type.DEVICETYPE.equals(type)) { - newMnemonicpath = StructureUtil.getMnemonicPath((DeviceType) structure, holderStructures); + newMnemonicpath = StructureUtil.getMnemonicPath((TmpDeviceType) structure, holderStructures); } newMnemonic = StringUtils.stripToEmpty(structure.getMnemonic()); newMnemonicpath = StringUtils.stripToEmpty(newMnemonicpath);