From dc93a02234e54490b12d2cce8e3bddb080288341 Mon Sep 17 00:00:00 2001 From: Lars Johansson <lars.johansson@ess.eu> Date: Tue, 29 Nov 2022 16:48:43 +0100 Subject: [PATCH] Refactor to reduce complexity --- .../openepics/names/service/NamesService.java | 50 ++-- .../names/service/StructuresService.java | 273 +++++------------- .../names/util/ValidateNameElementUtil.java | 68 +++-- .../util/ValidateStructureElementUtil.java | 199 +++++++------ .../openepics/names/util/ValidateUtil.java | 12 +- .../names/util/ValidateUtilTest.java | 30 +- 6 files changed, 293 insertions(+), 339 deletions(-) diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java index 7f2d65b3..c1e1d29b 100644 --- a/src/main/java/org/openepics/names/service/NamesService.java +++ b/src/main/java/org/openepics/names/service/NamesService.java @@ -141,7 +141,7 @@ public class NamesService { // do // for each name element // create name, latest, with data - // add name element for created + // add // return // name elements for created names @@ -166,6 +166,12 @@ public class NamesService { public NameElement createName(NameElementCommand nameElement, HolderSystemDeviceStructure holder, Date requested, String requestedBy) { // transaction // support a current transaction, throw an exception if none exists + // do + // find + // prepare + // create + // return + // name element for name // find out // system structure - system group, system, subsystem - one of the three expected to be non-null, other two expected to be null @@ -189,11 +195,13 @@ public class NamesService { // create Name name = new Name(UUID.randomUUID(), - systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(), + systemGroup != null ? systemGroup.getUuid() : null, + system != null ? system.getUuid() : null, + subsystem != null ? subsystem.getUuid() : null, + nameElement.getParentdevicestructure(), nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName), nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, requested, requestedBy, nameElement.getComment()); - nameRepository.createName(name); // possibly validate that created @@ -402,8 +410,7 @@ public class NamesService { ValidateUtil.validateInputName(name); // do - List<Name> names = nameRepository.readNames(false, - null, name, null, null, null, null, null); + List<Name> names = nameRepository.readNames(false, null, name, null, null, null, null, null); ExceptionUtil.validateConditionDataNotFoundException(ValidateUtil.isSize(names, 1), "name not found", name, null); Name toBeChecked = names.get(0); @@ -614,9 +621,12 @@ public class NamesService { // transaction // do // for each name element + // find // update name to not latest + // find // insert name to latest, not deleted, with data - // read + // possibly validate that updated + // add // return // name elements for updated names @@ -669,15 +679,15 @@ public class NamesService { // create name = new Name(nameElement.getUuid(), - systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(), + systemGroup != null ? systemGroup.getUuid() : null, + system != null ? system.getUuid() : null, + subsystem != null ? subsystem.getUuid() : null, + nameElement.getParentdevicestructure(), nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName), nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, requested, requestedBy, nameElement.getComment()); - nameRepository.createName(name); - // possibly validate that updated - // add updatedNameElements.add(NameElementUtil.getNameElement(name)); } @@ -694,11 +704,15 @@ public class NamesService { // outside of @Transactional // transaction // do - // update name to not latest - // insert name to latest, deleted - // read + // for each name element + // find + // update name to not latest + // find + // insert name to latest, deleted + // possibly validate that deleted + // add // return - // name element for deleted name + // name element for deleted names LOGGER.log(Level.FINE, "deleteNames, nameElements.size: {0}", Utilities.getSize(nameElements)); @@ -738,15 +752,15 @@ public class NamesService { } name = new Name(nameElement.getUuid(), - systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(), + systemGroup != null ? systemGroup.getUuid() : null, + system != null ? system.getUuid() : null, + subsystem != null ? subsystem.getUuid() : null, + nameElement.getParentdevicestructure(), nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName), nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.TRUE, requested, requestedBy, nameElement.getComment()); - nameRepository.createName(name); - // possibly validate that deleted - // add deletedNameElements.add(NameElementUtil.getNameElement(name)); } diff --git a/src/main/java/org/openepics/names/service/StructuresService.java b/src/main/java/org/openepics/names/service/StructuresService.java index 95b71999..065a9232 100644 --- a/src/main/java/org/openepics/names/service/StructuresService.java +++ b/src/main/java/org/openepics/names/service/StructuresService.java @@ -144,6 +144,7 @@ public class StructuresService { // do // for each structure element // create structure to pending, not latest, not deleted, with data + // possibly validate that created // add structure element for created // return // structure elements for created structures @@ -177,11 +178,8 @@ public class StructuresService { name, mnemonic, equivalenceClassRepresentative, description, Status.PENDING, Boolean.FALSE, Boolean.FALSE, requested, requestedBy, requestedComment); - holderRepositories.getSystemGroupRepository().createSystemGroup(systemGroup); - // possibly validate that created - // add createdStructureElements.add(StructureElementUtil.getStructureElementRequested(systemGroup, holder)); } else if (Type.SYSTEM.equals(structureElement.getType())) { @@ -190,11 +188,8 @@ public class StructuresService { name, mnemonic, equivalenceClassRepresentative, description, Status.PENDING, Boolean.FALSE, Boolean.FALSE, requested, requestedBy, requestedComment); - holderRepositories.getSystemRepository().createSystem(system); - // possibly validate that created - // add createdStructureElements.add(StructureElementUtil.getStructureElementRequested(system, holder)); } else if (Type.SUBSYSTEM.equals(structureElement.getType())) { @@ -203,11 +198,8 @@ public class StructuresService { name, mnemonic, equivalenceClassRepresentative, description, Status.PENDING, Boolean.FALSE, Boolean.FALSE, requested, requestedBy, requestedComment); - holderRepositories.getSubsystemRepository().createSubsystem(subsystem); - // possibly validate that created - // add createdStructureElements.add(StructureElementUtil.getStructureElementRequested(subsystem, holder)); } else if (Type.DISCIPLINE.equals(structureElement.getType())) { @@ -216,11 +208,8 @@ public class StructuresService { name, mnemonic, equivalenceClassRepresentative, description, Status.PENDING, Boolean.FALSE, Boolean.FALSE, requested, requestedBy, requestedComment); - holderRepositories.getDisciplineRepository().createDiscipline(discipline); - // possibly validate that created - // add createdStructureElements.add(StructureElementUtil.getStructureElementRequested(discipline, holder)); } else if (Type.DEVICEGROUP.equals(structureElement.getType())) { @@ -231,11 +220,8 @@ public class StructuresService { name, mnemonic, equivalenceClassRepresentative, description, Status.PENDING, Boolean.FALSE, Boolean.FALSE, requested, requestedBy, requestedComment); - holderRepositories.getDeviceGroupRepository().createDeviceGroup(deviceGroup); - // possibly validate that created - // add createdStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceGroup, holder)); } else if (Type.DEVICETYPE.equals(structureElement.getType())) { @@ -244,11 +230,8 @@ public class StructuresService { name, mnemonic, equivalenceClassRepresentative, description, Status.PENDING, Boolean.FALSE, Boolean.FALSE, requested, requestedBy, requestedComment); - holderRepositories.getDeviceTypeRepository().createDeviceType(deviceType); - // possibly validate that created - // add createdStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceType, holder)); } @@ -420,21 +403,13 @@ public class StructuresService { ResponsePageStructureElements response = null; if (typeEither) { if (typeSystemGroup) { - response = readStructures(Type.SYSTEM, new Status[] {Status.APPROVED}, false, - null, uuid, null, null, null, null, null, - orderBy, isAsc, offset, limit); + response = readStructures(Type.SYSTEM, new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit); } else if (typeSystem) { - response = readStructures(Type.SUBSYSTEM, new Status[] {Status.APPROVED}, false, - null, uuid, null, null, null, null, null, - orderBy, isAsc, offset, limit); + response = readStructures(Type.SUBSYSTEM, new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit); } else if (typeDiscipline) { - response = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false, - null, uuid, null, null, null, null, null, - orderBy, isAsc, offset, limit); + response = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit); } else if (typeDeviceGroup) { - response = readStructures(Type.DEVICETYPE, new Status[] {Status.APPROVED}, false, - null, uuid, null, null, null, null, null, - orderBy, isAsc, offset, limit); + response = readStructures(Type.DEVICETYPE, new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit); } else { // no children in structures for subsystem and device type response = new ResponsePageStructureElements(structureElements, Long.valueOf(structureElements.size()), structureElements.size(), offset, limit); @@ -443,18 +418,10 @@ public class StructuresService { // go through all structures and see if / where uuid is found // uuid in 0 or 1 of structures - ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEM, new Status[] {Status.APPROVED}, false, - null, uuid, null, null, null, null, null, - orderBy, isAsc, offset, limit); - ResponsePageStructureElements responseSystem = readStructures(Type.SUBSYSTEM, new Status[] {Status.APPROVED}, false, - null, uuid, null, null, null, null, null, - orderBy, isAsc, offset, limit); - ResponsePageStructureElements responseDiscipline = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false, - null, uuid, null, null, null, null, null, - orderBy, isAsc, offset, limit); - ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICETYPE, new Status[] {Status.APPROVED}, false, - null, uuid, null, null, null, null, null, - orderBy, isAsc, offset, limit); + ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEM, new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit); + ResponsePageStructureElements responseSystem = readStructures(Type.SUBSYSTEM, new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit); + ResponsePageStructureElements responseDiscipline = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit); + ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICETYPE, new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit); structureElements.addAll(responseSystemGroup.getList()); structureElements.addAll(responseSystem.getList()); @@ -584,15 +551,15 @@ public class StructuresService { if (typeSystemGroup) { response = readStructures(Type.SYSTEMGROUP, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY); } else if (typeSystem) { - response = readStructures(Type.SYSTEM, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY); + response = readStructures(Type.SYSTEM, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY); } else if (typeSubsystem) { - response = readStructures(Type.SUBSYSTEM, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY); + response = readStructures(Type.SUBSYSTEM, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY); } else if (typeDiscipline) { - response = readStructures(Type.DISCIPLINE, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY); + response = readStructures(Type.DISCIPLINE, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY); } else if (typeDeviceGroup) { response = readStructures(Type.DEVICEGROUP, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY); } else if (typeDeviceType) { - response = readStructures(Type.DEVICETYPE, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY); + response = readStructures(Type.DEVICETYPE, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY); } } else { // go through all structures and see if / where uuid is found @@ -649,28 +616,22 @@ public class StructuresService { // do if (Type.SYSTEMGROUP.equals(type)) { - List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, - null, null, null, null, mnemonicpath, null); + List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, null, null, null, null, mnemonicpath, null); return !systemGroups.isEmpty(); } else if (Type.SYSTEM.equals(type)) { - List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, - null, null, null, null, null, mnemonicpath, null); + List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, null, null, null, null, null, mnemonicpath, null); return !systems.isEmpty(); } else if (Type.SUBSYSTEM.equals(type)) { - List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, - null, null, null, null, null, mnemonicpath, null); + List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, null, null, null, null, null, mnemonicpath, null); return !subsystems.isEmpty(); } else if (Type.DISCIPLINE.equals(type)) { - List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, - null, null, null, null, mnemonicpath, null); + List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, null, null, null, null, mnemonicpath, null); return !disciplines.isEmpty(); } else if (Type.DEVICEGROUP.equals(type)) { - List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, - null, null, null, null, null, mnemonicpath, null); + List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, null, null, null, null, null, mnemonicpath, null); return !deviceGroups.isEmpty(); } else if (Type.DEVICETYPE.equals(type)) { - List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, - null, null, null, null, null, mnemonicpath, null); + List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, null, null, null, null, null, mnemonicpath, null); return !deviceTypes.isEmpty(); } @@ -884,6 +845,7 @@ public class StructuresService { // do // for each structure element // create structure to pending, not latest, not deleted, with data + // possibly validate that updated // add structure element for updated // return // structure elements for updated structures @@ -917,11 +879,8 @@ public class StructuresService { name, mnemonic, equivalenceClassRepresentative, description, Status.PENDING, Boolean.FALSE, Boolean.FALSE, requested, requestedBy, requestedComment); - holderRepositories.getSystemGroupRepository().createSystemGroup(systemGroup); - // possibly validate that created - // add updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(systemGroup, holder)); } else if (Type.SYSTEM.equals(structureElement.getType())) { @@ -930,11 +889,8 @@ public class StructuresService { name, structureElement.getMnemonic(), equivalenceClassRepresentative, description, Status.PENDING, Boolean.FALSE, Boolean.FALSE, requested, requestedBy, requestedComment); - holderRepositories.getSystemRepository().createSystem(system); - // possibly validate that created - // add updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(system, holder)); } else if (Type.SUBSYSTEM.equals(structureElement.getType())) { @@ -943,11 +899,8 @@ public class StructuresService { name, mnemonic, equivalenceClassRepresentative, description, Status.PENDING, Boolean.FALSE, Boolean.FALSE, requested, requestedBy, requestedComment); - holderRepositories.getSubsystemRepository().createSubsystem(subsystem); - // possibly validate that created - // add updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(subsystem, holder)); } else if (Type.DISCIPLINE.equals(structureElement.getType())) { @@ -956,11 +909,8 @@ public class StructuresService { name, mnemonic, equivalenceClassRepresentative, description, Status.PENDING, Boolean.FALSE, Boolean.FALSE, requested, requestedBy, requestedComment); - holderRepositories.getDisciplineRepository().createDiscipline(discipline); - // possibly validate that created - // add updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(discipline, holder)); } else if (Type.DEVICEGROUP.equals(structureElement.getType())) { @@ -971,11 +921,8 @@ public class StructuresService { name, mnemonic, equivalenceClassRepresentative, description, Status.PENDING, Boolean.FALSE, Boolean.FALSE, requested, requestedBy, requestedComment); - holderRepositories.getDeviceGroupRepository().createDeviceGroup(deviceGroup); - // possibly validate that created - // add updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceGroup, holder)); } else if (Type.DEVICETYPE.equals(structureElement.getType())) { @@ -984,11 +931,8 @@ public class StructuresService { name, mnemonic, equivalenceClassRepresentative, description, Status.PENDING, Boolean.FALSE, Boolean.FALSE, requested, requestedBy, requestedComment); - holderRepositories.getDeviceTypeRepository().createDeviceType(deviceType); - // possibly validate that created - // add updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceType, holder)); } @@ -1009,10 +953,10 @@ public class StructuresService { // for each structure element // find // create structure to pending, not latest, deleted, with data + // possibly validate that deleted // add structure element for deleted // return // structure elements for deleted structures - // TODO continue ---> validation error LOGGER.log(Level.FINE, "deleteStructures, structureElements.size: {0}", Utilities.getSize(structureElements)); @@ -1028,8 +972,7 @@ public class StructuresService { if (Type.SYSTEMGROUP.equals(structureElement.getType())) { // find - List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, Boolean.FALSE, - queryValue, null, null, null, null, null); + List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) { continue; } @@ -1040,17 +983,13 @@ public class StructuresService { toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()), toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE, requested, requestedBy, structureElement.getComment()); - holderRepositories.getSystemGroupRepository().createSystemGroup(systemGroup); - // possibly validate that created - // add deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(systemGroup, holder)); } else if (Type.SYSTEM.equals(structureElement.getType())) { // find - List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, Boolean.FALSE, - queryValue, null, null, null, null, null, null); + List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(systems, 1)) { continue; } @@ -1061,17 +1000,13 @@ public class StructuresService { toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()), toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE, requested, requestedBy, structureElement.getComment()); - holderRepositories.getSystemRepository().createSystem(system); - // possibly validate that created - // add deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(system, holder)); } else if (Type.SUBSYSTEM.equals(structureElement.getType())) { // find - List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, Boolean.FALSE, - queryValue, null, null, null, null, null, null); + List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(subsystems, 1)) { continue; } @@ -1082,17 +1017,13 @@ public class StructuresService { toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()), toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE, requested, requestedBy, structureElement.getComment()); - holderRepositories.getSubsystemRepository().createSubsystem(subsystem); - // possibly validate that created - // add deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(subsystem, holder)); } else if (Type.DISCIPLINE.equals(structureElement.getType())) { // find - List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, Boolean.FALSE, - queryValue, null, null, null, null, null); + List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(disciplines, 1)) { continue; } @@ -1103,17 +1034,13 @@ public class StructuresService { toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()), toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE, requested, requestedBy, structureElement.getComment()); - holderRepositories.getDisciplineRepository().createDiscipline(discipline); - // possibly validate that created - // add deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(discipline, holder)); } else if (Type.DEVICEGROUP.equals(structureElement.getType())) { // find - List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, Boolean.FALSE, - queryValue, null, null, null, null, null, null); + List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) { continue; } @@ -1124,17 +1051,13 @@ public class StructuresService { toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()), toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE, requested, requestedBy, structureElement.getComment()); - holderRepositories.getDeviceGroupRepository().createDeviceGroup(deviceGroup); - // possibly validate that created - // add deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceGroup, holder)); } else if (Type.DEVICETYPE.equals(structureElement.getType())) { // find - List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, Boolean.FALSE, - queryValue, null, null, null, null, null, null); + List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) { continue; } @@ -1145,11 +1068,8 @@ public class StructuresService { toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()), toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE, requested, requestedBy, structureElement.getComment()); - holderRepositories.getDeviceTypeRepository().createDeviceType(deviceType); - // possibly validate that created - // add deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceType, holder)); } @@ -1167,10 +1087,16 @@ public class StructuresService { // outside of @Transactional // transaction // do - // update structure to status APPROVED + // for each structure element + // find + // update not latest + // find + // approve - update structure to status APPROVED, latest to true + // possibly validate that approved + // automatically create name when system structure is approved + // add // return - // updated structure element - // TODO continue ---> validation error + // structure elements for approved structures LOGGER.log(Level.FINE, "approveStructures, structureElements.size: {0}", Utilities.getSize(structureElements)); @@ -1198,8 +1124,7 @@ public class StructuresService { if (Type.SYSTEMGROUP.equals(structureElement.getType())) { // find - List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, Boolean.FALSE, - queryValue, null, null, null, null, null); + List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null); SystemGroup systemGroup = null; if (ValidateUtil.isSize(systemGroups, 1)) { systemGroup = systemGroups.get(0); @@ -1210,8 +1135,7 @@ public class StructuresService { } // find - systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, - queryValue, null, null, null, null, null); + systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, queryValue, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) { continue; } @@ -1222,8 +1146,6 @@ public class StructuresService { systemGroup.setLatest(Boolean.TRUE); holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup); - // possibly validate that approved - // automatically create name when system structure is approved (after create) // create name within current transaction if (!StringUtils.isEmpty(systemGroup.getMnemonic())) { @@ -1236,8 +1158,7 @@ public class StructuresService { approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(systemGroup, holder)); } else if (Type.SYSTEM.equals(structureElement.getType())) { // find - List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, Boolean.FALSE, - queryValue, null, null, null, null, null, null); + List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null); System system = null; if (ValidateUtil.isSize(systems, 1)) { system = systems.get(0); @@ -1248,8 +1169,7 @@ public class StructuresService { } // find - systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, - queryValue, null, null, null, null, null, null); + systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(systems, 1)) { continue; } @@ -1260,8 +1180,6 @@ public class StructuresService { system.setLatest(Boolean.TRUE); holderRepositories.getSystemRepository().updateSystem(system); - // possibly validate that approved - // automatically create name when system structure is approved (after create) // create name within current transaction if (!StringUtils.isEmpty(system.getMnemonic())) { @@ -1274,8 +1192,7 @@ public class StructuresService { approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(system, holder)); } else if (Type.SUBSYSTEM.equals(structureElement.getType())) { // find - List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, Boolean.FALSE, - queryValue, null, null, null, null, null, null); + List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null); Subsystem subsystem = null; if (ValidateUtil.isSize(subsystems, 1)) { subsystem = subsystems.get(0); @@ -1286,8 +1203,7 @@ public class StructuresService { } // find - subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, - queryValue, null, null, null, null, null, null); + subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(subsystems, 1)) { continue; } @@ -1298,8 +1214,6 @@ public class StructuresService { subsystem.setLatest(Boolean.TRUE); holderRepositories.getSubsystemRepository().updateSubsystem(subsystem); - // possibly validate that approved - // automatically create name when system structure is approved (after create) // create name within current transaction if (!StringUtils.isEmpty(subsystem.getMnemonic())) { @@ -1311,8 +1225,7 @@ public class StructuresService { // add approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(subsystem, holder)); } else if (Type.DISCIPLINE.equals(structureElement.getType())) { - List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, Boolean.FALSE, - queryValue, null, null, null, null, null); + List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null); Discipline discipline = null; if (ValidateUtil.isSize(disciplines, 1)) { discipline = disciplines.get(0); @@ -1323,8 +1236,7 @@ public class StructuresService { } // find - disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, - queryValue, null, null, null, null, null); + disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, queryValue, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(disciplines, 1)) { continue; } @@ -1335,14 +1247,11 @@ public class StructuresService { discipline.setLatest(Boolean.TRUE); holderRepositories.getDisciplineRepository().updateDiscipline(discipline); - // possibly validate that approved - // add approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(discipline, holder)); } else if (Type.DEVICEGROUP.equals(structureElement.getType())) { // find - List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, Boolean.FALSE, - queryValue, null, null, null, null, null, null); + List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null); DeviceGroup deviceGroup = null; if (ValidateUtil.isSize(deviceGroups, 1)) { deviceGroup = deviceGroups.get(0); @@ -1353,8 +1262,7 @@ public class StructuresService { } // find - deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, - queryValue, null, null, null, null, null, null); + deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) { continue; } @@ -1365,14 +1273,11 @@ public class StructuresService { deviceGroup.setLatest(Boolean.TRUE); holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup); - // possibly validate that approved - // add approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceGroup, holder)); } else if (Type.DEVICETYPE.equals(structureElement.getType())) { // find - List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, Boolean.FALSE, - queryValue, null, null, null, null, null, null); + List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null); DeviceType deviceType = null; if (ValidateUtil.isSize(deviceTypes, 1)) { deviceType = deviceTypes.get(0); @@ -1383,8 +1288,7 @@ public class StructuresService { } // find - deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, - queryValue, null, null, null, null, null, null); + deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) { continue; } @@ -1395,8 +1299,6 @@ public class StructuresService { deviceType.setLatest(Boolean.TRUE); holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType); - // possibly validate that approved - // add approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceType, holder)); } @@ -1412,10 +1314,13 @@ public class StructuresService { // outside of @Transactional // transaction // do - // update structure to status CANCELLED + // for each structure element + // find + // cancel - update structure to status CANCELLED + // possibly validate that cancelled + // add // return - // updated structure element - // TODO continue ---> validation error + // structure elements for cancelled structures LOGGER.log(Level.FINE, "cancelStructures, structureElements.size: {0}", Utilities.getSize(structureElements)); @@ -1432,8 +1337,7 @@ public class StructuresService { if (Type.SYSTEMGROUP.equals(structureElement.getType())) { // find - List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, - queryValue, null, null, null, null, null); + List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, queryValue, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) { continue; } @@ -1443,14 +1347,11 @@ public class StructuresService { systemGroup.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment); holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup); - // possibly validate that cancelled - // add cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(systemGroup, holder)); } else if (Type.SYSTEM.equals(structureElement.getType())) { // find - List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, - queryValue, null, null, null, null, null, null); + List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(systems, 1)) { continue; } @@ -1460,14 +1361,11 @@ public class StructuresService { system.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment); holderRepositories.getSystemRepository().updateSystem(system); - // possibly validate that cancelled - // add cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(system, holder)); } else if (Type.SUBSYSTEM.equals(structureElement.getType())) { // find - List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, - queryValue, null, null, null, null, null, null); + List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(subsystems, 1)) { continue; } @@ -1477,14 +1375,11 @@ public class StructuresService { subsystem.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment); holderRepositories.getSubsystemRepository().updateSubsystem(subsystem); - // possibly validate that cancelled - // add cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(subsystem, holder)); } else if (Type.DISCIPLINE.equals(structureElement.getType())) { // find - List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, - queryValue, null, null, null, null, null); + List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, queryValue, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(disciplines, 1)) { continue; } @@ -1494,14 +1389,11 @@ public class StructuresService { discipline.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment); holderRepositories.getDisciplineRepository().updateDiscipline(discipline); - // possibly validate that cancelled - // add cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(discipline, holder)); } else if (Type.DEVICEGROUP.equals(structureElement.getType())) { // find - List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, - queryValue, null, null, null, null, null, null); + List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) { continue; } @@ -1511,13 +1403,10 @@ public class StructuresService { deviceGroup.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment); holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup); - // possibly validate that cancelled - // add cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceGroup, holder)); } else if (Type.DEVICETYPE.equals(structureElement.getType())) { - List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, - queryValue, null, null, null, null, null, null); + List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) { continue; } @@ -1527,8 +1416,6 @@ public class StructuresService { deviceType.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment); holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType); - // possibly validate that cancelled - // add cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceType, holder)); } @@ -1544,10 +1431,13 @@ public class StructuresService { // outside of @Transactional // transaction // do - // update structure to status REJECTED + // for each structure element + // find + // reject - update structure to status REJECTED + // possibly validate that rejected + // add // return - // updated structure element - // TODO continue ---> validation error + // structure elements for rejected structures LOGGER.log(Level.FINE, "rejectStructures, structureElements.size: {0}", Utilities.getSize(structureElements)); @@ -1564,8 +1454,7 @@ public class StructuresService { if (Type.SYSTEMGROUP.equals(structureElement.getType())) { // find - List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, - queryValue, null, null, null, null, null); + List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, queryValue, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) { continue; } @@ -1575,14 +1464,11 @@ public class StructuresService { systemGroup.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment); holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup); - // possibly validate that rejected - // add rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(systemGroup, holder)); } else if (Type.SYSTEM.equals(structureElement.getType())) { // find - List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, - queryValue, null, null, null, null, null, null); + List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(systems, 1)) { continue; } @@ -1592,14 +1478,11 @@ public class StructuresService { system.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment); holderRepositories.getSystemRepository().updateSystem(system); - // possibly validate that rejected - // add rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(system, holder)); } else if (Type.SUBSYSTEM.equals(structureElement.getType())) { // find - List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, - queryValue, null, null, null, null, null, null); + List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(subsystems, 1)) { continue; } @@ -1609,14 +1492,11 @@ public class StructuresService { subsystem.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment); holderRepositories.getSubsystemRepository().updateSubsystem(subsystem); - // possibly validate that rejected - // add rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(subsystem, holder)); } else if (Type.DISCIPLINE.equals(structureElement.getType())) { // find - List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, - queryValue, null, null, null, null, null); + List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, queryValue, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(disciplines, 1)) { continue; } @@ -1626,14 +1506,11 @@ public class StructuresService { discipline.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment); holderRepositories.getDisciplineRepository().updateDiscipline(discipline); - // possibly validate that rejected - // add rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(discipline, holder)); } else if (Type.DEVICEGROUP.equals(structureElement.getType())) { // find - List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, - queryValue, null, null, null, null, null, null); + List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) { continue; } @@ -1643,13 +1520,11 @@ public class StructuresService { deviceGroup.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment); holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup); - // possibly validate that rejected - // add rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceGroup, holder)); } else if (Type.DEVICETYPE.equals(structureElement.getType())) { - List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, - queryValue, null, null, null, null, null, null); + // find + List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, queryValue, null, null, null, null, null, null); if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) { continue; } @@ -1659,8 +1534,6 @@ public class StructuresService { deviceType.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment); holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType); - // possibly validate that rejected - // add rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceType, holder)); } diff --git a/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java b/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java index 552651a8..97d1cfea 100644 --- a/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java +++ b/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java @@ -54,7 +54,7 @@ public class ValidateNameElementUtil { // update - uuid, parentsystemstructure, parentdevicestructure (optional), index, description, comment // delete - uuid, comment - private enum NameChoice {CREATE, UPDATE, DELETE} + private enum NameChoice {CREATE, UPDATE, DELETE} /** * This class is not to be instantiated. @@ -140,15 +140,14 @@ public class ValidateNameElementUtil { UUID uuid = nameElement.getUuid(); UUID parentSystemstructure = nameElement.getParentsystemstructure(); UUID parentDevicestructure = nameElement.getParentdevicestructure(); + String index = nameElement.getIndex(); String description = nameElement.getDescription(); String comment = nameElement.getComment(); if (NameChoice.CREATE.equals(nameChoice)) { ExceptionUtil.validateConditionInputNotEmptyException(uuid == null, - TextUtil.VALUE_IS_NOT_EMPTY, - uuid != null ? uuid.toString() : null, - TextUtil.UUID); + TextUtil.VALUE_IS_NOT_EMPTY, uuid != null ? uuid.toString() : null, TextUtil.UUID); } else { ValidateUtil.validateInputUuid(uuid != null ? uuid.toString() : null); } @@ -246,9 +245,10 @@ public class ValidateNameElementUtil { // name // update, delete - uuid available, not deleted // retrieve for uuid and check - if (NameChoice.UPDATE.equals(nameChoice) || NameChoice.DELETE.equals(nameChoice)) { + if (ValidateUtil.isAnyEqual(nameChoice, NameChoice.UPDATE, NameChoice.DELETE)) { List<Name> names = nameRepository.readNames(false, nameElement.getUuid().toString(), null, null, null, null, null, null); - ExceptionUtil.validateConditionDataNotCorrectException(ValidateUtil.isSize(names, 1), TextUtil.VALUE_IS_NOT_CORRECT, details, TextUtil.UUID); + ExceptionUtil.validateConditionDataNotCorrectException(ValidateUtil.isSize(names, 1), + TextUtil.VALUE_IS_NOT_CORRECT, details, TextUtil.UUID); } SystemGroup systemGroup = null; @@ -266,7 +266,7 @@ public class ValidateNameElementUtil { UUID parentDevicestructure = nameElement.getParentdevicestructure(); String index = nameElement.getIndex(); - if (NameChoice.CREATE.equals(nameChoice) || NameChoice.UPDATE.equals(nameChoice)) { + if (ValidateUtil.isAnyEqual(nameChoice, NameChoice.CREATE, NameChoice.UPDATE)) { // systemgroup, system, subsystem - in repository // found // not deleted @@ -291,19 +291,24 @@ public class ValidateNameElementUtil { if (parentDevicestructure != null) { countDevicestructureIndex++; deviceType = holderIRepositories.getDeviceTypeRepository().findLatestByUuid(parentDevicestructure.toString()); - ExceptionUtil.validateConditionDataNotAvailableException(deviceType != null, TextUtil.DATA_IS_NOT_AVAILABLE, details, TextUtil.PARENTDEVICESTRUCTURE); - ExceptionUtil.validateConditionDataDeletedException(!deviceType.isDeleted(), TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTDEVICESTRUCTURE); + ExceptionUtil.validateConditionDataNotAvailableException(deviceType != null, + TextUtil.DATA_IS_NOT_AVAILABLE, details, TextUtil.PARENTDEVICESTRUCTURE); + ExceptionUtil.validateConditionDataDeletedException(!deviceType.isDeleted(), + TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTDEVICESTRUCTURE); } // system structure if (systemGroup != null) { - ExceptionUtil.validateConditionDataDeletedException(!systemGroup.isDeleted(), TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTSYSTEMSTRUCTURE); + ExceptionUtil.validateConditionDataDeletedException(!systemGroup.isDeleted(), + TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTSYSTEMSTRUCTURE); derivedName = NameUtil.getName(systemGroup, deviceType, index, holder); } else if (system != null) { - ExceptionUtil.validateConditionDataDeletedException(!system.isDeleted(), TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTSYSTEMSTRUCTURE); + ExceptionUtil.validateConditionDataDeletedException(!system.isDeleted(), + TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTSYSTEMSTRUCTURE); derivedName = NameUtil.getName(system, deviceType, index, holder); } else if (subsystem != null) { - ExceptionUtil.validateConditionDataDeletedException(!subsystem.isDeleted(), TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTSYSTEMSTRUCTURE); + ExceptionUtil.validateConditionDataDeletedException(!subsystem.isDeleted(), + TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTSYSTEMSTRUCTURE); derivedName = NameUtil.getName(subsystem, deviceType, index, holder); } else { throw ExceptionUtil.createDataNotCorrectException(TextUtil.DATA_IS_NOT_CORRECT, details, TextUtil.PARENTSYSTEMSTRUCTURE); @@ -314,11 +319,13 @@ public class ValidateNameElementUtil { countDevicestructureIndex++; // TODO overrideRuleset depend on user authority condition = namingConvention.isInstanceIndexValid(derivedName, false); - ExceptionUtil.validateConditionDataNotValidException(condition, TextUtil.DATA_IS_NOT_VALID, details, TextUtil.INDEX); + ExceptionUtil.validateConditionDataNotValidException(condition, + TextUtil.DATA_IS_NOT_VALID, details, TextUtil.INDEX); } condition = countDevicestructureIndex == 0 || countDevicestructureIndex == 2; - ExceptionUtil.validateConditionDataNotAvailableException(condition, TextUtil.DEVICETYPE_OR_INDEX_IS_NOT_AVAILABLE, details, TextUtil.PARENTDEVICESTRUCTURE); + ExceptionUtil.validateConditionDataNotAvailableException(condition, + TextUtil.DEVICETYPE_OR_INDEX_IS_NOT_AVAILABLE, details, TextUtil.PARENTDEVICESTRUCTURE); // name // ok with same name, name equivalence if same uuid @@ -329,7 +336,8 @@ public class ValidateNameElementUtil { // NameChoice.UPDATE.equals(nameChoice) condition = ValidateUtil.isNullOrEmpty(names) || names.size() == 1 && names.get(0).getUuid().equals(uuid); } - ExceptionUtil.validateConditionDataExistException(condition, TextUtil.CONVENTION_NAME_EXISTS, details, TextUtil.PARENTSYSTEMSTRUCTURE); + ExceptionUtil.validateConditionDataExistException(condition, + TextUtil.CONVENTION_NAME_EXISTS, details, TextUtil.PARENTSYSTEMSTRUCTURE); names = nameRepository.readNames(false, null, null, namingConvention.equivalenceClassRepresentative(derivedName), null, null, null, null); if (NameChoice.CREATE.equals(nameChoice)) { @@ -338,7 +346,8 @@ public class ValidateNameElementUtil { // NameChoice.UPDATE.equals(nameChoice) condition = ValidateUtil.isNullOrEmpty(names) || names.size() == 1 && names.get(0).getUuid().equals(uuid); } - ExceptionUtil.validateConditionDataExistException(condition, TextUtil.CONVENTION_NAME_EQUIVALENCE_EXISTS, details, TextUtil.PARENTSYSTEMSTRUCTURE); + ExceptionUtil.validateConditionDataExistException(condition, + TextUtil.CONVENTION_NAME_EQUIVALENCE_EXISTS, details, TextUtil.PARENTSYSTEMSTRUCTURE); } else if (NameChoice.DELETE.equals(nameChoice)) { // n.a. // uuid - already handled @@ -421,19 +430,16 @@ public class ValidateNameElementUtil { // device structure if (!StringUtils.isEmpty(dt)) { - List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, - null, null, null, null, null, mnemonicPathDevicestructure, null); - ExceptionUtil.validateConditionDataNotAvailableException(ValidateUtil.isSize(deviceTypes, 1), TextUtil.DEVICETYPE_IS_NOT_AVAILABLE, details, field); + List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, null, null, null, null, null, mnemonicPathDevicestructure, null); + ExceptionUtil.validateConditionDataNotAvailableException(ValidateUtil.isSize(deviceTypes, 1), + TextUtil.DEVICETYPE_IS_NOT_AVAILABLE, details, field); deviceType = deviceTypes.get(0); } // system structure - List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, - null, null, null, null, null, mnemonicPathSystemstructure, null); - List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, - null, null, null, null, null, mnemonicPathSystemstructure, null); - List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, - null, null, null, null, mnemonicPathSystemstructure, null); + List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, null, null, null, null, null, mnemonicPathSystemstructure, null); + List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, null, null, null, null, null, mnemonicPathSystemstructure, null); + List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, null, null, null, null, mnemonicPathSystemstructure, null); if (ValidateUtil.isSize(subsystems, 1)) { subsystem = subsystems.get(0); @@ -451,20 +457,24 @@ public class ValidateNameElementUtil { // index if (!StringUtils.isEmpty(idx)) { // TODO overrideRuleset depend on user authority - ExceptionUtil.validateConditionDataNotValidException(namingConvention.isInstanceIndexValid(name, false), TextUtil.INDEX_IS_NOT_VALID, details, field); + ExceptionUtil.validateConditionDataNotValidException(namingConvention.isInstanceIndexValid(name, false), + TextUtil.INDEX_IS_NOT_VALID, details, field); } // name // name corresponds to derived name // convention name not exists // convention name equivalence not exists - ExceptionUtil.validateConditionDataNotCorrectException(StringUtils.equals(name, derivedName), TextUtil.CONVENTION_NAME_IS_NOT_CORRECT, details, field); + ExceptionUtil.validateConditionDataNotCorrectException(StringUtils.equals(name, derivedName), + TextUtil.CONVENTION_NAME_IS_NOT_CORRECT, details, field); List<Name> names = holderRepositories.getNameRepository().readNames(false, null, name, null, null, null, null, null); - ExceptionUtil.validateConditionDataExistException(names.isEmpty(), TextUtil.CONVENTION_NAME_EXISTS, details, field); + ExceptionUtil.validateConditionDataExistException(names.isEmpty(), + TextUtil.CONVENTION_NAME_EXISTS, details, field); names = holderRepositories.getNameRepository().readNames(false, null, null, namingConvention.equivalenceClassRepresentative(name), null, null, null, null); - ExceptionUtil.validateConditionDataExistException(names.isEmpty(), TextUtil.CONVENTION_NAME_EQUIVALENCE_EXISTS, details, field); + ExceptionUtil.validateConditionDataExistException(names.isEmpty(), + TextUtil.CONVENTION_NAME_EQUIVALENCE_EXISTS, details, field); } } diff --git a/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java b/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java index 0c7b5bb0..b6c75ac0 100644 --- a/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java +++ b/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java @@ -173,6 +173,7 @@ public class ValidateStructureElementUtil { Type type = structureElement.getType(); UUID uuid = structureElement.getUuid(); UUID parentUuid = structureElement.getParent(); + String name = structureElement.getName(); String mnemonic = structureElement.getMnemonic(); String description = structureElement.getDescription(); @@ -180,9 +181,7 @@ public class ValidateStructureElementUtil { if (StructureChoice.CREATE.equals(structureChoice)) { ExceptionUtil.validateConditionInputNotEmptyException(uuid == null, - TextUtil.VALUE_IS_NOT_EMPTY, - uuid != null ? uuid.toString() : null, - TextUtil.UUID); + TextUtil.VALUE_IS_NOT_EMPTY, uuid != null ? uuid.toString() : null, TextUtil.UUID); } else { ValidateUtil.validateInputUuid(uuid != null ? uuid.toString() : null); } @@ -317,6 +316,10 @@ public class ValidateStructureElementUtil { String details = structureElement.toString(); String field = TextUtil.UUID; + Type type = structureElement.getType(); + UUID uuid = structureElement.getUuid(); + UUID parentUuid = structureElement.getParent(); + // validate data in itself // systemgroup, discipline // not have parent @@ -326,23 +329,16 @@ public class ValidateStructureElementUtil { // approve, cancel, reject // entry pending - Type type = structureElement.getType(); - UUID uuid = structureElement.getUuid(); - UUID parentUuid = structureElement.getParent(); - if (ValidateUtil.isAnyEqual(type, Type.SYSTEMGROUP, Type.DISCIPLINE) && parentUuid != null) { throw ExceptionUtil.createDataNotCorrectException(TextUtil.PARENT_IS_NOT_CORRECT, details, field); - } else if (StructureChoice.UPDATE.equals(structureChoice) || StructureChoice.DELETE.equals(structureChoice)) { - validateStructuresStatusSize0( - uuid, type, Status.PENDING, null, + } else if (ValidateUtil.isAnyEqual(structureChoice, StructureChoice.UPDATE, StructureChoice.DELETE)) { + validateStructuresStatusSize0(uuid, type, Status.PENDING, null, holderRepositories, message, details, field); - validateStructuresStatusSize1( - uuid, type, Status.APPROVED, Boolean.FALSE, + validateStructuresStatusSize1(uuid, type, Status.APPROVED, Boolean.FALSE, holderRepositories, message, details, field); - } else if (StructureChoice.APPROVE.equals(structureChoice) || StructureChoice.CANCEL.equals(structureChoice) || StructureChoice.REJECT.equals(structureChoice)) { - validateStructuresStatusSize1( - uuid, type, Status.PENDING, null, + } else if (ValidateUtil.isAnyEqual(structureChoice, StructureChoice.APPROVE, StructureChoice.CANCEL, StructureChoice.REJECT)) { + validateStructuresStatusSize1(uuid, type, Status.PENDING, null, holderRepositories, message, details, field); } } @@ -350,33 +346,29 @@ public class ValidateStructureElementUtil { private static void validateStructuresStatusSize0(UUID uuid, Type type, Status status, Boolean deleted, HolderRepositories holderRepositories, String message, String details, String field) { ExceptionUtil.validateConditionDataNotCorrectException( - getStructuresSize(uuid, type, status, deleted, holderRepositories) == 0, message, details, field); + getStructuresSize(uuid, type, status, deleted, holderRepositories) == 0, + message, details, field); } private static void validateStructuresStatusSize1(UUID uuid, Type type, Status status, Boolean deleted, HolderRepositories holderRepositories, String message, String details, String field) { ExceptionUtil.validateConditionDataNotCorrectException( - getStructuresSize(uuid, type, status, deleted, holderRepositories) == 1, message, details, field); + getStructuresSize(uuid, type, status, deleted, holderRepositories) == 1, + message, details, field); } private static int getStructuresSize(UUID uuid, Type type, Status status, Boolean deleted, HolderRepositories holderRepositories) { if (Type.SYSTEMGROUP.equals(type)) { - return holderRepositories.getSystemGroupRepository().readSystemGroups(status, deleted, - uuid.toString(), null, null, null, null, null).size(); + return holderRepositories.getSystemGroupRepository().readSystemGroups(status, deleted, uuid.toString(), null, null, null, null, null).size(); } else if (Type.SYSTEM.equals(type)) { - return holderRepositories.getSystemRepository().readSystems(status, deleted, - uuid.toString(), null, null, null, null, null, null).size(); + return holderRepositories.getSystemRepository().readSystems(status, deleted, uuid.toString(), null, null, null, null, null, null).size(); } else if (Type.SUBSYSTEM.equals(type)) { - return holderRepositories.getSubsystemRepository().readSubsystems(status, deleted, - uuid.toString(), null, null, null, null, null, null).size(); + return holderRepositories.getSubsystemRepository().readSubsystems(status, deleted, uuid.toString(), null, null, null, null, null, null).size(); } else if (Type.DISCIPLINE.equals(type)) { - return holderRepositories.getDisciplineRepository().readDisciplines(status, deleted, - uuid.toString(), null, null, null, null, null).size(); + return holderRepositories.getDisciplineRepository().readDisciplines(status, deleted, uuid.toString(), null, null, null, null, null).size(); } else if (Type.DEVICEGROUP.equals(type)) { - return holderRepositories.getDeviceGroupRepository().readDeviceGroups(status, deleted, - uuid.toString(), null, null, null, null, null, null).size(); + return holderRepositories.getDeviceGroupRepository().readDeviceGroups(status, deleted, uuid.toString(), null, null, null, null, null, null).size(); } else if (Type.DEVICETYPE.equals(type)) { - return holderRepositories.getDeviceTypeRepository().readDeviceTypes(status, deleted, - uuid.toString(), null, null, null, null, null, null).size(); + return holderRepositories.getDeviceTypeRepository().readDeviceTypes(status, deleted, uuid.toString(), null, null, null, null, null, null).size(); } return 0; } @@ -414,6 +406,11 @@ public class ValidateStructureElementUtil { String details = structureElement.toString(); String field = TextUtil.MNEMONIC; + Type type = structureElement.getType(); + UUID uuid = structureElement.getUuid(); + UUID parentUuid = structureElement.getParent(); + String mnemonic = structureElement.getMnemonic(); + // validate data relative other data // create, update // entry (uuid,) status, mnemonic @@ -421,12 +418,7 @@ public class ValidateStructureElementUtil { // approve // entry uuid, status - Type type = structureElement.getType(); - UUID uuid = structureElement.getUuid(); - UUID parentUuid = structureElement.getParent(); - String mnemonic = structureElement.getMnemonic(); - - if (StructureChoice.CREATE.equals(structureChoice) || StructureChoice.UPDATE.equals(structureChoice)) { + if (ValidateUtil.isAnyEqual(structureChoice, StructureChoice.CREATE, StructureChoice.UPDATE)) { if (Type.SYSTEMGROUP.equals(type)) { // note rules for mnemonic for system group if (!StringUtils.isEmpty(mnemonic)) { @@ -480,9 +472,9 @@ public class ValidateStructureElementUtil { } else if (Type.DEVICEGROUP.equals(type)) { // status, parent message = TextUtil.DISCIPLINE_IS_NOT_CORRECT; - List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, - parentUuid.toString(), null, null, null, null, null); - ExceptionUtil.validateConditionDataConflictException(ValidateUtil.isSize(disciplines, 1), message, details, TextUtil.PARENT); + List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, parentUuid.toString(), null, null, null, null, null); + ExceptionUtil.validateConditionDataConflictException(ValidateUtil.isSize(disciplines, 1), + message, details, TextUtil.PARENT); // note rules for mnemonic for device group @@ -608,17 +600,13 @@ public class ValidateStructureElementUtil { HolderRepositories holderRepositories) { String queryValue = parent.toString(); if (Type.SYSTEM.equals(type)) { - return holderRepositories.getSystemGroupRepository().readSystemGroups(status, deleted, - queryValue, null, null, null, null, null).size(); + return holderRepositories.getSystemGroupRepository().readSystemGroups(status, deleted, queryValue, null, null, null, null, null).size(); } else if (Type.SUBSYSTEM.equals(type)) { - return holderRepositories.getSystemRepository().readSystems(status, deleted, - queryValue, null, null, null, null, null, null).size(); + return holderRepositories.getSystemRepository().readSystems(status, deleted, queryValue, null, null, null, null, null, null).size(); } else if (Type.DEVICEGROUP.equals(type)) { - return holderRepositories.getDisciplineRepository().readDisciplines(status, deleted, - queryValue, null, null, null, null, null).size(); + return holderRepositories.getDisciplineRepository().readDisciplines(status, deleted, queryValue, null, null, null, null, null).size(); } else if (Type.DEVICETYPE.equals(type)) { - return holderRepositories.getDeviceGroupRepository().readDeviceGroups(status, deleted, - queryValue, null, null, null, null, null, null).size(); + return holderRepositories.getDeviceGroupRepository().readDeviceGroups(status, deleted, queryValue, null, null, null, null, null, null).size(); } return 0; } @@ -719,26 +707,30 @@ public class ValidateStructureElementUtil { String field = TextUtil.MNEMONIC_PATH; String[] path = NamingConventionUtil.string2MnemonicPath(mnemonicpath); + String mnemonicpathEquivalence = namingConvention.equivalenceClassRepresentative(mnemonicpath); + + // validate path, including null check ExceptionUtil.validateConditionDataNotValidException(path != null && path.length >= 1 && path.length <= 2, TextUtil.STRUCTURE_MNEMONIC_PATH_IS_NOT_VALID, details, field); - String mnemonicpathEquivalence = namingConvention.equivalenceClassRepresentative(mnemonicpath); if (Type.SYSTEMGROUP.equals(type)) { - validateStructuresMnemonicpathNotValid(type, path.length == 1, details, field); + validateStructuresMnemonicpathNotValid(path.length == 1, type, details, field); // system group may have empty path but there will be mnemonicpath in this context // mnemonic path SystemGroup sg = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByMnemonic(path[0]); - validateStructuresMnemonicpathDuplicate(type, sg == null, details, field); + validateStructuresMnemonicpathDuplicate(sg == null, type, details, field); // mnemonic path equivalence List<SystemGroup> systemGroups = holderIRepositories.getSystemGroupRepository().findLatestNotDeleted(); for (SystemGroup systemGroup : systemGroups) { - validateStructuresMnemonicpathequivalenceDuplicate(type, !StringUtils.equals(systemGroup.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])), details, field); + validateStructuresMnemonicpathequivalenceDuplicate( + !StringUtils.equals(systemGroup.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])), + type, details, field); } } else if (Type.SYSTEM.equals(type)) { - validateStructuresMnemonicpathNotValid(type, path.length == 1, details, field); + validateStructuresMnemonicpathNotValid(path.length == 1, type, details, field); // path with 1 element - system group or system ---> check both individually // check mnemonic, mnemonic equivalence @@ -746,64 +738,84 @@ public class ValidateStructureElementUtil { // mnemonic path system group List<String> mnemonicPaths = StructureUtil.getMnemonicPathsSystemGroup(holder, false, namingConvention); for (String existingPath : mnemonicPaths) { - validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(mnemonicpath, existingPath), details, field); + validateStructuresMnemonicpathDuplicate( + !StringUtils.equals(mnemonicpath, existingPath), + type, details, field); } // mnemonic path equivalence system group mnemonicPaths = StructureUtil.getMnemonicPathsSystemGroup(holder, true, namingConvention); for (String existingPath : mnemonicPaths) { - validateStructuresMnemonicpathequivalenceDuplicate(type, !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), details, field); + validateStructuresMnemonicpathequivalenceDuplicate( + !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), + type, details, field); } // mnemonic path mnemonicPaths = StructureUtil.getMnemonicPathsSystem(holder, false, namingConvention); for (String existingPath : mnemonicPaths) { - validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(mnemonicpath, existingPath), details, field); + validateStructuresMnemonicpathDuplicate( + !StringUtils.equals(mnemonicpath, existingPath), + type, details, field); } // mnemonic path equivalence mnemonicPaths = StructureUtil.getMnemonicPathsSystem(holder, true, namingConvention); for (String existingPath : mnemonicPaths) { - validateStructuresMnemonicpathequivalenceDuplicate(type, !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), details, field); + validateStructuresMnemonicpathequivalenceDuplicate( + !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), + type, details, field); } } else if (Type.SUBSYSTEM.equals(type)) { - validateStructuresMnemonicpathNotValid(type, path.length == 2, details, field); + validateStructuresMnemonicpathNotValid(path.length == 2, type, details, field); System sys = holderIRepositories.getSystemRepository().findLatestNotDeletedByMnemonic(path[0]); - validateStructuresMnemonicpathNotAvailable(type, sys != null, details, field); + validateStructuresMnemonicpathNotAvailable(sys != null, type, details, field); SystemGroup sg = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByUuid(sys.getParentUuid().toString()); // mnemonic path - validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(path[0], path[1]), details, field); + validateStructuresMnemonicpathDuplicate(!StringUtils.equals(path[0], path[1]), type, details, field); if (!StringUtils.isEmpty(sg.getMnemonic())) { - validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(sg.getMnemonic(), path[1]), details, field); + validateStructuresMnemonicpathDuplicate( + !StringUtils.equals(sg.getMnemonic(), path[1]), + type, details, field); } List<String> mnemonicPaths = StructureUtil.getMnemonicPathsSubsystem(holder, false, namingConvention); for (String existingPath : mnemonicPaths) { - validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(mnemonicpath, existingPath), details, field); + validateStructuresMnemonicpathDuplicate( + !StringUtils.equals(mnemonicpath, existingPath), + type, details, field); } // mnemonic path equivalence - validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), details, field); + validateStructuresMnemonicpathDuplicate( + !StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), + type, details, field); if (!StringUtils.isEmpty(sg.getMnemonic())) { - validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(namingConvention.equivalenceClassRepresentative(sg.getMnemonic()), namingConvention.equivalenceClassRepresentative(path[1])), details, field); + validateStructuresMnemonicpathDuplicate( + !StringUtils.equals(namingConvention.equivalenceClassRepresentative(sg.getMnemonic()), namingConvention.equivalenceClassRepresentative(path[1])), + type, details, field); } mnemonicPaths = StructureUtil.getMnemonicPathsSubsystem(holder, true, namingConvention); for (String existingPath : mnemonicPaths) { - validateStructuresMnemonicpathequivalenceDuplicate(type, !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), details, field); } + validateStructuresMnemonicpathequivalenceDuplicate( + !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), + type, details, field); } } else if (Type.DISCIPLINE.equals(type)) { - validateStructuresMnemonicpathNotValid(type, path.length == 1, details, field); + validateStructuresMnemonicpathNotValid(path.length == 1, type, details, field); // mnemonic path Discipline di = holderIRepositories.getDisciplineRepository().findLatestNotDeletedByMnemonic(path[0]); - validateStructuresMnemonicpathDuplicate(type, di == null, details, field); + validateStructuresMnemonicpathDuplicate(di == null, type, details, field); // mnemonic path equivalence List<Discipline> disciplines = holderIRepositories.getDisciplineRepository().findLatestNotDeleted(); for (Discipline discipline : disciplines) { - validateStructuresMnemonicpathequivalenceDuplicate(type, !StringUtils.equals(discipline.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])), details, field); + validateStructuresMnemonicpathequivalenceDuplicate( + !StringUtils.equals(discipline.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])), + type, details, field); } } else if (Type.DEVICEGROUP.equals(type)) { throw ExceptionUtil.createDataNotValidException(TextUtil.DEVICEGROUP_IS_NOT_VALID, details, field); @@ -815,7 +827,7 @@ public class ValidateStructureElementUtil { // instead similar approach as for other Type, i.e. compare with list of mnemonic paths // rest of checks in validatecreate - validateStructuresMnemonicpathNotValid(type, path.length == 2, details, field); + validateStructuresMnemonicpathNotValid(path.length == 2, type, details, field); // discipline Discipline discipline = holderIRepositories.getDisciplineRepository().findLatestNotDeletedByMnemonic(path[0]); @@ -823,44 +835,59 @@ public class ValidateStructureElementUtil { TextUtil.DISCIPLINE_IS_NOT_VALID, details, field); // mnemonic path - validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(path[0], path[1]), details, field); + validateStructuresMnemonicpathDuplicate(!StringUtils.equals(path[0], path[1]), type, details, field); List<String> mnemonicPaths = StructureUtil.getMnemonicPathsDeviceType(holder, false, namingConvention); for (String existingPath : mnemonicPaths) { - validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(mnemonicpath, existingPath), details, field); + validateStructuresMnemonicpathDuplicate( + !StringUtils.equals(mnemonicpath, existingPath), + type, details, field); } // mnemonic path equivalence - validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), details, field); + validateStructuresMnemonicpathDuplicate( + !StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), + type, details, field); mnemonicPaths = StructureUtil.getMnemonicPathsDeviceType(holder, true, namingConvention); for (String existingPath : mnemonicPaths) { - validateStructuresMnemonicpathequivalenceDuplicate(type, !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), details, field); + validateStructuresMnemonicpathequivalenceDuplicate( + !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), + type, details, field); } } } - private static void validateStructuresMnemonicpathNotAvailable(Type type, boolean condition, String details, String field) { + private static void validateStructuresMnemonicpathNotAvailable(boolean condition, Type type, String details, String field) { ExceptionUtil.validateConditionDataNotValidException(condition, - type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_IS_NOT_AVAILABLE, details, field); + type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_IS_NOT_AVAILABLE, + details, + field); } - private static void validateStructuresMnemonicpathNotValid(Type type, boolean condition, String details, String field) { + private static void validateStructuresMnemonicpathNotValid(boolean condition, Type type, String details, String field) { ExceptionUtil.validateConditionDataNotValidException(condition, - type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_IS_NOT_VALID, details, field); + type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_IS_NOT_VALID, + details, + field); } - private static void validateStructuresMnemonicpathDuplicate(Type type, boolean condition, String details, String field) { + private static void validateStructuresMnemonicpathDuplicate(boolean condition, Type type, String details, String field) { ExceptionUtil.validateConditionDataConflictException(condition, - type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_HAS_DUPLICATE, details, field); + type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_HAS_DUPLICATE, + details, + field); } - private static void validateStructuresMnemonicpathequivalenceDuplicate(Type type, boolean condition, String details, String field) { + private static void validateStructuresMnemonicpathequivalenceDuplicate(boolean condition, Type type, String details, String field) { ExceptionUtil.validateConditionDataConflictException(condition, - type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_EQUIVALENCE_HAS_DUPLICATE, details, field); + type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_EQUIVALENCE_HAS_DUPLICATE, + details, + field); } // ---------------------------------------------------------------------------------------------------- /** - * Validate condition if precondition is fulfilled and throw data conflict exception with reason if validation fails. + * Validate condition if precondition is fulfilled and throw + * data conflict exception with reason if validation fails. * * @param precondition precondition * @param condition condition @@ -870,14 +897,16 @@ public class ValidateStructureElementUtil { * * @see DataConflictException */ - private static void validateConditionIfPrecondition(boolean precondition, boolean condition, String message, String details, String field) { + private static void validateConditionIfPrecondition(boolean precondition, + boolean condition, String message, String details, String field) { if (precondition) { ExceptionUtil.validateConditionDataConflictException(condition, message, details, field); } } /** - * Validate condition if precondition (StructureChoice) is fulfilled and throw data conflict exception with reason if validation fails. + * Validate condition if precondition (StructureChoice) is fulfilled and + * throw data conflict exception with reason if validation fails. * * @param expected expected structure choice * @param actual actual structure choice @@ -888,8 +917,10 @@ public class ValidateStructureElementUtil { * * @see DataConflictException */ - private static void validateConditionIfStructureChoice(StructureChoice expected, StructureChoice actual, boolean condition, String message, String details, String field) { - validateConditionIfPrecondition(expected != null && expected.equals(actual), condition, message, details, field); + private static void validateConditionIfStructureChoice(StructureChoice expected, StructureChoice actual, + boolean condition, String message, String details, String field) { + validateConditionIfPrecondition(expected != null && expected.equals(actual), + condition, message, details, field); } } diff --git a/src/main/java/org/openepics/names/util/ValidateUtil.java b/src/main/java/org/openepics/names/util/ValidateUtil.java index afc93697..1919ecdc 100644 --- a/src/main/java/org/openepics/names/util/ValidateUtil.java +++ b/src/main/java/org/openepics/names/util/ValidateUtil.java @@ -276,18 +276,18 @@ public class ValidateUtil { } /** - * Validate given objects such that <tt>true</tt> is returned if any object in values is equal to type. + * Validate given enums such that <tt>true</tt> is returned if any enum in values is equal to given input enum. * - * @param type type + * @param input input * @param values values * @return boolean if validation is ok */ - public static boolean isAnyEqual(Type type, Type... values) { - if (type == null || values == null) { + public static boolean isAnyEqual(Enum<?> input, Enum<?>... values) { + if (input == null || values == null) { return false; } - for (Type value : values) { - if (type.equals(value)) { + for (Enum<?> value : values) { + if (input.equals(value)) { return true; } } diff --git a/src/test/java/org/openepics/names/util/ValidateUtilTest.java b/src/test/java/org/openepics/names/util/ValidateUtilTest.java index 1f9c5559..bfa9d44f 100644 --- a/src/test/java/org/openepics/names/util/ValidateUtilTest.java +++ b/src/test/java/org/openepics/names/util/ValidateUtilTest.java @@ -33,6 +33,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; import org.openepics.names.exception.InputNotAvailableException; import org.openepics.names.rest.beans.Type; +import org.openepics.names.util.EnumUtil.NameChoice; /** * Unit tests for ValidateUtil class. @@ -554,12 +555,15 @@ class ValidateUtilTest { } /** - * Test to validate an array if any object is equal to given type. + * Test to validate an array if any object is equal to given enum. */ @Test - void isAnyEqual() { + void isAnyEqualType() { Type type = Type.SUBSYSTEM; + assertFalse(ValidateUtil.isAnyEqual(null, Type.SYSTEMGROUP)); + assertFalse(ValidateUtil.isAnyEqual(null, Type.SYSTEMGROUP, Type.SYSTEM, Type.SUBSYSTEM, Type.DISCIPLINE, Type.DEVICEGROUP, Type.DEVICETYPE)); + assertFalse(ValidateUtil.isAnyEqual(type, Type.SYSTEMGROUP)); assertFalse(ValidateUtil.isAnyEqual(type, Type.SYSTEM)); assertTrue (ValidateUtil.isAnyEqual(type, Type.SUBSYSTEM)); @@ -580,6 +584,28 @@ class ValidateUtilTest { assertTrue (ValidateUtil.isAnyEqual(type, Type.DEVICETYPE, Type.DEVICEGROUP, Type.DISCIPLINE, Type.SUBSYSTEM, Type.SYSTEM, Type.SYSTEMGROUP)); } + /** + * Test to validate an array if any object is equal to given enum. + */ + @Test + void isAnyEqualNameChoice() { + assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.CREATE)); + assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.UPDATE)); + assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.DELETE)); + assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.CREATE, NameChoice.UPDATE)); + assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.CREATE, NameChoice.DELETE)); + assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.UPDATE, NameChoice.DELETE)); + assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.CREATE, NameChoice.UPDATE, NameChoice.DELETE)); + + assertFalse(ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.CREATE)); + assertTrue (ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.UPDATE)); + assertFalse(ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.DELETE)); + assertTrue (ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.CREATE, NameChoice.UPDATE)); + assertFalse(ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.CREATE, NameChoice.DELETE)); + assertTrue (ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.UPDATE, NameChoice.DELETE)); + assertTrue (ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.CREATE, NameChoice.UPDATE, NameChoice.DELETE)); + } + /** * Test to validate an array if any value in array is true. * -- GitLab