From 38751f00ea62dea487881341a802a5fdee367537 Mon Sep 17 00:00:00 2001 From: Lars Johansson <lars.johansson@ess.eu> Date: Tue, 5 Mar 2024 09:46:21 +0100 Subject: [PATCH] Remove endpoints for structures to approve, cancel, reject Refactor handling of structures and remove endpoints for structures to approve, cancel, reject. Process of structure entry proposed to be created, updated, deleted by user and processed (approved, rejected) by administrator or cancelled by user is no more. Instead, administrator is to create, update, delete structure entry. Note that commit is first step in removing status as query parameter. --- docs/useful/useful.odg | Bin 90806 -> 97189 bytes .../repository/DeviceGroupRepository.java | 4 +- .../repository/DeviceTypeRepository.java | 4 +- .../repository/DisciplineRepository.java | 4 +- .../names/repository/INameRepository.java | 18 +- .../names/repository/SubsystemRepository.java | 4 +- .../repository/SystemGroupRepository.java | 4 +- .../names/repository/SystemRepository.java | 4 +- .../names/repository/model/DeviceGroup.java | 10 +- .../names/repository/model/DeviceType.java | 10 +- .../names/repository/model/Discipline.java | 10 +- .../names/repository/model/Structure.java | 14 +- .../names/repository/model/Subsystem.java | 10 +- .../names/repository/model/System.java | 10 +- .../names/repository/model/SystemGroup.java | 10 +- .../names/rest/api/v1/IStructures.java | 434 +----- .../element/StructureElementCommand.java | 2 +- .../controller/HealthcheckController.java | 3 - .../rest/controller/NamesController.java | 1 - .../rest/controller/ReportController.java | 3 - .../rest/controller/StructuresController.java | 164 --- .../controller/VerificationController.java | 3 - .../names/service/DeviceGroupService.java | 237 +-- .../names/service/DeviceTypeService.java | 220 +-- .../names/service/DisciplineService.java | 241 +-- .../openepics/names/service/NamesService.java | 31 +- .../names/service/NotificationService.java | 55 +- .../names/service/StructuresService.java | 288 +--- .../names/service/SubsystemService.java | 241 +-- .../names/service/SystemGroupService.java | 260 +--- .../names/service/SystemService.java | 260 +--- .../openepics/names/util/NameElementUtil.java | 4 +- .../names/util/StructureCommand.java | 2 +- .../names/util/StructureElementUtil.java | 287 +--- .../openepics/names/util/StructureUtil.java | 19 - .../org/openepics/names/util/TextUtil.java | 3 - .../names/util/ValidateNameElementUtil.java | 31 +- .../util/ValidateStructureElementUtil.java | 203 +-- .../notification/NotificationStructure.java | 13 +- .../util/notification/NotificationUtil.java | 55 +- .../images/naming_backend_data_access.png | Bin 24564 -> 26225 bytes .../templates/notification_structures.html | 174 --- .../org/openepics/names/docker/ConvertIT.java | 26 +- .../openepics/names/docker/ITUtilNames.java | 40 +- .../names/docker/ITUtilStructures.java | 437 +----- .../org/openepics/names/docker/MetricsIT.java | 26 +- .../org/openepics/names/docker/NamesIT.java | 36 +- .../org/openepics/names/docker/PvNamesIT.java | 26 +- .../names/docker/StructuresDeviceGroupIT.java | 1145 ++++----------- .../names/docker/StructuresDeviceTypeIT.java | 1215 ++++----------- .../names/docker/StructuresDisciplineIT.java | 1121 ++++---------- .../names/docker/StructuresSubsystemIT.java | 1305 ++++------------- .../names/docker/StructuresSystemGroupIT.java | 1174 ++++----------- .../names/docker/StructuresSystemIT.java | 1253 ++++------------ .../docker/complex/NamesInstanceIndexIT.java | 120 +- .../names/docker/complex/NamesMultipleIT.java | 26 +- .../complex/NamesStructuresDeleteIT.java | 80 +- .../complex/NamesStructuresUpdateIT.java | 90 +- .../docker/complex/StructuresLevel3IT.java | 66 +- .../docker/complex/StructuresMultipleIT.java | 986 +------------ .../NotificationStructureTest.java | 12 +- .../notification/NotificationUtilTest.java | 6 +- .../INTEGRATIONTEST_DOCKER_TUTORIAL.md | 121 +- src/test/resources/data/db/README.txt | 2 +- .../data/db/dump-discs_names_namesit.sql | 270 ++-- .../data/db/dump-discs_names_subsystemit.sql | 294 ++-- 66 files changed, 2914 insertions(+), 10313 deletions(-) diff --git a/docs/useful/useful.odg b/docs/useful/useful.odg index 9db61bdb3ec6cf345952e97cbb926eb9e1ff041e..6440f2c7f8a69c74e27dfde00e88e8b128cd8b17 100644 GIT binary patch delta 58897 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 H;s*Q|&46HK delta 52580 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%0D8G^{j9!{i;8FEX0 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 D%v?lc diff --git a/src/main/java/org/openepics/names/repository/DeviceGroupRepository.java b/src/main/java/org/openepics/names/repository/DeviceGroupRepository.java index f76ad2b6..f42312b3 100644 --- a/src/main/java/org/openepics/names/repository/DeviceGroupRepository.java +++ b/src/main/java/org/openepics/names/repository/DeviceGroupRepository.java @@ -292,7 +292,7 @@ public class DeviceGroupRepository { predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_DESCRIPTION), RepositoryUtil.preparePattern(description)))); } if (!StringUtils.isEmpty(who)) { - predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_REQUESTED_BY), RepositoryUtil.preparePattern(who)))); + predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_PROCESSED_BY), RepositoryUtil.preparePattern(who)))); } return predicates; @@ -319,7 +319,7 @@ public class DeviceGroupRepository { } else if (FieldStructure.DESCRIPTION.equals(orderBy)) { return root.get(NameStructure.FIELD_DESCRIPTION); } else if (FieldStructure.WHEN.equals(orderBy)) { - return root.get(NameStructure.FIELD_REQUESTED); + return root.get(NameStructure.FIELD_PROCESSED); } else { return root.get(Structure.FIELD_MNEMONIC); } diff --git a/src/main/java/org/openepics/names/repository/DeviceTypeRepository.java b/src/main/java/org/openepics/names/repository/DeviceTypeRepository.java index 85691a57..73262bd5 100644 --- a/src/main/java/org/openepics/names/repository/DeviceTypeRepository.java +++ b/src/main/java/org/openepics/names/repository/DeviceTypeRepository.java @@ -292,7 +292,7 @@ public class DeviceTypeRepository { predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_DESCRIPTION), RepositoryUtil.preparePattern(description)))); } if (!StringUtils.isEmpty(who)) { - predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_REQUESTED_BY), RepositoryUtil.preparePattern(who)))); + predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_PROCESSED_BY), RepositoryUtil.preparePattern(who)))); } return predicates; @@ -319,7 +319,7 @@ public class DeviceTypeRepository { } else if (FieldStructure.DESCRIPTION.equals(orderBy)) { return root.get(NameStructure.FIELD_DESCRIPTION); } else if (FieldStructure.WHEN.equals(orderBy)) { - return root.get(NameStructure.FIELD_REQUESTED); + return root.get(NameStructure.FIELD_PROCESSED); } else { return root.get(Structure.FIELD_MNEMONIC); } diff --git a/src/main/java/org/openepics/names/repository/DisciplineRepository.java b/src/main/java/org/openepics/names/repository/DisciplineRepository.java index a7a953f8..f856f8dc 100644 --- a/src/main/java/org/openepics/names/repository/DisciplineRepository.java +++ b/src/main/java/org/openepics/names/repository/DisciplineRepository.java @@ -285,7 +285,7 @@ public class DisciplineRepository { predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_DESCRIPTION), RepositoryUtil.preparePattern(description)))); } if (!StringUtils.isEmpty(who)) { - predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_REQUESTED_BY), RepositoryUtil.preparePattern(who)))); + predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_PROCESSED_BY), RepositoryUtil.preparePattern(who)))); } return predicates; @@ -312,7 +312,7 @@ public class DisciplineRepository { } else if (FieldStructure.DESCRIPTION.equals(orderBy)) { return root.get(NameStructure.FIELD_DESCRIPTION); } else if (FieldStructure.WHEN.equals(orderBy)) { - return root.get(NameStructure.FIELD_REQUESTED); + return root.get(NameStructure.FIELD_PROCESSED); } else { return root.get(Structure.FIELD_MNEMONIC); } diff --git a/src/main/java/org/openepics/names/repository/INameRepository.java b/src/main/java/org/openepics/names/repository/INameRepository.java index 933755b6..0358dace 100644 --- a/src/main/java/org/openepics/names/repository/INameRepository.java +++ b/src/main/java/org/openepics/names/repository/INameRepository.java @@ -105,36 +105,41 @@ public interface INameRepository extends JpaRepository<Name, Long> { @Query("SELECT n FROM Name n, SystemGroup sg " + "WHERE n.latest = true " + + "AND n.deleted = false " + "AND sg.uuid = n.systemGroupUuid " + "AND sg.latest = true " + "AND sg.uuid = ?1") - List<Name> findLatestBySystemGroupUuid(String uuid); + List<Name> findLatestNotDeletedBySystemGroupUuid(String uuid); @Query("SELECT n FROM Name n, System sys " + "WHERE n.latest = true " + + "AND n.deleted = false " + "AND sys.uuid = n.systemUuid " + "AND sys.latest = true " + "AND sys.uuid = ?1") - List<Name> findLatestBySystemUuid(String uuid); + List<Name> findLatestNotDeletedBySystemUuid(String uuid); @Query("SELECT n FROM Name n, Subsystem sub, System sys " + "WHERE n.latest = true " + + "AND n.deleted = false " + "AND sub.uuid = n.subsystemUuid " + "AND sub.latest = true " + "AND sys.uuid = sub.parentUuid " + "AND sys.latest = true " + "AND sys.uuid = ?1") - List<Name> findLatestBySystemUuidThroughSubsystem(String uuid); + List<Name> findLatestNotDeletedBySystemUuidThroughSubsystem(String uuid); @Query("SELECT n FROM Name n, Subsystem sub " + "WHERE n.latest = true " + + "AND n.deleted = false " + "AND sub.uuid = n.subsystemUuid " + "AND sub.latest = true " + "AND sub.uuid = ?1") - List<Name> findLatestBySubsystemUuid(String uuid); + List<Name> findLatestNotDeletedBySubsystemUuid(String uuid); @Query("SELECT n FROM Name n, DeviceType dt, DeviceGroup dg, Discipline di " + "WHERE n.latest = true " + + "AND n.deleted = false " + "AND dt.uuid = n.deviceTypeUuid " + "AND dt.latest = true " + "AND dg.uuid = dt.parentUuid " @@ -142,14 +147,15 @@ public interface INameRepository extends JpaRepository<Name, Long> { + "AND di.uuid = dg.parentUuid " + "AND di.latest = true " + "AND di.uuid = ?1") - List<Name> findLatestByDisciplineUuidThroughDeviceType(String uuid); + List<Name> findLatestNotDeletedByDisciplineUuidThroughDeviceType(String uuid); @Query("SELECT n FROM Name n, DeviceType dt " + "WHERE n.latest = true " + + "AND n.deleted = false " + "AND dt.uuid = n.deviceTypeUuid " + "AND dt.latest = true " + "AND dt.uuid = ?1") - List<Name> findLatestByDeviceTypeUuid(String uuid); + List<Name> findLatestNotDeletedByDeviceTypeUuid(String uuid); // ---------------------------------------------------------------------------------------------------- diff --git a/src/main/java/org/openepics/names/repository/SubsystemRepository.java b/src/main/java/org/openepics/names/repository/SubsystemRepository.java index 8683018b..dff9778d 100644 --- a/src/main/java/org/openepics/names/repository/SubsystemRepository.java +++ b/src/main/java/org/openepics/names/repository/SubsystemRepository.java @@ -292,7 +292,7 @@ public class SubsystemRepository { predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_DESCRIPTION), RepositoryUtil.preparePattern(description)))); } if (!StringUtils.isEmpty(who)) { - predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_REQUESTED_BY), RepositoryUtil.preparePattern(who)))); + predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_PROCESSED_BY), RepositoryUtil.preparePattern(who)))); } return predicates; @@ -319,7 +319,7 @@ public class SubsystemRepository { } else if (FieldStructure.DESCRIPTION.equals(orderBy)) { return root.get(NameStructure.FIELD_DESCRIPTION); } else if (FieldStructure.WHEN.equals(orderBy)) { - return root.get(NameStructure.FIELD_REQUESTED); + return root.get(NameStructure.FIELD_PROCESSED); } else { return root.get(Structure.FIELD_MNEMONIC); } diff --git a/src/main/java/org/openepics/names/repository/SystemGroupRepository.java b/src/main/java/org/openepics/names/repository/SystemGroupRepository.java index a40f2e04..9c3e2608 100644 --- a/src/main/java/org/openepics/names/repository/SystemGroupRepository.java +++ b/src/main/java/org/openepics/names/repository/SystemGroupRepository.java @@ -281,7 +281,7 @@ public class SystemGroupRepository { predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_DESCRIPTION), RepositoryUtil.preparePattern(description)))); } if (!StringUtils.isEmpty(who)) { - predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_REQUESTED_BY), RepositoryUtil.preparePattern(who)))); + predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_PROCESSED_BY), RepositoryUtil.preparePattern(who)))); } return predicates; @@ -308,7 +308,7 @@ public class SystemGroupRepository { } else if (FieldStructure.DESCRIPTION.equals(orderBy)) { return root.get(NameStructure.FIELD_DESCRIPTION); } else if (FieldStructure.WHEN.equals(orderBy)) { - return root.get(NameStructure.FIELD_REQUESTED); + return root.get(NameStructure.FIELD_PROCESSED); } else { return root.get(Structure.FIELD_MNEMONIC); } diff --git a/src/main/java/org/openepics/names/repository/SystemRepository.java b/src/main/java/org/openepics/names/repository/SystemRepository.java index c0f23a84..78fa2523 100644 --- a/src/main/java/org/openepics/names/repository/SystemRepository.java +++ b/src/main/java/org/openepics/names/repository/SystemRepository.java @@ -292,7 +292,7 @@ public class SystemRepository { predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_DESCRIPTION), RepositoryUtil.preparePattern(description)))); } if (!StringUtils.isEmpty(who)) { - predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_REQUESTED_BY), RepositoryUtil.preparePattern(who)))); + predicates.add(cb.and(cb.like(from.get(NameStructure.FIELD_PROCESSED_BY), RepositoryUtil.preparePattern(who)))); } return predicates; @@ -319,7 +319,7 @@ public class SystemRepository { } else if (FieldStructure.DESCRIPTION.equals(orderBy)) { return root.get(NameStructure.FIELD_DESCRIPTION); } else if (FieldStructure.WHEN.equals(orderBy)) { - return root.get(NameStructure.FIELD_REQUESTED); + return root.get(NameStructure.FIELD_PROCESSED); } else { return root.get(Structure.FIELD_MNEMONIC); } diff --git a/src/main/java/org/openepics/names/repository/model/DeviceGroup.java b/src/main/java/org/openepics/names/repository/model/DeviceGroup.java index 56e0c20f..a75133e2 100644 --- a/src/main/java/org/openepics/names/repository/model/DeviceGroup.java +++ b/src/main/java/org/openepics/names/repository/model/DeviceGroup.java @@ -67,17 +67,17 @@ public class DeviceGroup extends Structure { * @param status status * @param latest latest * @param deleted deleted - * @param requested requested - * @param requestedBy requested by - * @param requestedComment requested comment + * @param processed processed + * @param processedBy processed by + * @param processedComment processed comment */ public DeviceGroup(UUID uuid, UUID parentUuid, String mnemonic, String mnemonicEquivalence, Integer ordering, String description, Status status, Boolean latest, Boolean deleted, - Date requested, String requestedBy, String requestedComment) { + Date processed, String processedBy, String processedComment) { super(uuid, mnemonic, mnemonicEquivalence, ordering, description, status, latest, deleted, - requested, requestedBy, requestedComment); + processed, processedBy, processedComment); this.parentUuid = parentUuid != null ? parentUuid.toString() : null; } diff --git a/src/main/java/org/openepics/names/repository/model/DeviceType.java b/src/main/java/org/openepics/names/repository/model/DeviceType.java index 266786b0..a7ca0ba4 100644 --- a/src/main/java/org/openepics/names/repository/model/DeviceType.java +++ b/src/main/java/org/openepics/names/repository/model/DeviceType.java @@ -67,17 +67,17 @@ public class DeviceType extends Structure { * @param status status * @param latest latest * @param deleted deleted - * @param requested requested - * @param requestedBy requested by - * @param requestedComment requested comment + * @param processed processed + * @param processedBy processed by + * @param processedComment processed comment */ public DeviceType(UUID uuid, UUID parentUuid, String mnemonic, String mnemonicEquivalence, Integer ordering, String description, Status status, Boolean latest, Boolean deleted, - Date requested, String requestedBy, String requestedComment) { + Date processed, String processedBy, String processedComment) { super(uuid, mnemonic, mnemonicEquivalence, ordering, description, status, latest, deleted, - requested, requestedBy, requestedComment); + processed, processedBy, processedComment); this.parentUuid = parentUuid != null ? parentUuid.toString() : null; } diff --git a/src/main/java/org/openepics/names/repository/model/Discipline.java b/src/main/java/org/openepics/names/repository/model/Discipline.java index 23a0eafc..8d399c9f 100644 --- a/src/main/java/org/openepics/names/repository/model/Discipline.java +++ b/src/main/java/org/openepics/names/repository/model/Discipline.java @@ -58,17 +58,17 @@ public class Discipline extends Structure { * @param status status * @param latest latest * @param deleted deleted - * @param requested requested - * @param requestedBy requested by - * @param requestedComment requested comment + * @param processed processed + * @param processedBy processed by + * @param processedComment processed comment */ public Discipline(UUID uuid, String mnemonic, String mnemonicEquivalence, Integer ordering, String description, Status status, Boolean latest, Boolean deleted, - Date requested, String requestedBy, String requestedComment) { + Date processed, String processedBy, String processedComment) { super(uuid, mnemonic, mnemonicEquivalence, ordering, description, status, latest, deleted, - requested, requestedBy, requestedComment); + processed, processedBy, processedComment); } @Override diff --git a/src/main/java/org/openepics/names/repository/model/Structure.java b/src/main/java/org/openepics/names/repository/model/Structure.java index bf86987a..5834488d 100644 --- a/src/main/java/org/openepics/names/repository/model/Structure.java +++ b/src/main/java/org/openepics/names/repository/model/Structure.java @@ -68,13 +68,13 @@ public class Structure extends NameStructure implements Serializable { * @param status status * @param latest latest * @param deleted deleted - * @param requested requested - * @param requestedBy requested by - * @param requestedComment requested comment + * @param processed processed + * @param processedBy processed by + * @param processedComment processed comment */ public Structure(UUID uuid, String mnemonic, String mnemonicEquivalence, Integer ordering, String description, Status status, Boolean latest, Boolean deleted, - Date requested, String requestedBy, String requestedComment) { + Date processed, String processedBy, String processedComment) { setUuid(uuid); setMnemonic(mnemonic); setMnemonicEquivalence(mnemonicEquivalence); @@ -83,9 +83,9 @@ public class Structure extends NameStructure implements Serializable { setStatus(status); setLatest(latest); setDeleted(deleted); - setRequested(requested); - setRequestedBy(requestedBy); - setRequestedComment(requestedComment); + setProcessed(processed); + setProcessedBy(processedBy); + setProcessedComment(processedComment); } public String getMnemonic() { diff --git a/src/main/java/org/openepics/names/repository/model/Subsystem.java b/src/main/java/org/openepics/names/repository/model/Subsystem.java index a7bf9bc5..d2c7566f 100644 --- a/src/main/java/org/openepics/names/repository/model/Subsystem.java +++ b/src/main/java/org/openepics/names/repository/model/Subsystem.java @@ -67,17 +67,17 @@ public class Subsystem extends Structure { * @param status status * @param latest latest * @param deleted deleted - * @param requested requested - * @param requestedBy requested by - * @param requestedComment requested comment + * @param processed processed + * @param processedBy processed by + * @param processedComment processed comment */ public Subsystem(UUID uuid, UUID parentUuid, String mnemonic, String mnemonicEquivalence, Integer ordering, String description, Status status, Boolean latest, Boolean deleted, - Date requested, String requestedBy, String requestedComment) { + Date processed, String processedBy, String processedComment) { super(uuid, mnemonic, mnemonicEquivalence, ordering, description, status, latest, deleted, - requested, requestedBy, requestedComment); + processed, processedBy, processedComment); this.parentUuid = parentUuid != null ? parentUuid.toString() : null; } diff --git a/src/main/java/org/openepics/names/repository/model/System.java b/src/main/java/org/openepics/names/repository/model/System.java index fe23b24e..06fdd377 100644 --- a/src/main/java/org/openepics/names/repository/model/System.java +++ b/src/main/java/org/openepics/names/repository/model/System.java @@ -67,17 +67,17 @@ public class System extends Structure { * @param status status * @param latest latest * @param deleted deleted - * @param requested requested - * @param requestedBy requested by - * @param requestedComment requested comment + * @param processed processed + * @param processedBy processed by + * @param processedComment processed comment */ public System(UUID uuid, UUID parentUuid, String mnemonic, String mnemonicEquivalence, Integer ordering, String description, Status status, Boolean latest, Boolean deleted, - Date requested, String requestedBy, String requestedComment) { + Date processed, String processedBy, String processedComment) { super(uuid, mnemonic, mnemonicEquivalence, ordering, description, status, latest, deleted, - requested, requestedBy, requestedComment); + processed, processedBy, processedComment); this.parentUuid = parentUuid != null ? parentUuid.toString() : null; } diff --git a/src/main/java/org/openepics/names/repository/model/SystemGroup.java b/src/main/java/org/openepics/names/repository/model/SystemGroup.java index 1d36fc53..8ffa171f 100644 --- a/src/main/java/org/openepics/names/repository/model/SystemGroup.java +++ b/src/main/java/org/openepics/names/repository/model/SystemGroup.java @@ -58,17 +58,17 @@ public class SystemGroup extends Structure { * @param status status * @param latest latest * @param deleted deleted - * @param requested requested - * @param requestedBy requested by - * @param requestedComment requested comment + * @param processed processed + * @param processedBy processed by + * @param processedComment processed comment */ public SystemGroup(UUID uuid, String mnemonic, String mnemonicEquivalence, Integer ordering, String description, Status status, Boolean latest, Boolean deleted, - Date requested, String requestedBy, String requestedComment) { + Date processed, String processedBy, String processedComment) { super(uuid, mnemonic, mnemonicEquivalence, ordering, description, status, latest, deleted, - requested, requestedBy, requestedComment); + processed, processedBy, processedComment); } @Override diff --git a/src/main/java/org/openepics/names/rest/api/v1/IStructures.java b/src/main/java/org/openepics/names/rest/api/v1/IStructures.java index 9bd727e3..2198d98e 100644 --- a/src/main/java/org/openepics/names/rest/api/v1/IStructures.java +++ b/src/main/java/org/openepics/names/rest/api/v1/IStructures.java @@ -34,7 +34,6 @@ import org.openepics.names.rest.beans.response.ResponsePageStructureElements; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -102,24 +101,17 @@ public interface IStructures { read GET /structures/validateCreate - validateStructuresCreate hidden from Swagger UI read GET /structures/validateUpdate - validateStructuresUpdate hidden from Swagger UI read GET /structures/validateDelete - validateStructuresDelete hidden from Swagger UI - read GET /structures/validateApprove - validateStructuresApprove hidden from Swagger UI - read GET /structures/validateCancel - validateStructuresCancel hidden from Swagger UI - read GET /structures/validateReject - validateStructuresReject hidden from Swagger UI ---------------------------------------------------------------------------------------------------- update PUT /structures - updateStructures ---------------------------------------------------------------------------------------------------- delete DELETE /structures - deleteStructures - ---------------------------------------------------------------------------------------------------- - update PATCH /structures/approve - approveStructures - update PATCH /structures/cancel - cancelStructures - update PATCH /structures/reject - rejectStructures Note authentication/authorization 3 levels - no, user, administrator no - read - user - create, update, delete - administrator - approve, cancel, reject + ( user ) + administrator - create, update, delete default for read is to have lifecycle attributes unless query for specific resource or specific use case status, latest, deleted note - latest handled by history @@ -289,7 +281,6 @@ public interface IStructures { /** * Find valid structure by uuid (exact match). * Return list of structure elements. - * Maximum number of elements will be two (PENDING, APPROVED) for given uuid. * * @param uuid uuid * @return list of structure elements. @@ -299,8 +290,6 @@ public interface IStructures { description = """ Find valid structure by uuid (exact match). Return list of structure elements. - - Maximum number of elements will be two (PENDING, APPROVED) for given uuid. """ ) @ApiResponses(value = { @@ -815,216 +804,6 @@ public interface IStructures { requiredProperties = {"uuid","type"})))) @RequestBody List<StructureElementCommandConfirm> structureElementCommands); - /** - * Return if structures are valid to approve by list of structure elements. - * If structures are valid to approve, successful approve of structures can be expected. - * - * <p> - * Returned object has five fields (message, details, field, value, list). - * <ul> - * <li>message: reason, if method fails</li> - * <li>details: details, if method fails</li> - * <li>field: field, if method fails</li> - * <li>value: boolean (true/false), overall result of method</li> - * <li>list: list of response objects (with fields reason, details, field, value), one for each input element</li> - * </ul> - * </p> - * - * @param structureElementCommands list of structure elements - * @return if list of structures is valid to approve - */ - @Hidden - @Operation( - summary = "Return if structures are valid to approve by list of structure elements", - description = """ - Return if structures are valid to approve by list of structure elements. - If structures are valid to approve, successful approve of structures can be expected. - - Required attributes: - - uuid - - type - """ - ) - @ApiResponses(value = { - @ApiResponse( - responseCode = "200", - description = """ - OK. Response is true if all structure elements validated ok, false otherwise. - Responses contain array with result for each structure element. Message and details are available if no response is available. - """, - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = ResponseBooleanList.class))), - @ApiResponse( - responseCode = "400", - description = "Bad request. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))), - @ApiResponse( - responseCode = "500", - description = "Internal server error. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))) - }) - @GetMapping( - value = "/validateApprove", - produces = {"application/json"}, - consumes = {"application/json"}) - public ResponseEntity<ResponseBooleanList> validateStructuresApprove( - @Parameter( - in = ParameterIn.DEFAULT, - description = "array of structure elements", - required = true, - content = @Content( - mediaType = "application/json", - array = @ArraySchema( - schema = @Schema( - implementation = StructureElementCommandConfirm.class, - requiredProperties = {"uuid","type"})))) - @RequestBody List<StructureElementCommandConfirm> structureElementCommands); - - /** - * Return if structures are valid to cancel by list of structure elements. - * If structures are valid to cancel, successful cancel of structures can be expected. - * - * <p> - * Returned object has five fields (message, details, field, value, list). - * <ul> - * <li>message: reason, if method fails</li> - * <li>details: details, if method fails</li> - * <li>field: field, if method fails</li> - * <li>value: boolean (true/false), overall result of method</li> - * <li>list: list of response objects (with fields reason, details, field, value), one for each input element</li> - * </ul> - * </p> - * - * @param structureElementCommands list of structure elements - * @return if list of structures is valid to cancel - */ - @Hidden - @Operation( - summary = "Return if structures are valid to cancel by list of structure elements", - description = """ - Return if structures are valid to cancel by list of structure elements. - If structures are valid to cancel, successful cancel of structures can be expected. - - Required attributes: - - uuid - - type - """ - ) - @ApiResponses(value = { - @ApiResponse( - responseCode = "200", - description = """ - OK. Response is true if all structure elements validated ok, false otherwise. - Responses contain array with result for each structure element. Message and details are available if no response is available. - """, - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = ResponseBooleanList.class))), - @ApiResponse( - responseCode = "400", - description = "Bad request. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))), - @ApiResponse( - responseCode = "500", - description = "Internal server error. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))) - }) - @GetMapping( - value = "/validateCancel", - produces = {"application/json"}, - consumes = {"application/json"}) - public ResponseEntity<ResponseBooleanList> validateStructuresCancel( - @Parameter( - in = ParameterIn.DEFAULT, - description = "array of structure elements", - required = true, - content = @Content( - mediaType = "application/json", - array = @ArraySchema( - schema = @Schema( - implementation = StructureElementCommandConfirm.class, - requiredProperties = {"uuid","type"})))) - @RequestBody List<StructureElementCommandConfirm> structureElementCommands); - - /** - * Return if structures are valid to reject by list of structure elements. - * If structures are valid to reject, successful reject of structures can be expected. - * - * <p> - * Returned object has five fields (message, details, field, value, list). - * <ul> - * <li>message: reason, if method fails</li> - * <li>details: details, if method fails</li> - * <li>field: field, if method fails</li> - * <li>value: boolean (true/false), overall result of method</li> - * <li>list: list of response objects (with fields reason, details, field, value), one for each input element</li> - * </ul> - * </p> - * - * @param structureElementCommands list of structure elements - * @return if list of structures is valid to reject - */ - @Hidden - @Operation( - summary = "Return if structures are valid to reject by list of structure elements", - description = """ - Return if structures are valid to reject by list of structure elements. - If structures are valid to reject, successful reject of structures can be expected. - - Required attributes: - - uuid - - type - """ - ) - @ApiResponses(value = { - @ApiResponse( - responseCode = "200", - description = """ - OK. Response is true if all structure elements validated ok, false otherwise. - Responses contain array with result for each structure element. Message and details are available if no response is available. - """, - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = ResponseBooleanList.class))), - @ApiResponse( - responseCode = "400", - description = "Bad request. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))), - @ApiResponse( - responseCode = "500", - description = "Internal server error. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))) - }) - @GetMapping( - value = "/validateReject", - produces = {"application/json"}, - consumes = {"application/json"}) - public ResponseEntity<ResponseBooleanList> validateStructuresReject( - @Parameter( - in = ParameterIn.DEFAULT, - description = "array of structure elements", - required = true, - content = @Content( - mediaType = "application/json", - array = @ArraySchema( - schema = @Schema( - implementation = StructureElementCommandConfirm.class, - requiredProperties = {"uuid","type"})))) - @RequestBody List<StructureElementCommandConfirm> structureElementCommands); - // ---------------------------------------------------------------------------------------------------- /** @@ -1173,213 +952,4 @@ public interface IStructures { requiredProperties = {"uuid","type"})))) @RequestBody List<StructureElementCommandConfirm> structureElementCommands); - // ---------------------------------------------------------------------------------------------------- - - /** - * Approve structures (proposals) by list of structure elements. - * Return list of structure elements for approved structures. - * - * <p> - * Name is automatically created name when creation of system structure is approved. - * </p> - * - * @param structureElementCommands list of structure elements - * @return list of structure elements for approved structures - */ - @Operation( - summary = "Approve structures (proposals) by array of structure elements", - description = """ - Approve structures (proposals) by array of structure elements. - Return array of structure elements for approved structures. - - Name is automatically created name when creation of system structure is approved. - - Required attributes: - - uuid - - type - """ - ) - @ApiResponses(value = { - @ApiResponse( - responseCode = "200", - description = "OK. Return array of structure elements for approved structures.", - content = @Content( - mediaType = "application/json", - array = @ArraySchema(schema = @Schema(implementation = StructureElement.class)))), - @ApiResponse( - responseCode = "400", - description = "Bad request. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))), - @ApiResponse( - responseCode = "404", - description = "Not Found. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))), - @ApiResponse( - responseCode = "422", - description = "Unprocessable entity. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))), - @ApiResponse( - responseCode = "500", - description = "Internal server error. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))) - }) - @PatchMapping( - value = "/approve", - produces = {"application/json"}, - consumes = {"application/json"}) - public List<StructureElement> approveStructures( - @Parameter( - in = ParameterIn.DEFAULT, - description = "array of structure elements", - required = true, - content = @Content( - mediaType = "application/json", - array = @ArraySchema( - schema = @Schema( - implementation = StructureElementCommandConfirm.class, - requiredProperties = {"uuid","type"})))) - @RequestBody List<StructureElementCommandConfirm> structureElementCommands); - - /** - * Cancel structures (proposals) by list of structure elements. - * Return list of cancelled structure elements. - * - * @param structureElementCommands list of structure elements - * @return list of structure elements for cancelled structures - */ - @Operation( - summary = "Cancel structures (proposals) by array of structure elements", - description = """ - Cancel structures (proposals) by array of structure elements. - Return array of structure elements for cancelled structures. - - Required attributes: - - uuid - - type - """ - ) - @ApiResponses(value = { - @ApiResponse( - responseCode = "200", - description = "OK. Return array of structure elements for cancelled structures.", - content = @Content( - mediaType = "application/json", - array = @ArraySchema(schema = @Schema(implementation = StructureElement.class)))), - @ApiResponse( - responseCode = "400", - description = "Bad request. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))), - @ApiResponse( - responseCode = "404", - description = "Not Found. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))), - @ApiResponse( - responseCode = "422", - description = "Unprocessable entity. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))), - @ApiResponse( - responseCode = "500", - description = "Internal server error. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))) - }) - @PatchMapping( - value = "/cancel", - produces = {"application/json"}, - consumes = {"application/json"}) - public List<StructureElement> cancelStructures( - @Parameter( - in = ParameterIn.DEFAULT, - description = "array of structure elements", - required = true, - content = @Content( - mediaType = "application/json", - array = @ArraySchema( - schema = @Schema( - implementation = StructureElementCommandConfirm.class, - requiredProperties = {"uuid","type"})))) - @RequestBody List<StructureElementCommandConfirm> structureElementCommands); - - /** - * Reject structures (proposals) by list of structure elements. - * Return list of rejected structure elements. - * - * @param structureElementCommands list of structure elements - * @return list of structure elements for rejected structures - */ - @Operation( - summary = "Reject structures (proposals) by array of structure elements", - description = """ - Reject structures (proposals) by array of structure elements. - Return array of structure elements for rejected structures. - - Required attributes: - - uuid - - type - """ - ) - @ApiResponses(value = { - @ApiResponse( - responseCode = "200", - description = "OK. Return array of structure elements for rejected structures.", - content = @Content( - mediaType = "application/json", - array = @ArraySchema(schema = @Schema(implementation = StructureElement.class)))), - @ApiResponse( - responseCode = "400", - description = "Bad request. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))), - @ApiResponse( - responseCode = "404", - description = "Not Found. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))), - @ApiResponse( - responseCode = "422", - description = "Unprocessable entity. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))), - @ApiResponse( - responseCode = "500", - description = "Internal server error. Reason and information such as message, details, field are available.", - content = @Content( - mediaType = "application/json", - schema = @Schema(implementation = Response.class))) - }) - @PatchMapping( - value = "/reject", - produces = {"application/json"}, - consumes = {"application/json"}) - public List<StructureElement> rejectStructures( - @Parameter( - in = ParameterIn.DEFAULT, - description = "array of structure elements", - required = true, - content = @Content( - mediaType = "application/json", - array = @ArraySchema( - schema = @Schema( - implementation = StructureElementCommandConfirm.class, - requiredProperties = {"uuid","type"})))) - @RequestBody List<StructureElementCommandConfirm> structureElementCommands); - } diff --git a/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommand.java b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommand.java index 00fe0668..1bba0aec 100644 --- a/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommand.java +++ b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommand.java @@ -34,7 +34,7 @@ import io.swagger.v3.oas.annotations.media.Schema; */ @Schema(description = """ A collection of attributes that is used to encapsulate a command for a structure entry from client to server. - It is used to create, update, delete and validate and approve, cancel, reject a structure entry. + It is used to create, update, delete and validate a structure entry. """) public class StructureElementCommand implements Serializable { diff --git a/src/main/java/org/openepics/names/rest/controller/HealthcheckController.java b/src/main/java/org/openepics/names/rest/controller/HealthcheckController.java index ea62b67c..dc62dc85 100644 --- a/src/main/java/org/openepics/names/rest/controller/HealthcheckController.java +++ b/src/main/java/org/openepics/names/rest/controller/HealthcheckController.java @@ -45,9 +45,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; @EnableAutoConfiguration public class HealthcheckController { - // note - // global exception handler available - // // methods // read GET /healthcheck - readHealthcheck() diff --git a/src/main/java/org/openepics/names/rest/controller/NamesController.java b/src/main/java/org/openepics/names/rest/controller/NamesController.java index 0dfbcd49..ada3a8f2 100644 --- a/src/main/java/org/openepics/names/rest/controller/NamesController.java +++ b/src/main/java/org/openepics/names/rest/controller/NamesController.java @@ -58,7 +58,6 @@ import com.google.common.collect.Lists; public class NamesController implements INames { // note - // global exception handler available // controller layer to call validation prior to invoking service layer // business logic may be validation // different kinds of validation diff --git a/src/main/java/org/openepics/names/rest/controller/ReportController.java b/src/main/java/org/openepics/names/rest/controller/ReportController.java index 0884ee6f..5279214d 100644 --- a/src/main/java/org/openepics/names/rest/controller/ReportController.java +++ b/src/main/java/org/openepics/names/rest/controller/ReportController.java @@ -68,9 +68,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; @EnableAutoConfiguration public class ReportController { - // note - // global exception handler available - private static final String NEWLINE = "\n"; private static final String SPACE = " "; diff --git a/src/main/java/org/openepics/names/rest/controller/StructuresController.java b/src/main/java/org/openepics/names/rest/controller/StructuresController.java index a14eb6be..a6ffcff9 100644 --- a/src/main/java/org/openepics/names/rest/controller/StructuresController.java +++ b/src/main/java/org/openepics/names/rest/controller/StructuresController.java @@ -60,7 +60,6 @@ import com.google.common.collect.Lists; public class StructuresController implements IStructures { // note - // global exception handler available // controller layer to call validation prior to invoking service layer // business logic may be validation // different kinds of validation @@ -356,104 +355,6 @@ public class StructuresController implements IStructures { return new ResponseEntity<>(new ResponseBooleanList(responses, Boolean.valueOf(response), reason), Response.getHeaderJson(), HttpStatus.OK); } - @Override - public ResponseEntity<ResponseBooleanList> validateStructuresApprove(List<StructureElementCommandConfirm> structureElementCommands) { - // convert - // validate - - List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands); - boolean response = true; - String reason = ""; - List<ResponseBoolean> responses = Lists.newArrayList(); - for (StructureElementCommand command : commands) { - try { - structuresService.validateStructuresApprove(command); - responses.add(new ResponseBoolean(Boolean.TRUE)); - } catch (ServiceException e) { - logService.logServiceException(LOGGER, Level.WARNING, e); - logService.logStackTraceElements(LOGGER, Level.WARNING, e); - if (response) { - response = false; - reason = TextUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT; - } - responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField())); - } catch (Exception e) { - logService.logStackTraceElements(LOGGER, Level.WARNING, e); - if (response) { - response = false; - reason = TextUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT; - } - responses.add(new ResponseBoolean(Boolean.FALSE, TextUtil.OPERATION_COULD_NOT_BE_PERFORMED)); - } - } - return new ResponseEntity<>(new ResponseBooleanList(responses, Boolean.valueOf(response), reason), Response.getHeaderJson(), HttpStatus.OK); - } - - @Override - public ResponseEntity<ResponseBooleanList> validateStructuresCancel(List<StructureElementCommandConfirm> structureElementCommands) { - // validate - - List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands); - boolean response = true; - String reason = ""; - List<ResponseBoolean> responses = Lists.newArrayList(); - for (StructureElementCommand command : commands) { - try { - structuresService.validateStructuresCancel(command); - responses.add(new ResponseBoolean(Boolean.TRUE)); - } catch (ServiceException e) { - logService.logServiceException(LOGGER, Level.WARNING, e); - logService.logStackTraceElements(LOGGER, Level.WARNING, e); - if (response) { - response = false; - reason = TextUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT; - } - responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField())); - } catch (Exception e) { - logService.logStackTraceElements(LOGGER, Level.WARNING, e); - if (response) { - response = false; - reason = TextUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT; - } - responses.add(new ResponseBoolean(Boolean.FALSE, TextUtil.OPERATION_COULD_NOT_BE_PERFORMED)); - } - } - return new ResponseEntity<>(new ResponseBooleanList(responses, Boolean.valueOf(response), reason), Response.getHeaderJson(), HttpStatus.OK); - } - - @Override - public ResponseEntity<ResponseBooleanList> validateStructuresReject(List<StructureElementCommandConfirm> structureElementCommands) { - // convert - // validate - - List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands); - boolean response = true; - String reason = ""; - List<ResponseBoolean> responses = Lists.newArrayList(); - for (StructureElementCommand command : commands) { - try { - structuresService.validateStructuresReject(command); - responses.add(new ResponseBoolean(Boolean.TRUE)); - } catch (ServiceException e) { - logService.logServiceException(LOGGER, Level.WARNING, e); - logService.logStackTraceElements(LOGGER, Level.WARNING, e); - if (response) { - response = false; - reason = TextUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT; - } - responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField())); - } catch (Exception e) { - logService.logStackTraceElements(LOGGER, Level.WARNING, e); - if (response) { - response = false; - reason = TextUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT; - } - responses.add(new ResponseBoolean(Boolean.FALSE, TextUtil.OPERATION_COULD_NOT_BE_PERFORMED)); - } - } - return new ResponseEntity<>(new ResponseBooleanList(responses, Boolean.valueOf(response), reason), Response.getHeaderJson(), HttpStatus.OK); - } - // ---------------------------------------------------------------------------------------------------- @Override @@ -501,69 +402,4 @@ public class StructuresController implements IStructures { } } - // ---------------------------------------------------------------------------------------------------- - - @Override - public List<StructureElement> approveStructures(List<StructureElementCommandConfirm> structureElementCommands) { - // validate authority - admin - // convert - // validate - // approve structures - - try { - List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands); - structuresService.validateStructuresApprove(commands); - return structuresService.approveStructures(commands, TextUtil.TEST_WHO); - } catch (ServiceException e) { - logService.logServiceException(LOGGER, Level.WARNING, e); - logService.logStackTraceElements(LOGGER, Level.WARNING, e); - throw e; - } catch (Exception e) { - logService.logStackTraceElements(LOGGER, Level.WARNING, e); - throw e; - } - } - - @Override - public List<StructureElement> cancelStructures(List<StructureElementCommandConfirm> structureElementCommands) { - // validate authority - admin - // convert - // validate - // cancel structures - - try { - List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands); - structuresService.validateStructuresCancel(commands); - return structuresService.cancelStructures(commands, TextUtil.TEST_WHO); - } catch (ServiceException e) { - logService.logServiceException(LOGGER, Level.WARNING, e); - logService.logStackTraceElements(LOGGER, Level.WARNING, e); - throw e; - } catch (Exception e) { - logService.logStackTraceElements(LOGGER, Level.WARNING, e); - throw e; - } - } - - @Override - public List<StructureElement> rejectStructures(List<StructureElementCommandConfirm> structureElementCommands) { - // validate authority - admin - // convert - // validate - // reject structures - - try { - List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands); - structuresService.validateStructuresReject(commands); - return structuresService.rejectStructures(commands, TextUtil.TEST_WHO); - } catch (ServiceException e) { - logService.logServiceException(LOGGER, Level.WARNING, e); - logService.logStackTraceElements(LOGGER, Level.WARNING, e); - throw e; - } catch (Exception e) { - logService.logStackTraceElements(LOGGER, Level.WARNING, e); - throw e; - } - } - } diff --git a/src/main/java/org/openepics/names/rest/controller/VerificationController.java b/src/main/java/org/openepics/names/rest/controller/VerificationController.java index 383afa51..b77ac693 100644 --- a/src/main/java/org/openepics/names/rest/controller/VerificationController.java +++ b/src/main/java/org/openepics/names/rest/controller/VerificationController.java @@ -140,9 +140,6 @@ import io.swagger.v3.oas.annotations.Hidden; @EnableAutoConfiguration public class VerificationController { - // note - // global exception handler available - // // methods // read GET /verification/migration_namepartrevision - readMigrationStructures // read GET /verification/migration_devicerevision - readMigrationNames diff --git a/src/main/java/org/openepics/names/service/DeviceGroupService.java b/src/main/java/org/openepics/names/service/DeviceGroupService.java index 19d2600e..5a6bf99e 100644 --- a/src/main/java/org/openepics/names/service/DeviceGroupService.java +++ b/src/main/java/org/openepics/names/service/DeviceGroupService.java @@ -39,7 +39,6 @@ import org.openepics.names.util.HolderStructures; 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; @@ -58,31 +57,23 @@ import com.google.common.collect.Lists; @Service public class DeviceGroupService { - // note - // structurecommand - // cud - create update delete - // acr - approve cancel reject - private static final Logger LOGGER = Logger.getLogger(DeviceGroupService.class.getName()); private IDeviceGroupRepository iDeviceGroupRepository; private IDeviceTypeRepository iDeviceTypeRepository; private DeviceGroupRepository deviceGroupRepository; private DeviceTypeService deviceTypeService; - private NamesService namesService; @Autowired public DeviceGroupService( IDeviceGroupRepository iDeviceGroupRepository, IDeviceTypeRepository iDeviceTypeRepository, DeviceGroupRepository deviceGroupRepository, - DeviceTypeService deviceTypeService, - NamesService namesService) { + DeviceTypeService deviceTypeService) { this.iDeviceGroupRepository = iDeviceGroupRepository; this.iDeviceTypeRepository = iDeviceTypeRepository; this.deviceGroupRepository = deviceGroupRepository; this.deviceTypeService = deviceTypeService; - this.namesService = namesService; } @Transactional(propagation = Propagation.MANDATORY) @@ -90,8 +81,7 @@ public class DeviceGroupService { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // create structure to pending, not latest, not deleted, with data + // create structure - approved, latest, not deleted // return // structure element for created structure // notification @@ -110,13 +100,15 @@ public class DeviceGroupService { // create DeviceGroup deviceGroup = new DeviceGroup(UUID.randomUUID(), structureElementCommand.getParent(), mnemonic, equivalenceClassRepresentative, structureElementCommand.getOrdering(), - structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE, + structureElementCommand.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, when, username, null); deviceGroupRepository.createDeviceGroup(deviceGroup); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CREATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.CREATE)); + return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(deviceGroup), - NotificationUtil.prepareNotification(Type.DEVICEGROUP, StructureCommand.CREATE, null, null, deviceGroup, holderStructures)); + StructureElementUtil.getStructureElementProcessed(deviceGroup, holderStructures, StructureChoice.STRUCTURE), + NotificationUtil.prepareNotification(Type.DEVICEGROUP, StructureCommand.CREATE, null, deviceGroup, holderStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -124,9 +116,9 @@ public class DeviceGroupService { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // create structure to pending, not latest, not deleted, with data - // find out previous + // update not latest + // create structure - approved, latest, not deleted + // previous for notification // return // structure element for updated structure // notification @@ -138,87 +130,51 @@ public class DeviceGroupService { // namingConvention.equivalenceClassRepresentative return null for null input // rules for mnemonic + String uuid = structureElementCommand.getUuid().toString(); String mnemonic = structureElementCommand.getMnemonic(); mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic; String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic); + // find + List<DeviceGroup> deviceGroups = deviceGroupRepository.readDeviceGroups(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null, null); + DeviceGroup deviceGroup = null; + if (ValidateUtil.isSize(deviceGroups, 1)) { + deviceGroup = deviceGroups.get(0); + + // update not latest + deviceGroup.setLatest(Boolean.FALSE); + deviceGroupRepository.updateDeviceGroup(deviceGroup); + } + // create - DeviceGroup deviceGroup = new DeviceGroup(structureElementCommand.getUuid(), structureElementCommand.getParent(), + deviceGroup = new DeviceGroup(structureElementCommand.getUuid(), structureElementCommand.getParent(), mnemonic, equivalenceClassRepresentative, structureElementCommand.getOrdering(), - structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE, + structureElementCommand.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, when, username, null); deviceGroupRepository.createDeviceGroup(deviceGroup); // previous - List<DeviceGroup> previouses = iDeviceGroupRepository.findPreviousByUuidAndId(deviceGroup.getUuid().toString(), deviceGroup.getId()); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(deviceGroup), - NotificationUtil.prepareNotification(Type.DEVICEGROUP, StructureCommand.UPDATE, null, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, deviceGroup, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // create structure to pending, not latest, deleted, with data - // return - // structure element for deleted structure - // notification - // - // attributes - // uuid + List<DeviceGroup> previouses = iDeviceGroupRepository.findPreviousByUuidAndId(deviceGroup.getUuid().toString(), deviceGroup.getId()); + DeviceGroup previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; - // find - List<DeviceGroup> deviceGroups = deviceGroupRepository.readDeviceGroups(Status.APPROVED, Boolean.FALSE, structureElementCommand.getUuid().toString(), null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) { - return null; - } - DeviceGroup toBeDeleted = deviceGroups.get(0); - - // create - DeviceGroup deviceGroup = new DeviceGroup(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(), - toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(), toBeDeleted.getOrdering(), - toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE, - when, username, null); - deviceGroupRepository.createDeviceGroup(deviceGroup); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.UPDATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.UPDATE)); return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(deviceGroup), - NotificationUtil.prepareNotification(Type.DEVICEGROUP, StructureCommand.DELETE, null, null, deviceGroup, holderStructures)); + StructureElementUtil.getStructureElementProcessed(deviceGroup, holderStructures, StructureChoice.STRUCTURE), + NotificationUtil.prepareNotification(Type.DEVICEGROUP, StructureCommand.UPDATE, previous, deviceGroup, holderStructures)); } @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification approveStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { + public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // find // update not latest - // find - // approve - update structure to status APPROVED, latest to true - // additional - // find out previous to find out what is approved - create update delete - // approve create - // automatically create name when system structure is approved - // condition on name and structure entry - // system structure should exist (uuid), one entry that is not deleted - // name should not exist (system structure mnemonic) - // within current transaction - // approve update - // update related names - // for different mnemonic - // not for device group - // approve delete - // delete related names - // delete sub structures + // create structure - approved, latest, deleted + // previous for notification + // additional - delete sub structures (and related names) // return - // structure element for approved structure + // structure element for deleted structure // notification // // attributes @@ -235,130 +191,37 @@ public class DeviceGroupService { // update not latest deviceGroup.setLatest(Boolean.FALSE); deviceGroupRepository.updateDeviceGroup(deviceGroup); - } - - // find - deviceGroups = deviceGroupRepository.readDeviceGroups(Status.PENDING, null, uuid, null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) { + } else { return null; } - deviceGroup = deviceGroups.get(0); - // approve - deviceGroup.setAttributesStatusProcessed(Status.APPROVED, when, username, null); - deviceGroup.setLatest(Boolean.TRUE); - deviceGroupRepository.updateDeviceGroup(deviceGroup); + // create + deviceGroup = new DeviceGroup(deviceGroup.getUuid(), deviceGroup.getParentUuid(), + deviceGroup.getMnemonic(), deviceGroup.getMnemonicEquivalence(), deviceGroup.getOrdering(), + deviceGroup.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.TRUE, + when, username, null); + deviceGroupRepository.createDeviceGroup(deviceGroup); // previous List<DeviceGroup> previouses = iDeviceGroupRepository.findPreviousByUuidAndId(uuid, deviceGroup.getId()); - StructureCommand structureCommandCUD = StructureUtil.getStructureCommandCUD(previouses, deviceGroup); DeviceGroup previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; // additional - if (StructureCommand.DELETE.equals(structureCommandCUD)) { - // will propagate to sub structures and related names - - // delete sub structures - delete, approve - List<StructureElementCommand> commands = Lists.newArrayList(); - List<DeviceType> deviceTypes = iDeviceTypeRepository.findLatestNotDeletedByParent(uuid); - for (DeviceType deviceType : deviceTypes) { - commands.add(new StructureElementCommand(deviceType.getUuid(), Type.DEVICETYPE, null, null, null, null)); - } - for (StructureElementCommand command : commands) { - deviceTypeService.deleteStructure(command, when, username, holderStructures); - } - for (StructureElementCommand command : commands) { - deviceTypeService.approveStructure(command, when, username, holderStructures); - } + // will propagate to sub structures + List<StructureElementCommand> commands = Lists.newArrayList(); + List<DeviceType> deviceTypes = iDeviceTypeRepository.findLatestNotDeletedByParent(uuid); + for (DeviceType deviceType : deviceTypes) { + commands.add(new StructureElementCommand(deviceType.getUuid(), Type.DEVICETYPE, null, null, null, null)); } - - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.APPROVE_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementProcessed(deviceGroup, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DEVICEGROUP, structureCommandCUD, StructureCommand.APPROVE, previous, deviceGroup, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification cancelStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // cancel - update structure to status CANCELLED - // find out previous - // return - // structure element for created structure - // notification - // - // attributes - // uuid - - String uuid = structureElementCommand.getUuid().toString(); - - // find - List<DeviceGroup> deviceGroups = deviceGroupRepository.readDeviceGroups(Status.PENDING, null, uuid, null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) { - return null; + for (StructureElementCommand command : commands) { + deviceTypeService.deleteStructure(command, when, username, holderStructures); } - DeviceGroup deviceGroup = deviceGroups.get(0); - - // cancel - deviceGroup.setAttributesStatusProcessed(Status.CANCELLED, when, username, null); - deviceGroupRepository.updateDeviceGroup(deviceGroup); - - // previous - List<DeviceGroup> previouses = iDeviceGroupRepository.findPreviousByUuidAndId(uuid, deviceGroup.getId()); - StructureCommand structureCommandCUD = NotificationUtil.getStructureCommandCUD(previouses, deviceGroup); - - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CANCEL_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementProcessed(deviceGroup, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DEVICEGROUP, structureCommandCUD, StructureCommand.CANCEL, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, deviceGroup, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification rejectStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // reject - update structure to status REJECTED - // find out previous - // return - // structure element for created structure - // notification - // - // attributes - // uuid - - String uuid = structureElementCommand.getUuid().toString(); - - // find - List<DeviceGroup> deviceGroups = deviceGroupRepository.readDeviceGroups(Status.PENDING, null, uuid, null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) { - return null; - } - DeviceGroup deviceGroup = deviceGroups.get(0); - - // reject - deviceGroup.setAttributesStatusProcessed(Status.REJECTED, when, username, null); - deviceGroupRepository.updateDeviceGroup(deviceGroup); - - // previous - List<DeviceGroup> previouses = iDeviceGroupRepository.findPreviousByUuidAndId(uuid, deviceGroup.getId()); - StructureCommand structureCommandCUD = NotificationUtil.getStructureCommandCUD(previouses, deviceGroup); - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.REJECT_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.DELETE_STRUCTURE, TextUtil.COMMAND, StructureCommand.DELETE)); return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(deviceGroup, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DEVICEGROUP, structureCommandCUD, StructureCommand.REJECT, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, deviceGroup, holderStructures)); + NotificationUtil.prepareNotification(Type.DEVICEGROUP, StructureCommand.DELETE, previous, deviceGroup, holderStructures)); } } diff --git a/src/main/java/org/openepics/names/service/DeviceTypeService.java b/src/main/java/org/openepics/names/service/DeviceTypeService.java index bf6e61fb..fd339d82 100644 --- a/src/main/java/org/openepics/names/service/DeviceTypeService.java +++ b/src/main/java/org/openepics/names/service/DeviceTypeService.java @@ -37,7 +37,6 @@ import org.openepics.names.util.HolderStructures; 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; @@ -54,11 +53,6 @@ import org.springframework.transaction.annotation.Transactional; @Service public class DeviceTypeService { - // note - // structurecommand - // cud - create update delete - // acr - approve cancel reject - private static final Logger LOGGER = Logger.getLogger(DeviceTypeService.class.getName()); private IDeviceTypeRepository iDeviceTypeRepository; @@ -80,8 +74,7 @@ public class DeviceTypeService { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // create structure to pending, not latest, not deleted, with data + // create structure - approved, latest, not deleted // return // structure element for created structure // notification @@ -100,13 +93,15 @@ public class DeviceTypeService { // create DeviceType deviceType = new DeviceType(UUID.randomUUID(), structureElementCommand.getParent(), mnemonic, equivalenceClassRepresentative, structureElementCommand.getOrdering(), - structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE, + structureElementCommand.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, when, username, null); deviceTypeRepository.createDeviceType(deviceType); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CREATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.CREATE)); + return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(deviceType), - NotificationUtil.prepareNotification(Type.DEVICETYPE, StructureCommand.CREATE, null, null, deviceType, holderStructures)); + StructureElementUtil.getStructureElementProcessed(deviceType, holderStructures, StructureChoice.STRUCTURE), + NotificationUtil.prepareNotification(Type.DEVICETYPE, StructureCommand.CREATE, null, deviceType, holderStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -114,9 +109,10 @@ public class DeviceTypeService { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // create structure to pending, not latest, not deleted, with data - // find out previous + // update not latest + // create structure - approved, latest, not deleted + // previous for notification + // additional - update related names // return // structure element for updated structure // notification @@ -128,87 +124,54 @@ public class DeviceTypeService { // namingConvention.equivalenceClassRepresentative return null for null input // rules for mnemonic + String uuid = structureElementCommand.getUuid().toString(); String mnemonic = structureElementCommand.getMnemonic(); mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic; String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic); + // find + List<DeviceType> deviceTypes = deviceTypeRepository.readDeviceTypes(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null, null); + DeviceType deviceType = null; + if (ValidateUtil.isSize(deviceTypes, 1)) { + deviceType = deviceTypes.get(0); + + // update not latest + deviceType.setLatest(Boolean.FALSE); + deviceTypeRepository.updateDeviceType(deviceType); + } + // create - DeviceType deviceType = new DeviceType(structureElementCommand.getUuid(), structureElementCommand.getParent(), + deviceType = new DeviceType(structureElementCommand.getUuid(), structureElementCommand.getParent(), mnemonic, equivalenceClassRepresentative, structureElementCommand.getOrdering(), - structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE, + structureElementCommand.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, when, username, null); deviceTypeRepository.createDeviceType(deviceType); // previous - List<DeviceType> previouses = iDeviceTypeRepository.findPreviousByUuidAndId(deviceType.getUuid().toString(), deviceType.getId()); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(deviceType), - NotificationUtil.prepareNotification(Type.DEVICETYPE, StructureCommand.UPDATE, null, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, deviceType, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // create structure to pending, not latest, deleted, with data - // return - // structure element for deleted structure - // notification - // - // attributes - // uuid + List<DeviceType> previouses = iDeviceTypeRepository.findPreviousByUuidAndId(deviceType.getUuid().toString(), deviceType.getId()); + DeviceType previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; - // find - List<DeviceType> deviceTypes = deviceTypeRepository.readDeviceTypes(Status.APPROVED, Boolean.FALSE, structureElementCommand.getUuid().toString(), null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) { - return null; - } - DeviceType toBeDeleted = deviceTypes.get(0); + // additional + namesService.updateNames(previous, deviceType, username); - // create - DeviceType deviceType = new DeviceType(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(), - toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(), toBeDeleted.getOrdering(), - toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE, - when, username, null); - deviceTypeRepository.createDeviceType(deviceType); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.UPDATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.UPDATE)); return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(deviceType), - NotificationUtil.prepareNotification(Type.DEVICETYPE, StructureCommand.DELETE, null, null, deviceType, holderStructures)); + StructureElementUtil.getStructureElementProcessed(deviceType, holderStructures, StructureChoice.STRUCTURE), + NotificationUtil.prepareNotification(Type.DEVICETYPE, StructureCommand.UPDATE, previous, deviceType, holderStructures)); } @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification approveStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { + public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // find // update not latest - // find - // approve - update structure to status APPROVED, latest to true - // additional - // find out previous to find out what is approved - create update delete - // approve create - // automatically create name when system structure is approved - // condition on name and structure entry - // system structure should exist (uuid), one entry that is not deleted - // name should not exist (system structure mnemonic) - // within current transaction - // approve update - // update related names - // for different mnemonic - // not for device group - // approve delete - // delete related names - // delete sub structures + // create structure - approved, latest, deleted + // previous for notification + // additional - delete related names // return - // structure element for approved structure + // structure element for deleted structure // notification // // attributes @@ -225,120 +188,29 @@ public class DeviceTypeService { // update not latest deviceType.setLatest(Boolean.FALSE); deviceTypeRepository.updateDeviceType(deviceType); - } - - // find - deviceTypes = deviceTypeRepository.readDeviceTypes(Status.PENDING, null, uuid, null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) { + } else { return null; } - deviceType = deviceTypes.get(0); - // approve - deviceType.setAttributesStatusProcessed(Status.APPROVED, when, username, null); - deviceType.setLatest(Boolean.TRUE); - deviceTypeRepository.updateDeviceType(deviceType); + // create + deviceType = new DeviceType(deviceType.getUuid(), deviceType.getParentUuid(), + deviceType.getMnemonic(), deviceType.getMnemonicEquivalence(), deviceType.getOrdering(), + deviceType.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.TRUE, + when, username, null); + deviceTypeRepository.createDeviceType(deviceType); // previous List<DeviceType> previouses = iDeviceTypeRepository.findPreviousByUuidAndId(uuid, deviceType.getId()); - StructureCommand structureCommandCUD = StructureUtil.getStructureCommandCUD(previouses, deviceType); DeviceType previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; // additional - if (StructureCommand.UPDATE.equals(structureCommandCUD)) { - // update related names - namesService.updateNames(previous, deviceType, username); - } else if (StructureCommand.DELETE.equals(structureCommandCUD)) { - // delete related names - namesService.deleteNames(deviceType, username); - } - - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.APPROVE_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementProcessed(deviceType, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DEVICETYPE, structureCommandCUD, StructureCommand.APPROVE, previous, deviceType, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification cancelStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // cancel - update structure to status CANCELLED - // find out previous - // return - // structure element for created structure - // notification - // - // attributes - // uuid - - String uuid = structureElementCommand.getUuid().toString(); - - List<DeviceType> deviceTypes = deviceTypeRepository.readDeviceTypes(Status.PENDING, null, uuid, null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) { - return null; - } - DeviceType deviceType = deviceTypes.get(0); - - // cancel - deviceType.setAttributesStatusProcessed(Status.CANCELLED, when, username, null); - deviceTypeRepository.updateDeviceType(deviceType); - - // previous - List<DeviceType> previouses = iDeviceTypeRepository.findPreviousByUuidAndId(uuid, deviceType.getId()); - StructureCommand structureCommandCUD = NotificationUtil.getStructureCommandCUD(previouses, deviceType); - - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CANCEL_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementProcessed(deviceType, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DEVICETYPE, structureCommandCUD, StructureCommand.CANCEL, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, deviceType, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification rejectStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // reject - update structure to status REJECTED - // find out previous - // return - // structure element for created structure - // notification - // - // attributes - // uuid - - String uuid = structureElementCommand.getUuid().toString(); - - // find - List<DeviceType> deviceTypes = deviceTypeRepository.readDeviceTypes(Status.PENDING, null, uuid, null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) { - return null; - } - DeviceType deviceType = deviceTypes.get(0); - - // reject - deviceType.setAttributesStatusProcessed(Status.REJECTED, when, username, null); - deviceTypeRepository.updateDeviceType(deviceType); - - // previous - List<DeviceType> previouses = iDeviceTypeRepository.findPreviousByUuidAndId(uuid, deviceType.getId()); - StructureCommand structureCommandCUD = NotificationUtil.getStructureCommandCUD(previouses, deviceType); + namesService.deleteNames(deviceType, username); - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.REJECT_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.DELETE_STRUCTURE, TextUtil.COMMAND, StructureCommand.DELETE)); return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(deviceType, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DEVICETYPE, structureCommandCUD, StructureCommand.REJECT, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, deviceType, holderStructures)); + NotificationUtil.prepareNotification(Type.DEVICETYPE, StructureCommand.DELETE, previous, deviceType, holderStructures)); } } diff --git a/src/main/java/org/openepics/names/service/DisciplineService.java b/src/main/java/org/openepics/names/service/DisciplineService.java index b88016e7..a99f66a1 100644 --- a/src/main/java/org/openepics/names/service/DisciplineService.java +++ b/src/main/java/org/openepics/names/service/DisciplineService.java @@ -39,7 +39,6 @@ import org.openepics.names.util.HolderStructures; 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; @@ -58,11 +57,6 @@ import com.google.common.collect.Lists; @Service public class DisciplineService { - // note - // structurecommand - // cud - create update delete - // acr - approve cancel reject - private static final Logger LOGGER = Logger.getLogger(DisciplineService.class.getName()); private IDisciplineRepository iDisciplineRepository; @@ -90,8 +84,7 @@ public class DisciplineService { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // create structure to pending, not latest, not deleted, with data + // create structure - approved, latest, not deleted // return // structure element for created structure // notification @@ -110,13 +103,15 @@ public class DisciplineService { // create Discipline discipline = new Discipline(UUID.randomUUID(), mnemonic, equivalenceClassRepresentative, structureElementCommand.getOrdering(), - structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE, + structureElementCommand.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, when, username, null); disciplineRepository.createDiscipline(discipline); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CREATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.CREATE)); + return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(discipline), - NotificationUtil.prepareNotification(Type.DISCIPLINE, StructureCommand.CREATE, null, null, discipline, holderStructures)); + StructureElementUtil.getStructureElementProcessed(discipline, holderStructures, StructureChoice.STRUCTURE), + NotificationUtil.prepareNotification(Type.DISCIPLINE, StructureCommand.CREATE, null, discipline, holderStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -124,9 +119,10 @@ public class DisciplineService { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // create structure to pending, not latest, not deleted, with data - // find out previous + // update not latest + // create structure - approved, latest, not deleted + // previous for notification + // additional - update related names // return // structure element for updated structure // notification @@ -138,87 +134,54 @@ public class DisciplineService { // namingConvention.equivalenceClassRepresentative return null for null input // rules for mnemonic + String uuid = structureElementCommand.getUuid().toString(); String mnemonic = structureElementCommand.getMnemonic(); mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic; String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic); + // find + List<Discipline> disciplines = disciplineRepository.readDisciplines(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null); + Discipline discipline = null; + if (ValidateUtil.isSize(disciplines, 1)) { + discipline = disciplines.get(0); + + // update not latest + discipline.setLatest(Boolean.FALSE); + disciplineRepository.updateDiscipline(discipline); + } + // create - Discipline discipline = new Discipline(structureElementCommand.getUuid(), + discipline = new Discipline(structureElementCommand.getUuid(), mnemonic, equivalenceClassRepresentative, structureElementCommand.getOrdering(), - structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE, + structureElementCommand.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, when, username, null); disciplineRepository.createDiscipline(discipline); // previous - List<Discipline> previouses = iDisciplineRepository.findPreviousByUuidAndId(discipline.getUuid().toString(), discipline.getId()); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(discipline), - NotificationUtil.prepareNotification(Type.DISCIPLINE, StructureCommand.UPDATE, null, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, discipline, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // create structure to pending, not latest, deleted, with data - // return - // structure element for deleted structure - // notification - // - // attributes - // uuid + List<Discipline> previouses = iDisciplineRepository.findPreviousByUuidAndId(discipline.getUuid().toString(), discipline.getId()); + Discipline previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; - // find - List<Discipline> disciplines = disciplineRepository.readDisciplines(Status.APPROVED, Boolean.FALSE, structureElementCommand.getUuid().toString(), null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(disciplines, 1)) { - return null; - } - Discipline toBeDeleted = disciplines.get(0); + // additional + namesService.updateNames(previous, discipline, username); - // create - Discipline discipline = new Discipline(toBeDeleted.getUuid(), - toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(), toBeDeleted.getOrdering(), - toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE, - when, username, null); - disciplineRepository.createDiscipline(discipline); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.UPDATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.UPDATE)); return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(discipline), - NotificationUtil.prepareNotification(Type.DISCIPLINE, StructureCommand.DELETE, null, null, discipline, holderStructures)); + StructureElementUtil.getStructureElementProcessed(discipline, holderStructures, StructureChoice.STRUCTURE), + NotificationUtil.prepareNotification(Type.DISCIPLINE, StructureCommand.UPDATE, previous, discipline, holderStructures)); } @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification approveStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { + public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // find // update not latest - // find - // approve - update structure to status APPROVED, latest to true - // additional - // find out previous to find out what is approved - create update delete - // approve create - // automatically create name when system structure is approved - // condition on name and structure entry - // system structure should exist (uuid), one entry that is not deleted - // name should not exist (system structure mnemonic) - // within current transaction - // approve update - // update related names - // for different mnemonic - // not for device group - // approve delete - // delete related names - // delete sub structures + // create structure - approved, latest, deleted + // previous for notification + // additional - delete related names, delete sub structures (and related names) // return - // structure element for approved structure + // structure element for deleted structure // notification // // attributes @@ -226,6 +189,7 @@ public class DisciplineService { String uuid = structureElementCommand.getUuid().toString(); + // find List<Discipline> disciplines = disciplineRepository.readDisciplines(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null); Discipline discipline = null; if (ValidateUtil.isSize(disciplines, 1)) { @@ -234,136 +198,39 @@ public class DisciplineService { // update not latest discipline.setLatest(Boolean.FALSE); disciplineRepository.updateDiscipline(discipline); - } - - // find - disciplines = disciplineRepository.readDisciplines(Status.PENDING, null, uuid, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(disciplines, 1)) { + } else { return null; } - discipline = disciplines.get(0); - // approve - discipline.setAttributesStatusProcessed(Status.APPROVED, when, username, null); - discipline.setLatest(Boolean.TRUE); - disciplineRepository.updateDiscipline(discipline); + // create + discipline = new Discipline(discipline.getUuid(), + discipline.getMnemonic(), discipline.getMnemonicEquivalence(), discipline.getOrdering(), + discipline.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.TRUE, + when, username, null); + disciplineRepository.createDiscipline(discipline); // previous List<Discipline> previouses = iDisciplineRepository.findPreviousByUuidAndId(uuid, discipline.getId()); - StructureCommand structureCommandCUD = StructureUtil.getStructureCommandCUD(previouses, discipline); Discipline previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; // additional - if (StructureCommand.UPDATE.equals(structureCommandCUD)) { - // update related names - namesService.updateNames(previous, discipline, username); - } else if (StructureCommand.DELETE.equals(structureCommandCUD)) { - // will propagate to sub structures and related names - - // delete related names - namesService.deleteNames(discipline, username); - - // delete sub structures - delete, approve - List<StructureElementCommand> commands = Lists.newArrayList(); - List<DeviceGroup> deviceGroups = iDeviceGroupRepository.findLatestNotDeletedByParent(uuid); - for (DeviceGroup deviceGroup : deviceGroups) { - commands.add(new StructureElementCommand(deviceGroup.getUuid(), Type.DEVICEGROUP, null, null, null, null)); - } - for (StructureElementCommand command : commands) { - deviceGroupService.deleteStructure(command, when, username, holderStructures); - } - for (StructureElementCommand command : commands) { - deviceGroupService.approveStructure(command, when, username, holderStructures); - } - } + // will propagate to sub structures + namesService.deleteNames(discipline, username); - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.APPROVE_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementProcessed(discipline, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DISCIPLINE, structureCommandCUD, StructureCommand.APPROVE, previous, discipline, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification cancelStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // cancel - update structure to status CANCELLED - // find out previous - // return - // structure element for created structure - // notification - // - // attributes - // uuid - - String uuid = structureElementCommand.getUuid().toString(); - - // find - List<Discipline> disciplines = disciplineRepository.readDisciplines(Status.PENDING, null, uuid, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(disciplines, 1)) { - return null; + List<StructureElementCommand> commands = Lists.newArrayList(); + List<DeviceGroup> deviceGroups = iDeviceGroupRepository.findLatestNotDeletedByParent(uuid); + for (DeviceGroup deviceGroup : deviceGroups) { + commands.add(new StructureElementCommand(deviceGroup.getUuid(), Type.DEVICEGROUP, null, null, null, null)); } - Discipline discipline = disciplines.get(0); - - // cancel - discipline.setAttributesStatusProcessed(Status.CANCELLED, when, username, null); - disciplineRepository.updateDiscipline(discipline); - - // previous - List<Discipline> previouses = iDisciplineRepository.findPreviousByUuidAndId(uuid, discipline.getId()); - StructureCommand structureCommandCUD = NotificationUtil.getStructureCommandCUD(previouses, discipline); - - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CANCEL_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementProcessed(discipline, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DISCIPLINE, structureCommandCUD, StructureCommand.CANCEL, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, discipline, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification rejectStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // reject - update structure to status REJECTED - // find out previous - // return - // structure element for created structure - // notification - // - // attributes - // uuid - - String uuid = structureElementCommand.getUuid().toString(); - - // find - List<Discipline> disciplines = disciplineRepository.readDisciplines(Status.PENDING, null, uuid, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(disciplines, 1)) { - return null; + for (StructureElementCommand command : commands) { + deviceGroupService.deleteStructure(command, when, username, holderStructures); } - Discipline discipline = disciplines.get(0); - - // reject - discipline.setAttributesStatusProcessed(Status.REJECTED, when, username, null); - disciplineRepository.updateDiscipline(discipline); - - // previous - List<Discipline> previouses = iDisciplineRepository.findPreviousByUuidAndId(uuid, discipline.getId()); - StructureCommand structureCommandCUD = NotificationUtil.getStructureCommandCUD(previouses, discipline); - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.REJECT_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.DELETE_STRUCTURE, TextUtil.COMMAND, StructureCommand.DELETE)); return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(discipline, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.DISCIPLINE, structureCommandCUD, StructureCommand.REJECT, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, discipline, holderStructures)); + NotificationUtil.prepareNotification(Type.DISCIPLINE, StructureCommand.DELETE, previous, discipline, holderStructures)); } } diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java index 3663acbd..c7699eeb 100644 --- a/src/main/java/org/openepics/names/service/NamesService.java +++ b/src/main/java/org/openepics/names/service/NamesService.java @@ -90,11 +90,11 @@ public class NamesService { private static final Logger LOGGER = Logger.getLogger(NamesService.class.getName()); + private EssNamingConvention namingConvention; private HolderIRepositories holderIRepositories; private HolderRepositories holderRepositories; // convenience, also part of holderRepositories private NameRepository nameRepository; - private EssNamingConvention namingConvention; @Autowired public NamesService( @@ -425,10 +425,7 @@ public class NamesService { // data itself // relative other data - // validate input ValidateNameElementUtil.validateNameElementInputCreate(nameElement); - - // validate data ValidateNameElementUtil.validateNameElementDataCreate(nameElement, namingConvention, holderIRepositories, nameRepository, holderStructures); } public void validateNamesCreate(List<NameElementCommand> nameElements) { @@ -451,10 +448,7 @@ public class NamesService { // data itself // relative other data - // validate input ValidateNameElementUtil.validateNameElementInputUpdate(nameElement); - - // validate data ValidateNameElementUtil.validateNameElementDataUpdate(nameElement, namingConvention, holderIRepositories, nameRepository, holderStructures); } public void validateNamesUpdate(List<NameElementCommand> nameElements) { @@ -477,10 +471,7 @@ public class NamesService { // data itself // relative other data - // validate input ValidateNameElementUtil.validateNameElementInputDelete(nameElement); - - // validate data ValidateNameElementUtil.validateNameElementDataDelete(nameElement, namingConvention, holderIRepositories, nameRepository, holderStructures); } public void validateNamesDelete(List<NameElementCommand> nameElements) { @@ -614,7 +605,7 @@ public class NamesService { if (previousStructure instanceof SystemGroup && structure instanceof SystemGroup) { // find // prepare - names = holderIRepositories.nameRepository().findLatestBySystemGroupUuid(structure.getUuid().toString()); + names = holderIRepositories.nameRepository().findLatestNotDeletedBySystemGroupUuid(structure.getUuid().toString()); for (Name name : names) { nameElements.add( new NameElementCommand( @@ -624,7 +615,7 @@ public class NamesService { } else if (previousStructure instanceof System && structure instanceof System) { // find // prepare - names = holderIRepositories.nameRepository().findLatestBySystemUuid(structure.getUuid().toString()); + names = holderIRepositories.nameRepository().findLatestNotDeletedBySystemUuid(structure.getUuid().toString()); for (Name name : names) { nameElements.add( new NameElementCommand( @@ -632,7 +623,7 @@ public class NamesService { name.getInstanceIndex(), name.getDescription())); } - names = holderIRepositories.nameRepository().findLatestBySystemUuidThroughSubsystem(structure.getUuid().toString()); + names = holderIRepositories.nameRepository().findLatestNotDeletedBySystemUuidThroughSubsystem(structure.getUuid().toString()); for (Name name : names) { nameElements.add( new NameElementCommand( @@ -642,7 +633,7 @@ public class NamesService { } else if (previousStructure instanceof Subsystem && structure instanceof Subsystem) { // find // prepare - names = holderIRepositories.nameRepository().findLatestBySubsystemUuid(structure.getUuid().toString()); + names = holderIRepositories.nameRepository().findLatestNotDeletedBySubsystemUuid(structure.getUuid().toString()); for (Name name : names) { nameElements.add( new NameElementCommand( @@ -652,7 +643,7 @@ public class NamesService { } else if (previousStructure instanceof Discipline && structure instanceof Discipline) { // find // prepare - names = holderIRepositories.nameRepository().findLatestByDisciplineUuidThroughDeviceType(structure.getUuid().toString()); + names = holderIRepositories.nameRepository().findLatestNotDeletedByDisciplineUuidThroughDeviceType(structure.getUuid().toString()); for (Name name : names) { parentSystemStructure = NameUtil.getParentSystemStructure(name); nameElements.add( @@ -663,7 +654,7 @@ public class NamesService { } else if (previousStructure instanceof DeviceType && structure instanceof DeviceType) { // find // prepare - names = holderIRepositories.nameRepository().findLatestByDeviceTypeUuid(structure.getUuid().toString()); + names = holderIRepositories.nameRepository().findLatestNotDeletedByDeviceTypeUuid(structure.getUuid().toString()); for (Name name : names) { parentSystemStructure = NameUtil.getParentSystemStructure(name); nameElements.add( @@ -763,7 +754,7 @@ public class NamesService { if (structure instanceof SystemGroup) { // find // prepare - names = holderIRepositories.nameRepository().findLatestBySystemGroupUuid(structure.getUuid().toString()); + names = holderIRepositories.nameRepository().findLatestNotDeletedBySystemGroupUuid(structure.getUuid().toString()); for (Name name : names) { nameElements.add( new NameElementCommand( @@ -773,7 +764,7 @@ public class NamesService { } else if (structure instanceof System) { // find // prepare - names = holderIRepositories.nameRepository().findLatestBySystemUuid(structure.getUuid().toString()); + names = holderIRepositories.nameRepository().findLatestNotDeletedBySystemUuid(structure.getUuid().toString()); for (Name name : names) { nameElements.add( new NameElementCommand( @@ -783,7 +774,7 @@ public class NamesService { } else if (structure instanceof Subsystem) { // find // prepare - names = holderIRepositories.nameRepository().findLatestBySubsystemUuid(structure.getUuid().toString()); + names = holderIRepositories.nameRepository().findLatestNotDeletedBySubsystemUuid(structure.getUuid().toString()); for (Name name : names) { nameElements.add( new NameElementCommand( @@ -793,7 +784,7 @@ public class NamesService { } else if (structure instanceof DeviceType) { // find // prepare - names = holderIRepositories.nameRepository().findLatestByDeviceTypeUuid(structure.getUuid().toString()); + names = holderIRepositories.nameRepository().findLatestNotDeletedByDeviceTypeUuid(structure.getUuid().toString()); for (Name name : names) { parentSystemStructure = NameUtil.getParentSystemStructure(name); nameElements.add( diff --git a/src/main/java/org/openepics/names/service/NotificationService.java b/src/main/java/org/openepics/names/service/NotificationService.java index 70e25f41..74d906d2 100644 --- a/src/main/java/org/openepics/names/service/NotificationService.java +++ b/src/main/java/org/openepics/names/service/NotificationService.java @@ -52,13 +52,11 @@ public class NotificationService { private static final String NOTIFY_NAMES_CREATED_UPDATED_DELETED = "Notify names, # created: {0}, # updated: {1}, # deleted: {2}"; - private static final String NOTIFY_STRUCTURES_CREATED_UPDATED_DELETED_APPROVED_CANCELLED_REJECTED = - "Notify structures, # created: {0}, # updated: {1}, # deleted: {2}" - + ", # approved: {3}, # cancelled: {4}, # rejected: {5}"; + private static final String NOTIFY_STRUCTURES_CREATED_UPDATED_DELETED = + "Notify structures, # created: {0}, # updated: {1}, # deleted: {2}"; - private static final String CHANGES_NOTIFICATION_NAMES = "[Changes for names]"; - private static final String CHANGES_NOTIFICATION_STRUCTURES = "[Changes for structures]"; - private static final String CHANGES_NOTIFICATION_STRUCTURES_ACTION = "[Changes for structures - need action]"; + private static final String CHANGES_NOTIFICATION_NAMES = "[Changes for names]"; + private static final String CHANGES_NOTIFICATION_STRUCTURES = "[Changes for structures]"; private static final String ADD_FOOTER = "addfooter"; private static final String BACKEND_URL = "backendurl"; @@ -155,17 +153,11 @@ public class NotificationService { */ public void notifyStructures(List<NotificationStructure> notifications, StructureCommand structureCommand) { if (StructureCommand.CREATE.equals(structureCommand)) { - notifyStructures(notifications, null, null, null, null, null); + notifyStructures(notifications, null, null); } else if (StructureCommand.UPDATE.equals(structureCommand)) { - notifyStructures(null, notifications, null, null, null, null); + notifyStructures(null, notifications, null); } else if (StructureCommand.DELETE.equals(structureCommand)) { - notifyStructures(null, null, notifications, null, null, null); - } else if (StructureCommand.APPROVE.equals(structureCommand)) { - notifyStructures(null, null, null, notifications, null, null); - } else if (StructureCommand.CANCEL.equals(structureCommand)) { - notifyStructures(null, null, null, null, notifications, null); - } else if (StructureCommand.REJECT.equals(structureCommand)) { - notifyStructures(null, null, null, null, null, notifications); + notifyStructures(null, null, notifications); } } @@ -175,43 +167,28 @@ public class NotificationService { * @param created list of notifications for created structures * @param updated list of notifications for updated structures * @param deleted list of notifications for deleted structures - * @param approved list of notifications for approved structures - * @param cancelled list of notifications for cancelled structures - * @param rejected list of notifications for rejected structures */ public void notifyStructures( List<NotificationStructure> created, List<NotificationStructure> updated, - List<NotificationStructure> deleted, - List<NotificationStructure> approved, - List<NotificationStructure> cancelled, - List<NotificationStructure> rejected) { + List<NotificationStructure> deleted) { NotificationUtil.sortByNewMnemonicpath(created); NotificationUtil.sortByNewMnemonicpath(updated); NotificationUtil.sortByNewMnemonicpath(deleted); - NotificationUtil.sortByNewMnemonicpath(approved); - NotificationUtil.sortByNewMnemonicpath(cancelled); - NotificationUtil.sortByNewMnemonicpath(rejected); int numberCreated = getListSize(created); int numberUpdated = getListSize(updated); int numberDeleted = getListSize(deleted); - int numberApproved = getListSize(approved); - int numberCancelled = getListSize(cancelled); - int numberRejected = getListSize(rejected); LOGGER.log(Level.INFO, () -> MessageFormat.format( - NOTIFY_STRUCTURES_CREATED_UPDATED_DELETED_APPROVED_CANCELLED_REJECTED, + NOTIFY_STRUCTURES_CREATED_UPDATED_DELETED, numberCreated, numberUpdated, - numberDeleted, - numberApproved, - numberCancelled, - numberRejected)); + numberDeleted)); - if (ValidateUtil.areAllZero(numberCreated, numberUpdated, numberDeleted, numberApproved, numberCancelled, numberRejected)) { + if (ValidateUtil.areAllZero(numberCreated, numberUpdated, numberDeleted)) { return; } @@ -220,15 +197,9 @@ public class NotificationService { ctx.setVariable("numberCreated", numberCreated); ctx.setVariable("numberUpdated", numberUpdated); ctx.setVariable("numberDeleted", numberDeleted); - ctx.setVariable("numberApproved", numberApproved); - ctx.setVariable("numberCancelled", numberCancelled); - ctx.setVariable("numberRejected", numberRejected); ctx.setVariable("created", created); ctx.setVariable("updated", updated); ctx.setVariable("deleted", deleted); - ctx.setVariable("approved", approved); - ctx.setVariable("cancelled", cancelled); - ctx.setVariable("rejected", rejected); ctx.setVariable(ADD_FOOTER, true); ctx.setVariable(BACKEND_URL, namingBackendSwaggerUrl); TemplateEngine engine = generateTemplateEngine(); @@ -239,9 +210,7 @@ public class NotificationService { : null; String[] ccEmailAddresses = null; String[] replyToEmailAddresses = null; - String subject = numberCreated > 0 || numberUpdated > 0 || numberDeleted > 0 - ? CHANGES_NOTIFICATION_STRUCTURES_ACTION + " - " + namingBackendSwaggerUrl - : CHANGES_NOTIFICATION_STRUCTURES + " - " + namingBackendSwaggerUrl; + String subject = CHANGES_NOTIFICATION_STRUCTURES + " - " + namingBackendSwaggerUrl; mailService.sendEmail(toEmailAddresses, ccEmailAddresses, replyToEmailAddresses, subject, engine.process("templates/notification_structures.html", ctx), false, null, null); } diff --git a/src/main/java/org/openepics/names/service/StructuresService.java b/src/main/java/org/openepics/names/service/StructuresService.java index 31e58878..b9b0e3d9 100644 --- a/src/main/java/org/openepics/names/service/StructuresService.java +++ b/src/main/java/org/openepics/names/service/StructuresService.java @@ -85,12 +85,12 @@ public class StructuresService { // otherwise refer to history // structurecommand // cud - create update delete - // acr - approve cancel reject private static final Logger LOGGER = Logger.getLogger(StructuresService.class.getName()); protected static final String SYSTEM_STRUCTURE_ONLY = "System structure only"; + private EssNamingConvention namingConvention; private HolderIRepositories holderIRepositories; private HolderRepositories holderRepositories; private SystemGroupService systemGroupService; @@ -100,7 +100,6 @@ public class StructuresService { private DeviceGroupService deviceGroupService; private DeviceTypeService deviceTypeService; private NotificationService notificationService; - private EssNamingConvention namingConvention; @Autowired public StructuresService( @@ -491,16 +490,12 @@ public class StructuresService { public void validateStructuresCreate(StructureElementCommand structureElement, HolderStructures holderStructures) { // validate structure element // input - // type // input itself // data // data itself // relative other data - // validate input ValidateStructureElementUtil.validateStructureElementInputCreate(structureElement, namingConvention); - - // validate data ValidateStructureElementUtil.validateStructureElementDataCreate(structureElement, namingConvention, holderRepositories, holderStructures); } public void validateStructuresCreate(List<StructureElementCommand> structureElements) { @@ -518,16 +513,12 @@ public class StructuresService { public void validateStructuresUpdate(StructureElementCommand structureElement, HolderStructures holderStructures) { // validate structure element // input - // type // input itself // data // data itself // relative other data - // validate input ValidateStructureElementUtil.validateStructureElementInputUpdate(structureElement, namingConvention); - - // validate data ValidateStructureElementUtil.validateStructureElementDataUpdate(structureElement, namingConvention, holderRepositories, holderStructures); } public void validateStructuresUpdate(List<StructureElementCommand> structureElements) { @@ -545,16 +536,12 @@ public class StructuresService { public void validateStructuresDelete(StructureElementCommand structureElement, HolderStructures holderStructures) { // validate structure element // input - // type // input itself // data // data itself // relative other data - // validate input ValidateStructureElementUtil.validateStructureElementInputDelete(structureElement, namingConvention); - - // validate data ValidateStructureElementUtil.validateStructureElementDataDelete(structureElement, namingConvention, holderRepositories, holderStructures); } public void validateStructuresDelete(List<StructureElementCommand> structureElements) { @@ -566,87 +553,6 @@ public class StructuresService { } } - public void validateStructuresApprove(StructureElementCommand structureElement) { - validateStructuresApprove(structureElement, new HolderStructures(holderIRepositories)); - } - public void validateStructuresApprove(StructureElementCommand structureElement, HolderStructures holderStructures) { - // validate structure element - // input - // type - // input itself - // data - // data itself - // relative other data - - // validate input - ValidateStructureElementUtil.validateStructureElementInputApprove(structureElement, namingConvention); - - // validate data - ValidateStructureElementUtil.validateStructureElementDataApprove(structureElement, namingConvention, holderRepositories, holderStructures); - } - public void validateStructuresApprove(List<StructureElementCommand> structureElements) { - // initiate holder of system and device structure content, for performance reasons - HolderStructures holderStructures = new HolderStructures(holderIRepositories); - - for (StructureElementCommand structureElement : structureElements) { - validateStructuresApprove(structureElement, holderStructures); - } - } - - public void validateStructuresCancel(StructureElementCommand structureElement) { - validateStructuresCancel(structureElement, new HolderStructures(holderIRepositories)); - } - public void validateStructuresCancel(StructureElementCommand structureElement, HolderStructures holderStructures) { - // validate structure element - // input - // type - // input itself - // data - // data itself - // relative other data - - // validate input - ValidateStructureElementUtil.validateStructureElementInputCancel(structureElement, namingConvention); - - // validate data - ValidateStructureElementUtil.validateStructureElementDataCancel(structureElement, namingConvention, holderRepositories, holderStructures); - } - public void validateStructuresCancel(List<StructureElementCommand> structureElements) { - // initiate holder of system and device structure content, for performance reasons - HolderStructures holderStructures = new HolderStructures(holderIRepositories); - - for (StructureElementCommand structureElement : structureElements) { - validateStructuresCancel(structureElement, holderStructures); - } - } - - public void validateStructuresReject(StructureElementCommand structureElement) { - validateStructuresReject(structureElement, new HolderStructures(holderIRepositories)); - } - public void validateStructuresReject(StructureElementCommand structureElement, HolderStructures holderStructures) { - // validate structure element - // input - // type - // input itself - // data - // data itself - // relative other data - - // validate input - ValidateStructureElementUtil.validateStructureElementInputReject(structureElement, namingConvention); - - // validate data - ValidateStructureElementUtil.validateStructureElementDataReject(structureElement, namingConvention, holderRepositories, holderStructures); - } - public void validateStructuresReject(List<StructureElementCommand> structureElements) { - // initiate holder of system and device structure content, for performance reasons - HolderStructures holderStructures = new HolderStructures(holderIRepositories); - - for (StructureElementCommand structureElement : structureElements) { - validateStructuresReject(structureElement, holderStructures); - } - } - // ---------------------------------------------------------------------------------------------------- @Transactional @@ -773,196 +679,4 @@ public class StructuresService { return deletedStructureElements; } - // ---------------------------------------------------------------------------------------------------- - - @Transactional - public List<StructureElement> approveStructures(List<StructureElementCommand> structureElements, String username) { - // validation outside method - // transaction - // for each structure element command - // approve structure - // handle - // notification - // structure element for approved structure - // notify - // return structure elements for approved structures - - // initiate holder of system and device structure content, for performance reasons - HolderStructures holderStructures = new HolderStructures(holderIRepositories); - - // approve - // set not latest for current latest - // set approved, latest for pending - // delete - // delete sub structures - // delete names - - Date when = new Date(); - List<NotificationStructure> notifications = Lists.newArrayList(); - final List<StructureElement> approvedStructureElements = Lists.newArrayList(); - for (StructureElementCommand structureElement : structureElements) { - Type type = structureElement.getType(); - StructureElementNotification structureElementNotification = null; - - if (Type.SYSTEMGROUP.equals(type)) { - structureElementNotification = systemGroupService.approveStructure(structureElement, when, username, holderStructures); - } else if (Type.SYSTEM.equals(type)) { - structureElementNotification = systemService.approveStructure(structureElement, when, username, holderStructures); - } else if (Type.SUBSYSTEM.equals(type)) { - structureElementNotification = subsystemService.approveStructure(structureElement, when, username, holderStructures); - } else if (Type.DISCIPLINE.equals(type)) { - structureElementNotification = disciplineService.approveStructure(structureElement, when, username, holderStructures); - } else if (Type.DEVICEGROUP.equals(type)) { - structureElementNotification = deviceGroupService.approveStructure(structureElement, when, username, holderStructures); - } else if (Type.DEVICETYPE.equals(structureElement.getType())) { - structureElementNotification = deviceTypeService.approveStructure(structureElement, when, username, holderStructures); - } else { - continue; - } - - Utilities.addToCollection(notifications, structureElementNotification.notificationStructure()); - Utilities.addToCollection(approvedStructureElements, structureElementNotification.structureElement()); - - if (LOGGER.isLoggable(Level.FINER)) { - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.APPROVE_STRUCTURE, "type", type)); - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.APPROVE_STRUCTURE, TextUtil.ELEMENT_IN, structureElement)); - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.APPROVE_STRUCTURE, TextUtil.ELEMENT_OUT, structureElementNotification.structureElement())); - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.APPROVE_STRUCTURE, TextUtil.NOTIFICATION, structureElementNotification.notificationStructure())); - } - } - - // notify - notificationService.notifyStructures(notifications, StructureCommand.APPROVE); - - LOGGER.log(Level.INFO, - () -> MessageFormat.format( - TextUtil.DESCRIPTION_NUMBER_ELEMENTS_IN_OUT, - "Approve structures", - structureElements.size(), - approvedStructureElements.size())); - return approvedStructureElements; - } - - @Transactional - public List<StructureElement> cancelStructures(List<StructureElementCommand> structureElements, String username) { - // validation outside method - // transaction - // for each structure element command - // cancel structure - // handle - // notification - // structure element for cancelled structure - // notify - // return structure elements for cancelled structures - - // initiate holder of system and device structure content, for performance reasons - HolderStructures holderStructures = new HolderStructures(holderIRepositories); - - Date when = new Date(); - List<NotificationStructure> notifications = Lists.newArrayList(); - final List<StructureElement> cancelledStructureElements = Lists.newArrayList(); - for (StructureElementCommand structureElement : structureElements) { - Type type = structureElement.getType(); - StructureElementNotification structureElementNotification = null; - - if (Type.SYSTEMGROUP.equals(type)) { - structureElementNotification = systemGroupService.cancelStructure(structureElement, when, username, holderStructures); - } else if (Type.SYSTEM.equals(type)) { - structureElementNotification = systemService.cancelStructure(structureElement, when, username, holderStructures); - } else if (Type.SUBSYSTEM.equals(type)) { - structureElementNotification = subsystemService.cancelStructure(structureElement, when, username, holderStructures); - } else if (Type.DISCIPLINE.equals(type)) { - structureElementNotification = disciplineService.cancelStructure(structureElement, when, username, holderStructures); - } else if (Type.DEVICEGROUP.equals(type)) { - structureElementNotification = deviceGroupService.cancelStructure(structureElement, when, username, holderStructures); - } else if (Type.DEVICETYPE.equals(structureElement.getType())) { - structureElementNotification = deviceTypeService.cancelStructure(structureElement, when, username, holderStructures); - } else { - continue; - } - - Utilities.addToCollection(notifications, structureElementNotification.notificationStructure()); - Utilities.addToCollection(cancelledStructureElements, structureElementNotification.structureElement()); - - if (LOGGER.isLoggable(Level.FINER)) { - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CANCEL_STRUCTURE, "type", type)); - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CANCEL_STRUCTURE, TextUtil.ELEMENT_IN, structureElement)); - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CANCEL_STRUCTURE, TextUtil.ELEMENT_OUT, structureElementNotification.structureElement())); - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CANCEL_STRUCTURE, TextUtil.NOTIFICATION, structureElementNotification.notificationStructure())); - } - } - - // notify - notificationService.notifyStructures(notifications, StructureCommand.CANCEL); - - LOGGER.log(Level.INFO, - () -> MessageFormat.format( - TextUtil.DESCRIPTION_NUMBER_ELEMENTS_IN_OUT, - "Cancel structures", - structureElements.size(), - cancelledStructureElements.size())); - return cancelledStructureElements; - } - - @Transactional - public List<StructureElement> rejectStructures(List<StructureElementCommand> structureElements, String username) { - // validation outside method - // transaction - // for each structure element command - // reject structure - // handle - // notification - // structure element for rejected structure - // notify - // return structure elements for rejected structures - - // initiate holder of system and device structure content, for performance reasons - HolderStructures holderStructures = new HolderStructures(holderIRepositories); - - Date when = new Date(); - List<NotificationStructure> notifications = Lists.newArrayList(); - final List<StructureElement> rejectedStructureElements = Lists.newArrayList(); - for (StructureElementCommand structureElement : structureElements) { - Type type = structureElement.getType(); - StructureElementNotification structureElementNotification = null; - - if (Type.SYSTEMGROUP.equals(type)) { - structureElementNotification = systemGroupService.rejectStructure(structureElement, when, username, holderStructures); - } else if (Type.SYSTEM.equals(type)) { - structureElementNotification = systemService.rejectStructure(structureElement, when, username, holderStructures); - } else if (Type.SUBSYSTEM.equals(type)) { - structureElementNotification = subsystemService.rejectStructure(structureElement, when, username, holderStructures); - } else if (Type.DISCIPLINE.equals(type)) { - structureElementNotification = disciplineService.rejectStructure(structureElement, when, username, holderStructures); - } else if (Type.DEVICEGROUP.equals(type)) { - structureElementNotification = deviceGroupService.rejectStructure(structureElement, when, username, holderStructures); - } else if (Type.DEVICETYPE.equals(structureElement.getType())) { - structureElementNotification = deviceTypeService.rejectStructure(structureElement, when, username, holderStructures); - } else { - continue; - } - - Utilities.addToCollection(notifications, structureElementNotification.notificationStructure()); - Utilities.addToCollection(rejectedStructureElements, structureElementNotification.structureElement()); - - if (LOGGER.isLoggable(Level.FINER)) { - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.REJECT_STRUCTURE, "type", type)); - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.REJECT_STRUCTURE, TextUtil.ELEMENT_IN, structureElement)); - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.REJECT_STRUCTURE, TextUtil.ELEMENT_OUT, structureElementNotification.structureElement())); - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.REJECT_STRUCTURE, TextUtil.NOTIFICATION, structureElementNotification.notificationStructure())); - } - } - - // notify - notificationService.notifyStructures(notifications, StructureCommand.REJECT); - - LOGGER.log(Level.INFO, - () -> MessageFormat.format( - TextUtil.DESCRIPTION_NUMBER_ELEMENTS_IN_OUT, - "Reject structures", - structureElements.size(), - rejectedStructureElements.size())); - return rejectedStructureElements; - } - } diff --git a/src/main/java/org/openepics/names/service/SubsystemService.java b/src/main/java/org/openepics/names/service/SubsystemService.java index 755c6ece..9780f3ca 100644 --- a/src/main/java/org/openepics/names/service/SubsystemService.java +++ b/src/main/java/org/openepics/names/service/SubsystemService.java @@ -55,11 +55,6 @@ import org.springframework.transaction.annotation.Transactional; @Service public class SubsystemService { - // note - // structurecommand - // cud - create update delete - // acr - approve cancel reject - private static final Logger LOGGER = Logger.getLogger(SubsystemService.class.getName()); private ISubsystemRepository iSubsystemRepository; @@ -81,8 +76,13 @@ public class SubsystemService { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // create structure to pending, not latest, not deleted, with data + // create structure - approved, latest, not deleted + // additional + // automatically create name when system structure is created + // condition on name and structure entry + // system structure should exist (uuid), one entry that is not deleted + // name should not exist (system structure mnemonic path) + // within current transaction // return // structure element for created structure // notification @@ -101,13 +101,23 @@ public class SubsystemService { // create Subsystem subsystem = new Subsystem(UUID.randomUUID(), structureElementCommand.getParent(), mnemonic, equivalenceClassRepresentative, structureElementCommand.getOrdering(), - structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE, + structureElementCommand.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, when, username, null); subsystemRepository.createSubsystem(subsystem); + // additional + boolean hasMnemonic = !StringUtils.isEmpty(subsystem.getMnemonic()); + boolean existsName = hasMnemonic && namesService.existsName(StructureUtil.getMnemonicPath(subsystem, holderStructures)); + if (hasMnemonic && !existsName) { + NameElementCommand nameElement = new NameElementCommand(null, subsystem.getUuid(), null, null, StructuresService.SYSTEM_STRUCTURE_ONLY); + namesService.createName(nameElement, when, username, holderStructures); + } + + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CREATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.CREATE)); + return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(subsystem), - NotificationUtil.prepareNotification(Type.SUBSYSTEM, StructureCommand.CREATE, null, null, subsystem, holderStructures)); + StructureElementUtil.getStructureElementProcessed(subsystem, holderStructures, StructureChoice.STRUCTURE), + NotificationUtil.prepareNotification(Type.SUBSYSTEM, StructureCommand.CREATE, null, subsystem, holderStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -115,9 +125,10 @@ public class SubsystemService { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // create structure to pending, not latest, not deleted, with data - // find out previous + // update not latest + // create structure - approved, latest, not deleted + // previous for notification + // additional - update related names // return // structure element for updated structure // notification @@ -129,87 +140,54 @@ public class SubsystemService { // namingConvention.equivalenceClassRepresentative return null for null input // rules for mnemonic + String uuid = structureElementCommand.getUuid().toString(); String mnemonic = structureElementCommand.getMnemonic(); mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic; String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic); + // find + List<Subsystem> subsystems = subsystemRepository.readSubsystems(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null, null); + Subsystem subsystem = null; + if (ValidateUtil.isSize(subsystems, 1)) { + subsystem = subsystems.get(0); + + // update not latest + subsystem.setLatest(Boolean.FALSE); + subsystemRepository.updateSubsystem(subsystem); + } + // create - Subsystem subsystem = new Subsystem(structureElementCommand.getUuid(), structureElementCommand.getParent(), + subsystem = new Subsystem(structureElementCommand.getUuid(), structureElementCommand.getParent(), mnemonic, equivalenceClassRepresentative, structureElementCommand.getOrdering(), - structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE, + structureElementCommand.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, when, username, null); subsystemRepository.createSubsystem(subsystem); // previous - List<Subsystem> previouses = iSubsystemRepository.findPreviousByUuidAndId(subsystem.getUuid().toString(), subsystem.getId()); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(subsystem), - NotificationUtil.prepareNotification(Type.SUBSYSTEM, StructureCommand.UPDATE, null, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, subsystem, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // create structure to pending, not latest, deleted, with data - // return - // structure element for deleted structure - // notification - // - // attributes - // uuid + List<Subsystem> previouses = iSubsystemRepository.findPreviousByUuidAndId(subsystem.getUuid().toString(), subsystem.getId()); + Subsystem previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; - // find - List<Subsystem> subsystems = subsystemRepository.readSubsystems(Status.APPROVED, Boolean.FALSE, structureElementCommand.getUuid().toString(), null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(subsystems, 1)) { - return null; - } - Subsystem toBeDeleted = subsystems.get(0); + // additional + namesService.updateNames(previous, subsystem, username); - // create - Subsystem subsystem = new Subsystem(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(), - toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(), toBeDeleted.getOrdering(), - toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE, - when, username, null); - subsystemRepository.createSubsystem(subsystem); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.UPDATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.UPDATE)); return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(subsystem), - NotificationUtil.prepareNotification(Type.SUBSYSTEM, StructureCommand.DELETE, null, null, subsystem, holderStructures)); + StructureElementUtil.getStructureElementProcessed(subsystem, holderStructures, StructureChoice.STRUCTURE), + NotificationUtil.prepareNotification(Type.SUBSYSTEM, StructureCommand.UPDATE, previous, subsystem, holderStructures)); } @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification approveStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { + public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // find // update not latest - // find - // approve - update structure to status APPROVED, latest to true - // additional - // find out previous to find out what is approved - create update delete - // approve create - // automatically create name when system structure is approved - // condition on name and structure entry - // system structure should exist (uuid), one entry that is not deleted - // name should not exist (system structure mnemonic) - // within current transaction - // approve update - // update related names - // for different mnemonic - // not for device group - // approve delete - // delete related names - // delete sub structures + // create structure - approved, latest, deleted + // previous for notification + // additional - delete related names // return - // structure element for approved structure + // structure element for deleted structure // notification // // attributes @@ -226,128 +204,29 @@ public class SubsystemService { // update not latest subsystem.setLatest(Boolean.FALSE); subsystemRepository.updateSubsystem(subsystem); - } - - // find - subsystems = subsystemRepository.readSubsystems(Status.PENDING, null, uuid, null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(subsystems, 1)) { + } else { return null; } - subsystem = subsystems.get(0); - // approve - subsystem.setAttributesStatusProcessed(Status.APPROVED, when, username, null); - subsystem.setLatest(Boolean.TRUE); - subsystemRepository.updateSubsystem(subsystem); + // create + subsystem = new Subsystem(subsystem.getUuid(), subsystem.getParentUuid(), + subsystem.getMnemonic(), subsystem.getMnemonicEquivalence(), subsystem.getOrdering(), + subsystem.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.TRUE, + when, username, null); + subsystemRepository.createSubsystem(subsystem); // previous List<Subsystem> previouses = iSubsystemRepository.findPreviousByUuidAndId(uuid, subsystem.getId()); - StructureCommand structureCommandCUD = StructureUtil.getStructureCommandCUD(previouses, subsystem); Subsystem previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; // additional - if (StructureCommand.CREATE.equals(structureCommandCUD)) { - boolean hasMnemonic = !StringUtils.isEmpty(subsystem.getMnemonic()); - boolean existsName = hasMnemonic && namesService.existsName(StructureUtil.getMnemonicPath(subsystem, holderStructures)); - if (hasMnemonic && !existsName) { - NameElementCommand nameElement = new NameElementCommand(null, subsystem.getUuid(), null, null, StructuresService.SYSTEM_STRUCTURE_ONLY); - namesService.createName(nameElement, when, username, holderStructures); - } - } else if (StructureCommand.UPDATE.equals(structureCommandCUD)) { - // update related names - namesService.updateNames(previous, subsystem, username); - } else if (StructureCommand.DELETE.equals(structureCommandCUD)) { - // delete related names - namesService.deleteNames(subsystem, username); - } - - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.APPROVE_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementProcessed(subsystem, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SUBSYSTEM, structureCommandCUD, StructureCommand.APPROVE, previous, subsystem, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification cancelStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // cancel - update structure to status CANCELLED - // find out previous - // return - // structure element for created structure - // notification - // - // attributes - // uuid - - String uuid = structureElementCommand.getUuid().toString(); - - // find - List<Subsystem> subsystems = subsystemRepository.readSubsystems(Status.PENDING, null, uuid, null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(subsystems, 1)) { - return null; - } - Subsystem subsystem = subsystems.get(0); - - // cancel - subsystem.setAttributesStatusProcessed(Status.CANCELLED, when, username, null); - subsystemRepository.updateSubsystem(subsystem); - - // previous - List<Subsystem> previouses = iSubsystemRepository.findPreviousByUuidAndId(uuid, subsystem.getId()); - StructureCommand structureCommandCUD = NotificationUtil.getStructureCommandCUD(previouses, subsystem); - - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CANCEL_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementProcessed(subsystem, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SUBSYSTEM, structureCommandCUD, StructureCommand.CANCEL, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, subsystem, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification rejectStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // reject - update structure to status REJECTED - // find out previous - // return - // structure element for created structure - // notification - // - // attributes - // uuid - - String uuid = structureElementCommand.getUuid().toString(); - - // find - List<Subsystem> subsystems = subsystemRepository.readSubsystems(Status.PENDING, null, uuid, null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(subsystems, 1)) { - return null; - } - Subsystem subsystem = subsystems.get(0); - - // reject - subsystem.setAttributesStatusProcessed(Status.REJECTED, when, username, null); - subsystemRepository.updateSubsystem(subsystem); - - // previous - List<Subsystem> previouses = iSubsystemRepository.findPreviousByUuidAndId(uuid, subsystem.getId()); - StructureCommand structureCommandCUD = NotificationUtil.getStructureCommandCUD(previouses, subsystem); + namesService.deleteNames(subsystem, username); - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.REJECT_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.DELETE_STRUCTURE, TextUtil.COMMAND, StructureCommand.DELETE)); return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(subsystem, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SUBSYSTEM, structureCommandCUD, StructureCommand.REJECT, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, subsystem, holderStructures)); + NotificationUtil.prepareNotification(Type.SUBSYSTEM, StructureCommand.DELETE, previous, subsystem, holderStructures)); } } diff --git a/src/main/java/org/openepics/names/service/SystemGroupService.java b/src/main/java/org/openepics/names/service/SystemGroupService.java index 7700cbfe..ac221bad 100644 --- a/src/main/java/org/openepics/names/service/SystemGroupService.java +++ b/src/main/java/org/openepics/names/service/SystemGroupService.java @@ -59,11 +59,6 @@ import com.google.common.collect.Lists; @Service public class SystemGroupService { - // note - // structurecommand - // cud - create update delete - // acr - approve cancel reject - private static final Logger LOGGER = Logger.getLogger(SystemGroupService.class.getName()); private ISystemGroupRepository iSystemGroupRepository; @@ -91,8 +86,13 @@ public class SystemGroupService { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // create structure to pending, not latest, not deleted, with data + // create structure - approved, latest, not deleted + // additional + // automatically create name when system structure is created + // condition on name and structure entry + // system structure should exist (uuid), one entry that is not deleted + // name should not exist (system structure mnemonic path) + // within current transaction // return // structure element for created structure // notification @@ -111,13 +111,23 @@ public class SystemGroupService { // create SystemGroup systemGroup = new SystemGroup(UUID.randomUUID(), mnemonic, equivalenceClassRepresentative, structureElementCommand.getOrdering(), - structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE, + structureElementCommand.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, when, username, null); systemGroupRepository.createSystemGroup(systemGroup); + // additional + boolean hasMnemonic = !StringUtils.isEmpty(systemGroup.getMnemonic()); + boolean existsName = hasMnemonic && namesService.existsName(StructureUtil.getMnemonicPath(systemGroup, holderStructures)); + if (hasMnemonic && !existsName) { + NameElementCommand nameElement = new NameElementCommand(null, systemGroup.getUuid(), null, null, StructuresService.SYSTEM_STRUCTURE_ONLY); + namesService.createName(nameElement, when, username, holderStructures); + } + + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CREATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.CREATE)); + return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(systemGroup), - NotificationUtil.prepareNotification(Type.SYSTEMGROUP, StructureCommand.CREATE, null, null, systemGroup, holderStructures)); + StructureElementUtil.getStructureElementProcessed(systemGroup, holderStructures, StructureChoice.STRUCTURE), + NotificationUtil.prepareNotification(Type.SYSTEMGROUP, StructureCommand.CREATE, null, systemGroup, holderStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -125,9 +135,10 @@ public class SystemGroupService { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // create structure to pending, not latest, not deleted, with data - // find out previous + // update not latest + // create structure - approved, latest, not deleted + // previous for notification + // additional - update related names // return // structure element for updated structure // notification @@ -139,87 +150,54 @@ public class SystemGroupService { // namingConvention.equivalenceClassRepresentative return null for null input // rules for mnemonic + String uuid = structureElementCommand.getUuid().toString(); String mnemonic = structureElementCommand.getMnemonic(); mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic; String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic); + // find + List<SystemGroup> systemGroups = systemGroupRepository.readSystemGroups(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null); + SystemGroup systemGroup = null; + if (ValidateUtil.isSize(systemGroups, 1)) { + systemGroup = systemGroups.get(0); + + // update not latest + systemGroup.setLatest(Boolean.FALSE); + systemGroupRepository.updateSystemGroup(systemGroup); + } + // create - SystemGroup systemGroup = new SystemGroup(structureElementCommand.getUuid(), + systemGroup = new SystemGroup(structureElementCommand.getUuid(), mnemonic, equivalenceClassRepresentative, structureElementCommand.getOrdering(), - structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE, + structureElementCommand.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, when, username, null); systemGroupRepository.createSystemGroup(systemGroup); // previous - List<SystemGroup> previouses = iSystemGroupRepository.findPreviousByUuidAndId(systemGroup.getUuid().toString(), systemGroup.getId()); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(systemGroup), - NotificationUtil.prepareNotification(Type.SYSTEMGROUP, StructureCommand.UPDATE, null, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, systemGroup, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // create structure to pending, not latest, deleted, with data - // return - // structure element for deleted structure - // notification - // - // attributes - // uuid + List<SystemGroup> previouses = iSystemGroupRepository.findPreviousByUuidAndId(uuid, systemGroup.getId()); + SystemGroup previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; - // find - List<SystemGroup> systemGroups = systemGroupRepository.readSystemGroups(Status.APPROVED, Boolean.FALSE, structureElementCommand.getUuid().toString(), null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) { - return null; - } - SystemGroup toBeDeleted = systemGroups.get(0); + // additional + namesService.updateNames(previous, systemGroup, username); - // create - SystemGroup systemGroup = new SystemGroup(toBeDeleted.getUuid(), - toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(), toBeDeleted.getOrdering(), - toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE, - when, username, null); - systemGroupRepository.createSystemGroup(systemGroup); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.UPDATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.UPDATE)); return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(systemGroup), - NotificationUtil.prepareNotification(Type.SYSTEMGROUP, StructureCommand.DELETE, null, null, systemGroup, holderStructures)); + StructureElementUtil.getStructureElementProcessed(systemGroup, holderStructures, StructureChoice.STRUCTURE), + NotificationUtil.prepareNotification(Type.SYSTEMGROUP, StructureCommand.UPDATE, previous, systemGroup, holderStructures)); } @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification approveStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { + public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // find // update not latest - // find - // approve - update structure to status APPROVED, latest to true - // additional - // find out previous to find out what is approved - create update delete - // approve create - // automatically create name when system structure is approved - // condition on name and structure entry - // system structure should exist (uuid), one entry that is not deleted - // name should not exist (system structure mnemonic) - // within current transaction - // approve update - // update related names - // for different mnemonic - // not for device group - // approve delete - // delete related names - // delete sub structures + // create structure - approved, latest, deleted + // previous for notification + // additional - delete related names, delete sub structures (and related names) // return - // structure element for approved structure + // structure element for deleted structure // notification // // attributes @@ -236,143 +214,39 @@ public class SystemGroupService { // update not latest systemGroup.setLatest(Boolean.FALSE); systemGroupRepository.updateSystemGroup(systemGroup); - } - - // find - systemGroups = systemGroupRepository.readSystemGroups(Status.PENDING, null, uuid, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) { + } else { return null; } - systemGroup = systemGroups.get(0); - // approve - systemGroup.setAttributesStatusProcessed(Status.APPROVED, when, username, null); - systemGroup.setLatest(Boolean.TRUE); - systemGroupRepository.updateSystemGroup(systemGroup); + // create + systemGroup = new SystemGroup(systemGroup.getUuid(), + systemGroup.getMnemonic(), systemGroup.getMnemonicEquivalence(), systemGroup.getOrdering(), + systemGroup.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.TRUE, + when, username, null); + systemGroupRepository.createSystemGroup(systemGroup); // previous List<SystemGroup> previouses = iSystemGroupRepository.findPreviousByUuidAndId(uuid, systemGroup.getId()); - StructureCommand structureCommandCUD = StructureUtil.getStructureCommandCUD(previouses, systemGroup); SystemGroup previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; // additional - if (StructureCommand.CREATE.equals(structureCommandCUD)) { - boolean hasMnemonic = !StringUtils.isEmpty(systemGroup.getMnemonic()); - boolean existsName = hasMnemonic && namesService.existsName(StructureUtil.getMnemonicPath(systemGroup, holderStructures)); - if (hasMnemonic && !existsName) { - NameElementCommand nameElement = new NameElementCommand(null, systemGroup.getUuid(), null, null, StructuresService.SYSTEM_STRUCTURE_ONLY); - namesService.createName(nameElement, when, username, holderStructures); - } - } else if (StructureCommand.UPDATE.equals(structureCommandCUD)) { - // update related names - namesService.updateNames(previous, systemGroup, username); - } else if (StructureCommand.DELETE.equals(structureCommandCUD)) { - // will propagate to sub structures and related names - - // delete related names - namesService.deleteNames(systemGroup, username); - - // delete sub structures - delete, approve - List<StructureElementCommand> commands = Lists.newArrayList(); - List<System> systems = iSystemRepository.findLatestNotDeletedByParent(uuid); - for (System system : systems) { - commands.add(new StructureElementCommand(system.getUuid(), Type.SYSTEM, null, null, null, null)); - } - for (StructureElementCommand command : commands) { - systemService.deleteStructure(command, when, username, holderStructures); - } - for (StructureElementCommand command : commands) { - systemService.approveStructure(command, when, username, holderStructures); - } - } - - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.APPROVE_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementProcessed(systemGroup, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SYSTEMGROUP, structureCommandCUD, StructureCommand.APPROVE, previous, systemGroup, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification cancelStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // cancel - update structure to status CANCELLED - // find out previous - // return - // structure element for created structure - // notification - // - // attributes - // uuid + // will propagate to sub structures + namesService.deleteNames(systemGroup, username); - String uuid = structureElementCommand.getUuid().toString(); - - // find - List<SystemGroup> systemGroups = systemGroupRepository.readSystemGroups(Status.PENDING, null, uuid, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) { - return null; + List<StructureElementCommand> commands = Lists.newArrayList(); + List<System> systems = iSystemRepository.findLatestNotDeletedByParent(uuid); + for (System system : systems) { + commands.add(new StructureElementCommand(system.getUuid(), Type.SYSTEM, null, null, null, null)); } - SystemGroup systemGroup = systemGroups.get(0); - - // cancel - systemGroup.setAttributesStatusProcessed(Status.CANCELLED, when, username, null); - systemGroupRepository.updateSystemGroup(systemGroup); - - // previous - List<SystemGroup> previouses = iSystemGroupRepository.findPreviousByUuidAndId(uuid, systemGroup.getId()); - StructureCommand structureCommandCUD = NotificationUtil.getStructureCommandCUD(previouses, systemGroup); - - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CANCEL_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementProcessed(systemGroup, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SYSTEMGROUP, structureCommandCUD, StructureCommand.CANCEL, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, systemGroup, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification rejectStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // reject - update structure to status REJECTED - // find out previous - // return - // structure element for created structure - // notification - // - // attributes - // uuid - - String uuid = structureElementCommand.getUuid().toString(); - - // find - List<SystemGroup> systemGroups = systemGroupRepository.readSystemGroups(Status.PENDING, null, uuid, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) { - return null; + for (StructureElementCommand command : commands) { + systemService.deleteStructure(command, when, username, holderStructures); } - SystemGroup systemGroup = systemGroups.get(0); - - // reject - systemGroup.setAttributesStatusProcessed(Status.REJECTED, when, username, null); - systemGroupRepository.updateSystemGroup(systemGroup); - - // previous - List<SystemGroup> previouses = iSystemGroupRepository.findPreviousByUuidAndId(uuid, systemGroup.getId()); - StructureCommand structureCommandCUD = NotificationUtil.getStructureCommandCUD(previouses, systemGroup); - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.REJECT_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.DELETE_STRUCTURE, TextUtil.COMMAND, StructureCommand.DELETE)); return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(systemGroup, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SYSTEMGROUP, structureCommandCUD, StructureCommand.REJECT, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, systemGroup, holderStructures)); + NotificationUtil.prepareNotification(Type.SYSTEMGROUP, StructureCommand.DELETE, previous, systemGroup, holderStructures)); } } diff --git a/src/main/java/org/openepics/names/service/SystemService.java b/src/main/java/org/openepics/names/service/SystemService.java index 067b14e3..0f001ec9 100644 --- a/src/main/java/org/openepics/names/service/SystemService.java +++ b/src/main/java/org/openepics/names/service/SystemService.java @@ -59,11 +59,6 @@ import com.google.common.collect.Lists; @Service public class SystemService { - // note - // structurecommand - // cud - create update delete - // acr - approve cancel reject - private static final Logger LOGGER = Logger.getLogger(SystemService.class.getName()); private ISystemRepository iSystemRepository; @@ -91,8 +86,13 @@ public class SystemService { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // create structure to pending, not latest, not deleted, with data + // create structure - approved, latest, not deleted + // additional + // automatically create name when system structure is created + // condition on name and structure entry + // system structure should exist (uuid), one entry that is not deleted + // name should not exist (system structure mnemonic path) + // within current transaction // return // structure element for created structure // notification @@ -111,13 +111,23 @@ public class SystemService { // create System system = new System(UUID.randomUUID(), structureElementCommand.getParent(), mnemonic, equivalenceClassRepresentative, structureElementCommand.getOrdering(), - structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE, + structureElementCommand.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, when, username, null); systemRepository.createSystem(system); + // additional + boolean hasMnemonic = !StringUtils.isEmpty(system.getMnemonic()); + boolean existsName = hasMnemonic && namesService.existsName(StructureUtil.getMnemonicPath(system, holderStructures)); + if (hasMnemonic && !existsName) { + NameElementCommand nameElement = new NameElementCommand(null, system.getUuid(), null, null, StructuresService.SYSTEM_STRUCTURE_ONLY); + namesService.createName(nameElement, when, username, holderStructures); + } + + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CREATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.CREATE)); + return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(system), - NotificationUtil.prepareNotification(Type.SYSTEM, StructureCommand.CREATE, null, null, system, holderStructures)); + StructureElementUtil.getStructureElementProcessed(system, holderStructures, StructureChoice.STRUCTURE), + NotificationUtil.prepareNotification(Type.SYSTEM, StructureCommand.CREATE, null, system, holderStructures)); } @Transactional(propagation = Propagation.MANDATORY) @@ -125,9 +135,10 @@ public class SystemService { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // create structure to pending, not latest, not deleted, with data - // find out previous + // update not latest + // create structure - approved, latest, not deleted + // previous for notification + // additional - update related names // return // structure element for updated structure // notification @@ -139,87 +150,54 @@ public class SystemService { // namingConvention.equivalenceClassRepresentative return null for null input // rules for mnemonic + String uuid = structureElementCommand.getUuid().toString(); String mnemonic = structureElementCommand.getMnemonic(); mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic; String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic); + // find + List<System> systems = systemRepository.readSystems(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null, null); + System system = null; + if (ValidateUtil.isSize(systems, 1)) { + system = systems.get(0); + + // update not latest + system.setLatest(Boolean.FALSE); + systemRepository.updateSystem(system); + } + // create - System system = new System(structureElementCommand.getUuid(), structureElementCommand.getParent(), + system = new System(structureElementCommand.getUuid(), structureElementCommand.getParent(), mnemonic, equivalenceClassRepresentative, structureElementCommand.getOrdering(), - structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE, + structureElementCommand.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE, when, username, null); systemRepository.createSystem(system); // previous - List<System> previouses = iSystemRepository.findPreviousByUuidAndId(system.getUuid().toString(), system.getId()); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(system), - NotificationUtil.prepareNotification(Type.SYSTEM, StructureCommand.UPDATE, null, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, system, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // create structure to pending, not latest, deleted, with data - // return - // structure element for deleted structure - // notification - // - // attributes - // uuid + List<System> previouses = iSystemRepository.findPreviousByUuidAndId(system.getUuid().toString(), system.getId()); + System previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; - // find - List<System> systems = systemRepository.readSystems(Status.APPROVED, Boolean.FALSE, structureElementCommand.getUuid().toString(), null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(systems, 1)) { - return null; - } - System toBeDeleted = systems.get(0); + // additional + namesService.updateNames(previous, system, username); - // create - System system = new System(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(), - toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(), toBeDeleted.getOrdering(), - toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE, - when, username, null); - systemRepository.createSystem(system); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.UPDATE_STRUCTURE, TextUtil.COMMAND, StructureCommand.UPDATE)); return new StructureElementNotification( - StructureElementUtil.getStructureElementRequested(system), - NotificationUtil.prepareNotification(Type.SYSTEM, StructureCommand.DELETE, null, null, system, holderStructures)); + StructureElementUtil.getStructureElementProcessed(system, holderStructures, StructureChoice.STRUCTURE), + NotificationUtil.prepareNotification(Type.SYSTEM, StructureCommand.UPDATE, previous, system, holderStructures)); } @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification approveStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { + public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { // validation outside method // transaction // support a current transaction, throw an exception if none exists - // attributes - // find // update not latest - // find - // approve - update structure to status APPROVED, latest to true - // additional - // find out previous to find out what is approved - create update delete - // approve create - // automatically create name when system structure is approved - // condition on name and structure entry - // system structure should exist (uuid), one entry that is not deleted - // name should not exist (system structure mnemonic) - // within current transaction - // approve update - // update related names - // for different mnemonic - // not for device group - // approve delete - // delete related names - // delete sub structures + // create structure - approved, latest, deleted + // previous for notification + // additional - delete related names, delete sub structures (and related names) // return - // structure element for approved structure + // structure element for deleted structure // notification // // attributes @@ -236,143 +214,39 @@ public class SystemService { // update not latest system.setLatest(Boolean.FALSE); systemRepository.updateSystem(system); - } - - // find - systems = systemRepository.readSystems(Status.PENDING, null, uuid, null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(systems, 1)) { + } else { return null; } - system = systems.get(0); - // approve - system.setAttributesStatusProcessed(Status.APPROVED, when, username, null); - system.setLatest(Boolean.TRUE); - systemRepository.updateSystem(system); + // create + system = new System(system.getUuid(), system.getParentUuid(), + system.getMnemonic(), system.getMnemonicEquivalence(), system.getOrdering(), + system.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.TRUE, + when, username, null); + systemRepository.createSystem(system); // previous List<System> previouses = iSystemRepository.findPreviousByUuidAndId(uuid, system.getId()); - StructureCommand structureCommandCUD = StructureUtil.getStructureCommandCUD(previouses, system); System previous = previouses != null && !previouses.isEmpty() ? previouses.get(0) : null; // additional - if (StructureCommand.CREATE.equals(structureCommandCUD)) { - boolean hasMnemonic = !StringUtils.isEmpty(system.getMnemonic()); - boolean existsName = hasMnemonic && namesService.existsName(StructureUtil.getMnemonicPath(system, holderStructures)); - if (hasMnemonic && !existsName) { - NameElementCommand nameElement = new NameElementCommand(null, system.getUuid(), null, null, StructuresService.SYSTEM_STRUCTURE_ONLY); - namesService.createName(nameElement, when, username, holderStructures); - } - } else if (StructureCommand.UPDATE.equals(structureCommandCUD)) { - // update related names - namesService.updateNames(previous, system, username); - } else if (StructureCommand.DELETE.equals(structureCommandCUD)) { - // will propagate to sub structures and related names - - // delete related names - namesService.deleteNames(system, username); - - // delete sub structures - delete, approve - List<StructureElementCommand> commands = Lists.newArrayList(); - List<Subsystem> subsystems = iSubsystemRepository.findLatestNotDeletedByParent(uuid); - for (Subsystem subsystem : subsystems) { - commands.add(new StructureElementCommand(subsystem.getUuid(), Type.SUBSYSTEM, null, null, null, null)); - } - for (StructureElementCommand command : commands) { - subsystemService.deleteStructure(command, when, username, holderStructures); - } - for (StructureElementCommand command : commands) { - subsystemService.approveStructure(command, when, username, holderStructures); - } - } - - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.APPROVE_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementProcessed(system, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SYSTEM, structureCommandCUD, StructureCommand.APPROVE, previous, system, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification cancelStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // cancel - update structure to status CANCELLED - // find out previous - // return - // structure element for created structure - // notification - // - // attributes - // uuid - - String uuid = structureElementCommand.getUuid().toString(); + // will propagate to sub structures + namesService.deleteNames(system, username); - // find - List<System> systems = systemRepository.readSystems(Status.PENDING, null, uuid, null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(systems, 1)) { - return null; + List<StructureElementCommand> commands = Lists.newArrayList(); + List<Subsystem> subsystems = iSubsystemRepository.findLatestNotDeletedByParent(uuid); + for (Subsystem subsystem : subsystems) { + commands.add(new StructureElementCommand(subsystem.getUuid(), Type.SUBSYSTEM, null, null, null, null)); } - System system = systems.get(0); - - // cancel - system.setAttributesStatusProcessed(Status.CANCELLED, when, username, null); - systemRepository.updateSystem(system); - - // previous - List<System> previouses = iSystemRepository.findPreviousByUuidAndId(uuid, system.getId()); - StructureCommand structureCommandCUD = NotificationUtil.getStructureCommandCUD(previouses, system); - - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.CANCEL_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); - - return new StructureElementNotification( - StructureElementUtil.getStructureElementProcessed(system, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SYSTEM, structureCommandCUD, StructureCommand.CANCEL, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, system, holderStructures)); - } - - @Transactional(propagation = Propagation.MANDATORY) - public StructureElementNotification rejectStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderStructures holderStructures) { - // validation outside method - // transaction - // support a current transaction, throw an exception if none exists - // attributes - // find - // reject - update structure to status REJECTED - // find out previous - // return - // structure element for created structure - // notification - // - // attributes - // uuid - - String uuid = structureElementCommand.getUuid().toString(); - - // find - List<System> systems = systemRepository.readSystems(Status.PENDING, null, uuid, null, null, null, null, null, null); - if (ValidateUtil.isNullOrNotSize(systems, 1)) { - return null; + for (StructureElementCommand command : commands) { + subsystemService.deleteStructure(command, when, username, holderStructures); } - System system = systems.get(0); - - // reject - system.setAttributesStatusProcessed(Status.REJECTED, when, username, null); - systemRepository.updateSystem(system); - - // previous - List<System> previouses = iSystemRepository.findPreviousByUuidAndId(uuid, system.getId()); - StructureCommand structureCommandCUD = NotificationUtil.getStructureCommandCUD(previouses, system); - LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.REJECT_STRUCTURE, TextUtil.COMMAND, structureCommandCUD)); + LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.DELETE_STRUCTURE, TextUtil.COMMAND, StructureCommand.DELETE)); return new StructureElementNotification( StructureElementUtil.getStructureElementProcessed(system, holderStructures, StructureChoice.STRUCTURE), - NotificationUtil.prepareNotification(Type.SYSTEM, structureCommandCUD, StructureCommand.REJECT, - previouses != null && !previouses.isEmpty() ? previouses.get(0) : null, system, holderStructures)); + NotificationUtil.prepareNotification(Type.SYSTEM, StructureCommand.DELETE, previous, system, holderStructures)); } } diff --git a/src/main/java/org/openepics/names/util/NameElementUtil.java b/src/main/java/org/openepics/names/util/NameElementUtil.java index 0eca6a21..1e511320 100644 --- a/src/main/java/org/openepics/names/util/NameElementUtil.java +++ b/src/main/java/org/openepics/names/util/NameElementUtil.java @@ -47,9 +47,7 @@ import com.google.common.collect.Lists; public class NameElementUtil { // note - // handling of system structure, device structure - // parent system structure uuid (system group, system, subsystem) - ability to find structure - // parent device structure uuid (device type) + // requested attributes for names are used, not processed attributes /** * This class is not to be instantiated. diff --git a/src/main/java/org/openepics/names/util/StructureCommand.java b/src/main/java/org/openepics/names/util/StructureCommand.java index aa2bf5ea..3914faab 100644 --- a/src/main/java/org/openepics/names/util/StructureCommand.java +++ b/src/main/java/org/openepics/names/util/StructureCommand.java @@ -25,6 +25,6 @@ package org.openepics.names.util; */ public enum StructureCommand { - CREATE, UPDATE, DELETE, APPROVE, CANCEL, REJECT; + CREATE, UPDATE, DELETE; } diff --git a/src/main/java/org/openepics/names/util/StructureElementUtil.java b/src/main/java/org/openepics/names/util/StructureElementUtil.java index 8fe20cb6..dff1ff6d 100644 --- a/src/main/java/org/openepics/names/util/StructureElementUtil.java +++ b/src/main/java/org/openepics/names/util/StructureElementUtil.java @@ -45,6 +45,10 @@ import com.google.common.collect.Lists; */ public class StructureElementUtil { + // note + // processed attributes for structures are used, not requested attributes + // requested attributes also used prior to removal of use of status attribute + /** * This class is not to be instantiated. */ @@ -58,32 +62,15 @@ public class StructureElementUtil { * @param systemGroups system groups * @param holderStructures holder of system and device structure content * @param structureChoice whether to consider content from structure perspective or history perspective. - * Structure perspective gives one StructureElement object (processed). - * History perspective gives one or two StructureElement objects (requested, processed). + * Structure perspective will give mnemonic path. + * History perspective may give empty mnemonic path as non-trivial to find out for history. * If choice not given then default as structure perspective (processed). * @return list of structure elements */ public static List<StructureElement> getStructureElementsForSystemGroups(List<SystemGroup> systemGroups, HolderStructures holderStructures, StructureChoice structureChoice) { List<StructureElement> structureElements = Lists.newArrayList(); for (SystemGroup systemGroup : systemGroups) { - // one or two return elements for history - // processed != null --> two entries (requested, processed) - // processed == null --> one entry (requested) - - if (StructureChoice.HISTORY.equals(structureChoice)) { - if (systemGroup.getProcessed() != null) { - structureElements.add(getStructureElementRequested(systemGroup)); - structureElements.add(getStructureElementProcessed(systemGroup, holderStructures, structureChoice)); - } else { - structureElements.add(getStructureElementRequested(systemGroup)); - } - } else { - if (Status.PENDING.equals(systemGroup.getStatus())) { - structureElements.add(getStructureElementRequested(systemGroup)); - } else { - structureElements.add(getStructureElementProcessed(systemGroup, holderStructures, structureChoice)); - } - } + structureElements.add(getStructureElementProcessed(systemGroup, holderStructures, structureChoice)); } return structureElements; } @@ -93,32 +80,15 @@ public class StructureElementUtil { * @param systems systems * @param holderStructures holder of system and device structure content * @param structureChoice whether to consider content from structure perspective or history perspective. - * Structure perspective gives one StructureElement object (processed). - * History perspective gives one or two StructureElement objects (requested, processed). + * Structure perspective will give mnemonic path. + * History perspective may give empty mnemonic path as non-trivial to find out for history. * If choice not given then default as structure perspective (processed). * @return list of structure elements */ public static List<StructureElement> getStructureElementsForSystems(List<System> systems, HolderStructures holderStructures, StructureChoice structureChoice) { List<StructureElement> structureElements = Lists.newArrayList(); for (System system : systems) { - // one or two return elements for history - // processed != null --> two entries (requested, processed) - // processed == null --> one entry (requested) - - if (StructureChoice.HISTORY.equals(structureChoice)) { - if (system.getProcessed() != null) { - structureElements.add(getStructureElementRequested(system)); - structureElements.add(getStructureElementProcessed(system, holderStructures, structureChoice)); - } else { - structureElements.add(getStructureElementRequested(system)); - } - } else { - if (Status.PENDING.equals(system.getStatus())) { - structureElements.add(getStructureElementRequested(system)); - } else { - structureElements.add(getStructureElementProcessed(system, holderStructures, structureChoice)); - } - } + structureElements.add(getStructureElementProcessed(system, holderStructures, structureChoice)); } return structureElements; } @@ -128,32 +98,15 @@ public class StructureElementUtil { * @param subsystems subsystems * @param holderStructures holder of system and device structure content * @param structureChoice whether to consider content from structure perspective or history perspective. - * Structure perspective gives one StructureElement object (processed). - * History perspective gives one or two StructureElement objects (requested, processed). + * Structure perspective will give mnemonic path. + * History perspective may give empty mnemonic path as non-trivial to find out for history. * If choice not given then default as structure perspective (processed). * @return list of structure elements */ public static List<StructureElement> getStructureElementsForSubsystems(List<Subsystem> subsystems, HolderStructures holderStructures, StructureChoice structureChoice) { List<StructureElement> structureElements = Lists.newArrayList(); for (Subsystem subsystem : subsystems) { - // one or two return elements for history - // processed != null --> two entries (requested, processed) - // processed == null --> one entry (requested) - - if (StructureChoice.HISTORY.equals(structureChoice)) { - if (subsystem.getProcessed() != null) { - structureElements.add(getStructureElementRequested(subsystem)); - structureElements.add(getStructureElementProcessed(subsystem, holderStructures, structureChoice)); - } else { - structureElements.add(getStructureElementRequested(subsystem)); - } - } else { - if (Status.PENDING.equals(subsystem.getStatus())) { - structureElements.add(getStructureElementRequested(subsystem)); - } else { - structureElements.add(getStructureElementProcessed(subsystem, holderStructures, structureChoice)); - } - } + structureElements.add(getStructureElementProcessed(subsystem, holderStructures, structureChoice)); } return structureElements; } @@ -164,32 +117,15 @@ public class StructureElementUtil { * @param disciplines disciplines * @param holderStructures holder of system and device structure content * @param structureChoice whether to consider content from structure perspective or history perspective. - * Structure perspective gives one StructureElement object (processed). - * History perspective gives one or two StructureElement objects (requested, processed). + * Structure perspective will give mnemonic path. + * History perspective may give empty mnemonic path as non-trivial to find out for history. * If choice not given then default as structure perspective (processed). * @return list of structure elements */ public static List<StructureElement> getStructureElementsForDisciplines(List<Discipline> disciplines, HolderStructures holderStructures, StructureChoice structureChoice) { List<StructureElement> structureElements = Lists.newArrayList(); for (Discipline discipline : disciplines) { - // one or two return elements for history - // processed != null --> two entries (requested, processed) - // processed == null --> one entry (requested) - - if (StructureChoice.HISTORY.equals(structureChoice)) { - if (discipline.getProcessed() != null) { - structureElements.add(getStructureElementRequested(discipline)); - structureElements.add(getStructureElementProcessed(discipline, holderStructures, structureChoice)); - } else { - structureElements.add(getStructureElementRequested(discipline)); - } - } else { - if (Status.PENDING.equals(discipline.getStatus())) { - structureElements.add(getStructureElementRequested(discipline)); - } else { - structureElements.add(getStructureElementProcessed(discipline, holderStructures, structureChoice)); - } - } + structureElements.add(getStructureElementProcessed(discipline, holderStructures, structureChoice)); } return structureElements; } @@ -199,32 +135,15 @@ public class StructureElementUtil { * @param deviceGroups device groups * @param holderStructures holder of system and device structure content * @param structureChoice whether to consider content from structure perspective or history perspective. - * Structure perspective gives one StructureElement object (processed). - * History perspective gives one or two StructureElement objects (requested, processed). + * Structure perspective will give mnemonic path. + * History perspective may give empty mnemonic path as non-trivial to find out for history. * If choice not given then default as structure perspective (processed). * @return list of structure elements */ public static List<StructureElement> getStructureElementsForDeviceGroups(List<DeviceGroup> deviceGroups, HolderStructures holderStructures, StructureChoice structureChoice) { List<StructureElement> structureElements = Lists.newArrayList(); for (DeviceGroup deviceGroup : deviceGroups) { - // one or two return elements for history - // processed != null --> two entries (requested, processed) - // processed == null --> one entry (requested) - - if (StructureChoice.HISTORY.equals(structureChoice)) { - if (deviceGroup.getProcessed() != null) { - structureElements.add(getStructureElementRequested(deviceGroup)); - structureElements.add(getStructureElementProcessed(deviceGroup, holderStructures, structureChoice)); - } else { - structureElements.add(getStructureElementRequested(deviceGroup)); - } - } else { - if (Status.PENDING.equals(deviceGroup.getStatus())) { - structureElements.add(getStructureElementRequested(deviceGroup)); - } else { - structureElements.add(getStructureElementProcessed(deviceGroup, holderStructures, structureChoice)); - } - } + structureElements.add(getStructureElementProcessed(deviceGroup, holderStructures, structureChoice)); } return structureElements; } @@ -234,60 +153,19 @@ public class StructureElementUtil { * @param deviceTypes device types * @param holderStructures holder of system and device structure content * @param structureChoice whether to consider content from structure perspective or history perspective. - * Structure perspective gives one StructureElement object (processed). - * History perspective gives one or two StructureElement objects (requested, processed). + * Structure perspective will give mnemonic path. + * History perspective may give empty mnemonic path as non-trivial to find out for history. * If choice not given then default as structure perspective (processed). * @return list of structure elements */ public static List<StructureElement> getStructureElementsForDeviceTypes(List<DeviceType> deviceTypes, HolderStructures holderStructures, StructureChoice structureChoice) { List<StructureElement> structureElements = Lists.newArrayList(); for (DeviceType deviceType : deviceTypes) { - // one or two return elements for history - // processed != null --> two entries (requested, processed) - // processed == null --> one entry (requested) - - if (StructureChoice.HISTORY.equals(structureChoice)) { - if (deviceType.getProcessed() != null) { - structureElements.add(getStructureElementRequested(deviceType)); - structureElements.add(getStructureElementProcessed(deviceType, holderStructures, structureChoice)); - } else { - structureElements.add(getStructureElementRequested(deviceType)); - } - } else { - if (Status.PENDING.equals(deviceType.getStatus())) { - structureElements.add(getStructureElementRequested(deviceType)); - } else { - structureElements.add(getStructureElementProcessed(deviceType, holderStructures, structureChoice)); - } - } + structureElements.add(getStructureElementProcessed(deviceType, holderStructures, structureChoice)); } return structureElements; } - /** - * Populate and return structure element for system group with focus on requested. - * - * @param systemGroup system group - * @return structure element - */ - public static StructureElement getStructureElementRequested(SystemGroup systemGroup) { - if (systemGroup == null) { - return null; - } - - // mnemonic path - // ambiguous if considered in past (requested, processed) - // not for history of structure - // for latest & approved status - String mnemonicPath = null; - - return getStructureElement( - systemGroup.getUuid(), Type.SYSTEMGROUP, null, - systemGroup.getMnemonic(), systemGroup.getOrdering(), systemGroup.getDescription(), - mnemonicPath, 1, - Status.PENDING, Boolean.FALSE, systemGroup.isDeleted(), - systemGroup.getRequested(), systemGroup.getRequestedBy(), systemGroup.getRequestedComment()); - } /** * Populate and return structure element for system group with focus on processed. * @@ -316,30 +194,6 @@ public class StructureElementUtil { systemGroup.getStatus(), systemGroup.isLatest(), systemGroup.isDeleted(), systemGroup.getProcessed(), systemGroup.getProcessedBy(), systemGroup.getProcessedComment()); } - /** - * Populate and return structure element for system group with focus on requested. - * - * @param system system - * @return structure element - */ - public static StructureElement getStructureElementRequested(System system) { - if (system == null) { - return null; - } - - // mnemonic path - // ambiguous if considered in past (requested, processed) - // not history of structure - // latest & approved status - String mnemonicPath = null; - - return getStructureElement( - system.getUuid(), Type.SYSTEM, system.getParentUuid(), - system.getMnemonic(), system.getOrdering(), system.getDescription(), - mnemonicPath, 2, - Status.PENDING, Boolean.FALSE, system.isDeleted(), - system.getRequested(), system.getRequestedBy(), system.getRequestedComment()); - } /** * Populate and return structure element for system with focus on processed. * @@ -368,30 +222,6 @@ public class StructureElementUtil { system.getStatus(), system.isLatest(), system.isDeleted(), system.getProcessed(), system.getProcessedBy(), system.getProcessedComment()); } - /** - * Populate and return structure element for subsystem with focus on requested. - * - * @param subsystem subsystem - * @return structure element - */ - public static StructureElement getStructureElementRequested(Subsystem subsystem) { - if (subsystem == null) { - return null; - } - - // mnemonic path - // ambiguous if considered in past (requested, processed) - // not history of structure - // latest & approved status - String mnemonicPath = null; - - return getStructureElement( - subsystem.getUuid(), Type.SUBSYSTEM, subsystem.getParentUuid(), - subsystem.getMnemonic(), subsystem.getOrdering(), subsystem.getDescription(), - mnemonicPath, 3, - Status.PENDING, Boolean.FALSE, subsystem.isDeleted(), - subsystem.getRequested(), subsystem.getRequestedBy(), subsystem.getRequestedComment()); - } /** * Populate and return structure element for subsystem with focus on processed. * @@ -421,30 +251,6 @@ public class StructureElementUtil { subsystem.getProcessed(), subsystem.getProcessedBy(), subsystem.getProcessedComment()); } - /** - * Populate and return structure element for discipline with focus on requested. - * - * @param discipline discipline - * @return structure element - */ - public static StructureElement getStructureElementRequested(Discipline discipline) { - if (discipline == null) { - return null; - } - - // mnemonic path - // ambiguous if considered in past (requested, processed) - // not history of structure - // latest & approved status - String mnemonicPath = null; - - return getStructureElement( - discipline.getUuid(), Type.DISCIPLINE, null, - discipline.getMnemonic(), discipline.getOrdering(), discipline.getDescription(), - mnemonicPath, 1, - Status.PENDING, Boolean.FALSE, discipline.isDeleted(), - discipline.getRequested(), discipline.getRequestedBy(), discipline.getRequestedComment()); - } /** * Populate and return structure element for discipline with focus on processed. * @@ -473,30 +279,6 @@ public class StructureElementUtil { discipline.getStatus(), discipline.isLatest(), discipline.isDeleted(), discipline.getProcessed(), discipline.getProcessedBy(), discipline.getProcessedComment()); } - /** - * Populate and return structure element for device group with focus on requested. - * - * @param deviceGroup device group - * @return structure element - */ - public static StructureElement getStructureElementRequested(DeviceGroup deviceGroup) { - if (deviceGroup == null) { - return null; - } - - // mnemonic path - // ambiguous if considered in past (requested, processed) - // not history of structure - // latest & approved status - String mnemonicPath = null; - - return getStructureElement( - deviceGroup.getUuid(), Type.DEVICEGROUP, deviceGroup.getParentUuid(), - deviceGroup.getMnemonic(), deviceGroup.getOrdering(), deviceGroup.getDescription(), - mnemonicPath, 2, - Status.PENDING, Boolean.FALSE, deviceGroup.isDeleted(), - deviceGroup.getRequested(), deviceGroup.getRequestedBy(), deviceGroup.getRequestedComment()); - } /** * Populate and return structure element for device group with focus on processed. * @@ -525,30 +307,6 @@ public class StructureElementUtil { deviceGroup.getStatus(), deviceGroup.isLatest(), deviceGroup.isDeleted(), deviceGroup.getProcessed(), deviceGroup.getProcessedBy(), deviceGroup.getProcessedComment()); } - /** - * Populate and return structure element for device type with focus on requested. - * - * @param deviceType device type - * @return structure element - */ - public static StructureElement getStructureElementRequested(DeviceType deviceType) { - if (deviceType == null) { - return null; - } - - // mnemonic path - // ambiguous if considered in past (requested, processed) - // not history of structure - // latest & approved status - String mnemonicPath = null; - - return getStructureElement( - deviceType.getUuid(), Type.DEVICETYPE, deviceType.getParentUuid(), - deviceType.getMnemonic(), deviceType.getOrdering(), deviceType.getDescription(), - mnemonicPath, 3, - Status.PENDING, Boolean.FALSE, deviceType.isDeleted(), - deviceType.getRequested(), deviceType.getRequestedBy(), deviceType.getRequestedComment()); - } /** * Populate and return structure element for device type with focus on processed. * @@ -880,5 +638,4 @@ public class StructureElementUtil { return structureElementCommands; } - } diff --git a/src/main/java/org/openepics/names/util/StructureUtil.java b/src/main/java/org/openepics/names/util/StructureUtil.java index ca9848c0..45536727 100644 --- a/src/main/java/org/openepics/names/util/StructureUtil.java +++ b/src/main/java/org/openepics/names/util/StructureUtil.java @@ -27,7 +27,6 @@ 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.Structure; import org.openepics.names.repository.model.Subsystem; import org.openepics.names.repository.model.System; import org.openepics.names.repository.model.SystemGroup; @@ -278,24 +277,6 @@ public class StructureUtil { // -------------------------------------------------- - /** - * Highly specialized method to find out kind of structure command (create, update, delete). - * Intended to be used for services purposes, including notification, in approve, cancel, reject operations. - * - * @param previous list of previous structures - * @param structure structure - * @return structure command - */ - public static StructureCommand getStructureCommandCUD(List<?> previous, Structure structure) { - if (previous == null || previous.isEmpty()) { - return StructureCommand.CREATE; - } else if (structure != null && Boolean.TRUE.equals(structure.isDeleted())) { - return StructureCommand.DELETE; - } else { - return StructureCommand.UPDATE; - } - } - protected static List<UUID> listSystemGroup2Uuid(List<SystemGroup> systemGroups) { final List<UUID> listUuid = Lists.newArrayList(); for (SystemGroup systemGroup : systemGroups) { diff --git a/src/main/java/org/openepics/names/util/TextUtil.java b/src/main/java/org/openepics/names/util/TextUtil.java index 4ea9b985..ef8a8e28 100644 --- a/src/main/java/org/openepics/names/util/TextUtil.java +++ b/src/main/java/org/openepics/names/util/TextUtil.java @@ -160,9 +160,6 @@ public class TextUtil { public static final String READ_STRUCTURES_MNEMONIC_PATH = "Read structures mnemonic path"; public static final String EXISTS_STRUCTURE = "Exists structure"; public static final String IS_VALID_TO_CREATE_STRUCTURE = "Is valid to create structure"; - public static final String APPROVE_STRUCTURE = "Approve structure"; - public static final String CANCEL_STRUCTURE = "Cancel structure"; - public static final String REJECT_STRUCTURE = "Reject structure"; // process variable name property validation // . character to be present diff --git a/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java b/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java index cc35e6c0..1f3836c8 100644 --- a/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java +++ b/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java @@ -39,10 +39,6 @@ import org.openepics.names.rest.beans.element.NameElementCommand; public class ValidateNameElementUtil { // note - // handling of system structure, device structure - // parent system structure uuid (system group, system, subsystem) - // parent device structure uuid (device type) - // // NameElement // uuid, // systemGroup, system, subsystem, deviceType, systemStructure, deviceStructure, @@ -131,11 +127,6 @@ public class ValidateNameElementUtil { // delete - uuid // // create, update - optional - parentDeviceStructure, index - // - // logic - // update, delete - // create, update - // create, update, delete if (ValidateUtil.isAnyNull(nameElementCommand, nameCommand)) { return; @@ -147,6 +138,15 @@ public class ValidateNameElementUtil { String index = nameElementCommand.getIndex(); String description = nameElementCommand.getDescription(); + // validate input + // update, delete + // uuid + // create, update + // parentSystemStructure + // parentDeviceStructure + // index + // description + if (ValidateUtil.isAnyEqual(nameCommand, NameCommand.UPDATE, NameCommand.DELETE)) { ValidateUtil.validateInputUuid(uuid != null ? uuid.toString() : null); } @@ -243,9 +243,14 @@ public class ValidateNameElementUtil { UUID parentDevicestructure = nameElementCommand.getParentDeviceStructure(); String index = nameElementCommand.getIndex(); - // name - // update, delete - uuid available, not deleted - // retrieve for uuid and check + // validate data + // update, delete + // uuid available, not deleted + // create, update + // parentSystemstructure - systemgroup, system, subsystem + // parentDevicestructure - devicetype + // index - index, name + if (ValidateUtil.isAnyEqual(nameCommand, NameCommand.UPDATE, NameCommand.DELETE)) { List<Name> names = nameRepository.readNames(false, uuid.toString(), null, null, null, null, null, null, null); ExceptionUtil.validateConditionDataNotFoundException(ValidateUtil.isSize(names, 1), @@ -328,7 +333,7 @@ public class ValidateNameElementUtil { if (NameCommand.CREATE.equals(nameCommand)) { condition = ValidateUtil.isNullOrEmpty(names); } else { - // NameCommand.UPDATE.equals(nameCommand) + // NameCommand.UPDATE condition = ValidateUtil.isNullOrEmpty(names) || names.size() == 1 && names.get(0).getUuid().equals(uuid); } ExceptionUtil.validateConditionDataConflictException(condition, diff --git a/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java b/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java index 3bcea2a6..dd45568d 100644 --- a/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java +++ b/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java @@ -22,10 +22,7 @@ import java.util.UUID; import org.apache.commons.lang3.StringUtils; import org.openepics.names.exception.DataConflictException; -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.Subsystem; import org.openepics.names.repository.model.System; import org.openepics.names.repository.model.SystemGroup; import org.openepics.names.rest.beans.FieldStructure; @@ -43,10 +40,6 @@ import com.google.common.collect.Lists; public class ValidateStructureElementUtil { // note - // handling of system structure, device structure - // parent system structure uuid (system group, system, subsystem) - // parent device structure uuid (device type) - // // StructureElement // type, uuid, parent, // mnemonic, ordering, description, @@ -58,9 +51,6 @@ public class ValidateStructureElementUtil { // create - type, parent, mnemonic, ordering, description // update - uuid, type, parent, mnemonic, ordering, description // delete - uuid, type - // approve - uuid, type - // cancel - uuid, type - // reject - uuid, type /** * This class is not to be instantiated. @@ -160,33 +150,6 @@ public class ValidateStructureElementUtil { validateStructureElementInput(structureElementCommand, namingConvention, StructureCommand.DELETE); } - /** - * Validate structure element command parameters (input) for approve. - * - * @param structureElementCommand structure element command - */ - public static void validateStructureElementInputApprove(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention) { - validateStructureElementInput(structureElementCommand, namingConvention, StructureCommand.APPROVE); - } - - /** - * Validate structure element command parameters (input) for cancel. - * - * @param structureElementCommand structure element command - */ - public static void validateStructureElementInputCancel(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention) { - validateStructureElementInput(structureElementCommand, namingConvention, StructureCommand.CANCEL); - } - - /** - * Validate structure element command parameters (input) for reject. - * - * @param structureElementCommand structure element command - */ - public static void validateStructureElementInputReject(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention) { - validateStructureElementInput(structureElementCommand, namingConvention, StructureCommand.REJECT); - } - /** * Validate structure element command parameters (input). * @@ -198,16 +161,8 @@ public class ValidateStructureElementUtil { // create - type, parent, mnemonic, ordering, description // update - uuid, type, parent, mnemonic, ordering, description // delete - uuid, type - // approve - uuid, type - // cancel - uuid, type - // reject - uuid, type // // create, update - optional - parent, mnemonic - // - // logic - // update, delete, approve, cancel, reject - // create, update - // create, update, delete, approve, cancel, reject if (ValidateUtil.isAnyNull(structureElementCommand, namingConvention, structureCommand)) { return; @@ -219,7 +174,17 @@ public class ValidateStructureElementUtil { String mnemonic = structureElementCommand.getMnemonic(); String description = structureElementCommand.getDescription(); - if (ValidateUtil.isAnyEqual(structureCommand, StructureCommand.UPDATE, StructureCommand.DELETE, StructureCommand.APPROVE, StructureCommand.CANCEL, StructureCommand.REJECT)) { + // validate input + // update, delete + // uuid + // all + // type + // create. update + // parent + // mnemonic + // description + + if (ValidateUtil.isAnyEqual(structureCommand, StructureCommand.UPDATE, StructureCommand.DELETE)) { ValidateUtil.validateInputUuid(uuid != null ? uuid.toString() : null); } @@ -284,45 +249,6 @@ public class ValidateStructureElementUtil { validateStructureElementDataRelativeOtherData(structureElementCommand, namingConvention, holderRepositories, holderStructures, StructureCommand.DELETE); } - /** - * Validate structure element command data for approve. - * - * @param structureElementCommand structure element command - * @param namingConvention naming convention - * @param holderRepositories holder repositories - * @param holderStructures holder of system and device structure content - */ - public static void validateStructureElementDataApprove(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderStructures holderStructures) { - validateStructureElementDataInItself(structureElementCommand, holderRepositories, StructureCommand.APPROVE); - validateStructureElementDataRelativeOtherData(structureElementCommand, namingConvention, holderRepositories, holderStructures, StructureCommand.APPROVE); - } - - /** - * Validate structure element command data for cancel. - * - * @param structureElementCommand structure element command - * @param namingConvention naming convention - * @param holderRepositories holder repositories - * @param holderStructures holder of system and device structure content - */ - public static void validateStructureElementDataCancel(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderStructures holderStructures) { - validateStructureElementDataInItself(structureElementCommand, holderRepositories, StructureCommand.CANCEL); - validateStructureElementDataRelativeOtherData(structureElementCommand, namingConvention, holderRepositories, holderStructures, StructureCommand.CANCEL); - } - - /** - * Validate structure element command data for reject. - * - * @param structureElementCommand structure element command - * @param namingConvention naming convention - * @param holderRepositories holder repositories - * @param holderStructures holder of system and device structure content - */ - public static void validateStructureElementDataReject(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderStructures holderStructures) { - validateStructureElementDataInItself(structureElementCommand, holderRepositories, StructureCommand.REJECT); - validateStructureElementDataRelativeOtherData(structureElementCommand, namingConvention, holderRepositories, holderStructures, StructureCommand.REJECT); - } - /** * Validate structure element command data in itself. * @@ -335,19 +261,14 @@ public class ValidateStructureElementUtil { // create - type, parent, mnemonic, ordering, description // update - uuid, type, parent, mnemonic, ordering, description // delete - uuid, type - // approve - uuid, type - // cancel - uuid, type - // reject - uuid, type // // create, update - optional - parent, mnemonic // // check structure element data in itself // update, delete // definitely (not possibly) - // no pending entry waiting to be approved, cancelled, rejected (pending with higher id than currently approved) + // no pending entry waiting to be handled (pending with higher id than currently approved) // uuid - approved, latest, not deleted - list size 1 - // approve, reject, cancel - // uuid - pending, latest, not deleted - list size 1 if (ValidateUtil.isAnyNull(structureElementCommand, holderRepositories, structureCommand)) { return; @@ -365,10 +286,9 @@ public class ValidateStructureElementUtil { // systemgroup, discipline // not have parent // update, delete + // entry found // entry not pending // entry approved and not deleted - // approve, cancel, reject - // entry pending if (ValidateUtil.isAnyEqual(type, Type.SYSTEMGROUP, Type.DISCIPLINE) && parent != null) { throw ExceptionUtil.createDataNotCorrectException(TextUtil.PARENT_IS_NOT_CORRECT, details, field); @@ -379,11 +299,6 @@ public class ValidateStructureElementUtil { holderRepositories, message, details, field); validateStructuresValidSize1(uuid, type, Status.APPROVED, Boolean.FALSE, holderRepositories, message, details, field); - } else if (ValidateUtil.isAnyEqual(structureCommand, StructureCommand.APPROVE, StructureCommand.CANCEL, StructureCommand.REJECT)) { - validateStructuresFound(uuid, type, - holderRepositories, message, details, field); - validateStructuresValidSize1(uuid, type, Status.PENDING, null, - holderRepositories, message, details, field); } } @@ -434,9 +349,6 @@ public class ValidateStructureElementUtil { // create - type, parent, mnemonic, ordering, description // update - uuid, type, parent, mnemonic, ordering, description // delete - uuid, type - // approve - uuid, type - // cancel - uuid, type - // reject - uuid, type // // create, update - optional - parent, mnemonic // @@ -469,8 +381,9 @@ public class ValidateStructureElementUtil { // validate data relative other data // create, update - // entry (uuid,) status, mnemonic - // entry (uuid,) status, mnemonic equivalence + // entry parent + // entry mnemonic + // entry mnemonic equivalence // approve // entry uuid, status @@ -535,6 +448,7 @@ public class ValidateStructureElementUtil { // note rules for mnemonic for device group // mnemonic + // fits logic here but really validateStructureElementDataInItself message = TextUtil.DEVICEGROUP_IS_NOT_CORRECT; ExceptionUtil.validateConditionDataConflictException(StringUtils.isEmpty(mnemonic), message, details, field); } else if (Type.DEVICETYPE.equals(type)) { @@ -552,89 +466,6 @@ public class ValidateStructureElementUtil { validateStructuresStatusMnemonicequivalence(uuid, type, parent, mnemonic, namingConvention, holderRepositories, structureCommand, message, details, field); } - } else if (StructureCommand.APPROVE.equals(structureCommand)) { - // possibly additional checks to ensure (status, mnemonic) and (status, mnemonic equivalence) - // however that would be duplicate checks as already checked at time of create, update - - if (Type.SYSTEMGROUP.equals(type)) { - // status, uuid - message = TextUtil.SYSTEMGROUP_IS_NOT_CORRECT; - validateStructuresFound(uuid, type, - holderRepositories, message, details, field); - validateStructuresValidSize1(uuid, type, Status.PENDING, null, - holderRepositories, message, details, field); - } else if (Type.SYSTEM.equals(type)) { - // status, uuid - message = TextUtil.SYSTEM_IS_NOT_CORRECT; - validateStructuresFound(uuid, type, - holderRepositories, message, details, field); - validateStructuresValidSize1(uuid, type, Status.PENDING, null, - holderRepositories, message, details, field); - - List<System> systems = holderRepositories.systemRepository().readSystems(Status.PENDING, null, uuid.toString(), null, null, null, null, null, null); - - // status, parent - message = TextUtil.SYSTEMGROUP_IS_NOT_CORRECT; - validateStructuresFound(systems.get(0).getParentUuid(), Type.SYSTEMGROUP, - holderRepositories, message, details, field); - validateStructuresValidSize1(systems.get(0).getParentUuid(), Type.SYSTEMGROUP, Status.APPROVED, false, - holderRepositories, message, details, field); - } else if (Type.SUBSYSTEM.equals(type)) { - // status, uuid - message = TextUtil.SUBSYSTEM_IS_NOT_CORRECT; - validateStructuresFound(uuid, type, - holderRepositories, message, details, field); - validateStructuresValidSize1(uuid, type, Status.PENDING, null, - holderRepositories, message, details, field); - - List<Subsystem> subsystems = holderRepositories.subsystemRepository().readSubsystems(Status.PENDING, null, uuid.toString(), null, null, null, null, null, null); - - // status, parent - message = TextUtil.SYSTEM_IS_NOT_CORRECT; - validateStructuresFound(subsystems.get(0).getParentUuid(), Type.SYSTEM, - holderRepositories, message, details, field); - validateStructuresValidSize1(subsystems.get(0).getParentUuid(), Type.SYSTEM, Status.APPROVED, false, - holderRepositories, message, details, field); - } else if (Type.DISCIPLINE.equals(type)) { - // status, uuid - message = TextUtil.DISCIPLINE_IS_NOT_CORRECT; - validateStructuresFound(uuid, type, - holderRepositories, message, details, field); - validateStructuresValidSize1(uuid, type, Status.PENDING, null, - holderRepositories, message, details, field); - } else if (Type.DEVICEGROUP.equals(type)) { - // status, uuid - message = TextUtil.DEVICEGROUP_IS_NOT_CORRECT; - validateStructuresFound(uuid, type, - holderRepositories, message, details, field); - validateStructuresValidSize1(uuid, type, Status.PENDING, null, - holderRepositories, message, details, field); - - List<DeviceGroup> deviceGroups = holderRepositories.deviceGroupRepository().readDeviceGroups(Status.PENDING, null, uuid.toString(), null, null, null, null, null, null); - - // status, parent - message = TextUtil.DISCIPLINE_IS_NOT_CORRECT; - validateStructuresFound(deviceGroups.get(0).getParentUuid(), Type.DISCIPLINE, - holderRepositories, message, details, field); - validateStructuresValidSize1(deviceGroups.get(0).getParentUuid(), Type.DISCIPLINE, Status.APPROVED, false, - holderRepositories, message, details, field); - } else if (Type.DEVICETYPE.equals(type)) { - // status, uuid - message = TextUtil.DEVICETYPE_IS_NOT_CORRECT; - validateStructuresFound(uuid, type, - holderRepositories, message, details, field); - validateStructuresValidSize1(uuid, type, Status.PENDING, null, - holderRepositories, message, details, field); - - List<DeviceType> deviceTypes = holderRepositories.deviceTypeRepository().readDeviceTypes(Status.PENDING, null, uuid.toString(), null, null, null, null, null, null); - - // status, parent - message = TextUtil.DISCIPLINE_IS_NOT_CORRECT; - validateStructuresFound(deviceTypes.get(0).getParentUuid(), Type.DEVICEGROUP, - holderRepositories, message, details, field); - validateStructuresValidSize1(deviceTypes.get(0).getParentUuid(), Type.DEVICEGROUP, Status.APPROVED, false, - holderRepositories, message, details, field); - } } } diff --git a/src/main/java/org/openepics/names/util/notification/NotificationStructure.java b/src/main/java/org/openepics/names/util/notification/NotificationStructure.java index a3357a72..33ea0035 100644 --- a/src/main/java/org/openepics/names/util/notification/NotificationStructure.java +++ b/src/main/java/org/openepics/names/util/notification/NotificationStructure.java @@ -31,11 +31,10 @@ import org.openepics.names.util.StructureCommand; */ public class NotificationStructure { - // cud - create update delete - // acr - approve cancel reject + // note + // cud - create update delete private StructureCommand structureCommandCUD; - private StructureCommand structureCommandACR; private UUID uuid; private Type type; private String oldMnemonic; @@ -51,7 +50,6 @@ public class NotificationStructure { * Public constructor. * * @param structureCommandCUD structure command (create update delete) - * @param structureCommandACR structure command (approve cancel reject) * @param type type * @param uuid uuid * @param oldMnemonic old mnemonic @@ -63,14 +61,13 @@ public class NotificationStructure { * @param when when * @param who who */ - public NotificationStructure(StructureCommand structureCommandCUD, StructureCommand structureCommandACR, + public NotificationStructure(StructureCommand structureCommandCUD, Type type, UUID uuid, String oldMnemonic, String oldMnemonicpath, String oldDescription, String newMnemonic, String newMnemonicpath, String newDescription, Date when, String who) { super(); this.structureCommandCUD = structureCommandCUD; - this.structureCommandACR = structureCommandACR; this.type = type; this.uuid = uuid; this.oldMnemonic = oldMnemonic; @@ -86,9 +83,6 @@ public class NotificationStructure { public StructureCommand getStructureCommandCUD() { return structureCommandCUD; } - public StructureCommand getStructureCommandACR() { - return structureCommandACR; - } public Type getType() { return type; } @@ -125,7 +119,6 @@ public class NotificationStructure { StringBuilder sb = new StringBuilder(); sb.append("{"); sb.append("\"structureCommandCUD\": " + getStructureCommandCUD()); - sb.append(", \"structureCommandACR\": " + getStructureCommandACR()); sb.append(", \"uuid\": " + getUuid()); sb.append(", \"type\": " + getType()); sb.append(", \"oldMnemonic\": " + getOldMnemonic()); 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 b3fdad7a..df7d8f4c 100644 --- a/src/main/java/org/openepics/names/util/notification/NotificationUtil.java +++ b/src/main/java/org/openepics/names/util/notification/NotificationUtil.java @@ -60,24 +60,6 @@ public class NotificationUtil { throw new IllegalStateException("Utility class"); } - /** - * Highly specialized method to find out kind of structure command (create, update, delete) for notification purposes. - * Intended to be used for notification purposes in approve, cancel, reject operations. - * - * @param previous list of previous structures - * @param structure structure - * @return structure command - */ - public static StructureCommand getStructureCommandCUD(List<?> previous, Structure structure) { - if (previous == null || previous.isEmpty()) { - return StructureCommand.CREATE; - } else if (structure != null && Boolean.TRUE.equals(structure.isDeleted())) { - return StructureCommand.DELETE; - } else { - return StructureCommand.UPDATE; - } - } - /** * Prepare notification and add to list of notifications if notification is available. * @@ -164,19 +146,18 @@ public class NotificationUtil { * @param notifications list of notifications * @param type type * @param structureCommandCUD structure command (create update delete) - * @param structureCommandACR structure command (approve cancel reject) * @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, StructureCommand structureCommandACR, + Type type, StructureCommand structureCommandCUD, Structure previous, Structure structure, HolderStructures holderStructures) { if (notifications == null) { return; } - NotificationStructure notification = NotificationUtil.prepareNotification(type, structureCommandCUD, structureCommandACR, previous, structure, holderStructures); + NotificationStructure notification = NotificationUtil.prepareNotification(type, structureCommandCUD, previous, structure, holderStructures); if (notification != null) { notifications.add(notification); } @@ -188,18 +169,16 @@ public class NotificationUtil { * * @param type type * @param structureCommandCUD structure command (create update delete) - * @param structureCommandACR structure command (approve cancel reject) * @param previous previous (structure) * @param structure structure * @param holderStructures holder of system and device structure content * @return notification */ - public static NotificationStructure prepareNotification(Type type, StructureCommand structureCommandCUD, StructureCommand structureCommandACR, + public static NotificationStructure prepareNotification(Type type, StructureCommand structureCommandCUD, Structure previous, Structure structure, HolderStructures 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)); - LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.PREPARE_NOTIFICATION, "structureCommandACR", structureCommandACR)); LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.PREPARE_NOTIFICATION, "previous", previous)); LOGGER.log(Level.FINER, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.PREPARE_NOTIFICATION, "structure", structure)); } @@ -207,12 +186,6 @@ public class NotificationUtil { if (ValidateUtil.isAnyNull(holderStructures, type, structureCommandCUD, structure)) { return null; } - if (ValidateUtil.isAnyEqual(structureCommandCUD, StructureCommand.APPROVE, StructureCommand.CANCEL, StructureCommand.REJECT)) { - return null; - } - if (ValidateUtil.isAnyEqual(structureCommandACR, StructureCommand.CREATE, StructureCommand.UPDATE, StructureCommand.DELETE)) { - return null; - } if (ValidateUtil.isAnyEqual(structureCommandCUD, StructureCommand.UPDATE) && previous == null) { return null; } @@ -230,17 +203,8 @@ public class NotificationUtil { // to be able to notify about change // ------------------------------------------------ // create structure - // create + approve structure - // create + cancel structure - // create + reject structure // update previous + structure - // update + approve previous + structure - // update + cancel previous + structure - // update + reject previous + structure // delete structure - // delete + approve structure - // delete + cancel structure - // delete + reject structure // support fields // mnemonic // mnemonic path - to support hierarchy @@ -253,16 +217,8 @@ public class NotificationUtil { String newMnemonicpath = EMPTY; String newDescription = EMPTY; - Date when = null; - String who = EMPTY; - - if (structureCommandACR == null) { - when = structure.getRequested(); - who = structure.getRequestedBy(); - } else { - when = structure.getProcessed(); - who = structure.getProcessedBy(); - } + Date when = structure.getProcessed(); + String who = structure.getProcessedBy(); who = StringUtils.stripToEmpty(who); @@ -305,7 +261,6 @@ public class NotificationUtil { return new NotificationStructure( structureCommandCUD, - structureCommandACR, type, structure.getUuid(), oldMnemonic, diff --git a/src/main/resources/static/images/naming_backend_data_access.png b/src/main/resources/static/images/naming_backend_data_access.png index 0c4a8bd88f1e40a718ab5e423b5d3db9024552f9..e012d8fc279313e56a25fb08b9b6c55c49c1e4f2 100644 GIT binary patch literal 26225 zcmb@uWmufswl#=^1PQ?*xVsbF-QC^Y-8DdPcXxLWPH=a3cXy|Y?47;)-gElv{?R{x zdTLd@%chPwCPC7YLeP+CkU&5{&?3V8vOqu|Bmu8O!9N0i>&hMD0RBK&3#-@x0YSmP z{{T;}cs>IG;Q)#7^T<1E9<P9@$0=cdI=A!vLMqdQ^jW?V%6DXzrAIM!Wu+pe5w*s_ zvCq(=eriD@FgP0rX9b7Eq4B0=Z@nBeH}8StX?cwC)J4*LtgFl8_3lH&)=xn{SdYg} zU|?`=AP`t@pbt1e|GtbA@fHFlHo1N~n?U)5`rkeQ<TD1sj?4@<^){19Eh0(7js>In zzn}8{z|292@x&nb_Q5(d=pX-clE3ByL*!o1^_CX?`0wn07Q#J)02n*GVNw13Uj~7} zV3|pA5TkkibNSLYA7Gh_Ts^{(`TolwH}D5ZNN|7s|FT?p4!~HkW=2lWe;GuS2J(pk z;l)M$A4m1qVilwSW5siO#<c%s@c+Lp`V8WA*kBAe2fa>W6&7KQpXC})?`2G6Z2i7J zpKOS2XRi_a3QE;-=91F)^Etxee)zK$c^02xp5QQxI4Kz*<g)wg%?oCqV96$vE=$cR zn3k_kGNYshl4GyvpZ;tikJ!6I<Ul2d;2!~q^aYC8|A~3ehC@G%M^8UZK~FHh{I<~Z z!>l<Z0vmJYU~Ym~S8!4q0>=K&tg&H0AjAe+;j*}YuC>Dmxb25$a!`@U&!Qre#G)dV z!aTkZrkD6*mAXuY&bX^SEB6HPKySkMz7+;#u9gu-bdNA&1&1`mt6mQd6fJN^1Urn3 zFn$pihsxV+Ne3x(6H;PGh2o&$<j?2o4&?bIsawt%#CsmjEkzsJMlo!vhpMCu7_1MY z9O$gVKQcd;^S^Hh47r~jgr>ml^l+(41MZlL#>ihJutUWEfJ`3oZ-ww7BkVx1<;9JH zLp$%kho!nwT3u}4s}CFS9S(maU@q_gA7^3WaT)mqY?(6G5?hZuxmR5BDQwkI)}wkb zFOwjk)|uLO#bPa8g--i4JY=9dH1O2)ncjLf-0ikRmqU*$(SJ>Cq4RLK{zn3T_fOHr z?5g);3+BUVceAvK^<f{3018W-peAigWh)8Hjmt>RCi-)(+?lrE`WjpOJF%<hS6;!) zlIIV5o6I|VPXW-SdAjFqcUgf0=G}qY4^lUWC3S(yThwN+ENR114|B+-dq>Y_2Zj*D z8wK4$hrL7twMb`PtOYXL)d`c1n`~1l%0={nYR|lrJQr=(J9GhpqNW$h81=U5O2%Lx zaHKCm-d5TPTUt&VRgl+uH!BI(XbF`;LK48mXuR~H|JBsU3Lqi)FLx(-UcBc#QSwB{ zq*tHOTHj9hrj8h47#BrQm^X4?If;O?KmDjN2ZJ#*7>E&~FXJ5@686ws?n;xqQo>Ae znqw+Y4?MqTHwj*Eofg%=+xoCssof=<-Z;Lf{xzRjLtBG<QcyVhvJ4OYw;khV1P<SJ z7z0z<f$xw{8=T27hW;bYNRr+{wQiPexAzZr1$$!|OzyAy+C$i-3LKP=<t;xQ1WRTf z*`r^JMA$p!4&rO6HBY(QU$V{ONi=OWC!@|>!C&f?p-&q&w4DPesZYTKXTrmSi{TtS z;>9q5ANofP55B#oEd)q{Mo)RTlVPBey&J8}P%wQ@HS^1+y?C1&X?I#E9BbL(%>FO` zSX@L!?o5kVb3HS3Z8NhYE44efikW6&aimk!35&sl{j6YtkN)+y8;q$9+Y97XU0x3b zSGwQ3B;>aFMV_DAR^(LBZ)B#Hte6zGCbS{?Lfmerais<6m0gkarkMGt_>sTjeN#xK zzVR^FB_~|;FQcA(w}^#@AP*~cB~4NWW?Ue|ab-diSbtQUti{{#s7LB{m`3?(?w)q& z_R|1b^+$*!=u7kkyp2&GmykCn7J`xV7-Fbrsj<_=fr*`o?@L7-e)-6>y_a*BY);u~ z!j1Ag`*jKy`PdOQOxrzTo%s9=acFnWQ+2&5>!2lG8P~hM^E3>b=@Y$LlB1#9SFr~) zh@q@S=St9M03#8b&+U1)JXs1gNCpN>@kI@?p9JKe^U{a!cd}7#s-sEREvjls+FfHk znO(V(+_PU`soqzcnfq)}x1y@Wp{k%jUS_y5YL$<9ftA*Y93LkDNj>5O5ElssNxrd7 zk1gPmw-(HsUQ08jt**nx*&u{BNlaKLH-jtAa0aX*@{-`|V|7qN%r!R0+N#Hpvo~R^ zj7G_Qir?qdud?3W(|Famm(Iaxnwjs)-MhI2P!L`%Npl-zMlMBhwO>E1MQu%?BLb*# z$n2?eF8|TmfBg}nh&PxdjY5I2Ju}2V+xy2C`xN5<jIYAJK`q>W8N`DC$Poc!>W6=| z?T>ZkR)7UKO|omcMezSJ7zJ>Qr10pH-~ZDUXOe*f9*X3OYT@@^28BVuQxSupiT|6o zMf%{UkQHT&|Cgd=wm?{8+zG_x$`;YEvNj2di-+pCx;Ba0+E(Y|MI|SzCKneM7rNdY zRxy~(hRVvwz$G*=D&#-*>(jjkz+e|E<TGYb{&ikH!8n;YIWhfP7j4g({Nz$znnV)o z6EK#?z6l>aL~M(BR1`|Z>7_~jo;dM?Eo3N3HF6Mtu~a&{iS1jJ(2$Vk>WF6RWjPA! z^C-!KM=8+&Zf3MxT<!JeXz>xsPPCbdyHcK3R_fH$RQ41mt5<0`xo=5%eQReeY;+B; zBBG*`i!Cl!`qb3aeR_T2H`Mt<zzcsaNt)Xy0-MX!%*2E+F5&*e%W$S&hX^nm%)sBF zls{bmv$o`0%HGDtg!9|Lx30HF*OR4=gmgu^AmwubPc&9P`4Y*%dSKi^Q$LcT=LCMy z_BGf7xM)PF{=T1573QC`aAN1m_x6`&>Rx(ISDG`dR+?@!vZP5Usj=B1x0EJLYCcKM z@269$)r+gv7><<Q-#dHwaN~TVrG*$9smMJFc>de#Dkyk+xMXEzMagP%wgawNp@P2_ z{kLF=s(W)Ja$TGoSKA(?yCjUI9mc|=j0ie;vdSAvcNcFIB#2P*nl4TzAVJ3#BDZK# zM8YHR3(EuH!dXE;T;px05#ttNbM0m2<)lnED~-u@t*qQNn9ZFU?&?%1c<=|~Sw}}l zXIHu1oyw3am8YU0At}V5IvmZObVd`3Ay>(;H#!I_+>zh=2gm-obV`8a_ndM~WBp#> zpfpZH5!Nw}`%5^-RD<~nCn@W?L|7<U^}|m?2XLEXVPOvx-r*y-&NthR0VSq@m?@lK zY}^V<xJ`$&kFx1-cnJpjX1bPeoSwt`7F)exOXU?6*jh8#&j<FTaiE{R{G`qo($~+0 z`)2Fl&^ic0GCDdcRnj!3q!rTtx3Wr$yoZwnm_derxtIeeeVEkl-d;tmO4}9c07nb# z<n-8klkl)CLR`ux*vV29T-V+_t%2M-KXw+O{ueF?2#++Gw&JEA#?yh=j$^4Tc4c{a z2GW*s#rr<K%OGmHRmv`JuP<E-fzg41fuWK*z%fYVio;gRKdS;dbFv%Suc;Yh|5oS1 zR1ga5?<axe&TG{$KN?#Z>lHYA<SY`a&uvWiN=^7%xIP(Me#3A$P-gABxEjnUb>W<& z<dDAE96Oy_oMUh)&mj{>A~6ZPp+pCBO8aTi*X7(u+Be`r+u+EsWXDvVlUh!g$$VyZ zlrghAMAydXl?nq4F7FOp&)D1j5aRi*zA}8i)pDosdOLzF*M}Up<`qYOL4mg^lsY97 zB4=h2Ki8KH7iw%01v-=dOoCsxicD=NN3m?tsz5TWDGJP;%#(V14Fs8Hq0w&dE5PMB z0n}>c*LNZc?aTX%t$d|&^#>xmae}wy$UjEkr<edB5P7E-oD(yU5^7wYH=<H-S>(`) z)A(t3+BykItquI64l0g@VMf-a67IPX6C;>if~K13tEEGcE1!IKu<0u-Q`ubmR+yDo zrC+Y1Sk7_dg#D6y$y`pHqiUu<X-XPw=c%^rC{4fewc<*%fX#oeIC45p(_C3*bvzo( zL&!Za=?tA96r)0*(_zDPlo(X%8o>a6*ihp2Y!eAk4$V|MxQJ!6SfuY6TqLr-Ih?U0 zfDe*=D7L<sCUWZ_U}s<U0~5#Mbe~TJ6Hlf$xy*GI<)!-L666&DIR}~9m|?9L_i-O3 z2P=(Enf>!3irwS_j4g|7E6hy#WaFxdo<$r#p#o-<%al)giB+HD2snM<s4?_J(ZM&{ zxe1kT&5Rr>bLw2uW5s&wonFt6oQv${{A|QeeMFB8x`%gbk8>gNk{Mu7`c+P!XB!(< z4Rb2s%8JWlbXR{?>}^8*vfK=XqY`=EbL)jZ*0$Qu%PJ+1ouQSoKdreR&a*DkxSgOz zorwb@U28*{FaELgMn%1U^4uJkC8^KgF?H{{CfVF{*PX>f{?Qb3`JrqlYNG(*2bab+ zJzvADeTEvmuJELk3CuL(1$vF%T<R}}>-2s5RhMsg8<i&14z1dER|j3nv#2|SZ&^>R z$(G}lcG)_|Z+UP^rc_RLt5*4Cmzn}Y1PeuHm*12+zhl%pj4BE)>jb2mHvI~|YU>xf zo=eyn3QA@_E&uhnVNt(;X1uH2B?yZ&Ss<&`WsLD*P!gwN!nvYFYp%{}cGjr(XVeit zL{%{=zPKm5RNxaCuj#me=Fn9ZUxJ2>+PMk6I5|^vbaFAR)9JE8SZZp<O1oFPflIlo z&S5VI&nFlxjNSG1^B-X}08LdaQ(bAc*%EX^rpZ!c;?kY6v2{brr^xmH+lyw}z6X7c zPYJ>dZ0^r4IZNO7XSM<?oCz)C^z8D+6qI1lT2FEx_2a~NM823@Xnt&7YU8NU?^wn} zi3vj8fM6l~<#u}AhVs&c=}dE^5Lt0j9>0pB_~qGgj+%68c#Okiimu<z24SmxkByS+ z=~r0)b6msiS)+yCB~DEaC&Z`;Hi-SGgtVrewfE9419hH-z7^wASh~HP#mP*>9DhNc z8R27k=?>Mxi%s`;DDr(xSS`;jQkwYbl9D|Hht~#2H!OiVlqo_aq?2*u`MaC>EYRCG z_XE?nq&kH&HtGxYgmcH%))4rhEEO9vQHbggH>?{gw|+Or{vtSyuzSDLouoe8D}{yW z_Osg)_&c<|)|_PicFx0bCLQ0Fil+ySwe(h27B$o=7cEYf*s+J9%j$tZgq;n!0cs_B z7?2%J?=U)*dYz?+aLG|ktBmC`f#MVdI)k$UIHF$1owipMvO=*rKFs>>k#A}F%}?|= zs}-8F21_V42W;lCf-Y9#mOhlKPJ~VSW`Z5vD=RM@%}!^fDjnO8H%FMKtF24PCsgvQ zOFtg}gf`M`??IB*i_CM~hBNz%C3%I_K9Zw(kKag%rdZ%8ia+>K-dH2tbl=hX{%g4F zU=%O()%F*@<~Ng=d-Zz?VZ#?vj)>_4rrqx$z+8#v*V~kf)6LYvRs?5U<r6v*yt%wF ziZYaCJ+Hv88;l1PUuISxI@)Ho74#CA7^NZcc{ze|o}y#6j#{so-G@sm2o8LEg(O7^ z%X402!p35XzcL0Txs%Ovn0rYvS?~%)c-a^aG?zb^Jyeu|zG)uoIts3p$|Rb#UwBb2 z+q?I+uFJE9D^L~q_U#$prb-q-+zGOxuguQKz9g=JQG2-L&bATnj(924ds^7Zr2%2q zFlN=%zj1nOf%lb(ChY+s<rdhIXuTdrYG^Xbq9JZZa~AIH%0=o%eFT9eLG{_+-$#R1 zZ}YgAx`q(jfv3%|Pvh>-ZigsZs@I34C{vd>Kul-pgFrn;*oc*PF@KaCQY<@d_jtMu zk?~IQMaolX{T`q5RYw-!9p)&s;bCF5yFiHM$~BJqL5NP48ro&XTO$9>mh_SP&sgA9 z<9NK4G-l0i7UMM5DCbgt&Nz{IFpnV{uM5BDjdIO1Z&TTZVf|<fW`Ze>>P}NaWMxEA zHgA$=8+J2hUwg-)e)N*=mwzrU#%rtB3C=<jdF9XLl~)jM5+_3ve)bRt;fMKbv;c`U zjyq0o&!+{_e7yj}zrqW`N8vJxpjClU)MAuT@&H$o&%rJ<yi~c{J(U<wuN!R#<hMII zW%lYh=+n2=rS}|ad7QknI+cFcdDq>7rD3YZX~nTO8E+h}h||Z{ud<-piZBVy0yP;o z38b|Jq+6tGM*3MMSE>Gq(fEG7zC8s>M3m>UKbgqvVba}vKR=5->x%!Z^AWL4lNl6n z_@NzJMq??9^u`$Hm!mU}sLfl$%;LfosP@`wR1N8!`kGji)n!pjQ>dZl*AOd=4@Ch1 zH8C|cdjQAl8XIu9qwuLweU!^)(@$-s$)Q!HqkC;_EgnpK-W~&)=3qPvbR_}xA1DZx zqzM4y2sD&P8(o^-2C3F8-Vm?l#q^$@Crlziy@km1KiAKH{(nf0v%VR<vhB;Chh~c8 zXKXW0`<}};5uSu3uvO}uytQt(<l?X0NW&!twJlxh^XxaH*SCjRG-j!;%jB3?U{cj; zJf6=@v(M`2>_FC1#-KT2xf={lmWfF&yDV*t_*i}PH&10W_6?}@u*AfJg)}K8iSV7F z9a=(VL)t;>CRNw09aR}DxH`D1&idvM*dd;pBIVz-FRcPD5ASpG$qRcfTVUuD>4Xki z?go?JvwhYx<+G~#EQ1Ajl2de~qpygqZ1k>Et6PR<yXVXG=3pE1mCOh6`Pfv?mq*OI ztE(EbiR>QV8l$mWec%|YwufD^SsGGFn{BYavaiA>K;k5y)V62W3p$&jwa|NXnJwa` z=ub{M#q%}e%f;1`qm+Tgw2*{V`-*&+kS`$y_346K05|Fc31r0hEa&o%t9W)d!u+jv zBq3I6BIad!0m(U<C?Y7mP1&0naWo+ZY?il<N4>ir%W5)Sk0EIRkDTycjZYEm`>_ik zcOpx7?QsmFs@S+nQ;ks#q|~$=oIILk+zv>P2E2G1-MXh&s$`di)+;2aGJ1PZWoAOk zc2<O|ZL(?to^)?^$Yx4dX%Bc|`$nYr87;QOQf-XKx$N$c(}Dzm3^G_^y`U~7J{+6V zK1H2kGe%Mm0`(3Z*HpD9-m7s~SU7<R^`~DXE*Anz#8?KcUT@Pt46&7=Pw-@^m8DtY zd%kzE)wePq3y`-gxnR=?e@*OaZwR&JdZ7p``!xfMKM@jl=KTlJ8$Rg^1#}i95pOFp z)M}fa>|H68r1GD5uk6pN#-?z36ke3=cEnBov0_MmnrbtKj~8E^_%vGx*m>n^Dh>YM z0E_{SuG_}O8Ar#v`CH~<zT{MJ18mS*EEfS*NQ%-Ni4R&-tAiCf(KzmPYmT<qcU?!L z?1yiR6pMI7bp87~VW3o3LKO?=!^4z~T2Ld+WP`RM_TCu+=9@ws@mAqCid6^;Y9hSp z>aAPR{cr|&UldqsF7}1Bc=u%~>8&@J&ri;KqhRhR)j7@#t-pKlo@0jG$n}-0K03*3 zIUpIx#M8wd6S(Ze>8%q;rN}Q5+iGfZ`kz4M1_17Wibm%(yKKl%;w9?*AY%~D4C29) z5wldu|JA(yKnkU8MF><NS$`;=GNv~awI=2xrR_>u+5RLL+qbLtgTJ`BDO<_p@kOBz zoILyG`-u{khBOgh_8(v9>_c`9QF+cBck#K+-)%qNU?e_JSJobBN-j2e#PwoHe5g+8 zlUn&4Z6U(bi{-Cr2)Dbj#0^oZSK7>9RxwmT9}x$6rN!6}<`-<Z7FRD4*Y&N%G`g4@ zM|j&APU_P%TC&r2O{TCNpIwX--Je!Hzpz~^#L3Z*u>B|xeQKM11&tA$8)W1l$x*M% z9|)n=I%+>nnQoUHKCLUP3Ja>J5@=ojg3p9~UY~*PaIxD&Ro-+9+#1lpM#i=|JJa@y zAi^$4ee}r(GL2tucI<WHc5(ej{qC&~v<A_N>!eNf+ub9bS5d6x9EG)ThU;<n&jD61 zFz7O^E1odc7fozgtQ?o;yMa^3!P^U!L19b%SR+lAEC|!QJ<A-=A7#)f2~t^)z(Ke` zKI~wZi<ZvA$Np^fW$LWyBt`Iap6Iv|Zi*5kiz5(8o`FB&9R|`l+yukF(&}1870@Be zM8@^as@ga@dJcjRadL9rhKGl10<xgvg&ILiOH1P5L<ULUe~=h3c<m#p@fD44`TE<H zDG)EVVN~Wm059+k{7Wx<P+lh}*zzKudwm{yR)GqnOZ&y-!h~CwtWcki(#8?>>et{% z(?{5Il`o!DZ30Mw<-{JZfH8GC*}Pue?*u}SDRqG16%POrQTy{nA9ljc$<iG`#@JXR zDAXEj>c2H2Tcpek)HvJpQ6T!i07Gsh#QEC2^;j+BVNGs7d(_-2HCTEXbx^^2zm%qo zJ~gI9y(J{23Qdmqwz_9Cs;FfUC38Ors6=|pW#_7bf&v8c9L-kO3eU%bf;<ZCPDj(H zWLq1mKZq?XNhy$EDx%`&gWoVlrYyL=mvy_xo6geh$>K_+7@<3zDF<#?vqG>VvKc-| zI{fOR4n|b)0Km>XdA_~edF{k|dE(33LZ+&>y3RPfK0lDNv$NA7gBq!Q9!vUWbQ6io z_hkx>NToh*jQUO2f{E_WfoBdvR>BbjEce2xP}lq9@)kbBFsB=Ea72#bqn;)gGN!qE z^t??H#f!`?b+2$5;U;I|*+oT3?q{p5isr3RsnL5V^ZmzTAVg5e6!$xT6-g*-n)jsw zoNqZAyYo350Hz@qeck8&1H9r$W4tH!Jvt$L@GgJh4E{*k&2_bJp6g)%&zU3XXP>65 zvm{G~WHlR7S(X$N6T|RyeQ;$YD=QmyXJiN*V>pt`@wl5}RbH7H<m=m&@(ymexwx=2 zH8*1;PFk#~01*`^71bj7{{gUofXTc&AgDlpuc2@fWXemmZS`!zf=$<$r~iD$T;ZDR zL?*NME?p$h18Vc^%!*B~H`IY8EoQD<0FW7(tdwgsr~I9`D=I4busI%oeY)HkdhGfE z&6c=C5(6>=9rRCKk((AuyI7Le7mw|)`M!c2|9ag(h}fl6tNl4vg$r%BUtW)VLngR0 z#7BvM2jQgx)5uO3<#jk+w7TYTw{q}Y>~MFwGHb4s3P9@W^-NSc^jBM4$QKy<?Cpc- zuO1#GZU!nSS^#*(-y00(12RiR48Xhmt2_otiW4UawtIsfz~ACxDc+VMAe>->RE=q% zY7!CRcbv>CE-v1w)$XYwq^9<yCwZd-j8I>8eseU(R(VHBN$ER}SIGh<j<|<!Et}5~ z()p*Lb*}`NWnK2KImpN>^-uBzP<arxRQ=r9iU(QU6}r%!2y=Oa;IXhQJL{oF(^1se zXJ=+^Oj8&wP61ct?=L`;61}yzXT;=qJf9{iDk@v5bE&}L9rI@f5-?!#8B(zA3R2#x zBcLZmDnRM&*zB^i@m>9c@zzgHG?)kp1#(pDOtI(bL)tu^(x+!;BuLKiL2MUK6(?SQ z{$vK#6H5UXF|CGA@`!~+FUTHW#~^~mmb@2h>UWv6KV7IX3Ok&uc)NUkd7@M*Ri=G= zez;mufw!}}f~`j${AsgQUs70@TayuYcl0R@>YpP{1j;{@_depj_?2-&zrMAlrv+Rb zO2!KW5~uE6Ca|%+y?wB`X&cfyZ~Q$q-#GTh*GAJP=2fo%gRRZZj%%`o376|xb-=9@ zG1=*YiFdS=xJ<2~tpou27J?@xCMEfg0>Cm#OpR(j1qFrJMj`_bkJ#^!!N1QMu!c<d zcgz}?RR%D<#}+w!kUTkeoQwcqAR40b#MSrvcZv)yuhsFnxrW;?bf(32uQyGp3GsSR z(UZkGj|IMODe)6kdVOZDuC8Z8kH453Iz+6kEB)&<%A9P&w_*sDz-ej9^f?qij)+L% zx4hMD{mi`&r3@06kmv#^TOCn>cTl$D`<i^<ga4rBnIMqwYhr^|c&~R$tAaFwVJYM6 zjHEDqF@FgzQL1RFt|Q;v+PblW%C+Ag-)L%U^K`#;O}O^8v%EQ@HNS4W3UG8HF6V;X zyls!(QQzVY%-E(TEK~c#1&~8!$HgtCU)A3h4!qLlRbPb7mLK0_NrqXu33#JSQ_Phc zj}c{B8R_zSu1cI=Sa@i4zR31zYI0RQPz1{R<Jp0HHc<eDf_sUmcii5G3_p^E=HhgP z%?z1ehnf-3zYI6qd;RLc*3HcgyC)D)04I+Egt)4zY9>s41mD26(fippCeri=;gXiw zA#C=`H|X)&%$@NSM>#wbplv$b1g`=vY{~xV1wUi`&y)RonJF{o1?ZE?n8dj;4xT|n zyB<Y};BRx1WD=opfYYB`P?sDV%*P|CqXTzuYtPM?#L}nPPBMRcLh5@gJXWkN%RR%^ zGE0<sQ$HNNq&mBKTfE(Jf7kOk5uoNn`TSLWwRb}ko8?_schd|AHjmjopPjjoQ^CQ( zD|MO+el|9yX-_%ME7q|&onlN?Xti&B{P@v^k&zLY{^d*ZYFIv#HVo>57U4vyfEgoY zRFDA3WU11?CkaGo=`4JHd$UQDG<f|*zsOrCh@|G|NEo++CY-xBGsA8ZUPgzkUx=)t z2D<pXisCsu@ptwDbZF)a+r0f(Fn+0dH?L72b@i`nmnRcGsPkMRk|CHhXW1)5;~vdb zWN1dp7275s&ovWlI)<&~U#rec=Ql;<S4-!Xnk1UfO`c3F`=;k0Y^U1Vym>w+WTc|l znJLw9IBl^`9+;U=d55m`Jcp0%iKQ34DogF;@6@un_1HhE#k&sbfw?smV#u7h9m|sS zLD01)XuUqPW=wJTZrNIjjheK#?CIymfRS66m$(PVkHIoyX^G@3j_mWDAh%*ks5+Tg za+4Lv!De*Maha`Lv0<NirFHC?ZLYoU7BPye+%wnN&6){xKiPTjGIq%%gy$JG*SDA3 zrvmD~^8CP_0;Tkae~~r}s3VsctB?2SX`=OT4ED#f0_Go4%>9D#B4t}$Z<LXRb&hmW znQb~LuZ-h1&GW>G5HOaT-M+pQC&13Z^&~lLTuq(`3Y($xvX3Ej8eaCV!B!gq3MO6P z4?Q7~4k+MNPz3sOro7#Pe&Vdc!V*ZluIae?sA-zrL--!O=?n(;wV1*miVx|KxpQ6$ zGv+|eP-iODk;yOCj8-a&j>5p07+kMa9qnf%#!w_Oo@>S&%0u=iGqx5>ZIc{4>_CKK zzbU0Jh!Vo<>}m^5fFNKyD>02?wr*Lbmb9oJBIe8X%phY;*sz^DaT^y32#>3k>@|ef zsnGV@z8&4P3bHn&xoxSk8>u9!B2ie_%(QCf;VKvc|KE}92X<9>L0A%UpXFCaveO3x zg^FTLDiC6Y7f9}>cLxyr-CLJ`5D=ONRF%yj;ma!H_@A^y%i;Kk3A0$Q1BqFwV&KbC zsW(ki5>ko!Do>RKgq?_H&A1@p;&gY%N7hR7MjvdEwIkzxvz);6e4Hv`v)@2K(&J5@ zDq<<BIB;w?cNVG7sXP!XsY7GsUoAx7;^5HOiQszus;t_hxNo}+CmK*NqHN1!_I>^O zq-%}p>%2~e-3qH_IAs$j#>3D-50fJdrX|{o?3M-Dgn=B_N7I!1u!SnK(REf=DSOtl z7F1kf)61XDACCeW77WcYQOokPQgkP}N9->AwV8UrBV(05nMs|>-_=IN+h$AWCHI#O z0FBKw=r!A3O6OUmQAT{`N~3u`z$-v)s>^>`j)vunUt_(ST{6FB$X1wfkR3+98;RD6 z5>n5_oU@stac43=ih7W1b70k&o87i>i211Fp}49EPrN5T9~cD_!Nh=ZY;G$gra_+f zgO7Nv(TMNU#G3cm)xv+n+Fk1XHPBfeC>p<R3hKo-dVbk8+b>8;O#YFQtny>pbiB9Z zE*E;~wXvaLiwW*XLGabtLIu7L!l25@)?x4<dAJViQhMk3#aeC{6`Ao3^2JR$KMn=< z$wn;Vi?}j5X8Uaq2AW$w(|#&U&rQOElgUh3VmT_X_ylShE-QnF;3+Gsnc-YM@lo>8 zr$ZHo&+7LPT5Ccn0b#~_`fv06?SkSjuWE0uQG*5_;;#<%nid(~9@1?<+2+w*O-RUt z<Q;|)(w-<d?MT&CXT3TGYa0gnHZr(k2(ak(i}KOgk5i53_cH!~?gbe;s{z5+EE=F0 zXHt#JS3|x$3Z<X`QLLJqFnqVQc{tLMaHN0=AUwQox*ARo089mfDkTxjB>|xpD0(d} zbK5mcovW6Tk)(dL+or(bHL3@n|Aw1}1nV3dIidlPv=Z8uJS9WywvT`<5wk_(-I-7Q zdbk&lKll6;8nFEGbO%G-DobuDqJF$K6QPAtXT@f4%b8%>a$ZWgVV4iukk)GLd>Cnn zMvz=iG+abN*iUupGTnZHd$xdEAZX99`D~!}bhlhj>k_#jlks7%76zDgkBFp#g}KAx zDmh`2k^fQM;U;rpNwQc<u@NzLI}-WKptAX7>6_Tc;T0R&nPKDShZ20lS;f|~mTo(Z z&ZV1MD)+Z;_Nyl})3#{!pttnr#)HMc*=Fq5vp6kdiwu0srzc7*de7ILZBBlBrL6*= z8pq`tEu<sVr(YD$tAogjM)eFW1bFn(!V#VI0zuudN$s{abwb*+)W=>q$4)}84?=xx zq_2klgG?2!&ggX{GoJU!oTa&YqW@Vf_;%Iw8XbhH0hB5S-?Arp<~C8W<nyUU6YOE} z)bzkZXQ#u;=_Q(O<av3DiPD!Hg^Bjnt!?VE27CFknbF|?2>Nqcr@{+f$GwHnR&eH$ zCy?$qL2o;c?IBRKXbNgXbcmq-%2ECuRo_eDT)jsF{^5)^Mo0OHDJcPf`>*7NeDdl+ zBQ@uTT+y6oZ-*l-Dk?gRD1TWAC7C#&3Nx|J9)@|;aKgcqkPQoG)d}h9#lX|w^W;57 znJQw1fp~~(GYlPkc{&FO#K`TerJ#IqN-mej<8%^Ow`k3NuyQ;__ZW?|Vd?I^@=A&( zgbOuQ=a!v&dhFBz{l==WQO;76YBBas#g~N>ckMOP%i^jbbaWDbxUBT<36Ft+iyKW> z49?vdC9+cDbUXaQh`C=AFPJy6`2J|S1DHP?-=>Hz8qZZCk3-^q<N*Nr!Ef#Cf+mQ= z8Dk6A8Ln9kN$_b_y<69+5jS7AzaH6KEN_*QVig>wL)%rNau&QHvq8VQWohQz<?KPP z8h35U(p@6YicyQJ(dkn5EMnm*4ON9VOa^d=H88={QiaL^A4VC(?LSYV45Jl6QgmE6 zKdvZhu8or)&j&-KD7D5%Qa4bOkKgp+J3NLpuIqNd5V3Q(gfQNmLQSF%JVlt<E5~St z|L-Eg=n+~pfyelLKPkkFLoHYFgqAx}7ZGiY6j*b>$=QKoSYOQc%?`iMQkWkhSqGtq z^jH~8-2wl~v*%bIJLe1W5l04R%U(OULQsA2p<#MeAo`cT(kN~dsO_4PZZ@>fE==b0 zG)+H0;Zj)J{!YZ8wucg^on$}A&a;vpdmuZT%oNXX)Z0k`z<eq-W#tb>mSa0!<@V8e zQvy0i4Fzf-QxO#g9^K<*{@DC*ll6NAJR4b32mR5#_9sZJlLUGpx{r+{*9ufQ62Xye z^h-lq2sSU_gWHchwx`RDSX22DOVY_bN<XXTVZB&Og{j6o7KLXSAy~-ON}R4i)q9l* zirOPYy!U-JDAa!Ws;IzU2IedDyPy`0g}D8kGI=f5yE=XBok4)RWnmXM*EG$ein7rX z7wPBXBCfBxRl)$#)figTlJUZ$iBCkm%HHh4ALjZ2HW#{`1XVWTuM-UNVYUv>!jIr! z>dh{f#)33aYGV;ULDU}ule8D=mSK2_!>sM0IoS|8bsG?1P5?7AFac{is8r0DDLGoO z?`8z4HA}V9&Dg5U=7Kf8-mBlB{h)p0T)vc7P!Mpp=tAUUh<+xeM#?Vcoivaw;*OTW zzDgx-(`30kOphwx6_TVkzN^;@2%l@ZMzwBIib*zCuwiFc@+Mc=XP;ne;LHtCw0T%V znV(ctIeS3LT!^a={%Rv@(u@rKj%rA|d{EZ*1CyDT<ly1qi8m+k)#VQcun=IOaxqx# zjY-tB<6pSYqdF&RIv_ElbgTC6528@f!tGZgCpjk(AVe~GqW!>|5WcKr-4VS|w8giX zhT`Yiy-3wfFl1q8Js(i9+FY;MBbJYS;bq@EK)HnQBdDIyG@%#Z&WO?T-EShkzG{&4 zJP>P+TEL>lVAE&+P~9Q2Fq`|FKvh|aX@DOnesvCR#_z@)&{~wo9uzxr@OTCb?r(2p z*7FOWJ<d|(X>;cb{d~V;&%+(z9wFvKdBC_;$jrJY`j;P0^Ou{N+VUs+g@tH3b4HER zaImbh>;?E|&-;mGr6H%42N1lH$yB0B51S(4Vp|3Ia0-BGrp+!)syiq3)CYQj@xZW# z4Z6h)LhPo~pwy>rysIT$xu5lwHINJG?9`~VXAfI@qm#)Ft8DuhIajuCouqHB`YEvq zPOU?4aT>H{{Ur;;rX!|v8SV*^Xw6+(q76JxXG+zXbJ!YQ>`N6OCqvoK<q*UCYZflm zIM*xCOKZLL%hHtRg%h>)Ur-jQJnqdz>otml-R8=I7u<GoXHkEhd%^f5F*k6EkK8X3 ztUbx~df*;$w5QhAKq`Xz#E{J&7}LGyZNWH^YiOjw+@jjrnF`L%KOvR|{3TARs;eP~ zv4kI<mQ9+*s5uTB$anImBBZ2@5a=oxJSHgpy|5(v%NqP@mw5ZHN$szP+OZ4D_G?qE z_8oiNjFXenAR5KEq#CC%9ga;LoF*`xSI6&EC+noJB=VaNDe`$x&^`^4w>qg<mhl~# z&xL}|(C3=RN~@|StCHp@6>d7uH1~daR(u)k3KR2UMxh+5-_Hp}@my{VXdQt)+nT^= zMr&jC`-j#@yV9p>ll%XL*BBhVhO!4fOz40~zt+q3b7j4b`RMwi%d|q5*qDoCxTHhI z)c9Jv4=^gkxrdPuK34{(@8pU0n!j~E1I2J>F=~n+x-D*X2P|sqIv1wwnv!9gEU!@A z6m&l10<xo|C#Qd-GQq1`SpqgVx+RnIxxeC<TTPcnqp^m{8xr%!&RS5DEBN*QsN{Hk zQAOT)94g6me^O4S2n`aOQTk?rG2^lQ40;r?f^KUi@Nz)yh;{fR9J=B)*yBKfIOxaU z8Po%?STc_NIh_tU`rA`$t?rLBYi611^zd=g0950<8Srm(7eL6Ys<QD*Nm+sbWaVHI zbf0ABlSwYO`8jDb$8?+Q&DJK_4JQmR9LJ*wP^r0iJ>7Wv@tV>_62k3|HpG!O6o|K* zLH*3n^Ful(R~!Vxi1<^eVCa&<`&XTPBb)49W%@kqFO(l&gBkpc(RO3fJ=Zki1EhmU z7U-h`dvte*rP9Z(ENr&PI!Z_}e_D1$uU@Xje5^b5IOuyx=;QFbY4Vxt3K?-4JE<?N zd&&dt)g#I{RrM93&ZdUZY31?6S0h+vp|QGnqYB7fu)Eavc{^CpU}I@wSG8uV3mBiq z>s5YL_1u%RhaycN18=P_9=YD4J^j(*EaL1}NVGvZq!7Cky${3{GT$BH8qMmvx)ZmS zz%U-~l)_<_Vz-XA0?em$#&y%N)U)<hw~|wX-W+zw`7(c#oYT$qqFuAs?($%(d49p5 zaqHq?jEj%wxjw+4@uh{)@o=GefaRu_L({43g6O{EaE-Y20f$jM?59!fMMBIs{0DY} zM@-I&N(+$~1RYP##+wj!LQP6`ieUl@if)RIC!Up>b_vX-qLt|(7_*UxHHL-@>cg9l z56HcwYp(7NT<cDy^B?Z>qjAxdC`@1NqYi?}H^*{zFI!(BReV}1g0|Cjo|czQ*_z$V z-7sc+G={1pfK?+}@G!xUXD5h2C}35EPoqW3b&0DRqW#z#UHb^5EKsTcRE{2%l6!)$ zj=J2>pa|v6wpIB79HL<GfT`bLYo<BaC0dlOuI?pE<mFW`(%VpB5oP+CSWVv~MH*e3 zjb4tVXw5Pps2X=w9zTn)vR9r<b2`p2;LC5Y+P=>nXviryKc_MM_IRID_4Zt`08(G6 zA8vs#Et+9}eEbvJ;>=mxn(k*_xlZb`Vb)r*<I*UV=7i)+sBDc2wP%V+<L#mL&<*QH z2i^8H%0yP3vsct_>H|GoAL;KcCXt3#|7Uqd#F5BlCqWKV9&N-8P{ElU<=82R*}XRP ztS$GQI+8@VI|(&?y-M-2wAjBcqoSTl<|9iz+CLR~F>FXQ$j`yvV}9AWB`SGUZXOmm z!I-dq`T2Z42_Z>sltRx~imW?pd9hOXYIk-=i}NbmR4<&h6y2{9<?e0^D56I@ceaLv zC8<=RE``q*P1V>eX-d>2T5q1`l!UO>jqeH|vaUTJ;#Q(~S#ZgBo3*#hCRuG@HJPZ? z5N0PLYV_2GxL34$b-zH)VDV7eoVJ@K7f5)`U+iV+T%Nc+u^f*pDM(JxpM7njJAG1p zf)Pj4Q0spR?9qYB)1V9Tm&_(TGI}$1v#{n<vwQ0JK^0@kalpLr=H`LgYIFhSa-&1Z zs6p5M#5*vJ)`%?QJ>rWrWw&50(bWBxAjBDRhg7AU`ghX|i3%{|UJ53ccyhhfn-zLM z%rCJ6-BMrCdg<-g4DUNkUd9*hwx`qPDL`O$n3nc2gPQEFC;R?oXmapcZqfJi5B8W7 zul7x6t(lcLHK4NJMG!!%3HMt*sZO_u!GT2WUzH|XMCaGZW}RO2-Z~ulWDuf^mUpzg zfIdV(<=<NE&-cC)OPTFYzcJz+QJnF+Fa<&XQ1c;$Rx%F*dsA2gN=(`%U<jyg#m7}a z(7!?MI8~gXTgSMjJOEqkU5e#dfNwiqaf!0gCMFAFWF3mtpN5)#6%#RLM{r8jEqreU za7gpWmo^K@KpMq+bk%T{BHM};{DDt?<FG!Wc;0Ztak=;tpZ`i*WO4BDIuk4FB(FtX zm@w@He*h_!3HEvpMMXvJ1F0kYS-!mTI~mV>E^G7mJCPY3d!KGi?VmI;@~9%q4HB!U z=|G6{BqKonf#wC@H4hF!<u|U%{Qw^r6!d^dJHbezg;au92WN&xQj;$zBs5ouCn5Ol z&$kNw-dO>ik^(Wm6?Q#_TU0byu-B`w&^MRjLo8RB0e~nS{DlO{D;DB!sGYkCT-#<| zSBL+v4iIT9Fn+v=0%9kf-cUG<Jj!#c_3pmDzSqN<lJcaGcH13Mlev#Of52X8;13iO z6yHydkDqOeO{qd65}Zo_w`8M>2smj#VsAi*gB<cLKNvPkRz)GpG@<00RQsk6+v~G_ zMRAzV?4K?wX;>dXo#3qrK;C8n6H!w&0X&1!Bo_4dGxDf#V8QiK{Rg>TpoB=F`g2ji zX3I5}<|Za4N@B%?Z2mc7ZlBBhBw(KyNN3!v!Qbyn(*OhDeHlSf5!YXm+{K$nuwI*I zYwd4Ugktd&gQ+em&~=onAMu#}N=N`D54H8~AOw8?nAnqcqO=pxqthM?L;QP{+%Cuf z3bz>FdhW5SFpk97*TX9oZv{sMo`FB}b7%IybJ>&1byNF)_fZYF37HK|SP=dkZPqg! zU<vQb`&6v?yx^hw)I>DqAn#uULI_>eW{|U9j?i%8{FRz%hdG=?bF(r<Pz`|Bt_;tf zhs6ieNT}qv220eOvFBU1GEk}yo48AoLn$uKD?T7f)#(g&_7$al+xumMx0(S;-+&t4 zWKWT{bsv03_5;rpaK-ZSz#JT{cc>0huh-NVdE}Y6qT)J)het<!36=vS(7z*rcTqvi z0MKxHj8r)7WDjCn2G}YsGS94Tnu{XOrQ*c*IF#oN49_T|>@?!jRJKqt%n+~-^z7~W zDx;DU3Yd=Q^zVLYvkc64etVfg4$zcnYpvT)*DN?oc&plcl&dh5vU=U9er7AnX+Zut zYH|5;D`(Zszt`S-6;!Thy!d!gqU0JJ$n(I@Qw9h;i}AG0%`u`TW?`xn@&<N_(*_5s zbQN*&@pJlZ6=>xF?6AL!G>E+KML3WWT_S}9^h7m3)Le8=`8_xlcr!l=;e*?<4n>A# zM|I8dr3a^`Ilt8Ld7(P10*w{7PWy2ks~ka)M}*D?QY%a@s~yUi2hs*h%F}7(v~G7g zYn&T2r|bRM*?Y&MFE!MXi!&yhaY2gh?!lc9fiFMvgpM$h=G>nb&vutzwR|7!rNBxD zm1(K5rqMu<G}o^{-E{5!t;7V(f!_2ep3HbnXG>8P;Ep0#{|Gw}FcH9nC|t0@eib{M znYjvLeN$`Zh{#@?ssQEE`h*7k)P}|Oa|TWhS0t*H&BF7!DpMdKY08ncB!;@Je8!aa z>fqYyXUJW6+5sva@gbyWkzqgtmzBL5Y^&>YC3Ho1Suq~%A^;?hg#p&kSoy#}c|w1g z{)Iit@Uv%!Ofbkn6c6eXoSKRXSiEi(3FN=$S@JFdgDNs~Q=3iyXWn1aSICGue&l_l z>+pFJrow`oAFtl8%uBzf;@B7~od>|~(LM<W&F(p|U`e$v4IZJp`eUlm>Rc7iMGwol zkOjjXzDwpu;3hjLBaNX~jb6uYTAsKp5u^g>gQ9Ic`NI0FES*pvA0G9dB4$&_zYP`8 zhwAqNm_P-1y5`lL+!uB%Y^*IKd%Zb|yY$-@6ad@sW?y#c(&dOHp`PE4Kkob<BV%+k z>!{oCgRCtp-D=K3n{Y=7)lr@6$zb_eyqV<kA)CUZ6-|DyZO#I$H#aII^GwB2l8n2b z7wT*_Br@i~7&7YKOqtqTGh{uM#GfY9O!)U6nIP60ZHWy7R2IDPdU4Zbm-9GMu?8v@ zn>~vFrcZ6Ch}AZWnb261j=XG7)@+*I`v)~2gnCF~DGaQGo|QCz-Q3q5`Yk{V^d0Y9 z{V&=ZBhPWJHiw@)U_}>@^p?}(`1pO=6`Lbp8+S-E(QZY%;pvUX*TD*Z8~FD|0&W3h zK)ns`4y(*<meLDJ4ZPs;to)ecAcfS+B5Y5%_t}=}qSX+uAUC(HEWR5ojZR~o)8y&3 zp}JQkg?ihRmFbdkhcLg7xZmM^cg-K#c%=DdY;i{K)MGoeMlO$iVcdF4A#W7(<K5$s zpVVYq?)HD=DSEV<ke;nskFbS-AZ4m`O$jnqZv{wIk4W{SthnhxrI+uuS2Z1UA3)vw zkGPR}e_9ZAK`pdKp6RK=;u=9^UEpCd_9XwcLwv*(-c&LnQ`uVg$k7%q^8I|qb7{Z> z9;RK3(?!O~Xefa7JH1WqSea@-e0kCffE(qaVz=YwXGMxy=W^58&L+vS)<yVu`3#1y z<Y20OoE49p^?bRAo1oB+k$lzG7al;oEa5Z`zMNo|Nu$<Qq~G6*6cWyq?&9GuZ79_g zqZSv95e8tPiE4O*h1;>=;o*f!r7}+(zI#BYvsDX;57%QF{p7se^t~meinb0C&Aj~) z2nW2iClD%4X|N~iMy&Dbn1dpt*$q+(DhjH##uu5X@(?qBYRf<%0`Pzf6E@#@A>cG( zb-&B#!zV%;(_HjOw!^S;xp_=mqhPNxxQ4}FHRDaTedi`w-3}Eexf$K5)-p4Xvc}2n z93?Lb(Vx)Y9rkp^<U5TMWtGMae%V@mz3E;x=o@tS_GS3xwU00hA|4*eBS_$dag{@9 zS((L&KZN7Q_f)}@XQS>0YnYYV<NN4dgo@){Fs0QB%xM@9B)RpKW~W&SZrd{e+vIo4 z1P#qNnVp#YG{fYSoSb~%86WTARHk4MhW(yK#2UoJp<v*o120wp?53#<9%0;*cn*lL zu6|*7T3T90RTb^ZB>2Bn&%&P|?2loXOBpi0Z3HX~zNf;{HfjOMf4NtGq<%Ag2&h;R z!I<SHhao}&f^K#@zOc|xyahx!C8fC%^WraJ-)uI!*MygR{61?c(h=Em@hW;s3FmN` zOuNA0I;9@$$Ef&$(;?mYjH0pLlH;yg9WZlX@*aL6%6((zwKvXgSryA4s!dhr3q;W{ zQpn~Hlo8`~rNYTg*F`oU!@X04zZ^5*-Q*m<goda(6T8aK(XyYsa;CQ1362nWdMuB? zjwqW<XR+H|1T>gQ`%%NVw~=sKZU5<&;~sz*AIlZ}3M6gY){pvI&VzZliDDq!-QABD zjNy?f8UbwnCje!_cUVPDO|4xI81UY~bkURn6jaFi@Y#F6mjs}V18UD9P3R+Ko|!^I zM*;}25JZq|uJ5C{Nu}RM=}}99?tqU}hp%i5!mr_x8ZrAyNK+6h&zNQD)VNQ52-Q+4 zk)&mp&J~m%Rus60-}bLFx~|s-{Md6X<{6SA0gP$dtX~oRzJAXafswRc6L1XliP6u| zk$ec?EF|*Tr+>Hr8VQk-^qDbBZe481d@vqK{=G-&r1m}5C-2>2)KMUjr2lfM1OSn$ zC>*-L@1U^53#2iOBuX@|6NOrne*UM8UhgzIGKGk+@VG+iz~0r4!{M~c$aew?<;g6* zfTR5Ud>xmCWB}SfZ8g82H}_3S=raD}S5qeH)$;Xyk_fdu<F+gC3B99oFEJtC()=9B zSKM653aOM}{|rKcz>f^OlQKk2=DD9%%+1d~@`4<ot?Ib6IweN}neie|Owc7$Sh33H z^~fhPrNM7+@PQK3Ge@WMdr7|KmY8@#LYhnfjovR^x0^iT)T7%`ogr0p7A$Xe3D-6V zg#q-vPgiF?8b~nxPskBl4{(url;M}ZjW14!H=cBMqO0BBXc{9nr+Z<(FaaP^eed%^ z!WU(AJa(3lk~-r^IjjPFLY<-JlcC@jr?qc4Nqd5q-r<8JryU|7n93UhpvYYAS7)O~ zwU1@2aMfYqyg_F?fxyt(-IH*{-F~ny;!}E`)ev}%W?;woT-u2}1p7Nx7Zyc_zG)8y zjCTY*z^Y=UeXPxb#?7ZEk#7dWm0W?SDoww0BebSGbW0D4NEo^Sbe6dDlOT$UWrFMf z3H$*TP5}@>#gZ{W{>E_~KG>qmy!X^yyfX!ZCkV`Cl%j-Vt3aXH=DQqyKSFDg%o3YS z<&R)uVy1<bS$xBOD2s|}b!Tkt>z^l(9V}2gF3m@8Eu5S{?Xm3#XOSvcO)WTzFD!gR zXU;;kqc@C{On^J$ont>xi1;X!4_mFo-+zc{-y~6A#Ou-~B$RNRXO>u+&4U-#lK*u= z;|Kh~D9<Xr_hs_w=@njN<ft3O!D^%eQN&#^*oGWYYU)1a+wIF!B@V}IA2d3nd%D`` z!;Kd0EaYDq(>uY@2M<a+ECz3C<9A;^EJ-0ZpjULaD*z^i+_AOM<H=F2O1ZR@SxZBM zLxDD#AC5u>5aE-beli0E_5Hcp+Ro;%d2hpHn@|qD$(o%h(a)B4Pm6m83V!f2CGtxW z(^b~5;AVTw=ufq!RP@%eX_5^aRO1fP#+f~jYrq+__IH?4XoyuqTdk^$*X*pKMBmFd zEDN-AfRpY&uu>NG7I259?na5e@fC1lx^!yhKr{*pWj)&kkD_JcD|9!uB*4j&w(;G} zK*K>LSHkgzp)m|H7|Xg7;t~HzSKeFZ6N}|8dr96QJ?=cjehYpPb8~YCWRfH%D@}4_ z3YX`58@V7q3$Uw$@#$%C%cc4g3xP_%FcKLVnJl&T*k@X|*;1`<AjC=s!lAca`*`I& z=SJfpmOQD`-n&95&ND`4k@~FaA7O3NPJdi|rvg6`FE~~{#^3&o$wC)eZpXV19;XL& zP>6`OZ9THbVdlE3l>&|`fs!zjw}jQ6>2lgE($9|;SR^nf+$iMb85Qn`D&}-ml{sZM zd7#*@LtD#<xzAgD-P&&FI#xIT>&EiTMT!^(wPwZsBQ%=)@dG~Jzk5Y~-z)MV3Bvnc z31Ou_NM>hen^rrBAmWR%b8w{XyJhUfR$^KtGnm~9(<b}9GysG-_oq;-KJf@;<y5i6 zlH1+cs)>ka=C6QVbElLF_Sp$ItivIb@y#^>?QceX$YCpdporM}{V}NY(pMW_pyS7F zwWczIQmHOg1E}s<BP~$H=Qu=$w_0<FGwSg@ACkkdvVJ8U+Lvrm*|X`^`@*no)2rKr z&u&ccCBtBPWQ#LlRv(E3F3~rA5mi4uL-oYEzlsC5Uk_PB2v_?S*@wJ&b9dLEps1M7 zr*93&mj5y{KEae7`G<fQv+4=94#335k=A{udcDUX-zuaocSq0zhJB*Z7)<$@OeVJ> zmSp_F#P(yujLeBskC7-#ItF?|P?{Y9jj$lJH2C@uD>s7oE;QmnDvCj&Ub$-MeIF3& zt<Qpy$af>&8N-?(UGesBN)UGR@PFoqf9G#?2er2W_4q<P0imIxiE{1y{!bv%O(5^} zS97-Y?rwg}$I79q4v}57O1O_yR8$S~*XWEV`Hm-xZO1Rwo;0JB=Us=h<sJbk4VJ6c zxS;#f@wa?pD7EnM`H#Ex!nHbnWE}gf?HS0Abqx)7NnBp9koC=9mQagoL5<=fQ6>I# zl4pK?@0tR=?nExSUq1tM$Mpi>h_=c-e2#Yw-$bUNqYIV~CDJ*Hod$&JYz1_KcI(^k zWJ8sepm<JPv4cW{o3UnW6egveF)1QKhFK46%#*jKUcg5JQW6vWsFf?%698y5y-rw# zT*2tkZz3(7{{L0kS;sZ`{`(&V<bw#PNQwy3EipP&1f(0J5kx>n=NK?)MNvvoVj$t@ z?iz|njqa8l9Rmb5#(uZ)`Nrd%^E==3-yVy{wmYu-y58^S>v?y~quAecVX?WVH^S%u z?C{sV0Z>|Cg&$>0j{f*psy`Gu*3)R|Ku-U1^Jo1fkZv4EYdom_UH}lZ=#~&-LTP2? zC0jS+12St#$(luO?NoPmm(}ydN~>5_sb~&e{15o}I6Hs7r0eu}nBc`i220Pwbt4nH z+mD=QOJ8k_6dbK1(u2(=Yux4%z)Skd$l&Pkh~I@B;P>RZ|19;?3MobWD*j~Dl6+}x zjd7lmJucsh@7z@UtL!61@d8gGk+4vrf$6NE<t=TKfP+;%v1&?>l}qE3l7OjVr}sQp zU%F!7IBp!MrZ~@kiRi{1Zun*DMzH<UH^W1Gj!vqx+Rc`6_`LF;EzxzSWqe%9woO>E zkDJ-D#+SfcA0a#wb3yep>5`~zU|?`KkD!qcW~no!f=uh73iz?w8y5Lqd7$xr0)%n# z<5)>6E34Pyj-EgUeucUhE<Y6(Q;1qK+Kp!A{O82N^ykE4l)mow3{jfy{q09zMql5M zwX$pY9Gj)l?V;6eJ#xuy`#Cvmum3A>-F2HNw^v*-QmU>dPh;{~00>*3heQ!+t)C7L zHYfH4%!ScEvw2<C6na_Z*N&MrY4ADnx(4zYb7}**sB_ijh30p=dUKtHeEOW{*F%?L z#DS6Kgsx+YBII<N0s==I$KUn7H>IT|$b*v?Y4`F{GjBfZa@zuqPh?P7^6yF=IYlWM z_9r2|vA)I~i{mDTcz+7lC}f^+CJD&?N~lw_R#xW3kC)luK_E~9#h|D%QAE*H+q4T9 ze13d%RKUOOJddQ?EZ8JAkWVRj^QI@~l^W+$iJY<gPZA?R;%_5v*=w~vZg}VVW`*T| zIgJ&aSb-pzg%L0b`?juIPpi?c7OK)|W;w@@;1igFHAeHWJ%CSA5HT~szaka<U--Rf zvE8_RVwGMO-u~9-3m@;(6;_rNVR$ElUpM&&a(*xaWl>j|9|VXy&E(Xb%S+YvAW>*8 zG#IT%qu(4MwOL=n0y5Uy(q|A=CC(TNRipQOx`UTD%q1>v%Xmz^j@t7a(s6oO1M4SP zkHL(vV9uoBwj^QdhfA4(Y}Qd0gYU-iVpBV6_Sf~IThy9OnE$v|?CES8S~llu{G?Kh z?@<Y|a;z%byKbA*#1IrTg~p}zxDwP!3yh1Br*ieO9Hi~L=wLltIfaD+j1u7S&%nl$ zDkX}3`__n+BBRo6?(Cc7T%eb78GE0JNp<LB*8c;cCm9t4klh?#P@i9Cl5#2R7XKse z?Nk(c^FJi?PIcRijuuKxmwQG2vsn54u-HO;0zTw6ZpU`M=i(SaT0ZtkvC@2ZJL9q% zYY8%4F63h+a4DzWFh;Ace0Ytg?B#Unb?Lz|WyAI(#FJ6oQ+YOH9<JwTeJSZxZR)eJ zS3?rw<CU9#k718U#uMY(4p`&8?^VZebBNS`8E!J<=Tm2kgmQlk47^#gwY?o|1Hkdu zk)HxNIdfhSMZbCT1`nKf-^zU)#$DyKQY3;l*VhBuT3cJ|%7g3<Ba-Cqt?gDaY6v-M zT~2KdI-VjWmfiF!HgE4PQyz<Ahe<abf7|}ps+DE^v{8$*o&%rw<BkgrQbg9bhtWcH z=Y=*pO_F`-z7~t$m<@hcVhT(to;4!wZ6J_b3lVC*y!naYTs&soW~(!89WF7buYE1w zkmdu3@p~QC7i^-<l3!U=@n3`C9T;=;Y(Pp(vr1)ty>>KYvDp;Ek0G0?T$FKTirk5G zkr#z^)o3F&CX*YBTnAYT`?{ty7M4;k;*1Hci&~UqvMJL8`eW*O^ZlKE+Y|kF%QbI~ z8vHl0c>v{upqDC^Y@eru$66?o?Sl@6G&QwawR!}Uo`M_~N1%g|E`;f+slAlvhkWd? z#%h5Vi{a(tvUM`c2hccY`K6Ct6S(<L@5KbbXV&`-5AFN@lRW&`1bghtE;K%{Yvtu! zTX^fIrs2cTnLY$HE^to$Oz8*;n#p*CzR#$bpkk3%H{An4LO>%&d}dso+CfR_byw+@ zVhsphFQP65<gZ=e@9pW>pF4fX2$`YwB;d6c6z9ZTZOEWX!j$%$arv(ynO^B_4nh$c zThVm>Mad@GPYNt{N*Ip>Umxvtu0$#^rK|+%Xebtd497YghPUl1p7=QXmct|NW;9nh z|Igk4!jNIQrh(6Whswy+;RD7h!sc*#vl}G$k;{<eg~+Nb8NzX2$$+OeNW*L!**s>b zN0+x|#v!rYu!LIv>%)!CHMhIkV^Vmi!8o*3{PgDHGI8=&#o*9$dssRuEdcq@9Xn$q z(m+_*l`OKb)~h65oiozT8-(5F9cy~l^?ST_qIgVb;7;m>5MQ{IF}2aph6NQ$VK$Ur zZ|=5hJSttLbr{SwV%T>A(wISU5ANUe_OcqUVx=CHPV2^GpGy=`QBk>4$c%MKZUj^$ z=+$@MV#*Q1TN^pG-3FDaELBsr70FNEZ&dF>>S9<<rhNyb1^whfHxszn(_N3AJ06|c zC0A>%Bg*T-w#i>AnD;5ZpiS|N_s^k+l2MkAK4m(5ne;Ux%fN|FI^RNay$QcVzqh6m zzhu+XEtW=?cO8E@K;eZLnnP!JMK*WFwSLecB2jB34$F)FVEscu7-g9D3ZzJ~Gwe+G z?k9KOB8gOe!L8SEIrk}(7<MQ7uEnHFPo6~A8v(MLXB#f%nmSi^@@ia4@xCq}>v`-H zV2`H0tecJhc&s_1C!HgCdYYaI9(pOI{RMhvfM@KAWWOcEg)?2=NQA^BoUZG21oLcf zl;tlU&Ec2W38&O58;M0YQWq%0gor%OTdeI6-URc+TB6wd<F1^>Vsi_f4Yn%R{8G+> zFDKh1T=tyWL{niAm9pUGjr6mxtlc|o{F2DiXm`cf=Cd4M8W8UJo<mq9XZMnN=4yLn zN<cD;sIQ_IFt~*h=mM*|cHoI~@`Cu#6>4mk+kts6EKuI~NoVIG35=?^PC3`@ZNGC4 z+LkWkEs0yjYPO|d$Cl$lt?+qn0=#6(J$0<?P8@p!q8Tarxy`su!S#$r4S@<tXvCfo zza+i3#FQjwz&|`k)2T5++aoSKx_Y{Ch|^np=h+F(ahPhp>6*X7K*&<X)>u%Dx!+Y# zyw-?_7Uq1JWb;*R5AtWpmfLb3oZma!1XZoAt)0F#5E2e%)OwzKN5jwXyD@#~x;NR4 zA$GAZU(#p9%78gBP-)T>HZmGHXpAJMzl|2?98cy2a#9m(K%%GSQEQ}AWMrfWSk|uE zj(RE$4b1u}qvPEm3aWGq4h%eE#$Miq+da*2R7J6zLOWVbI!&8qJH}h0zNjDvs|V!n zXL`wg6mgX>H8hrm=rdedS7V+@N@cd*$!VXrvkJ=j60jgG8H)A4!8|jkrz5SO`v^Y$ z$ni+g<!U-bI%#KNMG|+APp&ciWLZQ#%ceK5_Y+~5qNyiwwqN+MbknGv`~~T60Tyyc zwa(G)dG!vh%;3nrHDsH17{MxcY!$x>36q@MtxbH@7;!jAF+}I9zE`c<G2&UcSaiUq zySUXuTtu;G_$=Tt<N0)JY^W)_(b;)3OtJHs*_rc33zEL!ecFJe^R<;pw^M5h$s6e& z!crqbV|nD#r$Q@7x}5)ue?a*Iw@ElI<lhtsvzmsNQod>`&~CC+BN66j#t-%)?kF5_ zylCf*lG|}&WW+p33$_!gW!McP*U_2H)M~<o9;jf>7MX60X4l;Qs8*2sZq$}QL~u_* zW$lQLwYjz&Py`7WS(QWcT{qm|AR}`1z^#-gNz#-_2Y2Obn#Z`psam>ym%L*rHeOux zqJF0!Yl{RXhzau=pUx&TBRwzc<nlX7t+!{fgM*ra2{T#g;q3^*V|<D+yrldzxV_tJ zM(<DW@=n>s+`PP;0YOiw#Lwjf$xt8bM&#A_RNX>*!&+3ft?gMmDz=o2@IDy`KUvj# z=Xn7-89QY44G5{_s%-@?m?;*CL~eDx<wviru5y$UMFXoC?y0V0K$cL|Tz%^4rEq=u z?$Z6=aAf_(UvT6-8DdWM+uwKWuCfN$NOc?UJ|iWFTK$XGz~1}2_Ww_v5V}cqf=-%a zK019&`nCRD6*BYezKwv0*otynl<M#)1D%Cfyn|4s1bum&7GqRPy>WI-EJqMl@%6P& zf~5Pr7SJWe{nLnW`c3EeHPF#Oij8Dz>}ld&@Mlv0fSx%W>0SRo|5xb)F_sn6(8+zP zWBB{AEDe`#bP?KO@@mhOkyNj4Y{Pr&7yl+oF#4w`p%d}l=Hr_$Gt~b7qo3g*PddGd z|Dt6XpXa^VBMy&;rH^Kh#J_z-=a1cf^^tm+F~kd-6aKu!<-KjL${Bt|B_cOJ*1Nj+ zVQ+}sIfuvkVxhArMbg=mE>Buc`0*S_P2ni4ACl=ek5j;btZJd|SXsq{%kZ@R&)RD< zFxoOY0<sAj;=EqJNEGaL_1<$ifxc&QiAk&mFDFmHYZfNxFm2_69J8tsCs~uK^=l>t z#swq1(O!biK3~9Tp#=q#C#$X4J0F`rw)j(MvEGGru!lEpZ@;i%4-db8jvR?QId+Pe z_Ub!<d)Xa(Z4+)T>CkIjbi?s_hxqSrXBAsK{43QvN1^z)k5MP}Syq-^50FA_--w6D zfA4&4GLg!?tYe`lo1+BQPEf!F3-e0Dz9h-3KbWvlR8*|?^+GdeoAu=z6;#vF)8pcZ zE`CV)8Ri2VViRD<B8RVox{V)f_&uQL5PxPq>VB9nl^PSya6GT9RWQ7%vmQW})NVjH zHIX=%vGsKlPdlkQ8fw_)gw4uvR!nE^?4BCh8A<ZP8;JV$6(!zsf_*StXFGFM{z@cd zWam#8Q{$kaw<#=tNR`}vc9yIs$;aek?vnI~NeXj8-Nw$jV3^R-Io}_Ew05Inio;91 zay_N4YIT(#6FssNhd|Gxu2V>NqxKjqC)Kel)RIy8%EWw1Y0{#0+eN9GM_Fxf;zj&+ zs%(Eii7k(Nx7WG}4s~p5Ej)3&7r8`HXIDW3qp`eNBOWkjbhz)LCKo8o<o{Oac0O#C z#jR5A!9c#eM6KgDT!`S9stBa-El80TPI)@@MXw<>nhGKmBy>=Kp4Gv>JnZ#tk3kJX z_4h4m4&kHIViIqhU)JdSIFm$7anv>Cg>7Vkowt`aMW6ODNrGmp8#3nPe-Kj6CgoHT zj^gsld<KuMNUd==TKsON!v)US$+C>!p!Ms6%j5X<Zzb{d<gB_3F{+~!O#8#Aw2ksc z_p?mx<2UGi-k>cS{XH~oY;1x}E=x&C4aXCy1K4j%z0Zb3?6ZsH8J8Gtv%cg=5)=>s zA9kpj91O)f54zH9H)1k(H->AE&^MBtZcdu@L|$}M8%*tpeP;SWO_b}aF0QfVvKmoB zUj1H{=mC01a&Wor>P~>5eO4occQtv%bpF&H8GTfpHDN>EK)n2|s{a;c-nBvO?GdX2 zvD)VRQeE71bT^vJfj4g!J2$3|^icFkU=ekEFs_yI>4qrBwtlPu!&jByZP*2Sujp&< zZqKp=E7)=iyM2%~$mHc4@RzK~>OC3YR@Ew#?d0v6E{pX-vAl^>Gh8OL!VEI~UHc14 zf<ZFk95e5s-A_<kQFSFXkGBq&ypoBFlQV?_ZLM%hr)SKErBPmiy9@*UyP9tG^<|mr zxc++Ap_uleT^`yjL(xr7B+M}<9+Az|rCmdZ$0cFK>he*{J~sPDpp$mIZ=k>9NzsL_ z9HR!V$%@r8qp`iNoi58w?4<<l0Cp}9^n9WzulWU`hQrPfCwYkcLm6L#9kpt!S-+Sj zglT}~%U&_jBPaE)DtVV=Cbw=0Ffr~WP6U!)DCg4>wv$HzCM5M8>{C(+*wlEMVq(pp z^^<HRcfV&VJskLLI`sBC$IXp^B6QMO+PS#pKN~)944AqUSs$F=KwV&ouW1Ns`aCbJ zS7k5F2nVX@IzY(()N4s3%{Og2MA*~Ux0qw(%>$wc68#58aG(N$;*!;+6S6q=dvSjd zK`cBcqBV5ukiV=!LUVwnFos2Jd3Z8>=w<M+h_idZI!txb66CS?UK()~xYV^1G<P#7 zFBJJBpZ7xT9*;zP9oZlR)@QSY4~%;36DmBv)ZV?~<lNiM4w(&Jwwe^!il8Wud#cil zUz;lG6Vl*IU(`0q<;b~sMY&?C{>1EUA#2}`wogpO(>vZD%YK-#OFiW-w%FV2&)m}K zNo^9GUtLB$KRqqXsI>E-LF<_L9?K2{E<^Xv{{XouIVf@uwW&?D@8}>U^_6&~lvS(W z=%6r6n88Gc*A!98PqcPBgtVu9-93KD=QK2mw~4v#$1U44C-<F2#!L7KP?|+MbRmk= zMn+A>)xIt$*m}Isxx2DlY6mkfcc0$Z&_-NnHw>(QI{su{IMWN|Av*C!6(0546h1o3 z*Pf+AyVD-tqNvhyBJiWTlCjSAgEeHrrSDb6iz^}&)jRd`Volr2S56b(9g&-w7lFZH z*VyoeoF>h6m-V!|qWEFuc+u_t>(bZSKIPjGbB9@VrpXox_z)VVjA7OmwE9MYpWV>$ z5$1D>ylGsI3sP6-qUwKWRXW^uw>`jTY;*3NtqtL*)4UEBZ)V$dg2X|jR8DL5VYR_$ zJe&@nZ6y!kkHrK;r^cblq)C;#*92X_+c@{U$RC9s28%9-JDnL5CnXim3LbbktqDIU zh{q?V=kS<v0H*<`N|S_kAX((fo#u08@ZyFeYu=s~mwy#n>qA<?^0~oPH++*?1N7%3 zZcRN(PwUi$^_2ELmED89LN^}fNCYaF^Tygfc*|C2;p(vJ@xB;-ZxDgOcuGn<!?2~K zM9w&AiUca8b0p!RPEL6aCP#h4hvv!o*}U6(8nBw>q_bk_dn_iMe!GQ~*JY2U$=Wei z?<7t928?t|yRkD4pqGbzV;#M9F6r_zvvbNkG=DKO-G7AavBE-DLIXVEpI-U#twey% zv_l)3Qt^CIJ<~sS_6IjJ-f;N`ad{t<oV9jB#oV@-Yg){Ca(yvrmfp4Zu0O7n4||(f z={<579>R}^IhE`0X@1pLVI&Qqe)kII)rX*eyxy#6LVC-{2Z&UZMU9mNiX7x35=sYW z#Vlm(9M;ndsxGA)hSx&RTCeDZ$qj}FhJ2A;jR>VxBRs5a(eQU(N3PFSJ{DM-d=jH- zViW~SEJWa7j*+c?x&e_fJ#gITqz$iiMl@Li?W?+tuE^P&CB?U5JA=gsS5RSjhY>s1 z>HSyF>Jrv5o#nhKsw9xd(z|sRi?xJvoRJ@ExCNqTa77O%3_sPhohGLJ<rXCT)M;(a zkNq2ILr#PLQPL%rJ^iPsf$%XjRAx3>A^*K<ao*K*%;aUz(z6<3WS0t0{!MYn%nJis zpWCgKaG0kegG*oh5wVd7;kd!TnEG%d&CS7Xh{qk%eB`~9ewLDoV0e`;vxRhKdH5j^ z_O?$P3m+Aa(u-Q(F+s5zd0gevs@e~zSejB%$;KtiwEJ$jH<Vl`K>~=RQTjpmmFs52 zTGlCvx^;#H1hWLMxz`|9&&DExyk1f;JJ#l#7%nJnYv-WculVq~!u~p$!`B2KJ10BJ z8W@+%&fDyKDhSoPK&e|(AajQyd*p*^(ceDwbAKI(hrHw5qhgU`(DDTVN`#3a1+dJE zF*~QOg0=+O8OFT)S66SC3BH}xyb_njY+en1VcHyc^13>5cqE<r03Ah{QQQ9QTQdzk zeNDKalfdPR5tx&G^iIr+7ZbOxzQ~UJ)<1&Z>D9=Q50ZSSU%r=XSGiGmJvqEfP;H0= zIyFRP^&5@6y!!N9BK!6_W6R<1CcxBR_f=JIqB=Slq<~ugwG{+7dG=bTZj_|Hp`B6< zW7y}{qGnxqb<aBYq5IP0$p?Ur<;T$+jBpC{gM8(-JzH;(DtFN(ER_YFlUX7nA|?F1 zM?m&u@01&|$vkVo9pGQ^5}lpp0H{gL&(EJGyFTei|EF(sZiD{LYnqL8yH~$YVwMCV za=zH?GLE~v=|QQXSfRKDaB_BzYta7t;{Ljx@oQEFkZri0akJz%OSTdk0kcXTI7yUB z43kfu7Zl@Ptb!?xwd9tTmc~!0`YJeq!IgkcY=cjq{5gqkenG)h($e0ZH(Al&eKQ-* z^ZthI>ReY_e}Oh3y|f*@y;N)=kwEiZIhNn+{Fkc9PJU^_U18Z8b~=j~_LKC{Ma|Sg zfkS6Yq1X^&vL^uNDm+O2-up<^v?J@5va&M1Lpu>L$~E2f{TRD0=hk#Ms=9Oq4y@nj zDxOgx{{G_rR+8Ao>?kd%$lvygH#!--(#&azi3ga;Drd=+<>j@jaChP;M{!{kT3-j* z!gUc^F5!#u92(9{#Otd~)&z~84RH|2)^MSu6bhUWtplGzHupg}7Ksj8b<gTpIS|LQ zg@pzEGXK2=`JKjn?ZT`qcJs`d!-1K0!m+W8*`HR~0T}3)1pGL)JNQ-T-Tmu4wo}-M z?=9uT$Q@tFYd>e(Ph9Q?8RgF#xa7te@T}(v31IY1l%;3nJal4zMBICqGJhAlva;gq z0Q6C0)f8d@h0ch%-S-w<&p{LlRSLA(3uQf*I>fI^{dC%PuXs*qGmm%4QF9jD{l0X? zl`8cQt5<pp_$7soq9WIRwQpA~&M7IrFBo}h<>`qzxFPE+fCSovx`XV=t&hO>RB{uE zVLgZogyc+%M%m^pkRNYDVFhLH#GFxAaoWCaL86@J!1wRpEy}wWs>ZBv+~$x^DGpVj zUdPgWjUir+H{IW2u8&EO=|1o@T_}It87~!bC!@dTdj3V<Q<*l}Kb+jm9pFX^uD8`z zZ~f{odFzA#*5FGTnwqIfEYt%f>$eWb-|?SDU93D)l1hY0Dc503$@OdBQOEZz-!)R_ z>D}@!db#w3Gz}J0myk67&9O?{X?S+FS%{BseGWLnw4OhIF4ca4WSr(Q18d0J%F4=l zz`_!61mMI8&&kz<G}Lb=OoPBgIRhBA&mVs6AE0IU@Fl>LjEW{O{D!3DJkIyXvLvc= zrW-Cu1IiYSC9;F~_^a0VUeA+iCfS{g3+hWcyqlJ!Pr0wW@pS*l!;+p!@&l|Jv849M z?gqvzdN7~Y)g?mZAxzcP#19b?M>hcCta}}U2`~rF+AJv=ZtYV(QBlk>U|rF^9>9!1 z?Bw>(#d)4!mg4~PjnxqI9YEV9XbKpgSMm%H!JilRhIOVF?nV9ChQ<OdT<#^VXUaO= zk9^zE^uRv$FMH(p>)-TOop+Jvi%&_p9=JA`qX)o0%wBlxAsdHB-o1~PA5NOb55JWQ zrD0(S4l`_H6nlbdD=jV66iO<ns_cQg!#|#|ohv??h3*82N&*+{7zppgD(#=3C=rQ_ zLB^*~-{K6vh<R&~Xv=tUxeNa00`AaLh!ehR=QqZd*KuUrO6ZjPYFp+9fz-*Kd~7N% z?uB!}?Za4^^zjj!!K^1zjg5`!YRak4o;?fA$jE4XN9)niU%wEhOrMbK1F@6V1*9<h zw;->$+1MTxo5n2s<7ORl<#z%Cuo>LE5P9EJIZR^aKakXaP?$s{g+|Xvv^&Cvr2gf( ze|dQ6XZFhepUSI$d1(?btCMK_k#7A4=l?!JfX{&b{h2?*4vMDbHO+qG?$dt&690T# zKrC=r$vc*d82&deqG-N@nofCtAo-LK<vD&R=PM<Dqpg1v2*3W_D4Web?Ae1GW+L|< TPyqLkAyQM;zF&OLCiMRS!7&Qv literal 24564 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%0AMdcRf^YBc&}{-HL7FO#ky;oYo)#8WN(_d- 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 diff --git a/src/main/resources/templates/notification_structures.html b/src/main/resources/templates/notification_structures.html index 3b6d4cc3..f49ed983 100644 --- a/src/main/resources/templates/notification_structures.html +++ b/src/main/resources/templates/notification_structures.html @@ -30,29 +30,14 @@ <tr th:if="${numberCreated > 0}"> <td style="padding-left: 0px;">Number of created structures: </td> <td th:text="${numberCreated}"/> - <td>that need APPROVE, CANCEL, REJECT</td> </tr> <tr th:if="${numberUpdated > 0}"> <td style="padding-left: 0px;">Number of updated structures: </td> <td th:text="${numberUpdated}"/> - <td>that need APPROVE, CANCEL, REJECT</td> </tr> <tr th:if="${numberDeleted > 0}"> <td style="padding-left: 0px;">Number of deleted structures: </td> <td th:text="${numberDeleted}"/> - <td>that need APPROVE, CANCEL, REJECT</td> - </tr> - <tr th:if="${numberApproved > 0}"> - <td style="padding-left: 0px;">Number of approved structures: </td> - <td th:text="${numberApproved}"/> - </tr> - <tr th:if="${numberCancelled > 0}"> - <td style="padding-left: 0px;">Number of cancelled structures: </td> - <td th:text="${numberCancelled}"/> - </tr> - <tr th:if="${numberRejected > 0}"> - <td style="padding-left: 0px;">Number of rejected structures: </td> - <td th:text="${numberRejected}"/> </tr> </table> <br/> @@ -67,7 +52,6 @@ <tr> <th>Type</th> <th>Create Update Delete</th> - <th>Approve Cancel Reject</th> <th>Old</th> <th/> @@ -81,7 +65,6 @@ <tr th:each="row: ${created}"> <td th:text="${row.getType()}"/> <td th:text="${row.getStructureCommandCUD()}"/> - <td th:text="${row.getStructureCommandACR()}"/> <td style="font-weight: bold;"> <div> @@ -118,7 +101,6 @@ <tr> <th>Type</th> <th>Create Update Delete</th> - <th>Approve Cancel Reject</th> <th>Old</th> <th/> @@ -132,7 +114,6 @@ <tr th:each="row: ${updated}"> <td th:text="${row.getType()}"/> <td th:text="${row.getStructureCommandCUD()}"/> - <td th:text="${row.getStructureCommandACR()}"/> <td style="font-weight: bold;"> <div> @@ -169,7 +150,6 @@ <tr> <th>Type</th> <th>Create Update Delete</th> - <th>Approve Cancel Reject</th> <th>Old</th> <th/> @@ -183,160 +163,6 @@ <tr th:each="row: ${deleted}"> <td th:text="${row.getType()}"/> <td th:text="${row.getStructureCommandCUD()}"/> - <td th:text="${row.getStructureCommandACR()}"/> - - <td style="font-weight: bold;"> - <div> - <div th:text=${row.getOldMnemonic()}></div> - <div th:text=${row.getOldMnemonicpath()}></div> - <div th:text=${row.getOldDescription()}></div> - </div> - </td> - <td style="text-align: center; white-space: nowrap;" th:text="' -> '"/> - <td style="font-weight: bold;"> - <div> - <div th:text=${row.getNewMnemonic()}></div> - <div th:text=${row.getNewMnemonicpath()}></div> - <div th:text=${row.getNewDescription()}></div> - </div> - </td> - - <td th:text="${#dates.format(row.getWhen(), 'yyyy.MM.dd HH:mm')}"/> - <td th:text="${row.getWho()}"/> - </tr> - </tbody> - </table> - <br/> - <hr> - </div> - - <div th:if="${numberApproved > 0}"> - <div style="padding-bottom: 10px;"> - <h3>Approved</h3> - </div> - - <table style="padding-bottom: 10px; width: 90%"> - <thead> - <tr> - <th>Type</th> - <th>Create Update Delete</th> - <th>Approve Cancel Reject</th> - - <th>Old</th> - <th/> - <th>New</th> - - <th>When</th> - <th>Who</th> - </tr> - </thead> - <tbody> - <tr th:each="row: ${approved}"> - <td th:text="${row.getType()}"/> - <td th:text="${row.getStructureCommandCUD()}"/> - <td th:text="${row.getStructureCommandACR()}"/> - - <td style="font-weight: bold;"> - <div> - <div th:text=${row.getOldMnemonic()}></div> - <div th:text=${row.getOldMnemonicpath()}></div> - <div th:text=${row.getOldDescription()}></div> - </div> - </td> - <td style="text-align: center; white-space: nowrap;" th:text="' -> '"/> - <td style="font-weight: bold;"> - <div> - <div th:text=${row.getNewMnemonic()}></div> - <div th:text=${row.getNewMnemonicpath()}></div> - <div th:text=${row.getNewDescription()}></div> - </div> - </td> - - <td th:text="${#dates.format(row.getWhen(), 'yyyy.MM.dd HH:mm')}"/> - <td th:text="${row.getWho()}"/> - </tr> - </tbody> - </table> - <br/> - <hr> - </div> - - <div th:if="${numberCancelled > 0}"> - <div style="padding-bottom: 10px;"> - <h3>Cancelled</h3> - </div> - - <table style="padding-bottom: 10px; width: 90%"> - <thead> - <tr> - <th>Type</th> - <th>Create Update Delete</th> - <th>Approve Cancel Reject</th> - - <th>Old</th> - <th/> - <th>New</th> - - <th>When</th> - <th>Who</th> - </tr> - </thead> - <tbody> - <tr th:each="row: ${cancelled}"> - <td th:text="${row.getType()}"/> - <td th:text="${row.getStructureCommandCUD()}"/> - <td th:text="${row.getStructureCommandACR()}"/> - - <td style="font-weight: bold;"> - <div> - <div th:text=${row.getOldMnemonic()}></div> - <div th:text=${row.getOldMnemonicpath()}></div> - <div th:text=${row.getOldDescription()}></div> - </div> - </td> - <td style="text-align: center; white-space: nowrap;" th:text="' -> '"/> - <td style="font-weight: bold;"> - <div> - <div th:text=${row.getNewMnemonic()}></div> - <div th:text=${row.getNewMnemonicpath()}></div> - <div th:text=${row.getNewDescription()}></div> - </div> - </td> - - <td th:text="${#dates.format(row.getWhen(), 'yyyy.MM.dd HH:mm')}"/> - <td th:text="${row.getWho()}"/> - </tr> - </tbody> - </table> - <br/> - <hr> - </div> - - <div th:if="${numberRejected > 0}"> - <div style="padding-bottom: 10px;"> - <h3>Rejected</h3> - </div> - - <table style="padding-bottom: 10px; width: 90%"> - <thead> - <tr> - <th>Type</th> - <th>Create Update Delete</th> - <th>Approve Cancel Reject</th> - - <th>Old</th> - <th/> - <th>New</th> - - <th>When</th> - <th>Who</th> - </tr> - </thead> - <tbody> - <tr th:each="row: ${rejected}"> - <td th:text="${row.getType()}"/> - <td th:text="${row.getStructureCommandCUD()}"/> - <td th:text="${row.getStructureCommandACR()}"/> <td style="font-weight: bold;"> <div> diff --git a/src/test/java/org/openepics/names/docker/ConvertIT.java b/src/test/java/org/openepics/names/docker/ConvertIT.java index 6da5404b..ab41f9c1 100644 --- a/src/test/java/org/openepics/names/docker/ConvertIT.java +++ b/src/test/java/org/openepics/names/docker/ConvertIT.java @@ -85,48 +85,48 @@ class ConvertIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; NameElementCommandCreate[] nameElementCommandsCreate = null; structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Acc", null, "Accelerator. The ESS Linear Accelerator") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemGroupAcc = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemGroupAcc = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupAcc, "RFQ", null, "Radio Frequency Quadrupole") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemRFQ = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemRFQ = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "010PRL", null, "01 Phase Reference Line"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "010", null, "RFQ-010"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "N1U1", null, "Power switch board 01. Electrical power cabinets") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - subsystem010 = approvedStructureElements[1].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + subsystem010 = structureElements[1].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "EMR", null, "Electromagnetic Resonators") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - disciplineEMR = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + disciplineEMR = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineEMR, null, null, "Control") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceGroupEMR = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceGroupEMR = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupEMR, "FS", null, "Flow Switch"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupEMR, "RFA", null, "RF Antenna"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupEMR, "TT", null, "Temperature Transmitter") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceTypeFS = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceTypeFS = structureElements[0].getUuid(); nameElementCommandsCreate = new NameElementCommandCreate[] { new NameElementCommandCreate(subsystem010, deviceTypeFS, "001", "description"), diff --git a/src/test/java/org/openepics/names/docker/ITUtilNames.java b/src/test/java/org/openepics/names/docker/ITUtilNames.java index 156a960a..fa427dc5 100644 --- a/src/test/java/org/openepics/names/docker/ITUtilNames.java +++ b/src/test/java/org/openepics/names/docker/ITUtilNames.java @@ -524,18 +524,18 @@ public class ITUtilNames { * @see ITUtilNames#assertCreate(AuthorizationChoice, String, int) */ public static NameElement assertCreate(NameElementCommandCreate nameElementCommand) { - NameElement[] createdNameElements = assertCreate(AuthorizationChoice.NONE, object2Json(new NameElementCommandCreate[] {nameElementCommand}), HttpURLConnection.HTTP_CREATED); - return createdNameElements != null - ? createdNameElements[0] + NameElement[] nameElements = assertCreate(AuthorizationChoice.NONE, object2Json(new NameElementCommandCreate[] {nameElementCommand}), HttpURLConnection.HTTP_CREATED); + return nameElements != null + ? nameElements[0] : null; } /** * @see ITUtilNames#assertCreate(AuthorizationChoice, String, int) */ public static NameElement assertCreate(NameElementCommandCreate nameElementCommand, int expectedResponseCode) { - NameElement[] createdNameElements = assertCreate(AuthorizationChoice.NONE, object2Json(new NameElementCommandCreate[] {nameElementCommand}), expectedResponseCode); - return createdNameElements != null - ? createdNameElements[0] + NameElement[] nameElements = assertCreate(AuthorizationChoice.NONE, object2Json(new NameElementCommandCreate[] {nameElementCommand}), expectedResponseCode); + return nameElements != null + ? nameElements[0] : null; } /** @@ -559,7 +559,7 @@ public class ITUtilNames { * @return created name element */ public static NameElement[] assertCreate(AuthorizationChoice authorizationChoice, String json, int expectedResponseCode) { - NameElement[] createdNameElements = null; + NameElement[] nameElements = null; try { String[] response = null; @@ -568,9 +568,9 @@ public class ITUtilNames { ITUtil.assertResponseLength2Code(response, expectedResponseCode); if (HttpURLConnection.HTTP_CREATED == expectedResponseCode) { - createdNameElements = mapper.readValue(response[1], NameElement[].class); + nameElements = mapper.readValue(response[1], NameElement[].class); - for (NameElement createdNameElement : createdNameElements) { + for (NameElement createdNameElement : nameElements) { assertNotNull(createdNameElement.getUuid()); assertEquals(Boolean.TRUE, createdNameElement.isLatest()); assertEquals(Boolean.FALSE, createdNameElement.isDeleted()); @@ -588,7 +588,7 @@ public class ITUtilNames { fail(); } - return createdNameElements; + return nameElements; } // ---------------------------------------------------------------------------------------------------- @@ -597,18 +597,18 @@ public class ITUtilNames { * @see ITUtilNames#assertUpdate(AuthorizationChoice, String, int) */ public static NameElement assertUpdate(NameElementCommandUpdate nameElementCommand) { - NameElement[] updatedNameElements = assertUpdate(AuthorizationChoice.NONE, object2Json(new NameElementCommandUpdate[] {nameElementCommand}), HttpURLConnection.HTTP_OK); - return updatedNameElements != null - ? updatedNameElements[0] + NameElement[] nameElements = assertUpdate(AuthorizationChoice.NONE, object2Json(new NameElementCommandUpdate[] {nameElementCommand}), HttpURLConnection.HTTP_OK); + return nameElements != null + ? nameElements[0] : null; } /** * @see ITUtilNames#assertUpdate(AuthorizationChoice, String, int) */ public static NameElement assertUpdate(NameElementCommandUpdate nameElementCommand, int expectedResponseCode) { - NameElement[] updatedNameElements = assertUpdate(AuthorizationChoice.NONE, object2Json(new NameElementCommandUpdate[] {nameElementCommand}), expectedResponseCode); - return updatedNameElements != null - ? updatedNameElements[0] + NameElement[] nameElements = assertUpdate(AuthorizationChoice.NONE, object2Json(new NameElementCommandUpdate[] {nameElementCommand}), expectedResponseCode); + return nameElements != null + ? nameElements[0] : null; } /** @@ -626,7 +626,7 @@ public class ITUtilNames { * @return updated name element */ public static NameElement[] assertUpdate(AuthorizationChoice authorizationChoice, String json, int expectedResponseCode) { - NameElement[] updatedNameElements = null; + NameElement[] nameElements = null; try { String[] response = null; @@ -635,9 +635,9 @@ public class ITUtilNames { ITUtil.assertResponseLength2Code(response, expectedResponseCode); if (HttpURLConnection.HTTP_OK == expectedResponseCode) { - updatedNameElements = mapper.readValue(response[1], NameElement[].class); + nameElements = mapper.readValue(response[1], NameElement[].class); - for (NameElement updatedNameElement : updatedNameElements) { + for (NameElement updatedNameElement : nameElements) { assertNotNull(updatedNameElement.getUuid()); assertEquals(Boolean.TRUE, updatedNameElement.isLatest()); assertEquals(Boolean.FALSE, updatedNameElement.isDeleted()); @@ -652,7 +652,7 @@ public class ITUtilNames { fail(); } - return updatedNameElements; + return nameElements; } // ---------------------------------------------------------------------------------------------------- diff --git a/src/test/java/org/openepics/names/docker/ITUtilStructures.java b/src/test/java/org/openepics/names/docker/ITUtilStructures.java index 46dd6922..5c3fc955 100644 --- a/src/test/java/org/openepics/names/docker/ITUtilStructures.java +++ b/src/test/java/org/openepics/names/docker/ITUtilStructures.java @@ -44,7 +44,6 @@ import org.openepics.names.rest.beans.response.ResponseBoolean; import org.openepics.names.rest.beans.response.ResponseBooleanList; import org.openepics.names.rest.beans.response.ResponsePageStructureElements; import org.openepics.names.util.StructureCommand; -import org.openepics.names.util.StructureElementUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -206,7 +205,6 @@ public class ITUtilStructures { * @return response page structure elements */ public static ResponsePageStructureElements assertFind(String queryString, int expectedResponseCode) { - // maximum number of elements will be two (PENDING, APPROVED) for given uuid try { String[] response = null; ResponsePageStructureElements responsePageStructureElements = null; @@ -517,15 +515,6 @@ public class ITUtilStructures { case DELETE: validatePath = "/validateDelete"; break; - case APPROVE: - validatePath = "/validateApprove"; - break; - case CANCEL: - validatePath = "/validateCancel"; - break; - case REJECT: - validatePath = "/validateReject"; - break; default: break; } @@ -538,18 +527,18 @@ public class ITUtilStructures { * @see ITUtilStructures#assertCreate(AuthorizationChoice, String, int) */ public static StructureElement assertCreate(StructureElementCommandCreate structureElementCommand) { - StructureElement[] createdStructureElements = assertCreate(AuthorizationChoice.NONE, object2Json(new StructureElementCommandCreate[] {structureElementCommand}), HttpURLConnection.HTTP_CREATED); - return createdStructureElements != null - ? createdStructureElements[0] + StructureElement[] structureElements = assertCreate(AuthorizationChoice.NONE, object2Json(new StructureElementCommandCreate[] {structureElementCommand}), HttpURLConnection.HTTP_CREATED); + return structureElements != null + ? structureElements[0] : null; } /** * @see ITUtilStructures#assertCreate(AuthorizationChoice, String, int) */ public static StructureElement assertCreate(StructureElementCommandCreate structureElementCommand, int expectedResponseCode) { - StructureElement[] createdStructureElements = assertCreate(AuthorizationChoice.NONE, object2Json(new StructureElementCommandCreate[] {structureElementCommand}), expectedResponseCode); - return createdStructureElements != null - ? createdStructureElements[0] + StructureElement[] structureElements = assertCreate(AuthorizationChoice.NONE, object2Json(new StructureElementCommandCreate[] {structureElementCommand}), expectedResponseCode); + return structureElements != null + ? structureElements[0] : null; } /** @@ -573,7 +562,7 @@ public class ITUtilStructures { * @return created structure element */ public static StructureElement[] assertCreate(AuthorizationChoice authorizationChoice, String json, int expectedResponseCode) { - StructureElement[] createdStructureElements = null; + StructureElement[] structureElements = null; try { String[] response = null; @@ -582,13 +571,13 @@ public class ITUtilStructures { ITUtil.assertResponseLength2Code(response, expectedResponseCode); if (HttpURLConnection.HTTP_CREATED == expectedResponseCode) { - createdStructureElements = mapper.readValue(response[1], StructureElement[].class); + structureElements = mapper.readValue(response[1], StructureElement[].class); - for (StructureElement createdStructureElement : createdStructureElements) { + for (StructureElement createdStructureElement : structureElements) { assertNotNull(createdStructureElement.getUuid()); - assertEquals(Status.PENDING, createdStructureElement.getStatus()); - assertEquals(Boolean.FALSE, createdStructureElement.isLatest()); - assertEquals(Boolean.FALSE, createdStructureElement.isDeleted()); + assertEquals(Status.APPROVED, createdStructureElement.getStatus()); + assertEquals(Boolean.TRUE, createdStructureElement.isLatest()); + assertEquals(Boolean.FALSE, createdStructureElement.isDeleted()); assertNotNull(createdStructureElement.getWhen()); } @@ -603,7 +592,7 @@ public class ITUtilStructures { fail(); } - return createdStructureElements; + return structureElements; } // ---------------------------------------------------------------------------------------------------- @@ -612,18 +601,18 @@ public class ITUtilStructures { * @see ITUtilStructures#assertUpdate(AuthorizationChoice, String, int) */ public static StructureElement assertUpdate(StructureElementCommandUpdate structureElementCommand) { - StructureElement[] updatedStructureElements = assertUpdate(AuthorizationChoice.NONE, object2Json(new StructureElementCommandUpdate[] {structureElementCommand}), HttpURLConnection.HTTP_OK); - return updatedStructureElements != null - ? updatedStructureElements[0] + StructureElement[] structureElements = assertUpdate(AuthorizationChoice.NONE, object2Json(new StructureElementCommandUpdate[] {structureElementCommand}), HttpURLConnection.HTTP_OK); + return structureElements != null + ? structureElements[0] : null; } /** * @see ITUtilStructures#assertUpdate(AuthorizationChoice, String, int) */ public static StructureElement assertUpdate(StructureElementCommandUpdate structureElementCommand, int expectedResponseCode) { - StructureElement[] updatedStructureElements = assertUpdate(AuthorizationChoice.NONE, object2Json(new StructureElementCommandUpdate[] {structureElementCommand}), expectedResponseCode); - return updatedStructureElements != null - ? updatedStructureElements[0] + StructureElement[] structureElements = assertUpdate(AuthorizationChoice.NONE, object2Json(new StructureElementCommandUpdate[] {structureElementCommand}), expectedResponseCode); + return structureElements != null + ? structureElements[0] : null; } /** @@ -641,7 +630,7 @@ public class ITUtilStructures { * @return updated structure element */ public static StructureElement[] assertUpdate(AuthorizationChoice authorizationChoice, String json, int expectedResponseCode) { - StructureElement[] updatedStructureElements = null; + StructureElement[] structureElements = null; try { String[] response = null; @@ -650,13 +639,13 @@ public class ITUtilStructures { ITUtil.assertResponseLength2Code(response, expectedResponseCode); if (HttpURLConnection.HTTP_OK == expectedResponseCode) { - updatedStructureElements = mapper.readValue(response[1], StructureElement[].class); + structureElements = mapper.readValue(response[1], StructureElement[].class); - for (StructureElement updatedStructureElement : updatedStructureElements) { + for (StructureElement updatedStructureElement : structureElements) { assertNotNull(updatedStructureElement.getUuid()); - assertEquals(Status.PENDING, updatedStructureElement.getStatus()); - assertEquals(Boolean.FALSE, updatedStructureElement.isLatest()); - assertEquals(Boolean.FALSE, updatedStructureElement.isDeleted()); + assertEquals(Status.APPROVED, updatedStructureElement.getStatus()); + assertEquals(Boolean.TRUE, updatedStructureElement.isLatest()); + assertEquals(Boolean.FALSE, updatedStructureElement.isDeleted()); assertNotNull(updatedStructureElement.getWhen()); } } @@ -668,7 +657,7 @@ public class ITUtilStructures { fail(); } - return updatedStructureElements; + return structureElements; } // ---------------------------------------------------------------------------------------------------- @@ -713,378 +702,4 @@ public class ITUtilStructures { } } - // ---------------------------------------------------------------------------------------------------- - - /** - * @see ITUtilStructures#assertApprove(AuthorizationChoice, String, int) - */ - public static StructureElement assertApprove(StructureElementCommandConfirm structureElementCommand) { - StructureElement[] approvedStructureElements = assertApprove(AuthorizationChoice.NONE, object2Json(new StructureElementCommandConfirm[] {structureElementCommand}), HttpURLConnection.HTTP_OK); - return approvedStructureElements != null - ? approvedStructureElements[0] - : null; - } - /** - * @see ITUtilStructures#assertApprove(AuthorizationChoice, String, int) - */ - public static StructureElement assertApprove(StructureElementCommandConfirm structureElementCommand, int expectedResponseCode) { - StructureElement[] approvedStructureElements = assertApprove(AuthorizationChoice.NONE, object2Json(new StructureElementCommandConfirm[] {structureElementCommand}), expectedResponseCode); - return approvedStructureElements != null - ? approvedStructureElements[0] - : null; - } - /** - * @see ITUtilStructures#assertApprove(AuthorizationChoice, String, int) - */ - public static StructureElement[] assertApprove(StructureElementCommandConfirm[] structureElementCommands) { - return assertApprove(AuthorizationChoice.NONE, object2Json(structureElementCommands), HttpURLConnection.HTTP_OK); - } - /** - * Utility method to approve json (structure elements) and assert result and response code. - * - * @param authorizationChoice authorization choice (none, user, admin) - * @param json json - * @param expectedResponseCode expected response code - * @return approved structure element - */ - public static StructureElement[] assertApprove(AuthorizationChoice authorizationChoice, String json, int expectedResponseCode) { - StructureElement[] approvedStructureElements = null; - - try { - String[] response = null; - - response = ITUtil.runShellCommand(ITUtil.curlPatchPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "/approve", json)); - ITUtil.assertResponseLength2Code(response, expectedResponseCode); - - if (HttpURLConnection.HTTP_OK == expectedResponseCode) { - approvedStructureElements = mapper.readValue(response[1], StructureElement[].class); - - for (StructureElement approvedStructureElement : approvedStructureElements) { - assertNotNull(approvedStructureElement.getUuid()); - assertEquals(Status.APPROVED, approvedStructureElement.getStatus()); - assertEquals(Boolean.TRUE, approvedStructureElement.isLatest()); - // not known if deleted - assertNotNull(approvedStructureElement.getWhen()); - } - } - } catch (IOException e) { - fail(); - } catch (InterruptedException e) { - fail(); - } catch (Exception e) { - fail(); - } - - return approvedStructureElements; - } - - // ---------------------------------------------------------------------------------------------------- - - /** - * @see ITUtilStructures#assertCancel(AuthorizationChoice, String, int) - */ - public static StructureElement assertCancel(StructureElementCommandConfirm structureElementCommand) { - StructureElement[] cancelledStructureElements = assertCancel(AuthorizationChoice.NONE, object2Json(new StructureElementCommandConfirm[] {structureElementCommand}), HttpURLConnection.HTTP_OK); - return cancelledStructureElements != null - ? cancelledStructureElements[0] - : null; - } - /** - * @see ITUtilStructures#assertCancel(AuthorizationChoice, String, int) - */ - public static StructureElement assertCancel(StructureElementCommandConfirm structureElementCommand, int expectedResponseCode) { - StructureElement[] cancelledStructureElements = assertCancel(AuthorizationChoice.NONE, object2Json(new StructureElementCommandConfirm[] {structureElementCommand}), expectedResponseCode); - return cancelledStructureElements != null - ? cancelledStructureElements[0] - : null; - } - /** - * @see ITUtilStructures#assertCancel(AuthorizationChoice, String, int) - */ - public static StructureElement[] assertCancel(StructureElementCommandConfirm[] structureElementCommands) { - return assertCancel(AuthorizationChoice.NONE, object2Json(structureElementCommands), HttpURLConnection.HTTP_OK); - } - /** - * Utility method to cancel json (structure elements) and assert result and response code. - * - * @param authorizationChoice authorization choice (none, user, admin) - * @param json json - * @param expectedResponseCode expected response code - * @return cancelled structure element - */ - public static StructureElement[] assertCancel(AuthorizationChoice authorizationChoice, String json, int expectedResponseCode) { - StructureElement[] cancelledStructureElements = null; - - try { - String[] response = null; - - response = ITUtil.runShellCommand(ITUtil.curlPatchPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "/cancel", json)); - ITUtil.assertResponseLength2Code(response, expectedResponseCode); - - if (HttpURLConnection.HTTP_OK == expectedResponseCode) { - cancelledStructureElements = mapper.readValue(response[1], StructureElement[].class); - - for (StructureElement cancelledStructureElement : cancelledStructureElements) { - assertNotNull(cancelledStructureElement.getUuid()); - assertEquals(Status.CANCELLED, cancelledStructureElement.getStatus()); - assertEquals(Boolean.FALSE, cancelledStructureElement.isLatest()); - // not known if deleted - assertNotNull(cancelledStructureElement.getWhen()); - } - } - } catch (IOException e) { - fail(); - } catch (InterruptedException e) { - fail(); - } catch (Exception e) { - fail(); - } - - return cancelledStructureElements; - } - - // ---------------------------------------------------------------------------------------------------- - - /** - * @see ITUtilStructures#assertReject(AuthorizationChoice, String, int) - */ - public static StructureElement assertReject(StructureElementCommandConfirm structureElementCommand) { - StructureElement[] rejectedStructureElements = assertReject(AuthorizationChoice.NONE, object2Json(new StructureElementCommandConfirm[] {structureElementCommand}), HttpURLConnection.HTTP_OK); - return rejectedStructureElements != null - ? rejectedStructureElements[0] - : null; - } - /** - * @see ITUtilStructures#assertReject(AuthorizationChoice, String, int) - */ - public static StructureElement assertReject(StructureElementCommandConfirm structureElementCommand, int expectedResponseCode) { - StructureElement[] rejectedStructureElements = assertReject(AuthorizationChoice.NONE, object2Json(new StructureElementCommandConfirm[] {structureElementCommand}), expectedResponseCode); - return rejectedStructureElements != null - ? rejectedStructureElements[0] - : null; - } - /** - * @see ITUtilStructures#assertReject(AuthorizationChoice, String, int) - */ - public static StructureElement[] assertReject(StructureElementCommandConfirm[] structureElementCommands) { - return assertReject(AuthorizationChoice.NONE, object2Json(structureElementCommands), HttpURLConnection.HTTP_OK); - } - /** - * Utility method to reject json (structure elements) and assert result and response code. - * - * @param authorizationChoice authorization choice (none, user, admin) - * @param json json - * @param expectedResponseCode expected response code - * @return rejected structure element - */ - public static StructureElement[] assertReject(AuthorizationChoice authorizationChoice, String json, int expectedResponseCode) { - StructureElement[] rejectedStructureElements = null; - - try { - String[] response = null; - - response = ITUtil.runShellCommand(ITUtil.curlPatchPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "/reject", json)); - ITUtil.assertResponseLength2Code(response, expectedResponseCode); - - if (HttpURLConnection.HTTP_OK == expectedResponseCode) { - rejectedStructureElements = mapper.readValue(response[1], StructureElement[].class); - - for (StructureElement rejectedStructureElement : rejectedStructureElements) { - assertNotNull(rejectedStructureElement.getUuid()); - assertEquals(Status.REJECTED, rejectedStructureElement.getStatus()); - assertEquals(Boolean.FALSE, rejectedStructureElement.isLatest()); - // not known if deleted - assertNotNull(rejectedStructureElement.getWhen()); - } - } - } catch (IOException e) { - fail(); - } catch (InterruptedException e) { - fail(); - } catch (Exception e) { - fail(); - } - - return rejectedStructureElements; - } - - // ---------------------------------------------------------------------------------------------------- - - /** - * Utility method to create, approve a structure element and assert result. - * - * @param structureElementCommand structure element command - * @return approved structure element (after create) - */ - public static StructureElement assertCreateApprove(StructureElementCommandCreate structureElementCommand) { - return assertApprove(StructureElementUtil.convertElement2CommandConfirm(assertCreate(structureElementCommand))); - } - /** - * Utility method to create, approve structure elements and assert result. - * - * @param structureElementCommands structure element commands - * @return approved structure elements (after create) - */ - public static StructureElement[] assertCreateApprove(StructureElementCommandCreate[] structureElementCommands) { - return assertApprove(StructureElementUtil.convertElement2CommandConfirm(assertCreate(structureElementCommands))); - } - - /** - * Utility method to create, cancel a structure element and assert result. - * - * @param structureElementCommand structure element command - * @return cancelled structure element (after create) - */ - public static StructureElement assertCreateCancel(StructureElementCommandCreate structureElementCommand) { - return assertCancel(StructureElementUtil.convertElement2CommandConfirm(assertCreate(structureElementCommand))); - } - /** - * Utility method to create, cancel structure elements and assert result. - * - * @param structureElementCommands structure element commands - * @return cancelled structure elements (after create) - */ - public static StructureElement[] assertCreateCancel(StructureElementCommandCreate[] structureElementCommands) { - return assertCancel(StructureElementUtil.convertElement2CommandConfirm(assertCreate(structureElementCommands))); - } - - /** - * Utility method to create, reject a structure element and assert result. - * - * @param structureElementCommand structure element command - * @return rejected structure element (after create) - */ - public static StructureElement assertCreateReject(StructureElementCommandCreate structureElementCommand) { - return assertReject(StructureElementUtil.convertElement2CommandConfirm(assertCreate(structureElementCommand))); - } - /** - * Utility method to create, reject structure elements and assert result. - * - * @param structureElementCommands structure element commands - * @return rejected structure elements (after create) - */ - public static StructureElement[] assertCreateReject(StructureElementCommandCreate[] structureElementCommands) { - return assertReject(StructureElementUtil.convertElement2CommandConfirm(assertCreate(structureElementCommands))); - } - - /** - * Utility method to update, approve a structure element and assert result. - * - * @param structureElementCommand structure element command - * @return approved structure element (after update) - */ - public static StructureElement assertUpdateApprove(StructureElementCommandUpdate structureElementCommand) { - return assertApprove(StructureElementUtil.convertElement2CommandConfirm(assertUpdate(structureElementCommand))); - } - /** - * Utility method to update, approve structure elements and assert result. - * - * @param structureElementCommands structure element commands - * @return approved structure elements (after update) - */ - public static StructureElement[] assertUpdateApprove(StructureElementCommandUpdate[] structureElementCommands) { - return assertApprove(StructureElementUtil.convertElement2CommandConfirm(assertUpdate(structureElementCommands))); - } - - /** - * Utility method to update, cancel a structure element and assert result. - * - * @param structureElementCommand structure element command - * @return cancelled structure element (after update) - */ - public static StructureElement assertUpdateCancel(StructureElementCommandUpdate structureElementCommand) { - return assertCancel(StructureElementUtil.convertElement2CommandConfirm(assertUpdate(structureElementCommand))); - } - /** - * Utility method to update, cancel structure elements and assert result. - * - * @param structureElementCommands structure element commands - * @return cancelled structure elements (after update) - */ - public static StructureElement[] assertUpdateCancel(StructureElementCommandUpdate[] structureElementCommands) { - return assertCancel(StructureElementUtil.convertElement2CommandConfirm(assertUpdate(structureElementCommands))); - } - - /** - * Utility method to update, reject a structure element and assert result. - * - * @param structureElementCommand structure element command - * @return rejected structure element (after update) - */ - public static StructureElement assertUpdateReject(StructureElementCommandUpdate structureElementCommand) { - return assertReject(StructureElementUtil.convertElement2CommandConfirm(assertUpdate(structureElementCommand))); - } - /** - * Utility method to update, reject structure elements and assert result. - * - * @param structureElementCommands structure element commands - * @return rejected structure elements (after update) - */ - public static StructureElement[] assertUpdateReject(StructureElementCommandUpdate[] structureElementCommands) { - return assertReject(StructureElementUtil.convertElement2CommandConfirm(assertUpdate(structureElementCommands))); - } - - /** - * Utility method to delete, approve a structure element and assert result. - * - * @param structureElementCommand structure element command - * @return approved structure element (after delete) - */ - public static StructureElement assertDeleteApprove(StructureElementCommandConfirm structureElementCommand) { - assertDelete(structureElementCommand); - return assertApprove(structureElementCommand); - } - /** - * Utility method to delete, approve structure elements and assert result. - * - * @param structureElementCommands structure element commands - * @return approved structure elements (after delete) - */ - public static StructureElement[] assertDeleteApprove(StructureElementCommandConfirm[] structureElementCommands) { - assertDelete(structureElementCommands); - return assertApprove(structureElementCommands); - } - - /** - * Utility method to delete, cancel a structure element and assert result. - * - * @param structureElementCommand structure element command - * @return cancelled structure element (after delete) - */ - public static StructureElement assertDeleteCancel(StructureElementCommandConfirm structureElementCommand) { - assertDelete(structureElementCommand); - return assertCancel(structureElementCommand); - } - /** - * Utility method to delete, cancel structure elements and assert result. - * - * @param structureElementCommands structure element commands - * @return cancelled structure elements (after delete) - */ - public static StructureElement[] assertDeleteCancel(StructureElementCommandConfirm[] structureElementCommands) { - assertDelete(structureElementCommands); - return assertCancel(structureElementCommands); - } - - /** - * Utility method to delete, reject a structure element and assert result. - * - * @param structureElementCommand structure element command - * @return rejected structure element (after delete) - */ - public static StructureElement assertDeleteReject(StructureElementCommandConfirm structureElementCommand) { - assertDelete(structureElementCommand); - return assertReject(structureElementCommand); - } - /** - * Utility method to delete, reject structure elements and assert result. - * - * @param structureElementCommands structure element commands - * @return rejected structure elements (after delete) - */ - public static StructureElement[] assertDeleteReject(StructureElementCommandConfirm[] structureElementCommands) { - assertDelete(structureElementCommands); - return assertReject(structureElementCommands); - } - } diff --git a/src/test/java/org/openepics/names/docker/MetricsIT.java b/src/test/java/org/openepics/names/docker/MetricsIT.java index 401ddc1e..c7ef3c42 100644 --- a/src/test/java/org/openepics/names/docker/MetricsIT.java +++ b/src/test/java/org/openepics/names/docker/MetricsIT.java @@ -74,44 +74,44 @@ public class MetricsIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; NameElementCommandCreate[] nameElementCommandsCreate = null; structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Acc", null, "Accelerator. The ESS Linear Accelerator") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemGroupAcc = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemGroupAcc = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupAcc, "RFQ", null, "Radio Frequency Quadrupole") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemRFQ = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemRFQ = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "010", null, "RFQ-010") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - subsystem010 = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + subsystem010 = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "EMR", null, "Electromagnetic Resonators") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - disciplineEMR = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + disciplineEMR = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineEMR, null, null, "Control") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceGroupEMR = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceGroupEMR = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupEMR, "FS", null, "Flow Switch") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceTypeFS = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceTypeFS = structureElements[0].getUuid(); nameElementCommandsCreate = new NameElementCommandCreate[] { new NameElementCommandCreate(subsystem010, deviceTypeFS, "001", "description") diff --git a/src/test/java/org/openepics/names/docker/NamesIT.java b/src/test/java/org/openepics/names/docker/NamesIT.java index c3736a69..17f40bbf 100644 --- a/src/test/java/org/openepics/names/docker/NamesIT.java +++ b/src/test/java/org/openepics/names/docker/NamesIT.java @@ -88,51 +88,51 @@ class NamesIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Acc", null, "Accelerator. The ESS Linear Accelerator") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemGroupAcc = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemGroupAcc = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupAcc, "RFQ", null, "Radio Frequency Quadrupole") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemRFQ = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemRFQ = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "010PRL", null, "01 Phase Reference Line"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "010", null, "RFQ-010"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "N1U1", null, "Power switch board 01. Electrical power cabinets") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - subsystem010PRL = approvedStructureElements[0].getUuid(); - subsystem010 = approvedStructureElements[1].getUuid(); - subsystemN1U1 = approvedStructureElements[2].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + subsystem010PRL = structureElements[0].getUuid(); + subsystem010 = structureElements[1].getUuid(); + subsystemN1U1 = structureElements[2].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "EMR", null, "Electromagnetic Resonators") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - disciplineEMR = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + disciplineEMR = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineEMR, null, null, "Control") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceGroupEMR = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceGroupEMR = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupEMR, "FS", null, "Flow Switch"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupEMR, "RFA", null, "RF Antenna"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupEMR, "TT", null, "Temperature Transmitter") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceTypeFS = approvedStructureElements[0].getUuid(); - deviceTypeRFA = approvedStructureElements[1].getUuid(); - deviceTypeTT = approvedStructureElements[2].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceTypeFS = structureElements[0].getUuid(); + deviceTypeRFA = structureElements[1].getUuid(); + deviceTypeTT = structureElements[2].getUuid(); // check content ITUtilStructures.assertRead("", 10); @@ -752,7 +752,7 @@ class NamesIT { ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=3&pageSize=3", 0); // order by, pagination - response = ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=true&page=0&pageSize=3", 3); + response = ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=true&page=0&pageSize=3", 3); response2 = ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=false&page=2&pageSize=3", 2); assertEquals(response.getList().get(0).getWhen().toString(), response2.getList().get(response2.getList().size()-1).getWhen().toString()); response = ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=false&page=0&pageSize=3", 3); diff --git a/src/test/java/org/openepics/names/docker/PvNamesIT.java b/src/test/java/org/openepics/names/docker/PvNamesIT.java index f416381b..6d4580a1 100644 --- a/src/test/java/org/openepics/names/docker/PvNamesIT.java +++ b/src/test/java/org/openepics/names/docker/PvNamesIT.java @@ -70,44 +70,44 @@ public class PvNamesIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; NameElementCommandCreate[] nameElementCommandsCreate = null; structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Acc", null, "Accelerator. The ESS Linear Accelerator") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemGroupAcc = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemGroupAcc = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupAcc, "RFQ", null, "Radio Frequency Quadrupole") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemRFQ = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemRFQ = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "010", null, "RFQ-010") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - subsystem010 = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + subsystem010 = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "EMR", null, "Electromagnetic Resonators") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - disciplineEMR = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + disciplineEMR = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineEMR, null, null, "Control") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceGroupEMR = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceGroupEMR = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupEMR, "FS", null, "Flow Switch") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceTypeFS = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceTypeFS = structureElements[0].getUuid(); nameElementCommandsCreate = new NameElementCommandCreate[] { new NameElementCommandCreate(subsystem010, deviceTypeFS, "001", "description") diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java index aa4e752f..bd15d32b 100644 --- a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java @@ -79,15 +79,15 @@ class StructuresDeviceGroupIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "Di", null, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "Di2", null, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - disciplineUuid = approvedStructureElements[0].getUuid(); - discipline2Uuid = approvedStructureElements[1].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + disciplineUuid = structureElements[0].getUuid(); + discipline2Uuid = structureElements[1].getUuid(); // check content ITUtilStructures.assertRead("", 2); @@ -287,159 +287,37 @@ class StructuresDeviceGroupIT { } @Test - void createApprove() { - // test create and approve device group - // - // note - // create in order to approve - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid, null, null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(createdStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void createCancel() { - // test create and cancel device group - // - // note - // create in order to cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid, null, null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void createReject() { - // test create and reject device group - // - // note - // create in order to reject + void create() { + // test create device group StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; + StructureElement structureElement = null; structureElementCommand = new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid, null, null, "description"); structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); + structureElementCommandUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommand); structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); } @Test @@ -448,7 +326,7 @@ class StructuresDeviceGroupIT { // not update // // note - // create, approve in order to update + // create in order to update // // validate update // uuid @@ -460,15 +338,15 @@ class StructuresDeviceGroupIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; UUID uuid = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - uuid = approvedStructureElement.getUuid(); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid = structureElement.getUuid(); // validate update @@ -522,132 +400,36 @@ class StructuresDeviceGroupIT { } @Test - void updateApprove() { - // test update and approve device group - // - // note - // create, approve in order to update, approve - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // update - ITUtilStructures.assertUpdate(structureElementCommandUpdate); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void updateCancel() { - // test update and cancel device group + void update() { + // test update device group // // note - // create, approve in order to update, cancel + // create in order to update StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // update - ITUtilStructures.assertUpdate(structureElementCommandUpdate); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void updateReject() { - // test update and reject device group - // - // note - // create, approve in order to update, reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, null, "description"); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); + structureElementCommandUpdate.setDescription("description update check"); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); // update ITUtilStructures.assertUpdate(structureElementCommandUpdate); - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); } @Test @@ -656,7 +438,7 @@ class StructuresDeviceGroupIT { // not delete // // note - // create, approve in order to delete + // create in order to delete // // validate delete // uuid @@ -664,15 +446,15 @@ class StructuresDeviceGroupIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; UUID uuid = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - uuid = approvedStructureElement.getUuid(); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + uuid = structureElement.getUuid(); // validate delete @@ -702,131 +484,40 @@ class StructuresDeviceGroupIT { } @Test - void deleteApprove() { - // test delete and approve device group + void delete() { + // test delete device group // // note - // create, approve in order to delete, approve + // create in order to delete, approve StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); // delete ITUtilStructures.assertDelete(structureElementCommandConfirm); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void deleteCancel() { - // test delete and cancel device group - // - // note - // create, approve in order to delete, cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // delete - ITUtilStructures.assertDelete(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void deleteReject() { - // test delete and reject device group - // - // note - // create, approve in order to delete, reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - // delete - ITUtilStructures.assertDelete(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); } @Test - void readSearchHistoryApprove() { - // test read device group in various ways for create, approve + void readSearchHistoryStatus() { + // test read device group in various ways for create // search // latest // history @@ -835,340 +526,75 @@ class StructuresDeviceGroupIT { // create (and more) to read (with content) StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement approvedStructureElement = null; - int length = 0; + StructureElement structureElement = null; + int count = 0; structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, 41, "description"); - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - // read (1) - length = ITUtilStructures.assertRead("?type=DEVICEGROUP", 1, -1).getListSize(); + count = ITUtilStructures.assertRead("?type=DEVICEGROUP").getListSize(); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING", 1, -1); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING", 0, -1); ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED", 0, -1); ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED", 0, -1); ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED&mnemonic=Rsha", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED&mnemonic=Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Di", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rsha", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?mnemonic=Di-Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Di-Rshs&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Di", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rsha", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs", 0); + ITUtilStructures.assertRead("?mnemonicPath=Di-Rshs", 0); ITUtilStructures.assertRead("?mnemonicPath=Di&statuses=APPROVED&deleted=false", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rsha&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertRead("?mnemonicPath=Rshs&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Di-Rshs&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - // approve - approvedStructureElement = ITUtilStructures.assertApprove(structureElementCommandConfirm); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=DEVICEGROUP", 1, -1).getListSize()); + assertEquals(count + 1, ITUtilStructures.assertRead("?type=DEVICEGROUP", 1, -1).getListSize()); ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING", 0, -1); ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED", 1, -1); ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED", 0, -1); ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED&mnemonic=Rsha", 0); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED&mnemonic=Rshs", 0); - ITUtilStructures.assertFind("/" + approvedStructureElement.getUuid().toString()); + ITUtilStructures.assertFind("/" + structureElement.getUuid().toString()); ITUtilStructures.assertRead("?mnemonic=Di", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rsha", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?mnemonic=Di-Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Di-Rshs&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Di", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rsha", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs", 0); + ITUtilStructures.assertRead("?mnemonicPath=Di-Rshs", 0); ITUtilStructures.assertRead("?mnemonicPath=Di&statuses=APPROVED&deleted=false", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rsha&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + approvedStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - } + ITUtilStructures.assertRead("?mnemonicPath=Rshs&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Di-Rshs&statuses=APPROVED&deleted=false", 0); - @Test - void readSearchHistoryCancel() { - // test read device group in various ways for create, cancel - // search - // latest - // history - // - // note - // create (and more) to read (with content) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement cancelledStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - // read (1) - length = ITUtilStructures.assertRead("?type=DEVICEGROUP", 1, -1).getListSize(); - - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING", 1, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED&mnemonic=Rshc", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Di", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rshc", 0); - ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Di", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di&statuses=APPROVED&deleted=false", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); - - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - - // cancel - cancelledStructureElement = ITUtilStructures.assertCancel(structureElementCommandConfirm); - - // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=DEVICEGROUP", 1, -1).getListSize()); - - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED", 1, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED&mnemonic=Rshc", 0); - - ITUtilStructures.assertFind("/" + cancelledStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Di", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rshc", 0); - ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Di", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di&statuses=APPROVED&deleted=false", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + cancelledStructureElement.getUuid().toString(), 2); + ITUtilStructures.assertHistory("/" + structureElement.getUuid().toString(), 1); ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); } - @Test - void readSearchHistoryReject() { - // test read device group in various ways for create, reject - // search - // latest - // history - // - // note - // create (and more) to read (with content) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement rejectedStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - // read (1) - length = ITUtilStructures.assertRead("?type=DEVICEGROUP", 1, -1).getListSize(); - - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING", 1, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED&mnemonic=Rshr", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Di", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rshr", 0); - ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Di", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di&statuses=APPROVED&deleted=false", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); - - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - - // reject - rejectedStructureElement = ITUtilStructures.assertReject(structureElementCommandConfirm); - - // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=DEVICEGROUP", 1, -1).getListSize()); - - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED", 1, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED&mnemonic=Rshr", 0); - - ITUtilStructures.assertFind("/" + rejectedStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Di", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rshr", 0); - ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Di", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di&statuses=APPROVED&deleted=false", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + rejectedStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - } - - @Test - void readSearchHistoryStatusLatest1() { - // test read device type in various ways - // status - // latest - // ( deleted ) - // history - // - // note - // entries with different statuses - // - // create (and more) to read (with content) - // 4 different lines of uuid with combinations of status and latest - // 1 entry for each line of uuid - // in particular different statuses for last entry in lines of uuid - // mnemonic - P, C, R, A (pending, cancelled, rejected, approved) - // - // exclude content (with latest) before latest - // exclude content (with latest) after latest (cancelled, rejected) - // keep most recent content (without latest) (to have most recent in line of uuid without latest) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElement createdStructureElement = null; - UUID uuid, uuid2, uuid3, uuid4 = null; - - // a number of entries for which the last entry has status PENDING - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, 1, "description"); - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - uuid = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status CANCELLED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, 2, "description"); - createdStructureElement = ITUtilStructures.assertCreateCancel(structureElementCommandCreate); - uuid2 = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status REJECTED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, 3, "description"); - createdStructureElement = ITUtilStructures.assertCreateReject(structureElementCommandCreate); - uuid3 = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status APPROVED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, 4, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - uuid4 = createdStructureElement.getUuid(); - - // ---------------------------------------------------------------------------------------------------- - // from first structure element - assertNotNull(uuid); - - ITUtilStructures.assertFind("/" + uuid.toString()); - ITUtilStructures.assertFind("/" + uuid2.toString()); - ITUtilStructures.assertFind("/" + uuid3.toString()); - ITUtilStructures.assertFind("/" + uuid4.toString()); - - ITUtilStructures.assertRead("?mnemonic=P1", 0); - ITUtilStructures.assertRead("?mnemonic=C1", 0); - ITUtilStructures.assertRead("?mnemonic=R1", 0); - ITUtilStructures.assertRead("?mnemonic=A1", 0); - ITUtilStructures.assertRead("?mnemonic=P1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=C1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=R1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=A1&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + uuid.toString(), 1); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid3.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid4.toString(), 2); - - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di-P1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di-C1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di-R1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di-A1", Boolean.FALSE); - } - @Test void readSearchHistoryStatusLatest9() { // test read device type in various ways @@ -1181,10 +607,9 @@ class StructuresDeviceGroupIT { // entries with different statuses // // create (and more) to read (with content) - // 4 different lines of uuid with combinations of status and latest + // 2 different lines of uuid with combinations of status and latest // 9 entries for each line of uuid - // in particular different statuses for last entry in lines of uuid - // mnemonic - P, C, R, A (pending, cancelled, rejected, approved) + // no mnemonic // // exclude content (with latest) before latest // exclude content (with latest) after latest (cancelled, rejected) @@ -1192,100 +617,54 @@ class StructuresDeviceGroupIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElement responseStructureElement = null; - UUID uuid, uuid2, uuid3, uuid4 = null; + StructureElement structureElement = null; + UUID uuid, uuid2 = null; // a number of entries for which the last entry has status PENDING - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, null, "description"); - responseStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement); - uuid = responseStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); + structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, null, "description no mnemonic 1"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid = structureElement.getUuid(); + + structureElementCommandUpdate.setDescription("description no mnemonic 1 2"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 1 3"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 1 4"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 1 5"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 1 6"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 1 7"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 1 8"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 1 9"); ITUtilStructures.assertUpdate(structureElementCommandUpdate); // a number of entries for which the last entry has status CANCELLED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, 2, "description"); - responseStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement); - uuid2 = responseStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - - // a number of entries for which the last entry has status REJECTED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, 1, "description"); - responseStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement); - uuid3 = responseStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - - // a number of entries for which the last entry has status APPROVED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, 1, "description"); - responseStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement); - uuid4 = responseStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, 2, "description no mnemonic 2"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid2 = structureElement.getUuid(); + + structureElementCommandUpdate.setDescription("description no mnemonic 2 2"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 2 3"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 2 4"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 2 5"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 2 6"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 2 7"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 2 8"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 2 9"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); // ---------------------------------------------------------------------------------------------------- // from first structure element @@ -1293,27 +672,17 @@ class StructuresDeviceGroupIT { ITUtilStructures.assertFind("/" + uuid.toString()); ITUtilStructures.assertFind("/" + uuid2.toString()); - ITUtilStructures.assertFind("/" + uuid3.toString()); - ITUtilStructures.assertFind("/" + uuid4.toString()); - ITUtilStructures.assertRead("?mnemonic=P9", 0); - ITUtilStructures.assertRead("?mnemonic=C9", 0); - ITUtilStructures.assertRead("?mnemonic=R9", 0); + ITUtilStructures.assertRead("?mnemonic=Ab", 0); ITUtilStructures.assertRead("?mnemonic=A9", 0); - ITUtilStructures.assertRead("?mnemonic=P9&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=C9&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=R9&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Ab&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonic=A9&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertHistory("/" + uuid.toString(), 17); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 18); - ITUtilStructures.assertHistory("/" + uuid3.toString(), 18); - ITUtilStructures.assertHistory("/" + uuid4.toString(), 18); + ITUtilStructures.assertHistory("/" + uuid.toString(), 9); + ITUtilStructures.assertHistory("/" + uuid2.toString(), 9); ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di-P9", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di-C9", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di-R9", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di-Ab", Boolean.FALSE); ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di-A9", Boolean.FALSE); } @@ -1339,14 +708,18 @@ class StructuresDeviceGroupIT { StructureElementCommandCreate[] structureElementCommandsCreate = null; StructureElementCommandUpdate[] structureElementCommandsUpdate = null; StructureElementCommandConfirm[] structureElementCommandsConfirm = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; ResponsePageStructureElements response, response2 = null; UUID uuid = null; UUID uuid2 = null; UUID uuidRandom = UUID.randomUUID(); - // create + approve + String description2 = "some other description"; + String description3 = "more description"; + String description4 = "yet another description"; + + // create structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 1, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 1, "description"), @@ -1354,30 +727,41 @@ class StructuresDeviceGroupIT { new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 1, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 1, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - uuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + uuid = structureElements[0].getUuid(); - // create + cancel + // create + // update structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 2, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 2, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 2, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 2, "description"), - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 2, "description") + new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 2, "description"), }; - ITUtilStructures.assertCreateCancel(structureElementCommandsCreate); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description2); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - // create + reject + // create + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 3, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 3, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 3, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 3, "description"), - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 3, "description"), + new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 3, "description") }; - ITUtilStructures.assertCreateReject(structureElementCommandsCreate); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); + ITUtilStructures.assertDelete(structureElementCommandsConfirm); // create + // update + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 4, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 4, "description"), @@ -1385,15 +769,19 @@ class StructuresDeviceGroupIT { new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 4, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 4, "description") }; - ITUtilStructures.assertCreate(structureElementCommandsCreate); - - String description2 = "some other description"; - String description3 = "more description"; + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description2); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); + ITUtilStructures.assertDelete(structureElementCommandsConfirm); - // create + approve - // update + approve - // update + approve - // delete + reject + // create + // update + // update + // update structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 5, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 5, "description"), @@ -1401,79 +789,56 @@ class StructuresDeviceGroupIT { new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 5, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 5, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description2); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description3); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteReject(structureElementCommandsConfirm); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description4); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - // create + approve - // delete + approve + // create + // update + // update + // update + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 6, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 6, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 6, "description"), new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 6, "description"), - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 6, "description") - }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteApprove(structureElementCommandsConfirm); - - // create + approve - // delete - structureElementCommandsCreate = new StructureElementCommandCreate[] { - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 7, "description"), - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 7, "description"), - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 7, "description"), - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 7, "description"), - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 7, "description") - }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDelete(structureElementCommandsConfirm); - - // 60 device group entries - - // create + approve - // update + approve - // update + approve - // delete + reject - // delete - structureElementCommandsCreate = new StructureElementCommandCreate[] { - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 8, "description"), - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 8, "description"), - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 8, "description"), - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 8, "description"), - new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 8, "description") + new StructureElementCommandCreate(Type.DEVICEGROUP, discipline2Uuid, null, 6, "description"), }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - uuid2 = approvedStructureElements[0].getUuid(); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + uuid2 = structureElements[0].getUuid(); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description2); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description3); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteReject(structureElementCommandsConfirm); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description4); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); ITUtilStructures.assertDelete(structureElementCommandsConfirm); - // 85 subsystem entries + // 85 system group entries // ---------------------------------------------------------------------------------------------------- // from first structure element @@ -1493,48 +858,48 @@ class StructuresDeviceGroupIT { // content for field in first and last items - always possible // first and last items - not always possible - ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2", 35); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&mnemonicPath=Di2", 10); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED&mnemonicPath=Di2", 25); + ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2", 30); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&mnemonicPath=Di2", 0); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=APPROVED&mnemonicPath=Di2", 30); ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=CANCELLED&mnemonicPath=Di2", 0); ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=REJECTED&mnemonicPath=Di2", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2", 35); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2", 30); - ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=false&mnemonicPath=Di2", 20); + ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=false&mnemonicPath=Di2", 15); ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=false&statuses=PENDING&mnemonicPath=Di2", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=false&statuses=APPROVED&mnemonicPath=Di2", 20); + ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=false&statuses=APPROVED&mnemonicPath=Di2", 15); ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=false&statuses=CANCELLED&mnemonicPath=Di2", 0); ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=false&statuses=REJECTED&mnemonicPath=Di2", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=false&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2", 20); + ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=false&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2", 15); ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=true&mnemonicPath=Di2", 15); - ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=true&statuses=PENDING&mnemonicPath=Di2", 10); - ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=true&statuses=APPROVED&mnemonicPath=Di2", 5); + ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=true&statuses=PENDING&mnemonicPath=Di2", 0); + ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=true&statuses=APPROVED&mnemonicPath=Di2", 15); ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=true&statuses=CANCELLED&mnemonicPath=Di2", 0); ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=true&statuses=REJECTED&mnemonicPath=Di2", 0); ITUtilStructures.assertRead("?type=DEVICEGROUP&deleted=true&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2", 15); - ITUtilStructures.assertRead("?type=DEVICEGROUP&parent=" + discipline2Uuid.toString(), 45, -1); + ITUtilStructures.assertRead("?type=DEVICEGROUP&parent=" + discipline2Uuid.toString(), 30, -1); ITUtilStructures.assertRead("?type=DEVICEGROUP&parent=" + uuid.toString(), 0); ITUtilStructures.assertRead("?type=DEVICEGROUP&parent=" + uuid2.toString(), 0); ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonic=A__", 0); ITUtilStructures.assertRead("?type=DEVICEGROUP&description=desc", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&description=desc%", 35, -1); + ITUtilStructures.assertRead("?type=DEVICEGROUP&description=desc%", 10, -1); ITUtilStructures.assertRead("?type=DEVICEGROUP&description=sc", 0); ITUtilStructures.assertRead("?type=DEVICEGROUP&description=sc%", 0); ITUtilStructures.assertRead("?type=DEVICEGROUP&description=%sc", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&description=%sc%", 45, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&description=description", 35, -1); + ITUtilStructures.assertRead("?type=DEVICEGROUP&description=%sc%", 30, -1); + ITUtilStructures.assertRead("?type=DEVICEGROUP&description=description", 10, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&who=test who", 45, -1); + ITUtilStructures.assertRead("?type=DEVICEGROUP&who=test who", 30, -1); ITUtilStructures.assertRead("?type=DEVICEGROUP&who=test", 0); ITUtilStructures.assertRead("?type=DEVICEGROUP&who=who", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&who=test%", 45, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&who=%who", 45, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&who=%est%", 45, -1); - ITUtilStructures.assertRead("?type=DEVICEGROUP&who=%wh%", 45, -1); + ITUtilStructures.assertRead("?type=DEVICEGROUP&who=test%", 30, -1); + ITUtilStructures.assertRead("?type=DEVICEGROUP&who=%who", 30, -1); + ITUtilStructures.assertRead("?type=DEVICEGROUP&who=%est%", 30, -1); + ITUtilStructures.assertRead("?type=DEVICEGROUP&who=%wh%", 30, -1); ITUtilStructures.assertRead("?type=DEVICEGROUP&who=wh%", 0); ITUtilStructures.assertRead("?type=DEVICEGROUP&who=asdf", 0); ITUtilStructures.assertRead("?type=DEVICEGROUP&who=%asdf%", 0); @@ -1592,27 +957,27 @@ class StructuresDeviceGroupIT { || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1))); // pagination - ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=0&pageSize=100", 35); + ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=0&pageSize=100", 30); ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=1&pageSize=100", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=0&pageSize=35", 35); - ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=1&pageSize=35", 0); - ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=0&pageSize=15", 15); - ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=1&pageSize=15", 15); - ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=2&pageSize=15", 5); - ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=3&pageSize=15", 0); + ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=0&pageSize=30", 30); + ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=1&pageSize=30", 0); + ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=0&pageSize=12", 12); + ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=1&pageSize=12", 12); + ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=2&pageSize=12", 6); + ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&page=3&pageSize=12", 0); // pagination - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=0&pageSize=15", 15); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=1&pageSize=15", 15); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=2&pageSize=15", 5); - ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=3&pageSize=15", 0); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=0&pageSize=12", 12); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=1&pageSize=12", 12); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=2&pageSize=12", 6); + ITUtilStructures.assertRead("?type=DEVICEGROUP&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=3&pageSize=12", 0); // order by, pagination - response = ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&orderBy=WHEN&isAsc=true&page=0&pageSize=15", 15); - response2 = ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&orderBy=WHEN&isAsc=false&page=2&pageSize=15", 5); + response = ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&orderBy=WHEN&isAsc=true&page=0&pageSize=12", 12); + response2 = ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&orderBy=WHEN&isAsc=false&page=2&pageSize=12", 6); assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); - response = ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&orderBy=WHEN&isAsc=false&page=0&pageSize=15", 15); - response2 = ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&orderBy=WHEN&isAsc=true&page=2&pageSize=15", 5); + response = ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&orderBy=WHEN&isAsc=false&page=0&pageSize=12", 12); + response2 = ITUtilStructures.assertRead("?type=DEVICEGROUP&mnemonicPath=Di2&orderBy=WHEN&isAsc=true&page=2&pageSize=12", 6); assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); // uuid @@ -1630,10 +995,10 @@ class StructuresDeviceGroupIT { ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString(), 15, -1); ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=APPROVED", 15, -1); ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=ARCHIVED", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); - ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=CANCELLED,PENDING", 0, -1); + ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=CANCELLED", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=PENDING", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=REJECTED", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=CANCELLED,PENDING", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=APPROVED,PENDING", 15, -1); ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=APPROVED&deleted=false", 9, -1); ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=APPROVED&deleted=true", 5, -1); @@ -1642,13 +1007,13 @@ class StructuresDeviceGroupIT { // ?mnemonic={mnemonic} ITUtilStructures.assertRead("?mnemonic=A", 0); ITUtilStructures.assertRead("?mnemonic=A__", 0); - ITUtilStructures.assertRead("?mnemonic=AG_", 0); - ITUtilStructures.assertRead("?mnemonic=AG1", 0); + ITUtilStructures.assertRead("?mnemonic=AE_", 0); + ITUtilStructures.assertRead("?mnemonic=AE1", 0); ITUtilStructures.assertRead("?mnemonic=Di2", 1); ITUtilStructures.assertRead("?mnemonic=A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonic=A__&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=AG_&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=AG1&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=AE_&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=AE1&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonic=Di2&statuses=APPROVED&deleted=false", 1); // mnemonic path @@ -1657,19 +1022,19 @@ class StructuresDeviceGroupIT { ITUtilStructures.assertRead("?mnemonicPath=D%", 17, -1); ITUtilStructures.assertRead("?mnemonicPath=D__", 16, -1); ITUtilStructures.assertRead("?mnemonicPath=Di_", 16, -1); - ITUtilStructures.assertRead("?mnemonicPath=Di2", 36); + ITUtilStructures.assertRead("?mnemonicPath=Di2", 31); ITUtilStructures.assertRead("?mnemonicPath=D&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=D%&statuses=APPROVED&deleted=false", 22, -1); - ITUtilStructures.assertRead("?mnemonicPath=D__&statuses=APPROVED&deleted=false", 21, -1); - ITUtilStructures.assertRead("?mnemonicPath=Di_&statuses=APPROVED&deleted=false", 21, -1); - ITUtilStructures.assertRead("?mnemonicPath=Di2&statuses=APPROVED&deleted=false", 21); + ITUtilStructures.assertRead("?mnemonicPath=D%&statuses=APPROVED&deleted=false", 17, -1); + ITUtilStructures.assertRead("?mnemonicPath=D__&statuses=APPROVED&deleted=false", 16, -1); + ITUtilStructures.assertRead("?mnemonicPath=Di_&statuses=APPROVED&deleted=false", 16, -1); + ITUtilStructures.assertRead("?mnemonicPath=Di2&statuses=APPROVED&deleted=false", 16); // history // /history/{uuid} - ITUtilStructures.assertHistory("/" + uuid.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 9); - ITUtilStructures.assertHistory("/" + disciplineUuid.toString(), 2); - ITUtilStructures.assertHistory("/" + discipline2Uuid.toString(), 2); + ITUtilStructures.assertHistory("/" + uuid.toString(), 1); + ITUtilStructures.assertHistory("/" + uuid2.toString(), 5); + ITUtilStructures.assertHistory("/" + disciplineUuid.toString(), 1); + ITUtilStructures.assertHistory("/" + discipline2Uuid.toString(), 1); ITUtilStructures.assertHistory("/" + uuidRandom.toString(), 0, HttpURLConnection.HTTP_NOT_FOUND); ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di2", Boolean.FALSE); diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java index 3229efc6..12273d35 100644 --- a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java @@ -79,19 +79,19 @@ class StructuresDeviceTypeIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "Di", null, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - disciplineUuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + disciplineUuid = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, null, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceGroupUuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceGroupUuid = structureElements[0].getUuid(); // check content ITUtilStructures.assertRead("", 2); @@ -289,157 +289,38 @@ class StructuresDeviceTypeIT { } @Test - void createApprove() { - // test create and approve system - // - // note - // create in order to approve + void create() { + // test create device type StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; + StructureElement structureElement = null; structureElementCommand = new StructureElementCommand(null, Type.DEVICETYPE, deviceGroupUuid, "Ca", null, "description"); structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); + structureElementCommandUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommand); structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Ca", Boolean.FALSE); ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-Ca", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Ca", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-Ca", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Ca", Boolean.TRUE); ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-Ca", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(createdStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void createCancel() { - // test create and cancel system - // - // note - // create in order to cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.DEVICETYPE, deviceGroupUuid, "Cc", null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void createReject() { - // test create and reject system - // - // note - // create in order to reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.DEVICETYPE, deviceGroupUuid, "Cr", null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cr", Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); } @Test @@ -448,7 +329,7 @@ class StructuresDeviceTypeIT { // not update // // note - // create, approve in order to update + // create in order to update // // validate update // uuid @@ -460,15 +341,15 @@ class StructuresDeviceTypeIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; UUID uuid = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Cu", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - uuid = approvedStructureElement.getUuid(); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid = structureElement.getUuid(); // validate update @@ -522,132 +403,36 @@ class StructuresDeviceTypeIT { } @Test - void updateApprove() { - // test update and approve device type + void update() { + // test update device type // // note - // create, approve in order to update, approve + // create in order to update StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Ua", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // update - ITUtilStructures.assertUpdate(structureElementCommandUpdate); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void updateCancel() { - // test update and cancel device type - // - // note - // create, approve in order to update, cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Uc", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // update - ITUtilStructures.assertUpdate(structureElementCommandUpdate); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void updateReject() { - // test update and reject device type - // - // note - // create, approve in order to update, reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Ur", null, "description"); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); + structureElementCommandUpdate.setDescription("description update check"); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); // update ITUtilStructures.assertUpdate(structureElementCommandUpdate); - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); } @Test @@ -656,7 +441,7 @@ class StructuresDeviceTypeIT { // not delete // // note - // create, approve in order to delete + // create in order to delete // // validate delete // uuid @@ -664,15 +449,15 @@ class StructuresDeviceTypeIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; UUID uuid = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Cd", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - uuid = approvedStructureElement.getUuid(); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + uuid = structureElement.getUuid(); // validate delete @@ -702,132 +487,41 @@ class StructuresDeviceTypeIT { } @Test - void deleteApprove() { + void delete() { // purpose - // test delete and approve device type + // test delete device type // // note - // create, approve in order to delete, approve + // create in order to delete, approve StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Da", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // delete - ITUtilStructures.assertDelete(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void deleteCancel() { - // test delete and cancel device type - // - // note - // create, approve in order to delete, cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Dc", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // delete - ITUtilStructures.assertDelete(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void deleteReject() { - // test delete and reject device type - // - // note - // create, approve in order to delete, reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Dr", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); // delete ITUtilStructures.assertDelete(structureElementCommandConfirm); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); } @Test - void readSearchHistoryApprove() { - // test read device type in various ways for create, approve + void readSearchHistoryStatus() { + // test read device type in various ways for create // search // latest // history @@ -836,347 +530,75 @@ class StructuresDeviceTypeIT { // create (and more) to read (with content) StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement approvedStructureElement = null; - int length = 0; + StructureElement structureElement = null; + int count = 0; - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Rsha", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); + structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Rshs", 41, "description"); // read (1) - length = ITUtilStructures.assertRead("?type=DEVICETYPE", 1, -1).getListSize(); + count = ITUtilStructures.assertRead("?type=DEVICETYPE").getListSize(); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING", 1, -1); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING", 0, -1); ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED", 0, -1); ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED", 0, -1); ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED&mnemonic=Rsha", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED&mnemonic=Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Di", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?mnemonic=Di-Rsha", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?mnemonic=Di-Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Di-Rshs&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Di", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rsha", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs", 0); + ITUtilStructures.assertRead("?mnemonicPath=Di-Rshs", 0); ITUtilStructures.assertRead("?mnemonicPath=Di&statuses=APPROVED&deleted=false", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rsha&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertRead("?mnemonicPath=Rshs&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Di-Rshs&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Rsha", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Rsha", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Rshs", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Rshs", Boolean.FALSE); - // approve - approvedStructureElement = ITUtilStructures.assertApprove(structureElementCommandConfirm); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=DEVICETYPE", 1, -1).getListSize()); + assertEquals(count + 1, ITUtilStructures.assertRead("?type=DEVICETYPE", 1, -1).getListSize()); ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING", 0, -1); ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED", 1, -1); ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED", 0, -1); ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED&mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED&mnemonic=Rsha", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED&mnemonic=Rshs", 1); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED&mnemonic=Rshs", 0); - ITUtilStructures.assertFind("/" + approvedStructureElement.getUuid().toString()); + ITUtilStructures.assertFind("/" + structureElement.getUuid().toString()); ITUtilStructures.assertRead("?mnemonic=Di", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?mnemonic=Di-Rsha", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs", 1); + ITUtilStructures.assertRead("?mnemonic=Di-Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Di-Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=Di-Rshs&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Di", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rsha", 1); + ITUtilStructures.assertRead("?mnemonicPath=Rshs", 0); + ITUtilStructures.assertRead("?mnemonicPath=Di-Rshs", 1); ITUtilStructures.assertRead("?mnemonicPath=Di&statuses=APPROVED&deleted=false", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rsha&statuses=APPROVED&deleted=false", 1); - - ITUtilStructures.assertHistory("/" + approvedStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "Rsha", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Rsha", Boolean.TRUE); - } - - @Test - void readSearchHistoryCancel() { - // test read device type in various ways for create, cancel - // search - // latest - // history - // - // note - // create (and more) to read (with content) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement cancelledStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Rshc", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - // read (1) - length = ITUtilStructures.assertRead("?type=DEVICETYPE", 1, -1).getListSize(); - - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING", 1, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED&mnemonic=Rshc", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Di", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?mnemonic=Di-Rshc", 0); - ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Di", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di&statuses=APPROVED&deleted=false", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "Rshc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Rshc", Boolean.FALSE); - - // cancel - cancelledStructureElement = ITUtilStructures.assertCancel(structureElementCommandConfirm); - - // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=DEVICETYPE", 1, -1).getListSize()); - - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED", 1, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED&mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED&mnemonic=Rshc", 0); - - ITUtilStructures.assertFind("/" + cancelledStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Di", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?mnemonic=Di-Rshc", 0); - ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Di", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di&statuses=APPROVED&deleted=false", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + cancelledStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "Rshc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Rshc", Boolean.FALSE); - } - - @Test - void readSearchHistoryReject() { - // test read device type in various ways for create, reject - // search - // latest - // history - // - // note - // create (and more) to read (with content) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement rejectedStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Rshr", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - // read (1) - length = ITUtilStructures.assertRead("?type=DEVICETYPE", 1, -1).getListSize(); - - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING", 1, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED&mnemonic=Rshr", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Di", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?mnemonic=Di-Rshr", 0); - ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Di", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di&statuses=APPROVED&deleted=false", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "Rshr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Rshr", Boolean.FALSE); - - // reject - rejectedStructureElement = ITUtilStructures.assertReject(structureElementCommandConfirm); - - // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=DEVICETYPE", 1, -1).getListSize()); - - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED", 1, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED&mnemonic=Rshr", 1); - - ITUtilStructures.assertFind("/" + rejectedStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Di", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?mnemonic=Di-Rshr", 0); - ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Di-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Di", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di&statuses=APPROVED&deleted=false", 1, -1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Di-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + rejectedStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "Rshr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Rshr", Boolean.FALSE); - } - - @Test - void readSearchHistoryStatusLatest1() { - // test read device type in various ways - // status - // latest - // ( deleted ) - // history - // - // note - // entries with different statuses - // - // create (and more) to read (with content) - // 4 different lines of uuid with combinations of status and latest - // 1 entry for each line of uuid - // in particular different statuses for last entry in lines of uuid - // mnemonic - P, C, R, A (pending, cancelled, rejected, approved) - // - // exclude content (with latest) before latest - // exclude content (with latest) after latest (cancelled, rejected) - // keep most recent content (without latest) (to have most recent in line of uuid without latest) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElement createdStructureElement = null; - UUID uuid, uuid2, uuid3, uuid4 = null; - - // a number of entries for which the last entry has status PENDING - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "P1", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - uuid = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status CANCELLED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "C1", 2, "description"); - createdStructureElement = ITUtilStructures.assertCreateCancel(structureElementCommandCreate); - uuid2 = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status REJECTED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "R1", 3, "description"); - createdStructureElement = ITUtilStructures.assertCreateReject(structureElementCommandCreate); - uuid3 = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status APPROVED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "A1", 4, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - uuid4 = createdStructureElement.getUuid(); + ITUtilStructures.assertRead("?mnemonicPath=Rshs&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Di-Rshs&statuses=APPROVED&deleted=false", 1); - // ---------------------------------------------------------------------------------------------------- - // from first structure element - assertNotNull(uuid); + ITUtilStructures.assertHistory("/" + structureElement.getUuid().toString(), 1); - ITUtilStructures.assertFind("/" + uuid.toString()); - ITUtilStructures.assertFind("/" + uuid2.toString()); - ITUtilStructures.assertFind("/" + uuid3.toString()); - ITUtilStructures.assertFind("/" + uuid4.toString()); - - ITUtilStructures.assertRead("?mnemonic=P1", 1); - ITUtilStructures.assertRead("?mnemonic=C1", 1); - ITUtilStructures.assertRead("?mnemonic=R1", 1); - ITUtilStructures.assertRead("?mnemonic=A1", 1); - ITUtilStructures.assertRead("?mnemonic=P1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=C1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=R1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=A1&statuses=APPROVED&deleted=false", 1); - - ITUtilStructures.assertHistory("/" + uuid.toString(), 1); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid3.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid4.toString(), 2); - - ITUtilStructures.assertExists(Type.DEVICETYPE, "P1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "C1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "R1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "A1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-P1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-C1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-R1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-A1", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Rshs", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Rshs", Boolean.TRUE); } @Test @@ -1191,10 +613,9 @@ class StructuresDeviceTypeIT { // entries with different statuses // // create (and more) to read (with content) - // 4 different lines of uuid with combinations of status and latest + // 2 different lines of uuid with combinations of status and latest // 9 entries for each line of uuid - // in particular different statuses for last entry in lines of uuid - // mnemonic - P, C, R, A (pending, cancelled, rejected, approved) + // mnemonic - Ab, A9 // // exclude content (with latest) before latest // exclude content (with latest) after latest (cancelled, rejected) @@ -1202,100 +623,54 @@ class StructuresDeviceTypeIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElement createdStructureElement = null; - UUID uuid, uuid2, uuid3, uuid4 = null; + StructureElement structureElement = null; + UUID uuid, uuid2 = null; // a number of entries for which the last entry has status PENDING - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "P9", null, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); + structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Ab", null, "description mnemonic Ab"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid = structureElement.getUuid(); + + structureElementCommandUpdate.setDescription("description mnemonic Ab 2"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 3"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 4"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 5"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 6"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 7"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 8"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 9"); ITUtilStructures.assertUpdate(structureElementCommandUpdate); // a number of entries for which the last entry has status CANCELLED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "C9", 2, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid2 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - - // a number of entries for which the last entry has status REJECTED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "R9", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid3 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - - // a number of entries for which the last entry has status APPROVED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "A9", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid4 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "A9", 2, "description mnemonic A9"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid2 = structureElement.getUuid(); + + structureElementCommandUpdate.setDescription("description mnemonic A9 2"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 3"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 4"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 5"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 6"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 7"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 8"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 9"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); // ---------------------------------------------------------------------------------------------------- // from first structure element @@ -1303,30 +678,18 @@ class StructuresDeviceTypeIT { ITUtilStructures.assertFind("/" + uuid.toString()); ITUtilStructures.assertFind("/" + uuid2.toString()); - ITUtilStructures.assertFind("/" + uuid3.toString()); - ITUtilStructures.assertFind("/" + uuid4.toString()); - ITUtilStructures.assertRead("?mnemonic=P9", 2); - ITUtilStructures.assertRead("?mnemonic=C9", 1); - ITUtilStructures.assertRead("?mnemonic=R9", 1); + ITUtilStructures.assertRead("?mnemonic=Ab", 1); ITUtilStructures.assertRead("?mnemonic=A9", 1); - ITUtilStructures.assertRead("?mnemonic=P9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=C9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=R9&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=Ab&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonic=A9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertHistory("/" + uuid.toString(), 17); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 18); - ITUtilStructures.assertHistory("/" + uuid3.toString(), 18); - ITUtilStructures.assertHistory("/" + uuid4.toString(), 18); + ITUtilStructures.assertHistory("/" + uuid.toString(), 9); + ITUtilStructures.assertHistory("/" + uuid2.toString(), 9); - ITUtilStructures.assertExists(Type.DEVICETYPE, "P9", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "C9", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "R9", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Ab", Boolean.FALSE); ITUtilStructures.assertExists(Type.DEVICETYPE, "A9", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-P9", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-C9", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-R9", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-Ab", Boolean.TRUE); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-A9", Boolean.TRUE); } @@ -1352,14 +715,18 @@ class StructuresDeviceTypeIT { StructureElementCommandCreate[] structureElementCommandsCreate = null; StructureElementCommandUpdate[] structureElementCommandsUpdate = null; StructureElementCommandConfirm[] structureElementCommandsConfirm = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; ResponsePageStructureElements response, response2 = null; UUID uuid = null; UUID uuid2 = null; UUID uuidRandom = UUID.randomUUID(); - // create + approve + String description2 = "some other description"; + String description3 = "more description"; + String description4 = "yet another description"; + + // create structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AA1", 1, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AA2", 1, "description"), @@ -1367,20 +734,27 @@ class StructuresDeviceTypeIT { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AA4", 1, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AA5", 1, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - uuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + uuid = structureElements[0].getUuid(); - // create + cancel + // create + // update structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AB1", 2, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AB2", 2, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AB3", 2, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AB4", 2, "description"), - new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AB5", 2, "description") + new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AB5", 2, "description"), }; - ITUtilStructures.assertCreateCancel(structureElementCommandsCreate); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description2); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - // create + reject + // create + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AC1", 3, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AC2", 3, "description"), @@ -1388,9 +762,13 @@ class StructuresDeviceTypeIT { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AC4", 3, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AC5", 3, "description") }; - ITUtilStructures.assertCreateReject(structureElementCommandsCreate); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); + ITUtilStructures.assertDelete(structureElementCommandsConfirm); // create + // update + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AD1", 4, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AD2", 4, "description"), @@ -1398,15 +776,19 @@ class StructuresDeviceTypeIT { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AD4", 4, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AD5", 4, "description") }; - ITUtilStructures.assertCreate(structureElementCommandsCreate); - - String description2 = "some other description"; - String description3 = "more description"; + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description2); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); + ITUtilStructures.assertDelete(structureElementCommandsConfirm); - // create + approve - // update + approve - // update + approve - // delete + reject + // create + // update + // update + // update structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AE1", 5, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AE2", 5, "description"), @@ -1414,79 +796,56 @@ class StructuresDeviceTypeIT { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AE4", 5, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AE5", 5, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description2); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description3); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteReject(structureElementCommandsConfirm); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description4); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - // create + approve - // delete + approve + // create + // update + // update + // update + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AF1", 6, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AF2", 6, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AF3", 6, "description"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AF4", 6, "description"), - new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AF5", 6, "description") - }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteApprove(structureElementCommandsConfirm); - - // create + approve - // delete - structureElementCommandsCreate = new StructureElementCommandCreate[] { - new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AG1", 7, "description"), - new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AG2", 7, "description"), - new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AG3", 7, "description"), - new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AG4", 7, "description"), - new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AG5", 7, "description") + new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AF5", 6, "description"), }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDelete(structureElementCommandsConfirm); - - // 60 device type entries - - // create + approve - // update + approve - // update + approve - // delete + reject - // delete - structureElementCommandsCreate = new StructureElementCommandCreate[] { - new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AH1", 8, "description"), - new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AH2", 8, "description"), - new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AH3", 8, "description"), - new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AH4", 8, "description"), - new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "AH5", 8, "description") - }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - uuid2 = approvedStructureElements[0].getUuid(); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + uuid2 = structureElements[0].getUuid(); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description2); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description3); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteReject(structureElementCommandsConfirm); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description4); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); ITUtilStructures.assertDelete(structureElementCommandsConfirm); - // 85 subsystem entries + // 85 system group entries // ---------------------------------------------------------------------------------------------------- // from first structure element @@ -1506,49 +865,49 @@ class StructuresDeviceTypeIT { // content for field in first and last items - always possible // first and last items - not always possible - ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__", 50); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&mnemonic=A__", 15); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED&mnemonic=A__", 25); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 40); + ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__", 30); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=APPROVED&mnemonic=A__", 30); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=CANCELLED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=REJECTED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 30); - ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=false&mnemonic=A__", 35); - ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=false&statuses=PENDING&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=false&statuses=APPROVED&mnemonic=A__", 20); - ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=false&statuses=CANCELLED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=false&statuses=REJECTED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=false&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 25); + ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=false&mnemonic=A__", 15); + ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=false&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=false&statuses=APPROVED&mnemonic=A__", 15); + ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=false&statuses=CANCELLED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=false&statuses=REJECTED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=false&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 15); ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=true&mnemonic=A__", 15); - ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=true&statuses=PENDING&mnemonic=A__", 10); - ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=true&statuses=APPROVED&mnemonic=A__", 5); + ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=true&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=true&statuses=APPROVED&mnemonic=A__", 15); ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=true&statuses=CANCELLED&mnemonic=A__", 0); ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=true&statuses=REJECTED&mnemonic=A__", 0); ITUtilStructures.assertRead("?type=DEVICETYPE&deleted=true&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 15); ITUtilStructures.assertRead("?type=DEVICETYPE&parent=" + disciplineUuid.toString(), 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&parent=" + deviceGroupUuid.toString(), 45, -1); + ITUtilStructures.assertRead("?type=DEVICETYPE&parent=" + deviceGroupUuid.toString(), 30, -1); ITUtilStructures.assertRead("?type=DEVICETYPE&parent=" + uuid.toString(), 0); ITUtilStructures.assertRead("?type=DEVICETYPE&parent=" + uuid2.toString(), 0); ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonicPath=A__", 0); ITUtilStructures.assertRead("?type=DEVICETYPE&description=desc", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&description=desc%", 35, -1); + ITUtilStructures.assertRead("?type=DEVICETYPE&description=desc%", 10, -1); ITUtilStructures.assertRead("?type=DEVICETYPE&description=sc", 0); ITUtilStructures.assertRead("?type=DEVICETYPE&description=sc%", 0); ITUtilStructures.assertRead("?type=DEVICETYPE&description=%sc", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&description=%sc%", 45, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&description=description", 35, -1); + ITUtilStructures.assertRead("?type=DEVICETYPE&description=%sc%", 30, -1); + ITUtilStructures.assertRead("?type=DEVICETYPE&description=description", 10, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&who=test who", 45, -1); + ITUtilStructures.assertRead("?type=DEVICETYPE&who=test who", 30, -1); ITUtilStructures.assertRead("?type=DEVICETYPE&who=test", 0); ITUtilStructures.assertRead("?type=DEVICETYPE&who=who", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&who=test%", 45, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&who=%who", 45, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&who=%est%", 45, -1); - ITUtilStructures.assertRead("?type=DEVICETYPE&who=%wh%", 45, -1); + ITUtilStructures.assertRead("?type=DEVICETYPE&who=test%", 30, -1); + ITUtilStructures.assertRead("?type=DEVICETYPE&who=%who", 30, -1); + ITUtilStructures.assertRead("?type=DEVICETYPE&who=%est%", 30, -1); + ITUtilStructures.assertRead("?type=DEVICETYPE&who=%wh%", 30, -1); ITUtilStructures.assertRead("?type=DEVICETYPE&who=wh%", 0); ITUtilStructures.assertRead("?type=DEVICETYPE&who=asdf", 0); ITUtilStructures.assertRead("?type=DEVICETYPE&who=%asdf%", 0); @@ -1586,8 +945,8 @@ class StructuresDeviceTypeIT { assertEquals(response.getList().size(), response2.getList().size()); assertEquals(1, response.getList().get(0).getOrdering()); assertTrue(response.getList().get(0).getMnemonic().startsWith("AA")); - assertEquals(8, response2.getList().get(0).getOrdering()); - assertTrue(response2.getList().get(0).getMnemonic().startsWith("AH")); + assertEquals(6, response2.getList().get(0).getOrdering()); + assertTrue(response2.getList().get(0).getMnemonic().startsWith("AF")); response = ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=AF_&orderBy=DESCRIPTION&isAsc=true"); response2 = ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=AF_&orderBy=DESCRIPTION&isAsc=false"); @@ -1610,27 +969,27 @@ class StructuresDeviceTypeIT { || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1))); // pagination - ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=0&pageSize=100", 50); + ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=0&pageSize=100", 30); ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=1&pageSize=100", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=0&pageSize=50", 50); - ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=1&pageSize=50", 0); - ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=0&pageSize=20", 20); - ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=1&pageSize=20", 20); - ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=2&pageSize=20", 10); - ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=3&pageSize=20", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=0&pageSize=30", 30); + ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=1&pageSize=30", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&page=3&pageSize=12", 0); // pagination - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=15", 15); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=15", 15); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=15", 10); - ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=15", 0); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructures.assertRead("?type=DEVICETYPE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12", 0); // order by, pagination - response = ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20", 20); - response2 = ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20", 10); + response = ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=12", 12); + response2 = ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=12", 6); assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); - response = ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20", 20); - response2 = ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20", 10); + response = ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=12", 12); + response2 = ITUtilStructures.assertRead("?type=DEVICETYPE&mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=12", 6); assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); // uuid @@ -1649,10 +1008,10 @@ class StructuresDeviceTypeIT { ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString(), 15, -1); ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=APPROVED", 15, -1); ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=ARCHIVED", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); - ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=CANCELLED,PENDING", 0, -1); + ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=CANCELLED", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=PENDING", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=REJECTED", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=CANCELLED,PENDING", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=APPROVED,PENDING", 15, -1); ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=APPROVED&deleted=false", 9, -1); ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=APPROVED&deleted=true", 5, -1); @@ -1662,42 +1021,42 @@ class StructuresDeviceTypeIT { // ?mnemonic={mnemonic} ITUtilStructures.assertRead("?mnemonic=A", 0); ITUtilStructures.assertRead("?mnemonic=A__", 15, -1); - ITUtilStructures.assertRead("?mnemonic=AG_", 10); - ITUtilStructures.assertRead("?mnemonic=AG1", 2); + ITUtilStructures.assertRead("?mnemonic=AE_", 5); + ITUtilStructures.assertRead("?mnemonic=AE1", 1); ITUtilStructures.assertRead("?mnemonic=Di", 1); ITUtilStructures.assertRead("?mnemonic=A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonic=A__&statuses=APPROVED&deleted=false", 15, -1); - ITUtilStructures.assertRead("?mnemonic=AG_&statuses=APPROVED&deleted=false", 5); - ITUtilStructures.assertRead("?mnemonic=AG1&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=AE_&statuses=APPROVED&deleted=false", 5); + ITUtilStructures.assertRead("?mnemonic=AE1&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonic=Di&statuses=APPROVED&deleted=false", 1); // mnemonic path // ?mnemonicPath={mnemonicPath} ITUtilStructures.assertRead("?mnemonicPath=A", 0); ITUtilStructures.assertRead("?mnemonicPath=A__", 0); - ITUtilStructures.assertRead("?mnemonicPath=AG_", 0); - ITUtilStructures.assertRead("?mnemonicPath=AG1", 0); + ITUtilStructures.assertRead("?mnemonicPath=AE_", 0); + ITUtilStructures.assertRead("?mnemonicPath=AE1", 0); ITUtilStructures.assertRead("?mnemonicPath=Di-A%", 15, -1); ITUtilStructures.assertRead("?mnemonicPath=Di-A", 0); ITUtilStructures.assertRead("?mnemonicPath=Di-A__", 15, -1); - ITUtilStructures.assertRead("?mnemonicPath=Di-AG_", 10); - ITUtilStructures.assertRead("?mnemonicPath=Di-AG1", 2); + ITUtilStructures.assertRead("?mnemonicPath=Di-AE_", 5); + ITUtilStructures.assertRead("?mnemonicPath=Di-AE1", 1); ITUtilStructures.assertRead("?mnemonicPath=A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=A__&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=AG_&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=AG1&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=AE_&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=AE1&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Di-A%&statuses=APPROVED&deleted=false", 15, -1); ITUtilStructures.assertRead("?mnemonicPath=Di-A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Di-A__&statuses=APPROVED&deleted=false", 15, -1); - ITUtilStructures.assertRead("?mnemonicPath=Di-AG_&statuses=APPROVED&deleted=false", 5); - ITUtilStructures.assertRead("?mnemonicPath=Di-AG1&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonicPath=Di-AE_&statuses=APPROVED&deleted=false", 5); + ITUtilStructures.assertRead("?mnemonicPath=Di-AE1&statuses=APPROVED&deleted=false", 1); // history // /history/{uuid} - ITUtilStructures.assertHistory("/" + uuid.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 9); - ITUtilStructures.assertHistory("/" + deviceGroupUuid.toString(), 2); - ITUtilStructures.assertHistory("/" + disciplineUuid.toString(), 2); + ITUtilStructures.assertHistory("/" + uuid.toString(), 1); + ITUtilStructures.assertHistory("/" + uuid2.toString(), 5); + ITUtilStructures.assertHistory("/" + deviceGroupUuid.toString(), 1); + ITUtilStructures.assertHistory("/" + disciplineUuid.toString(), 1); ITUtilStructures.assertHistory("/" + uuidRandom.toString(), 0, HttpURLConnection.HTTP_NOT_FOUND); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AA1", Boolean.TRUE); @@ -1705,11 +1064,11 @@ class StructuresDeviceTypeIT { ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AA3", Boolean.TRUE); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AA4", Boolean.TRUE); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AA5", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AB1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AB2", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AB3", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AB4", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AB5", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AB1", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AB2", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AB3", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AB4", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AB5", Boolean.TRUE); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AC1", Boolean.FALSE); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AC2", Boolean.FALSE); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AC3", Boolean.FALSE); @@ -1730,16 +1089,16 @@ class StructuresDeviceTypeIT { ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AF3", Boolean.FALSE); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AF4", Boolean.FALSE); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AF5", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AG1", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AG2", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AG3", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AG4", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AG5", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AH1", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AH2", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AH3", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AH4", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AH5", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AG1", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AG2", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AG3", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AG4", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AG5", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AH1", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AH2", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AH3", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AH4", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-AH5", Boolean.FALSE); } } diff --git a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java index 9e560ddf..8b9e4761 100644 --- a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java @@ -222,157 +222,38 @@ class StructuresDisciplineIT { } @Test - void createApprove() { - // test create and approve discipline - // - // note - // create in order to approve + void create() { + // test create discipline StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; + StructureElement structureElement = null; structureElementCommand = new StructureElementCommand(null, Type.DISCIPLINE, null, "Ca", null, "description"); structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); + structureElementCommandUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommand); structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); ITUtilStructures.assertExists(Type.DISCIPLINE, "Ca", Boolean.FALSE); ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "Ca", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Ca", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "Ca", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); ITUtilStructures.assertExists(Type.DISCIPLINE, "Ca", Boolean.TRUE); ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "Ca", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(createdStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void createCancel() { - // test create and cancel discipline - // - // note - // create in order to cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.DISCIPLINE, null, "Cc", null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void createReject() { - // test create and reject discipline - // - // note - // create in order to reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.DISCIPLINE, null, "Cr", null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "Cr", Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); } @Test @@ -381,7 +262,7 @@ class StructuresDisciplineIT { // not update // // note - // create, approve in order to update + // create in order to update // // validate update // uuid @@ -392,15 +273,15 @@ class StructuresDisciplineIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; UUID uuid = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Cu", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - uuid = approvedStructureElement.getUuid(); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid = structureElement.getUuid(); // validate update @@ -447,132 +328,36 @@ class StructuresDisciplineIT { } @Test - void updateApprove() { - // test update and approve discipline + void update() { + // test update discipline // // note - // create, approve in order to update, approve + // create in order to update StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Ua", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // update - ITUtilStructures.assertUpdate(structureElementCommandUpdate); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void updateCancel() { - // test update and cancel discipline - // - // note - // create, approve in order to update, cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Uc", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // update - ITUtilStructures.assertUpdate(structureElementCommandUpdate); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void updateReject() { - // test update and reject discipline - // - // note - // create, approve in order to update, reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Ur", null, "description"); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); + structureElementCommandUpdate.setDescription("description update check"); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); // update ITUtilStructures.assertUpdate(structureElementCommandUpdate); - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); } @Test @@ -581,7 +366,7 @@ class StructuresDisciplineIT { // not delete // // note - // create, approve in order to delete + // create in order to delete // // validate delete // uuid @@ -589,15 +374,15 @@ class StructuresDisciplineIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; UUID uuid = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Cd", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - uuid = approvedStructureElement.getUuid(); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + uuid = structureElement.getUuid(); // validate delete @@ -627,131 +412,40 @@ class StructuresDisciplineIT { } @Test - void deleteApprove() { - // test delete and approve discipline + void delete() { + // test delete discipline // // note - // create, approve in order to delete, approve + // create in order to delete, approve StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Da", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // delete - ITUtilStructures.assertDelete(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void deleteCancel() { - // test delete and cancel discipline - // - // note - // create, approve in order to delete, cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Dc", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // delete - ITUtilStructures.assertDelete(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void deleteReject() { - // test delete and reject discipline - // - // note - // create, approve in order to delete, reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Dr", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); // delete ITUtilStructures.assertDelete(structureElementCommandConfirm); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); } @Test - void readSearchHistoryApprove() { - // test read discipline in various ways for create, approve + void readSearchHistoryStatus() { + // test read discipline in various ways for create // search // latest // history @@ -760,289 +454,57 @@ class StructuresDisciplineIT { // create (and more) to read (with content) StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement approvedStructureElement = null; - int length = 0; + StructureElement structureElement = null; + int count = 0; - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Rsha", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); + structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Rshs", 41, "description"); // read (1) - length = ITUtilStructures.assertRead("?type=DISCIPLINE", 1, -1).getListSize(); + count = ITUtilStructures.assertRead("?type=DISCIPLINE").getListSize(); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING", 1, -1); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING", 0, -1); ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED", 0, -1); ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED", 0, -1); ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED&mnemonic=Rsha", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED&mnemonic=Rshs", 0); - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("?mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Rsha", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertExists(Type.DISCIPLINE, "Rshs", Boolean.FALSE); - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Rsha", Boolean.FALSE); - - // approve - approvedStructureElement = ITUtilStructures.assertApprove(structureElementCommandConfirm); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=DISCIPLINE", 1, -1).getListSize()); + assertEquals(count + 1, ITUtilStructures.assertRead("?type=DISCIPLINE", 1, -1).getListSize()); ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING", 0, -1); ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED", 1, -1); ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED", 0, -1); ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED&mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED&mnemonic=Rsha", 0); - - ITUtilStructures.assertFind("/" + approvedStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha&statuses=APPROVED&deleted=false", 1); - - ITUtilStructures.assertRead("?mnemonicPath=Rsha", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha&statuses=APPROVED&deleted=false", 1); - - ITUtilStructures.assertHistory("/" + approvedStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Rsha", Boolean.TRUE); - } - - @Test - void readSearchHistoryCancel() { - // test read discipline in various ways for create, cancel - // search - // latest - // history - // - // note - // create (and more) to read (with content) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement cancelledStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Rshc", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - // read (1) - length = ITUtilStructures.assertRead("?type=DISCIPLINE", 1, -1).getListSize(); - - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING", 1, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED&mnemonic=Rshc", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Rshc", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Rshc", Boolean.FALSE); - - // cancel - cancelledStructureElement = ITUtilStructures.assertCancel(structureElementCommandConfirm); - - // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=DISCIPLINE", 1, -1).getListSize()); - - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED", 1, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED&mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED&mnemonic=Rshc", 0); - - ITUtilStructures.assertFind("/" + cancelledStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Rshc", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + cancelledStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Rshc", Boolean.FALSE); - } - - @Test - void readSearchHistoryReject() { - // test read discipline in various ways for create, reject - // search - // latest - // history - // - // note - // create (and more) to read (with content) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement rejectedStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Rshr", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - // read (1) - length = ITUtilStructures.assertRead("?type=DISCIPLINE", 1, -1).getListSize(); - - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING", 1, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED&mnemonic=Rshr", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED&mnemonic=Rshs", 1); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED&mnemonic=Rshs", 0); - ITUtilStructures.assertRead("?mnemonicPath=Rshr", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertFind("/" + structureElement.getUuid().toString()); - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertRead("?mnemonic=Rshs", 1); + ITUtilStructures.assertRead("?mnemonic=Rshs&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertExists(Type.DISCIPLINE, "Rshr", Boolean.FALSE); + ITUtilStructures.assertRead("?mnemonicPath=Rshs", 1); + ITUtilStructures.assertRead("?mnemonicPath=Rshs&statuses=APPROVED&deleted=false", 1); - // reject - rejectedStructureElement = ITUtilStructures.assertReject(structureElementCommandConfirm); + ITUtilStructures.assertHistory("/" + structureElement.getUuid().toString(), 1); - // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=DISCIPLINE", 1, -1).getListSize()); - - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED", 1, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED&mnemonic=Rshr", 1); - - ITUtilStructures.assertFind("/" + rejectedStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Rshr", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + rejectedStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Rshr", Boolean.FALSE); - } - - @Test - void readSearchHistoryStatusLatest1() { - // test read discipline in various ways - // status - // latest - // ( deleted ) - // history - // - // note - // entries with different statuses - // - // create (and more) to read (with content) - // 4 different lines of uuid with combinations of status and latest - // 1 entry for each line of uuid - // in particular different statuses for last entry in lines of uuid - // mnemonic - P, C, R, A (pending, cancelled, rejected, approved) - // - // exclude content (with latest) before latest - // exclude content (with latest) after latest (cancelled, rejected) - // keep most recent content (without latest) (to have most recent in line of uuid without latest) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElement createdStructureElement = null; - UUID uuid, uuid2, uuid3, uuid4 = null; - - // a number of entries for which the last entry has status PENDING - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "P1", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - uuid = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status CANCELLED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "C1", 2, "description"); - createdStructureElement = ITUtilStructures.assertCreateCancel(structureElementCommandCreate); - uuid2 = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status REJECTED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "R1", 3, "description"); - createdStructureElement = ITUtilStructures.assertCreateReject(structureElementCommandCreate); - uuid3 = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status APPROVED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "A1", 4, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - uuid4 = createdStructureElement.getUuid(); - - // ---------------------------------------------------------------------------------------------------- - // from first structure element - assertNotNull(uuid); - - ITUtilStructures.assertFind("/" + uuid.toString()); - ITUtilStructures.assertFind("/" + uuid2.toString()); - ITUtilStructures.assertFind("/" + uuid3.toString()); - ITUtilStructures.assertFind("/" + uuid4.toString()); - - ITUtilStructures.assertRead("?mnemonic=P1", 1); - ITUtilStructures.assertRead("?mnemonic=C1", 1); - ITUtilStructures.assertRead("?mnemonic=R1", 1); - ITUtilStructures.assertRead("?mnemonic=A1", 1); - ITUtilStructures.assertRead("?mnemonic=P1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=C1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=R1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=A1&statuses=APPROVED&deleted=false", 1); - - ITUtilStructures.assertHistory("/" + uuid.toString(), 1); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid3.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid4.toString(), 2); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "P1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "C1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "R1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "A1", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "Rshs", Boolean.TRUE); } @Test @@ -1057,10 +519,9 @@ class StructuresDisciplineIT { // entries with different statuses // // create (and more) to read (with content) - // 4 different lines of uuid with combinations of status and latest + // 2 different lines of uuid with combinations of status and latest // 9 entries for each line of uuid - // in particular different statuses for last entry in lines of uuid - // mnemonic - P, C, R, A (pending, cancelled, rejected, approved) + // mnemonic - Ab, A9 // // exclude content (with latest) before latest // exclude content (with latest) after latest (cancelled, rejected) @@ -1068,100 +529,54 @@ class StructuresDisciplineIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElement createdStructureElement = null; - UUID uuid, uuid2, uuid3, uuid4 = null; + StructureElement structureElement = null; + UUID uuid, uuid2 = null; // a number of entries for which the last entry has status PENDING - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "P9", null, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); + structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "Ab", null, "description mnemonic Ab"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid = structureElement.getUuid(); + + structureElementCommandUpdate.setDescription("description mnemonic Ab 2"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 3"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 4"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 5"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 6"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 7"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 8"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 9"); ITUtilStructures.assertUpdate(structureElementCommandUpdate); // a number of entries for which the last entry has status CANCELLED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "C9", 2, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid2 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - - // a number of entries for which the last entry has status REJECTED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "R9", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid3 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - - // a number of entries for which the last entry has status APPROVED - structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "A9", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid4 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, "A9", 2, "description mnemonic A9"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid2 = structureElement.getUuid(); + + structureElementCommandUpdate.setDescription("description mnemonic A9 2"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 3"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 4"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 5"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 6"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 7"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 8"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 9"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); // ---------------------------------------------------------------------------------------------------- // from first structure element @@ -1169,26 +584,16 @@ class StructuresDisciplineIT { ITUtilStructures.assertFind("/" + uuid.toString()); ITUtilStructures.assertFind("/" + uuid2.toString()); - ITUtilStructures.assertFind("/" + uuid3.toString()); - ITUtilStructures.assertFind("/" + uuid4.toString()); - ITUtilStructures.assertRead("?mnemonic=P9", 2); - ITUtilStructures.assertRead("?mnemonic=C9", 1); - ITUtilStructures.assertRead("?mnemonic=R9", 1); + ITUtilStructures.assertRead("?mnemonic=Ab", 1); ITUtilStructures.assertRead("?mnemonic=A9", 1); - ITUtilStructures.assertRead("?mnemonic=P9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=C9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=R9&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=Ab&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonic=A9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertHistory("/" + uuid.toString(), 17); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 18); - ITUtilStructures.assertHistory("/" + uuid3.toString(), 18); - ITUtilStructures.assertHistory("/" + uuid4.toString(), 18); + ITUtilStructures.assertHistory("/" + uuid.toString(), 9); + ITUtilStructures.assertHistory("/" + uuid2.toString(), 9); - ITUtilStructures.assertExists(Type.DISCIPLINE, "P9", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "C9", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "R9", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "Ab", Boolean.TRUE); ITUtilStructures.assertExists(Type.DISCIPLINE, "A9", Boolean.TRUE); } @@ -1214,14 +619,18 @@ class StructuresDisciplineIT { StructureElementCommandCreate[] structureElementCommandsCreate = null; StructureElementCommandUpdate[] structureElementCommandsUpdate = null; StructureElementCommandConfirm[] structureElementCommandsConfirm = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; ResponsePageStructureElements response, response2 = null; UUID uuid = null; UUID uuid2 = null; UUID uuidRandom = UUID.randomUUID(); - // create + approve + String description2 = "some other description"; + String description3 = "more description"; + String description4 = "yet another description"; + + // create structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "AA1", 1, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AA2", 1, "description"), @@ -1229,20 +638,27 @@ class StructuresDisciplineIT { new StructureElementCommandCreate(Type.DISCIPLINE, null, "AA4", 1, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AA5", 1, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - uuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + uuid = structureElements[0].getUuid(); - // create + cancel + // create + // update structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "AB1", 2, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AB2", 2, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AB3", 2, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AB4", 2, "description"), - new StructureElementCommandCreate(Type.DISCIPLINE, null, "AB5", 2, "description") + new StructureElementCommandCreate(Type.DISCIPLINE, null, "AB5", 2, "description"), }; - ITUtilStructures.assertCreateCancel(structureElementCommandsCreate); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description2); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - // create + reject + // create + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "AC1", 3, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AC2", 3, "description"), @@ -1250,9 +666,13 @@ class StructuresDisciplineIT { new StructureElementCommandCreate(Type.DISCIPLINE, null, "AC4", 3, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AC5", 3, "description") }; - ITUtilStructures.assertCreateReject(structureElementCommandsCreate); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); + ITUtilStructures.assertDelete(structureElementCommandsConfirm); // create + // update + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "AD1", 4, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AD2", 4, "description"), @@ -1260,15 +680,19 @@ class StructuresDisciplineIT { new StructureElementCommandCreate(Type.DISCIPLINE, null, "AD4", 4, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AD5", 4, "description") }; - ITUtilStructures.assertCreate(structureElementCommandsCreate); - - String description2 = "some other description"; - String description3 = "more description"; + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description2); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); + ITUtilStructures.assertDelete(structureElementCommandsConfirm); - // create + approve - // update + approve - // update + approve - // delete + reject + // create + // update + // update + // update structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "AE1", 5, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AE2", 5, "description"), @@ -1276,79 +700,56 @@ class StructuresDisciplineIT { new StructureElementCommandCreate(Type.DISCIPLINE, null, "AE4", 5, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AE5", 5, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description2); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description3); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteReject(structureElementCommandsConfirm); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description4); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - // create + approve - // delete + approve + // create + // update + // update + // update + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "AF1", 6, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AF2", 6, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AF3", 6, "description"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "AF4", 6, "description"), - new StructureElementCommandCreate(Type.DISCIPLINE, null, "AF5", 6, "description") - }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteApprove(structureElementCommandsConfirm); - - // create + approve - // delete - structureElementCommandsCreate = new StructureElementCommandCreate[] { - new StructureElementCommandCreate(Type.DISCIPLINE, null, "AG1", 7, "description"), - new StructureElementCommandCreate(Type.DISCIPLINE, null, "AG2", 7, "description"), - new StructureElementCommandCreate(Type.DISCIPLINE, null, "AG3", 7, "description"), - new StructureElementCommandCreate(Type.DISCIPLINE, null, "AG4", 7, "description"), - new StructureElementCommandCreate(Type.DISCIPLINE, null, "AG5", 7, "description") + new StructureElementCommandCreate(Type.DISCIPLINE, null, "AF5", 6, "description"), }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDelete(structureElementCommandsConfirm); - - // 60 discipline entries - - // create + approve - // update + approve - // update + approve - // delete + reject - // delete - structureElementCommandsCreate = new StructureElementCommandCreate[] { - new StructureElementCommandCreate(Type.DISCIPLINE, null, "AH1", 8, "description"), - new StructureElementCommandCreate(Type.DISCIPLINE, null, "AH2", 8, "description"), - new StructureElementCommandCreate(Type.DISCIPLINE, null, "AH3", 8, "description"), - new StructureElementCommandCreate(Type.DISCIPLINE, null, "AH4", 8, "description"), - new StructureElementCommandCreate(Type.DISCIPLINE, null, "AH5", 8, "description") - }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - uuid2 = approvedStructureElements[0].getUuid(); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + uuid2 = structureElements[0].getUuid(); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description2); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description3); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteReject(structureElementCommandsConfirm); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description4); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); ITUtilStructures.assertDelete(structureElementCommandsConfirm); - // 85 subsystem entries + // 85 system group entries // ---------------------------------------------------------------------------------------------------- // from first structure element @@ -1368,23 +769,23 @@ class StructuresDisciplineIT { // content for field in first and last items - always possible // first and last items - not always possible - ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__", 50); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&mnemonic=A__", 15); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED&mnemonic=A__", 25); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 40); + ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__", 30); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=APPROVED&mnemonic=A__", 30); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=CANCELLED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=REJECTED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 30); - ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=false&mnemonic=A__", 35); - ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=false&statuses=PENDING&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=false&statuses=APPROVED&mnemonic=A__", 20); - ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=false&statuses=CANCELLED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=false&statuses=REJECTED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=false&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 25); + ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=false&mnemonic=A__", 15); + ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=false&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=false&statuses=APPROVED&mnemonic=A__", 15); + ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=false&statuses=CANCELLED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=false&statuses=REJECTED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=false&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 15); ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=true&mnemonic=A__", 15); - ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=true&statuses=PENDING&mnemonic=A__", 10); - ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=true&statuses=APPROVED&mnemonic=A__", 5); + ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=true&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=true&statuses=APPROVED&mnemonic=A__", 15); ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=true&statuses=CANCELLED&mnemonic=A__", 0); ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=true&statuses=REJECTED&mnemonic=A__", 0); ITUtilStructures.assertRead("?type=DISCIPLINE&deleted=true&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 15); @@ -1392,23 +793,23 @@ class StructuresDisciplineIT { ITUtilStructures.assertRead("?type=DISCIPLINE&parent=" + uuid.toString(), 0); ITUtilStructures.assertRead("?type=DISCIPLINE&parent=" + uuid2.toString(), 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonicPath=A__", 45, -1); + ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonicPath=A__", 30, -1); ITUtilStructures.assertRead("?type=DISCIPLINE&description=desc", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&description=desc%", 35, -1); + ITUtilStructures.assertRead("?type=DISCIPLINE&description=desc%", 10, -1); ITUtilStructures.assertRead("?type=DISCIPLINE&description=sc", 0); ITUtilStructures.assertRead("?type=DISCIPLINE&description=sc%", 0); ITUtilStructures.assertRead("?type=DISCIPLINE&description=%sc", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&description=%sc%", 45, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&description=description", 35, -1); + ITUtilStructures.assertRead("?type=DISCIPLINE&description=%sc%", 30, -1); + ITUtilStructures.assertRead("?type=DISCIPLINE&description=description", 10, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&who=test who", 45, -1); + ITUtilStructures.assertRead("?type=DISCIPLINE&who=test who", 30, -1); ITUtilStructures.assertRead("?type=DISCIPLINE&who=test", 0); ITUtilStructures.assertRead("?type=DISCIPLINE&who=who", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&who=test%", 45, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&who=%who", 45, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&who=%est%", 45, -1); - ITUtilStructures.assertRead("?type=DISCIPLINE&who=%wh%", 45, -1); + ITUtilStructures.assertRead("?type=DISCIPLINE&who=test%", 30, -1); + ITUtilStructures.assertRead("?type=DISCIPLINE&who=%who", 30, -1); + ITUtilStructures.assertRead("?type=DISCIPLINE&who=%est%", 30, -1); + ITUtilStructures.assertRead("?type=DISCIPLINE&who=%wh%", 30, -1); ITUtilStructures.assertRead("?type=DISCIPLINE&who=wh%", 0); ITUtilStructures.assertRead("?type=DISCIPLINE&who=asdf", 0); ITUtilStructures.assertRead("?type=DISCIPLINE&who=%asdf%", 0); @@ -1446,8 +847,8 @@ class StructuresDisciplineIT { assertEquals(response.getList().size(), response2.getList().size()); assertEquals(1, response.getList().get(0).getOrdering()); assertTrue(response.getList().get(0).getMnemonic().startsWith("AA")); - assertEquals(8, response2.getList().get(0).getOrdering()); - assertTrue(response2.getList().get(0).getMnemonic().startsWith("AH")); + assertEquals(6, response2.getList().get(0).getOrdering()); + assertTrue(response2.getList().get(0).getMnemonic().startsWith("AF")); response = ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=AF_&orderBy=DESCRIPTION&isAsc=true"); response2 = ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=AF_&orderBy=DESCRIPTION&isAsc=false"); @@ -1470,27 +871,27 @@ class StructuresDisciplineIT { || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1))); // pagination - ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=0&pageSize=100", 50); + ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=0&pageSize=100", 30); ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=1&pageSize=100", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=0&pageSize=50", 50); - ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=1&pageSize=50", 0); - ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=0&pageSize=20", 20); - ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=1&pageSize=20", 20); - ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=2&pageSize=20", 10); - ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=3&pageSize=20", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=0&pageSize=30", 30); + ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=1&pageSize=30", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&page=3&pageSize=12", 0); // pagination - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=15", 15); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=15", 15); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=15", 10); - ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=15", 0); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructures.assertRead("?type=DISCIPLINE&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12", 0); // order by, pagination - response = ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20", 20); - response2 = ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20", 10); + response = ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=12", 12); + response2 = ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=12", 6); assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); - response = ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20", 20); - response2 = ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20", 10); + response = ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=12", 12); + response2 = ITUtilStructures.assertRead("?type=DISCIPLINE&mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=12", 6); assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); // uuid @@ -1509,28 +910,28 @@ class StructuresDisciplineIT { // ?mnemonic={mnemonic} ITUtilStructures.assertRead("?mnemonic=A", 0); ITUtilStructures.assertRead("?mnemonic=A__", 15, -1); - ITUtilStructures.assertRead("?mnemonic=AG_", 10); - ITUtilStructures.assertRead("?mnemonic=AG1", 2); + ITUtilStructures.assertRead("?mnemonic=AE_", 5); + ITUtilStructures.assertRead("?mnemonic=AE1", 1); ITUtilStructures.assertRead("?mnemonic=A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonic=A__&statuses=APPROVED&deleted=false", 15, -1); - ITUtilStructures.assertRead("?mnemonic=AG_&statuses=APPROVED&deleted=false", 5); - ITUtilStructures.assertRead("?mnemonic=AG1&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=AE_&statuses=APPROVED&deleted=false", 5); + ITUtilStructures.assertRead("?mnemonic=AE1&statuses=APPROVED&deleted=false", 1); // mnemonic path // ?mnemonicPath={mnemonicPath} ITUtilStructures.assertRead("?mnemonicPath=A", 0); ITUtilStructures.assertRead("?mnemonicPath=A__", 15, -1); - ITUtilStructures.assertRead("?mnemonicPath=AG_", 10); - ITUtilStructures.assertRead("?mnemonicPath=AG1", 2); + ITUtilStructures.assertRead("?mnemonicPath=AE_", 5); + ITUtilStructures.assertRead("?mnemonicPath=AE1", 1); ITUtilStructures.assertRead("?mnemonicPath=A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=A__&statuses=APPROVED&deleted=false", 15, -1); - ITUtilStructures.assertRead("?mnemonicPath=AG_&statuses=APPROVED&deleted=false", 5); - ITUtilStructures.assertRead("?mnemonicPath=AG1&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonicPath=AE_&statuses=APPROVED&deleted=false", 5); + ITUtilStructures.assertRead("?mnemonicPath=AE1&statuses=APPROVED&deleted=false", 1); // history // /history/{uuid} - ITUtilStructures.assertHistory("/" + uuid.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 9); + ITUtilStructures.assertHistory("/" + uuid.toString(), 1); + ITUtilStructures.assertHistory("/" + uuid2.toString(), 5); ITUtilStructures.assertHistory("/" + uuidRandom.toString(), 0, HttpURLConnection.HTTP_NOT_FOUND); ITUtilStructures.assertExists(Type.DISCIPLINE, "AA1", Boolean.TRUE); @@ -1538,11 +939,11 @@ class StructuresDisciplineIT { ITUtilStructures.assertExists(Type.DISCIPLINE, "AA3", Boolean.TRUE); ITUtilStructures.assertExists(Type.DISCIPLINE, "AA4", Boolean.TRUE); ITUtilStructures.assertExists(Type.DISCIPLINE, "AA5", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AB1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AB2", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AB3", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AB4", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AB5", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AB1", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AB2", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AB3", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AB4", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AB5", Boolean.TRUE); ITUtilStructures.assertExists(Type.DISCIPLINE, "AC1", Boolean.FALSE); ITUtilStructures.assertExists(Type.DISCIPLINE, "AC2", Boolean.FALSE); ITUtilStructures.assertExists(Type.DISCIPLINE, "AC3", Boolean.FALSE); @@ -1563,16 +964,16 @@ class StructuresDisciplineIT { ITUtilStructures.assertExists(Type.DISCIPLINE, "AF3", Boolean.FALSE); ITUtilStructures.assertExists(Type.DISCIPLINE, "AF4", Boolean.FALSE); ITUtilStructures.assertExists(Type.DISCIPLINE, "AF5", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AG1", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AG2", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AG3", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AG4", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AG5", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AH1", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AH2", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AH3", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AH4", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "AH5", Boolean.TRUE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AG1", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AG2", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AG3", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AG4", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AG5", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AH1", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AH2", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AH3", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AH4", Boolean.FALSE); + ITUtilStructures.assertExists(Type.DISCIPLINE, "AH5", Boolean.FALSE); } } diff --git a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java index 80218f6b..d3bde8fd 100644 --- a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java @@ -79,19 +79,19 @@ class StructuresSubsystemIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Sg", null, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemGroupUuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemGroupUuid = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Sys", null, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemUuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemUuid = structureElements[0].getUuid(); // check content ITUtilStructures.assertRead("", 2); @@ -286,157 +286,38 @@ class StructuresSubsystemIT { } @Test - void createApprove() { - // test create and approve subsystem - // - // note - // create in order to approve + void create() { + // test create subsystem StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; + StructureElement structureElement = null; structureElementCommand = new StructureElementCommand(null, Type.SUBSYSTEM, systemUuid, "Ca", null, "description"); structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); + structureElementCommandUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommand); structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Ca", Boolean.FALSE); ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Ca", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Ca", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Ca", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Ca", Boolean.TRUE); ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Ca", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(createdStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void createCancel() { - // test create and cancel subsystem - // - // note - // create in order to cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.SUBSYSTEM, systemUuid, "Cc", null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cc", Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void createReject() { - // test create and reject subsystem - // - // note - // create in order to reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.SUBSYSTEM, systemUuid, "Cr", null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); } @Test @@ -445,7 +326,7 @@ class StructuresSubsystemIT { // not update // // note - // create, approve in order to update + // create in order to update // // validate update // uuid @@ -457,15 +338,15 @@ class StructuresSubsystemIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; UUID uuid = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Cu", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - uuid = approvedStructureElement.getUuid(); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid = structureElement.getUuid(); // validate update @@ -519,132 +400,36 @@ class StructuresSubsystemIT { } @Test - void updateApprove() { - // test update and approve subsystem + void update() { + // test update subsystem // // note - // create, approve in order to update, approve + // create in order to update StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Ua", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // update - ITUtilStructures.assertUpdate(structureElementCommandUpdate); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void updateCancel() { - // test update and cancel subsystem - // - // note - // create, approve in order to update, cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Uc", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // update - ITUtilStructures.assertUpdate(structureElementCommandUpdate); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void updateReject() { - // test update and reject subsystem - // - // note - // create, approve in order to update, reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Ur", null, "description"); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); + structureElementCommandUpdate.setDescription("description update check"); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); // update ITUtilStructures.assertUpdate(structureElementCommandUpdate); - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); } @Test @@ -653,7 +438,7 @@ class StructuresSubsystemIT { // not delete // // note - // create, approve in order to delete + // create in order to delete // // validate delete // uuid @@ -661,15 +446,15 @@ class StructuresSubsystemIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; UUID uuid = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Cd", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - uuid = approvedStructureElement.getUuid(); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + uuid = structureElement.getUuid(); // validate delete @@ -699,131 +484,40 @@ class StructuresSubsystemIT { } @Test - void deleteApprove() { - // test delete and approve subsystem + void delete() { + // test delete subsystem // // note - // create, approve in order to delete, approve + // create in order to delete, approve StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Da", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // delete - ITUtilStructures.assertDelete(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void deleteCancel() { - // test delete and cancel subsystem - // - // note - // create, approve in order to delete, cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Dc", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); // delete ITUtilStructures.assertDelete(structureElementCommandConfirm); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); } @Test - void deleteReject() { - // test delete and reject subsystem - // - // note - // create, approve in order to delete, reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Dr", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - // delete - ITUtilStructures.assertDelete(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); - ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void readSearchHistoryApprove() { - // test read subsystem in various ways for create, approve + void readSearchHistoryStatus() { + // test read subsystem in various ways for create // search // latest // history @@ -832,429 +526,101 @@ class StructuresSubsystemIT { // create (and more) to read (with content) StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement approvedStructureElement = null; - int length = 0; + StructureElement structureElement = null; + int count = 0; - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Rsha", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); + structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Rshs", 41, "description"); // read (1) - length = ITUtilStructures.assertRead("?type=SUBSYSTEM", 1, -1).getListSize(); + count = ITUtilStructures.assertRead("?type=SUBSYSTEM").getListSize(); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING", 1, -1); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING", 0, -1); ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED", 0, -1); ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED", 0, -1); ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED&mnemonic=Rsha", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED&mnemonic=Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Sg", 1); ITUtilStructures.assertRead("?mnemonic=Sys", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha", 1); + ITUtilStructures.assertRead("?mnemonic=Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Sg-Sys", 0); - ITUtilStructures.assertRead("?mnemonic=Sys-Rsha", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rsha", 0); + ITUtilStructures.assertRead("?mnemonic=Sys-Rshs", 0); + ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonic=Sys&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonic=Sg-Sys&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sys-Rsha&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Sys-Rshs&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rshs&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg", 1); ITUtilStructures.assertRead("?mnemonicPath=Sys", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sys-Rsha", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rsha", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sys-Rshs", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rshs", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonicPath=Sys&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sys-Rsha&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rsha&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertRead("?mnemonicPath=Sys-Rshs&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rshs&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Rsha", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Rsha", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-Rsha", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Rshs", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Rshs", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-Rshs", Boolean.FALSE); - // approve - approvedStructureElement = ITUtilStructures.assertApprove(structureElementCommandConfirm); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=SUBSYSTEM", 1, -1).getListSize()); + assertEquals(count + 1, ITUtilStructures.assertRead("?type=SUBSYSTEM", 1, -1).getListSize()); ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING", 0, -1); ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED", 1, -1); ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED", 0, -1); ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED&mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED&mnemonic=Rsha", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED&mnemonic=Rshs", 1); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED&mnemonic=Rshs", 0); - ITUtilStructures.assertFind("/" + approvedStructureElement.getUuid().toString()); + ITUtilStructures.assertFind("/" + structureElement.getUuid().toString()); ITUtilStructures.assertRead("?mnemonic=Sg", 1); ITUtilStructures.assertRead("?mnemonic=Sys", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha", 1); + ITUtilStructures.assertRead("?mnemonic=Rshs", 1); ITUtilStructures.assertRead("?mnemonic=Sg-Sys", 0); - ITUtilStructures.assertRead("?mnemonic=Sys-Rsha", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rsha", 0); + ITUtilStructures.assertRead("?mnemonic=Sys-Rshs", 0); + ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonic=Sys&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=Rshs&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonic=Sg-Sys&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sys-Rsha&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Sys-Rshs&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rshs&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg", 1); ITUtilStructures.assertRead("?mnemonicPath=Sys", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sys-Rsha", 1); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rsha", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sys-Rshs", 1); + ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rshs", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonicPath=Sys&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sys-Rsha&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sys-Rshs&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rshs&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertHistory("/" + approvedStructureElement.getUuid().toString(), 2); + ITUtilStructures.assertHistory("/" + structureElement.getUuid().toString(), 1); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Rsha", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Rsha", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-Rsha", Boolean.FALSE); - } - - @Test - void readSearchHistoryCancel() { - // test read subsystem in various ways for create, cancel - // search - // latest - // history - // - // note - // create (and more) to read (with content) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement cancelledStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Rshc", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - // read (1) - length = ITUtilStructures.assertRead("?type=SUBSYSTEM", 1, -1).getListSize(); - - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING", 1, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED&mnemonic=Rshc", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Sg", 1); - ITUtilStructures.assertRead("?mnemonic=Sys", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys", 0); - ITUtilStructures.assertRead("?mnemonic=Sys-Rshc", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rshc", 0); - ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Sys&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sys-Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Sg", 1); - ITUtilStructures.assertRead("?mnemonicPath=Sys", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sys-Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Sys&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sys-Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); - - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Rshc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Rshc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-Rshc", Boolean.FALSE); - - // cancel - cancelledStructureElement = ITUtilStructures.assertCancel(structureElementCommandConfirm); - - // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=SUBSYSTEM", 1, -1).getListSize()); - - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED", 1, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED&mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED&mnemonic=Rshc", 0); - - ITUtilStructures.assertFind("/" + cancelledStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Sg", 1); - ITUtilStructures.assertRead("?mnemonic=Sys", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys", 0); - ITUtilStructures.assertRead("?mnemonic=Sys-Rshc", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rshc", 0); - ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Sys&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sys-Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Sg", 1); - ITUtilStructures.assertRead("?mnemonicPath=Sys", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sys-Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Sys&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sys-Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + cancelledStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Rshc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Rshc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-Rshc", Boolean.FALSE); - } - - @Test - void readSearchHistoryReject() { - // test read subsystem in various ways for create, reject - // search - // latest - // history - // - // note - // create (and more) to read (with content) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement rejectedStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Rshr", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - // read (1) - length = ITUtilStructures.assertRead("?type=SUBSYSTEM", 1, -1).getListSize(); - - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING", 1, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED&mnemonic=Rshr", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Sg", 1); - ITUtilStructures.assertRead("?mnemonic=Sys", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys", 0); - ITUtilStructures.assertRead("?mnemonic=Sys-Rshr", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rshr", 0); - ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Sys&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sys-Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Sg", 1); - ITUtilStructures.assertRead("?mnemonicPath=Sys", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sys-Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Sys&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sys-Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); - - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Rshr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Rshr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-Rshr", Boolean.FALSE); - - // reject - rejectedStructureElement = ITUtilStructures.assertReject(structureElementCommandConfirm); - - // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=SUBSYSTEM", 1, -1).getListSize()); - - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED", 1, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED&mnemonic=Rshr", 1); - - ITUtilStructures.assertFind("/" + rejectedStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Sg", 1); - ITUtilStructures.assertRead("?mnemonic=Sys", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys", 0); - ITUtilStructures.assertRead("?mnemonic=Sys-Rshr", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rshr", 0); - ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Sys&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sys-Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Sys-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Sg", 1); - ITUtilStructures.assertRead("?mnemonicPath=Sys", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sys-Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Sys&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sys-Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + rejectedStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Rshr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Rshr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-Rshr", Boolean.FALSE); - } - - @Test - void readSearchHistoryStatusLatest1() { - // test read subsystem in various ways - // status - // latest - // ( deleted ) - // history - // - // note - // entries with different statuses - // - // create (and more) to read (with content) - // 4 different lines of uuid with combinations of status and latest - // 1 entry for each line of uuid - // in particular different statuses for last entry in lines of uuid - // mnemonic - P, C, R, A (pending, cancelled, rejected, approved) - // - // exclude content (with latest) before latest - // exclude content (with latest) after latest (cancelled, rejected) - // keep most recent content (without latest) (to have most recent in line of uuid without latest) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElement createdStructureElement = null; - UUID uuid, uuid2, uuid3, uuid4 = null; - - // a number of entries for which the last entry has status PENDING - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "P1", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - uuid = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status CANCELLED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "C1", 2, "description"); - createdStructureElement = ITUtilStructures.assertCreateCancel(structureElementCommandCreate); - uuid2 = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status REJECTED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "R1", 3, "description"); - createdStructureElement = ITUtilStructures.assertCreateReject(structureElementCommandCreate); - uuid3 = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status APPROVED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "A1", 4, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - uuid4 = createdStructureElement.getUuid(); - - // ---------------------------------------------------------------------------------------------------- - // from first structure element - assertNotNull(uuid); - - ITUtilStructures.assertFind("/" + uuid.toString()); - ITUtilStructures.assertFind("/" + uuid2.toString()); - ITUtilStructures.assertFind("/" + uuid3.toString()); - ITUtilStructures.assertFind("/" + uuid4.toString()); - - ITUtilStructures.assertRead("?mnemonic=P1", 1); - ITUtilStructures.assertRead("?mnemonic=C1", 1); - ITUtilStructures.assertRead("?mnemonic=R1", 1); - ITUtilStructures.assertRead("?mnemonic=A1", 1); - ITUtilStructures.assertRead("?mnemonic=P1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=C1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=R1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=A1&statuses=APPROVED&deleted=false", 1); - - ITUtilStructures.assertHistory("/" + uuid.toString(), 1); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid3.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid4.toString(), 2); - - ITUtilStructures.assertExists(Type.SUBSYSTEM, "P1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "C1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "R1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "A1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-P1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-C1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-R1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-A1", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-P1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-C1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-R1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-A1", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Rshs", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Rshs", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-Rshs", Boolean.FALSE); } @Test @@ -1269,10 +635,9 @@ class StructuresSubsystemIT { // entries with different statuses // // create (and more) to read (with content) - // 4 different lines of uuid with combinations of status and latest + // 2 different lines of uuid with combinations of status and latest // 9 entries for each line of uuid - // in particular different statuses for last entry in lines of uuid - // mnemonic - P, C, R, A (pending, cancelled, rejected, approved) + // mnemonic - Ab, A9 // // exclude content (with latest) before latest // exclude content (with latest) after latest (cancelled, rejected) @@ -1280,100 +645,54 @@ class StructuresSubsystemIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElement createdStructureElement = null; - UUID uuid, uuid2, uuid3, uuid4 = null; + StructureElement structureElement = null; + UUID uuid, uuid2 = null; // a number of entries for which the last entry has status PENDING - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "P9", null, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); + structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Ab", null, "description mnemonic Ab"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid = structureElement.getUuid(); + + structureElementCommandUpdate.setDescription("description mnemonic Ab 2"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 3"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 4"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 5"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 6"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 7"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 8"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 9"); ITUtilStructures.assertUpdate(structureElementCommandUpdate); // a number of entries for which the last entry has status CANCELLED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "C9", 2, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid2 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - - // a number of entries for which the last entry has status REJECTED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "R9", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid3 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - - // a number of entries for which the last entry has status APPROVED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "A9", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid4 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "A9", 2, "description mnemonic A9"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid2 = structureElement.getUuid(); + + structureElementCommandUpdate.setDescription("description mnemonic A9 2"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 3"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 4"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 5"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 6"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 7"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 8"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 9"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); // ---------------------------------------------------------------------------------------------------- // from first structure element @@ -1381,34 +700,20 @@ class StructuresSubsystemIT { ITUtilStructures.assertFind("/" + uuid.toString()); ITUtilStructures.assertFind("/" + uuid2.toString()); - ITUtilStructures.assertFind("/" + uuid3.toString()); - ITUtilStructures.assertFind("/" + uuid4.toString()); - ITUtilStructures.assertRead("?mnemonic=P9", 2); - ITUtilStructures.assertRead("?mnemonic=C9", 1); - ITUtilStructures.assertRead("?mnemonic=R9", 1); + ITUtilStructures.assertRead("?mnemonic=Ab", 1); ITUtilStructures.assertRead("?mnemonic=A9", 1); - ITUtilStructures.assertRead("?mnemonic=P9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=C9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=R9&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=Ab&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonic=A9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertHistory("/" + uuid.toString(), 17); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 18); - ITUtilStructures.assertHistory("/" + uuid3.toString(), 18); - ITUtilStructures.assertHistory("/" + uuid4.toString(), 18); + ITUtilStructures.assertHistory("/" + uuid.toString(), 9); + ITUtilStructures.assertHistory("/" + uuid2.toString(), 9); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "P9", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "C9", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "R9", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Ab", Boolean.FALSE); ITUtilStructures.assertExists(Type.SUBSYSTEM, "A9", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-P9", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-C9", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-R9", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Ab", Boolean.TRUE); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-A9", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-P9", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-C9", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-R9", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-Ab", Boolean.FALSE); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sg-Sys-A9", Boolean.FALSE); } @@ -1434,14 +739,18 @@ class StructuresSubsystemIT { StructureElementCommandCreate[] structureElementCommandsCreate = null; StructureElementCommandUpdate[] structureElementCommandsUpdate = null; StructureElementCommandConfirm[] structureElementCommandsConfirm = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; ResponsePageStructureElements response, response2 = null; UUID uuid = null; UUID uuid2 = null; UUID uuidRandom = UUID.randomUUID(); - // create + approve + String description2 = "some other description"; + String description3 = "more description"; + String description4 = "yet another description"; + + // create structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AA1", 1, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AA2", 1, "description"), @@ -1449,20 +758,27 @@ class StructuresSubsystemIT { new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AA4", 1, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AA5", 1, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - uuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + uuid = structureElements[0].getUuid(); - // create + cancel + // create + // update structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AB1", 2, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AB2", 2, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AB3", 2, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AB4", 2, "description"), - new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AB5", 2, "description") + new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AB5", 2, "description"), }; - ITUtilStructures.assertCreateCancel(structureElementCommandsCreate); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description2); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - // create + reject + // create + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AC1", 3, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AC2", 3, "description"), @@ -1470,9 +786,13 @@ class StructuresSubsystemIT { new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AC4", 3, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AC5", 3, "description") }; - ITUtilStructures.assertCreateReject(structureElementCommandsCreate); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); + ITUtilStructures.assertDelete(structureElementCommandsConfirm); // create + // update + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AD1", 4, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AD2", 4, "description"), @@ -1480,15 +800,19 @@ class StructuresSubsystemIT { new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AD4", 4, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AD5", 4, "description") }; - ITUtilStructures.assertCreate(structureElementCommandsCreate); - - String description2 = "some other description"; - String description3 = "more description"; + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description2); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); + ITUtilStructures.assertDelete(structureElementCommandsConfirm); - // create + approve - // update + approve - // update + approve - // delete + reject + // create + // update + // update + // update structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AE1", 5, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AE2", 5, "description"), @@ -1496,79 +820,56 @@ class StructuresSubsystemIT { new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AE4", 5, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AE5", 5, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description2); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description3); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteReject(structureElementCommandsConfirm); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description4); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - // create + approve - // delete + approve + // create + // update + // update + // update + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AF1", 6, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AF2", 6, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AF3", 6, "description"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AF4", 6, "description"), - new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AF5", 6, "description") + new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AF5", 6, "description"), }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteApprove(structureElementCommandsConfirm); - - // create + approve - // delete - structureElementCommandsCreate = new StructureElementCommandCreate[] { - new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AG1", 7, "description"), - new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AG2", 7, "description"), - new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AG3", 7, "description"), - new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AG4", 7, "description"), - new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AG5", 7, "description") - }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDelete(structureElementCommandsConfirm); - - // 60 subsystem entries - - // create + approve - // update + approve - // update + approve - // delete + reject - // delete - structureElementCommandsCreate = new StructureElementCommandCreate[] { - new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AH1", 8, "description"), - new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AH2", 8, "description"), - new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AH3", 8, "description"), - new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AH4", 8, "description"), - new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "AH5", 8, "description") - }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - uuid2 = approvedStructureElements[0].getUuid(); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + uuid2 = structureElements[0].getUuid(); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description2); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description3); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteReject(structureElementCommandsConfirm); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description4); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); ITUtilStructures.assertDelete(structureElementCommandsConfirm); - // 85 subsystem entries + // 85 system group entries // ---------------------------------------------------------------------------------------------------- // from first structure element @@ -1588,49 +889,49 @@ class StructuresSubsystemIT { // content for field in first and last items - always possible // first and last items - not always possible - ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__", 50); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&mnemonic=A__", 15); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED&mnemonic=A__", 25); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 40); + ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__", 30); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=APPROVED&mnemonic=A__", 30); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=CANCELLED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=REJECTED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 30); - ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=false&mnemonic=A__", 35); - ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=false&statuses=PENDING&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=false&statuses=APPROVED&mnemonic=A__", 20); - ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=false&statuses=CANCELLED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=false&statuses=REJECTED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=false&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 25); + ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=false&mnemonic=A__", 15); + ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=false&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=false&statuses=APPROVED&mnemonic=A__", 15); + ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=false&statuses=CANCELLED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=false&statuses=REJECTED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=false&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 15); ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=true&mnemonic=A__", 15); - ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=true&statuses=PENDING&mnemonic=A__", 10); - ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=true&statuses=APPROVED&mnemonic=A__", 5); + ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=true&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=true&statuses=APPROVED&mnemonic=A__", 15); ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=true&statuses=CANCELLED&mnemonic=A__", 0); ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=true&statuses=REJECTED&mnemonic=A__", 0); ITUtilStructures.assertRead("?type=SUBSYSTEM&deleted=true&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 15); ITUtilStructures.assertRead("?type=SUBSYSTEM&parent=" + systemGroupUuid.toString(), 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&parent=" + systemUuid.toString(), 45, -1); + ITUtilStructures.assertRead("?type=SUBSYSTEM&parent=" + systemUuid.toString(), 30, -1); ITUtilStructures.assertRead("?type=SUBSYSTEM&parent=" + uuid.toString(), 0); ITUtilStructures.assertRead("?type=SUBSYSTEM&parent=" + uuid2.toString(), 0); ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonicPath=A__", 0); ITUtilStructures.assertRead("?type=SUBSYSTEM&description=desc", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&description=desc%", 35, -1); + ITUtilStructures.assertRead("?type=SUBSYSTEM&description=desc%", 10, -1); ITUtilStructures.assertRead("?type=SUBSYSTEM&description=sc", 0); ITUtilStructures.assertRead("?type=SUBSYSTEM&description=sc%", 0); ITUtilStructures.assertRead("?type=SUBSYSTEM&description=%sc", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&description=%sc%", 45, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&description=description", 35, -1); + ITUtilStructures.assertRead("?type=SUBSYSTEM&description=%sc%", 30, -1); + ITUtilStructures.assertRead("?type=SUBSYSTEM&description=description", 10, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&who=test who", 45, -1); + ITUtilStructures.assertRead("?type=SUBSYSTEM&who=test who", 30, -1); ITUtilStructures.assertRead("?type=SUBSYSTEM&who=test", 0); ITUtilStructures.assertRead("?type=SUBSYSTEM&who=who", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&who=test%", 45, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&who=%who", 45, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&who=%est%", 45, -1); - ITUtilStructures.assertRead("?type=SUBSYSTEM&who=%wh%", 45, -1); + ITUtilStructures.assertRead("?type=SUBSYSTEM&who=test%", 30, -1); + ITUtilStructures.assertRead("?type=SUBSYSTEM&who=%who", 30, -1); + ITUtilStructures.assertRead("?type=SUBSYSTEM&who=%est%", 30, -1); + ITUtilStructures.assertRead("?type=SUBSYSTEM&who=%wh%", 30, -1); ITUtilStructures.assertRead("?type=SUBSYSTEM&who=wh%", 0); ITUtilStructures.assertRead("?type=SUBSYSTEM&who=asdf", 0); ITUtilStructures.assertRead("?type=SUBSYSTEM&who=%asdf%", 0); @@ -1668,8 +969,8 @@ class StructuresSubsystemIT { assertEquals(response.getList().size(), response2.getList().size()); assertEquals(1, response.getList().get(0).getOrdering()); assertTrue(response.getList().get(0).getMnemonic().startsWith("AA")); - assertEquals(8, response2.getList().get(0).getOrdering()); - assertTrue(response2.getList().get(0).getMnemonic().startsWith("AH")); + assertEquals(6, response2.getList().get(0).getOrdering()); + assertTrue(response2.getList().get(0).getMnemonic().startsWith("AF")); response = ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=AF_&orderBy=DESCRIPTION&isAsc=true"); response2 = ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=AF_&orderBy=DESCRIPTION&isAsc=false"); @@ -1692,27 +993,27 @@ class StructuresSubsystemIT { || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1))); // pagination - ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=0&pageSize=100", 50); + ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=0&pageSize=100", 30); ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=1&pageSize=100", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=0&pageSize=50", 50); - ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=1&pageSize=50", 0); - ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=0&pageSize=20", 20); - ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=1&pageSize=20", 20); - ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=2&pageSize=20", 10); - ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=3&pageSize=20", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=0&pageSize=30", 30); + ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=1&pageSize=30", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&page=3&pageSize=12", 0); // pagination - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=15", 15); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=15", 15); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=15", 10); - ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=15", 0); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructures.assertRead("?type=SUBSYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12", 0); // order by, pagination - response = ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20", 20); - response2 = ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20", 10); + response = ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=12", 12); + response2 = ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=12", 6); assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); - response = ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20", 20); - response2 = ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20", 10); + response = ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=12", 12); + response2 = ITUtilStructures.assertRead("?type=SUBSYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=12", 6); assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); // uuid @@ -1731,10 +1032,10 @@ class StructuresSubsystemIT { ITUtilStructures.assertRead("/children/" + systemUuid.toString(), 15, -1); ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=APPROVED", 15, -1); ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=ARCHIVED", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); - ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=CANCELLED,PENDING", 0, -1); + ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=CANCELLED", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=PENDING", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=REJECTED", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=CANCELLED,PENDING", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=APPROVED,PENDING", 15, -1); ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=APPROVED&deleted=false", 9, -1); ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=APPROVED&deleted=true", 5, -1); @@ -1743,32 +1044,32 @@ class StructuresSubsystemIT { // mnemonic // ?mnemonic={mnemonic} ITUtilStructures.assertRead("?mnemonic=A", 0); - ITUtilStructures.assertRead("?mnemonic=A__", 15, -1); - ITUtilStructures.assertRead("?mnemonic=AG_", 10); - ITUtilStructures.assertRead("?mnemonic=AG1", 2); + ITUtilStructures.assertRead("?mnemonic=A__", 30, -1); + ITUtilStructures.assertRead("?mnemonic=AE_", 5); + ITUtilStructures.assertRead("?mnemonic=AE1", 1); ITUtilStructures.assertRead("?mnemonic=Sg", 1); ITUtilStructures.assertRead("?mnemonic=A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonic=A__&statuses=APPROVED&deleted=false", 15, -1); - ITUtilStructures.assertRead("?mnemonic=AG_&statuses=APPROVED&deleted=false", 5); - ITUtilStructures.assertRead("?mnemonic=AG1&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=AE_&statuses=APPROVED&deleted=false", 5); + ITUtilStructures.assertRead("?mnemonic=AE1&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); // mnemonic path // ?mnemonicPath={mnemonicPath} ITUtilStructures.assertRead("?mnemonicPath=A", 0); ITUtilStructures.assertRead("?mnemonicPath=A__", 0); - ITUtilStructures.assertRead("?mnemonicPath=AG_", 0); - ITUtilStructures.assertRead("?mnemonicPath=AG1", 0); + ITUtilStructures.assertRead("?mnemonicPath=AE_", 0); + ITUtilStructures.assertRead("?mnemonicPath=AE1", 0); ITUtilStructures.assertRead("?mnemonicPath=Sys-A%", 15, -1); ITUtilStructures.assertRead("?mnemonicPath=Sys-A", 0); ITUtilStructures.assertRead("?mnemonicPath=Sys-A__", 15, -1); - ITUtilStructures.assertRead("?mnemonicPath=Sys-AG_", 10); - ITUtilStructures.assertRead("?mnemonicPath=Sys-AG1", 2); + ITUtilStructures.assertRead("?mnemonicPath=Sys-AE_", 5); + ITUtilStructures.assertRead("?mnemonicPath=Sys-AE1", 1); ITUtilStructures.assertRead("?mnemonicPath=Sg-A%", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-A", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-A__", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-AG_", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-AG1", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sg-AE_", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sg-AE1", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys%", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys__", 0); @@ -1776,18 +1077,18 @@ class StructuresSubsystemIT { ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys", 0); ITUtilStructures.assertRead("?mnemonicPath=A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=A__&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=AG_&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=AG1&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=AE_&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=AE1&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sys-A%&statuses=APPROVED&deleted=false", 15, -1); ITUtilStructures.assertRead("?mnemonicPath=Sys-A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sys-A__&statuses=APPROVED&deleted=false", 15, -1); - ITUtilStructures.assertRead("?mnemonicPath=Sys-AG_&statuses=APPROVED&deleted=false", 5); - ITUtilStructures.assertRead("?mnemonicPath=Sys-AG1&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonicPath=Sys-AE_&statuses=APPROVED&deleted=false", 5); + ITUtilStructures.assertRead("?mnemonicPath=Sys-AE1&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonicPath=Sg-A%&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-A__&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-AG_&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-AG1&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sg-AE_&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sg-AE1&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys%&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-Sys__&statuses=APPROVED&deleted=false", 0); @@ -1796,10 +1097,10 @@ class StructuresSubsystemIT { // history // /history/{uuid} - ITUtilStructures.assertHistory("/" + uuid.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 9); - ITUtilStructures.assertHistory("/" + systemUuid.toString(), 2); - ITUtilStructures.assertHistory("/" + systemGroupUuid.toString(), 2); + ITUtilStructures.assertHistory("/" + uuid.toString(), 1); + ITUtilStructures.assertHistory("/" + uuid2.toString(), 5); + ITUtilStructures.assertHistory("/" + systemUuid.toString(), 1); + ITUtilStructures.assertHistory("/" + systemGroupUuid.toString(), 1); ITUtilStructures.assertHistory("/" + uuidRandom.toString(), 0, HttpURLConnection.HTTP_NOT_FOUND); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AA1", Boolean.TRUE); @@ -1807,11 +1108,11 @@ class StructuresSubsystemIT { ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AA3", Boolean.TRUE); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AA4", Boolean.TRUE); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AA5", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AB1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AB2", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AB3", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AB4", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AB5", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AB1", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AB2", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AB3", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AB4", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AB5", Boolean.TRUE); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AC1", Boolean.FALSE); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AC2", Boolean.FALSE); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AC3", Boolean.FALSE); @@ -1832,16 +1133,16 @@ class StructuresSubsystemIT { ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AF3", Boolean.FALSE); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AF4", Boolean.FALSE); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AF5", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AG1", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AG2", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AG3", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AG4", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AG5", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AH1", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AH2", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AH3", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AH4", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AH5", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AG1", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AG2", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AG3", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AG4", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AG5", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AH1", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AH2", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AH3", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AH4", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-AH5", Boolean.FALSE); } } diff --git a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java index 90b4de3b..45c54e04 100644 --- a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java @@ -251,192 +251,66 @@ class StructuresSystemGroupIT { } @Test - void createApprove() { - // test create and approve system group + void create() { + // test create system group // // note - // create in order to approve // with and without mnemonic StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; + StructureElement structureElement = null; UUID uuid, uuid2, uuid3 = null; structureElementCommand = new StructureElementCommand(null, Type.SYSTEMGROUP, null, "Ca", null, "description"); structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); + structureElementCommandUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommand); structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Ca", Boolean.FALSE); ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "Ca", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - uuid = createdStructureElement.getUuid(); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Ca", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "Ca", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + uuid = structureElement.getUuid(); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Ca", Boolean.TRUE); ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "Ca", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); + ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); // create - structureElementCommandCreate = new StructureElementCommandCreate( - Type.SYSTEMGROUP, null, - null, null, "description2"); - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - uuid2 = createdStructureElement.getUuid(); + structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, null, null, "description2"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + uuid2 = structureElement.getUuid(); // create - structureElementCommandCreate = new StructureElementCommandCreate( - Type.SYSTEMGROUP, null, - null, null, "description3"); - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - uuid3 = createdStructureElement.getUuid(); + structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, null, null, "description3"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + uuid3 = structureElement.getUuid(); assertNotEquals(uuid, uuid2); assertNotEquals(uuid, uuid3); assertNotEquals(uuid2, uuid3); } - @Test - void createCancel() { - // test create and cancel system group - // - // note - // create in order to cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.SYSTEMGROUP, null, "Cc", null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - structureElementCommandConfirm.setType(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - structureElementCommandConfirm.setType(Type.SYSTEMGROUP); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void createReject() { - // test create and reject system group - // - // note - // create in order to reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.SYSTEMGROUP, null, "Cr", null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - @Test void checkUpdate() { // test conditions for update system group // not update // // note - // create, approve in order to update + // create in order to update // // validate update // uuid @@ -447,15 +321,15 @@ class StructuresSystemGroupIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; UUID uuid = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Cu", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - uuid = approvedStructureElement.getUuid(); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid = structureElement.getUuid(); // validate update @@ -501,138 +375,36 @@ class StructuresSystemGroupIT { } @Test - void updateApprove() { - // test update and approve system group + void update() { + // test update system group // // note - // create, approve in order to update, approve + // create in order to update StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Ua", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - structureElementCommandUpdate.setDescription("description update approve check"); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // update - ITUtilStructures.assertUpdate(structureElementCommandUpdate); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void updateCancel() { - // test update and cancel system group - // - // note - // create, approve in order to update, cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Uc", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - structureElementCommandUpdate.setDescription("description update cancel check"); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // update - ITUtilStructures.assertUpdate(structureElementCommandUpdate); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void updateReject() { - // test update and reject system group - // - // note - // create, approve in order to update, reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Ur", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); - structureElementCommandUpdate.setDescription("description update reject check"); + structureElementCommandUpdate.setDescription("description update check"); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); // update ITUtilStructures.assertUpdate(structureElementCommandUpdate); - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); } @Test @@ -641,7 +413,7 @@ class StructuresSystemGroupIT { // not delete // // note - // create, approve in order to delete + // create in order to delete // // validate delete // uuid @@ -649,15 +421,15 @@ class StructuresSystemGroupIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; UUID uuid = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Cd", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - uuid = approvedStructureElement.getUuid(); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + uuid = structureElement.getUuid(); // validate delete @@ -687,131 +459,40 @@ class StructuresSystemGroupIT { } @Test - void deleteApprove() { - // test delete and approve system group + void delete() { + // test delete system group // // note - // create, approve in order to delete, approve + // create in order to delete StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Da", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // delete - ITUtilStructures.assertDelete(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void deleteCancel() { - // test delete and cancel system group - // - // note - // create, approve in order to delete, cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Dc", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // delete - ITUtilStructures.assertDelete(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void deleteReject() { - // test delete and reject system group - // - // note - // create, approve in order to delete, reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Dr", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); // delete ITUtilStructures.assertDelete(structureElementCommandConfirm); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); } @Test - void readSearchHistoryApprove() { - // test read system group in various ways for create, approve + void readSearchHistoryStatus() { + // test read system group in various ways for create // search // latest // history @@ -820,289 +501,57 @@ class StructuresSystemGroupIT { // create (and more) to read (with content) StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement approvedStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Rsha", 41, "description"); + StructureElement structureElement = null; + int count = 0; - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); + structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Rshs", 41, "description"); // read (1) - length = ITUtilStructures.assertRead("?type=SYSTEMGROUP", 1, -1).getListSize(); + count = ITUtilStructures.assertRead("?type=SYSTEMGROUP").getListSize(); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING", 1, -1); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING", 0, -1); ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED", 0, -1); ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED", 0, -1); ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED&mnemonic=Rsha", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED&mnemonic=Rshs", 0); - ITUtilStructures.assertRead("?mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Rsha", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Rshs", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Rsha", Boolean.FALSE); - - // approve - approvedStructureElement = ITUtilStructures.assertApprove(structureElementCommandConfirm); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=SYSTEMGROUP", 1, -1).getListSize()); + assertEquals(count + 1, ITUtilStructures.assertRead("?type=SYSTEMGROUP", 1, -1).getListSize()); ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING", 0, -1); ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED", 1, -1); ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED", 0, -1); ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED&mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED&mnemonic=Rsha", 0); - - ITUtilStructures.assertFind("/" + approvedStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha&statuses=APPROVED&deleted=false", 1); - - ITUtilStructures.assertRead("?mnemonicPath=Rsha", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha&statuses=APPROVED&deleted=false", 1); - - ITUtilStructures.assertHistory("/" + approvedStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Rsha", Boolean.TRUE); - } - - @Test - void readSearchHistoryCancel() { - // test read system group in various ways for create, cancel - // search - // latest - // history - // - // note - // create (and more) to read (with content) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement cancelledStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Rshc", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - // read (1) - length = ITUtilStructures.assertRead("?type=SYSTEMGROUP", 1, -1).getListSize(); - - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING", 1, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED&mnemonic=Rshc", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Rshc", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Rshc", Boolean.FALSE); - - // cancel - cancelledStructureElement = ITUtilStructures.assertCancel(structureElementCommandConfirm); - - // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=SYSTEMGROUP", 1, -1).getListSize()); - - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED", 1, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED&mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED&mnemonic=Rshc", 0); - - ITUtilStructures.assertFind("/" + cancelledStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Rshc", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + cancelledStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Rshc", Boolean.FALSE); - } - - @Test - void readSearchHistoryReject() { - // test read system group in various ways for create, reject - // search - // latest - // history - // - // note - // create (and more) to read (with content) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement rejectedStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Rshr", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - // read (1) - length = ITUtilStructures.assertRead("?type=SYSTEMGROUP", 1, -1).getListSize(); - - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING", 1, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED&mnemonic=Rshr", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED&mnemonic=Rshs", 1); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED&mnemonic=Rshs", 0); - ITUtilStructures.assertRead("?mnemonicPath=Rshr", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertFind("/" + structureElement.getUuid().toString()); - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertRead("?mnemonic=Rshs", 1); + ITUtilStructures.assertRead("?mnemonic=Rshs&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Rshr", Boolean.FALSE); + ITUtilStructures.assertRead("?mnemonicPath=Rshs", 1); + ITUtilStructures.assertRead("?mnemonicPath=Rshs&statuses=APPROVED&deleted=false", 1); - // reject - rejectedStructureElement = ITUtilStructures.assertReject(structureElementCommandConfirm); + ITUtilStructures.assertHistory("/" + structureElement.getUuid().toString(), 1); - // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=SYSTEMGROUP", 1, -1).getListSize()); - - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED", 1, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED&mnemonic=Rshr", 1); - - ITUtilStructures.assertFind("/" + rejectedStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Rshr", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + rejectedStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Rshr", Boolean.FALSE); - } - - @Test - void readSearchHistoryStatusLatest1() { - // test read system group in various ways - // status - // latest - // ( deleted ) - // history - // - // note - // entries with different statuses - // - // create (and more) to read (with content) - // 4 different lines of uuid with combinations of status and latest - // 1 entry for each line of uuid - // in particular different statuses for last entry in lines of uuid - // mnemonic - P, C, R, A (pending, cancelled, rejected, approved) - // - // exclude content (with latest) before latest - // exclude content (with latest) after latest (cancelled, rejected) - // keep most recent content (without latest) (to have most recent in line of uuid without latest) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElement createdStructureElement = null; - UUID uuid, uuid2, uuid3, uuid4 = null; - - // a number of entries for which the last entry has status PENDING - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "P1", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - uuid = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status CANCELLED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "C1", 2, "description"); - createdStructureElement = ITUtilStructures.assertCreateCancel(structureElementCommandCreate); - uuid2 = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status REJECTED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "R1", 3, "description"); - createdStructureElement = ITUtilStructures.assertCreateReject(structureElementCommandCreate); - uuid3 = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status APPROVED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "A1", 4, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - uuid4 = createdStructureElement.getUuid(); - - // ---------------------------------------------------------------------------------------------------- - // from first structure element - assertNotNull(uuid); - - ITUtilStructures.assertFind("/" + uuid.toString()); - ITUtilStructures.assertFind("/" + uuid2.toString()); - ITUtilStructures.assertFind("/" + uuid3.toString()); - ITUtilStructures.assertFind("/" + uuid4.toString()); - - ITUtilStructures.assertRead("?mnemonic=P1", 1); - ITUtilStructures.assertRead("?mnemonic=C1", 1); - ITUtilStructures.assertRead("?mnemonic=R1", 1); - ITUtilStructures.assertRead("?mnemonic=A1", 1); - ITUtilStructures.assertRead("?mnemonic=P1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=C1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=R1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=A1&statuses=APPROVED&deleted=false", 1); - - ITUtilStructures.assertHistory("/" + uuid.toString(), 1); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid3.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid4.toString(), 2); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "P1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "C1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "R1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "A1", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Rshs", Boolean.TRUE); } @Test @@ -1117,10 +566,9 @@ class StructuresSystemGroupIT { // entries with different statuses // // create (and more) to read (with content) - // 4 different lines of uuid with combinations of status and latest + // 2 different lines of uuid with combinations of status and latest // 9 entries for each line of uuid - // in particular different statuses for last entry in lines of uuid - // mnemonic - P, C, R, A (pending, cancelled, rejected, approved) + // no mnemonic, mnemonic - A9 // // exclude content (with latest) before latest // exclude content (with latest) after latest (cancelled, rejected) @@ -1128,100 +576,54 @@ class StructuresSystemGroupIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElement createdStructureElement = null; - UUID uuid, uuid2, uuid3, uuid4 = null; - - // a number of entries for which the last entry has status PENDING - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "P9", null, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); + StructureElement structureElement = null; + UUID uuid, uuid2 = null; + + // a number of entries + structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, null, null, "description no mnemonic"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid = structureElement.getUuid(); + + structureElementCommandUpdate.setDescription("description no mnemonic 2"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 3"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 4"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 5"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 6"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 7"); ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 8"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description no mnemonic 9"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + + // a number of entries + structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "A9", 2, "description mnemonic A9"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid2 = structureElement.getUuid(); - // a number of entries for which the last entry has status CANCELLED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "C9", 2, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid2 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - - // a number of entries for which the last entry has status REJECTED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "R9", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid3 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - - // a number of entries for which the last entry has status APPROVED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "A9", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid4 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 2"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 3"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 4"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 5"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 6"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 7"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 8"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 9"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); // ---------------------------------------------------------------------------------------------------- // from first structure element @@ -1229,26 +631,16 @@ class StructuresSystemGroupIT { ITUtilStructures.assertFind("/" + uuid.toString()); ITUtilStructures.assertFind("/" + uuid2.toString()); - ITUtilStructures.assertFind("/" + uuid3.toString()); - ITUtilStructures.assertFind("/" + uuid4.toString()); - ITUtilStructures.assertRead("?mnemonic=P9", 2); - ITUtilStructures.assertRead("?mnemonic=C9", 1); - ITUtilStructures.assertRead("?mnemonic=R9", 1); + ITUtilStructures.assertRead("?mnemonic=Ab", 0); ITUtilStructures.assertRead("?mnemonic=A9", 1); - ITUtilStructures.assertRead("?mnemonic=P9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=C9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=R9&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=Ab&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonic=A9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertHistory("/" + uuid.toString(), 17); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 18); - ITUtilStructures.assertHistory("/" + uuid3.toString(), 18); - ITUtilStructures.assertHistory("/" + uuid4.toString(), 18); + ITUtilStructures.assertHistory("/" + uuid.toString(), 9); + ITUtilStructures.assertHistory("/" + uuid2.toString(), 9); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "P9", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "C9", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "R9", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Ab", Boolean.FALSE); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "A9", Boolean.TRUE); } @@ -1274,14 +666,18 @@ class StructuresSystemGroupIT { StructureElementCommandCreate[] structureElementCommandsCreate = null; StructureElementCommandUpdate[] structureElementCommandsUpdate = null; StructureElementCommandConfirm[] structureElementCommandsConfirm = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; ResponsePageStructureElements response, response2 = null; UUID uuid = null; UUID uuid2 = null; UUID uuidRandom = UUID.randomUUID(); - // create + approve + String description2 = "some other description"; + String description3 = "more description"; + String description4 = "yet another description"; + + // create structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AA1", 1, "description"), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AA2", 1, "description"), @@ -1289,10 +685,11 @@ class StructuresSystemGroupIT { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AA4", 1, "description"), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AA5", 1, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - uuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + uuid = structureElements[0].getUuid(); - // create + cancel + // create + // update structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AB1", 2, "description"), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AB2", 2, "description"), @@ -1300,9 +697,15 @@ class StructuresSystemGroupIT { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AB4", 2, "description"), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AB5", 2, "description"), }; - ITUtilStructures.assertCreateCancel(structureElementCommandsCreate); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description2); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - // create + reject + // create + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AC1", 3, "description"), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AC2", 3, "description"), @@ -1310,9 +713,13 @@ class StructuresSystemGroupIT { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AC4", 3, "description"), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AC5", 3, "description") }; - ITUtilStructures.assertCreateReject(structureElementCommandsCreate); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); + ITUtilStructures.assertDelete(structureElementCommandsConfirm); // create + // update + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AD1", 4, "description"), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AD2", 4, "description"), @@ -1320,15 +727,19 @@ class StructuresSystemGroupIT { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AD4", 4, "description"), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AD5", 4, "description") }; - ITUtilStructures.assertCreate(structureElementCommandsCreate); - - String description2 = "some other description"; - String description3 = "more description"; + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description2); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); + ITUtilStructures.assertDelete(structureElementCommandsConfirm); - // create + approve - // update + approve - // update + approve - // delete + reject + // create + // update + // update + // update structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AE1", 5, "description"), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AE2", 5, "description"), @@ -1336,23 +747,28 @@ class StructuresSystemGroupIT { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AE4", 5, "description"), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AE5", 5, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description2); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description3); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteReject(structureElementCommandsConfirm); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description4); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - // create + approve - // delete + approve + // create + // update + // update + // update + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AF1", 6, "description"), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AF2", 6, "description"), @@ -1360,52 +776,24 @@ class StructuresSystemGroupIT { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AF4", 6, "description"), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AF5", 6, "description"), }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteApprove(structureElementCommandsConfirm); - - // create + approve - // delete - structureElementCommandsCreate = new StructureElementCommandCreate[] { - new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AG1", 7, "description"), - new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AG2", 7, "description"), - new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AG3", 7, "description"), - new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AG4", 7, "description"), - new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AG5", 7, "description") - }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDelete(structureElementCommandsConfirm); - - // 60 system group entries - - // create + approve - // update + approve - // update + approve - // delete + reject - // delete - structureElementCommandsCreate = new StructureElementCommandCreate[] { - new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AH1", 8, "description"), - new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AH2", 8, "description"), - new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AH3", 8, "description"), - new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AH4", 8, "description"), - new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "AH5", 8, "description") - }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - uuid2 = approvedStructureElements[0].getUuid(); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + uuid2 = structureElements[0].getUuid(); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description2); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description3); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteReject(structureElementCommandsConfirm); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description4); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); ITUtilStructures.assertDelete(structureElementCommandsConfirm); // 85 system group entries @@ -1428,23 +816,23 @@ class StructuresSystemGroupIT { // content for field in first and last items - always possible // first and last items - not always possible - ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__", 50); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&mnemonic=A__", 15); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED&mnemonic=A__", 25); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 40); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__", 30); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=APPROVED&mnemonic=A__", 30); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=CANCELLED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=REJECTED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 30); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=false&mnemonic=A__", 35); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=false&statuses=PENDING&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=false&statuses=APPROVED&mnemonic=A__", 20); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=false&statuses=CANCELLED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=false&statuses=REJECTED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=false&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 25); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=false&mnemonic=A__", 15); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=false&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=false&statuses=APPROVED&mnemonic=A__", 15); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=false&statuses=CANCELLED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=false&statuses=REJECTED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=false&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 15); ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=true&mnemonic=A__", 15); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=true&statuses=PENDING&mnemonic=A__", 10); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=true&statuses=APPROVED&mnemonic=A__", 5); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=true&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=true&statuses=APPROVED&mnemonic=A__", 15); ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=true&statuses=CANCELLED&mnemonic=A__", 0); ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=true&statuses=REJECTED&mnemonic=A__", 0); ITUtilStructures.assertRead("?type=SYSTEMGROUP&deleted=true&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 15); @@ -1452,23 +840,23 @@ class StructuresSystemGroupIT { ITUtilStructures.assertRead("?type=SYSTEMGROUP&parent=" + uuid.toString(), 0); ITUtilStructures.assertRead("?type=SYSTEMGROUP&parent=" + uuid2.toString(), 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonicPath=A__", 45, -1); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonicPath=A__", 30, -1); ITUtilStructures.assertRead("?type=SYSTEMGROUP&description=desc", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&description=desc%", 35, -1); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&description=desc%", 10, -1); ITUtilStructures.assertRead("?type=SYSTEMGROUP&description=sc", 0); ITUtilStructures.assertRead("?type=SYSTEMGROUP&description=sc%", 0); ITUtilStructures.assertRead("?type=SYSTEMGROUP&description=%sc", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&description=%sc%", 45, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&description=description", 35, -1); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&description=%sc%", 30, -1); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&description=description", 10, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=test who", 45, -1); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=test who", 30, -1); ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=test", 0); ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=who", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=test%", 45, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=%who", 45, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=%est%", 45, -1); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=%wh%", 45, -1); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=test%", 30, -1); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=%who", 30, -1); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=%est%", 30, -1); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=%wh%", 30, -1); ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=wh%", 0); ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=asdf", 0); ITUtilStructures.assertRead("?type=SYSTEMGROUP&who=%asdf%", 0); @@ -1480,22 +868,22 @@ class StructuresSystemGroupIT { // use with care // PARENT - not for SYSTEMGROUP // WHEN - different for requested/processed - response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AF_&orderBy=UUID&isAsc=true"); - response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AF_&orderBy=UUID&isAsc=false"); + response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AE_&orderBy=UUID&isAsc=true"); + response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AE_&orderBy=UUID&isAsc=false"); assertTrue(response.getList().size() > 0); assertEquals(response.getList().size(), response2.getList().size()); assertEquals(response.getList().get(0).getUuid(), response2.getList().get(response2.getList().size()-1).getUuid()); assertEquals(response2.getList().get(0).getUuid(), response.getList().get(response.getList().size()-1).getUuid()); - response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AF_&orderBy=PARENT&isAsc=true"); - response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AF_&orderBy=PARENT&isAsc=false"); + response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AE_&orderBy=PARENT&isAsc=true"); + response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AE_&orderBy=PARENT&isAsc=false"); assertTrue(response.getList().size() > 0); assertEquals(response.getList().size(), response2.getList().size()); assertEquals(response.getList().get(0).getUuid(), response2.getList().get(response2.getList().size()-1).getUuid()); assertEquals(response2.getList().get(0).getUuid(), response.getList().get(response.getList().size()-1).getUuid()); - response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AF_&orderBy=MNEMONIC&isAsc=true"); - response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AF_&orderBy=MNEMONIC&isAsc=false"); + response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AE_&orderBy=MNEMONIC&isAsc=true"); + response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AE_&orderBy=MNEMONIC&isAsc=false"); assertTrue(response.getList().size() > 0); assertEquals(response.getList().size(), response2.getList().size()); assertEquals(response.getList().get(0).getMnemonic(), response2.getList().get(response2.getList().size()-1).getMnemonic()); @@ -1507,18 +895,18 @@ class StructuresSystemGroupIT { assertEquals(response.getList().size(), response2.getList().size()); assertEquals(1, response.getList().get(0).getOrdering()); assertTrue(response.getList().get(0).getMnemonic().startsWith("AA")); - assertEquals(8, response2.getList().get(0).getOrdering()); - assertTrue(response2.getList().get(0).getMnemonic().startsWith("AH")); + assertEquals(6, response2.getList().get(0).getOrdering()); + assertTrue(response2.getList().get(0).getMnemonic().startsWith("AF")); - response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AF_&orderBy=DESCRIPTION&isAsc=true"); - response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AF_&orderBy=DESCRIPTION&isAsc=false"); + response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AE_&orderBy=DESCRIPTION&isAsc=true"); + response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AE_&orderBy=DESCRIPTION&isAsc=false"); assertTrue(response.getList().size() > 0); assertEquals(response.getList().size(), response2.getList().size()); assertEquals(response.getList().get(0).getDescription(), response2.getList().get(response2.getList().size()-1).getDescription()); assertEquals(response2.getList().get(0).getDescription(), response.getList().get(response.getList().size()-1).getDescription()); - response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AF_&orderBy=WHEN&isAsc=true"); - response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AF_&orderBy=WHEN&isAsc=false"); + response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AE_&orderBy=WHEN&isAsc=true"); + response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=AE_&orderBy=WHEN&isAsc=false"); String value0 = response.getList().get(0).getWhen() != null ? response.getList().get(0).getWhen().toString() : null; String value1 = response.getList().get(1).getWhen() != null ? response.getList().get(1).getWhen().toString() : null; String value2 = response2.getList().get(response2.getList().size()-2).getWhen() != null ? response2.getList().get(response2.getList().size()-2).getWhen().toString() : null; @@ -1531,27 +919,27 @@ class StructuresSystemGroupIT { || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1))); // pagination - ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=0&pageSize=100", 50); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=0&pageSize=100", 30); ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=1&pageSize=100", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=0&pageSize=50", 50); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=1&pageSize=50", 0); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=0&pageSize=20", 20); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=1&pageSize=20", 20); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=2&pageSize=20", 10); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=3&pageSize=20", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=0&pageSize=30", 30); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=1&pageSize=30", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&page=3&pageSize=12", 0); // pagination - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=15", 15); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=15", 15); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=15", 10); - ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=15", 0); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructures.assertRead("?type=SYSTEMGROUP&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12", 0); // order by, pagination - response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20", 20); - response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20", 10); + response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=12", 12); + response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=12", 6); assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); - response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20", 20); - response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20", 10); + response = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=12", 12); + response2 = ITUtilStructures.assertRead("?type=SYSTEMGROUP&mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=12", 6); assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); // uuid @@ -1569,29 +957,29 @@ class StructuresSystemGroupIT { // mnemonic // ?mnemonic={mnemonic} ITUtilStructures.assertRead("?mnemonic=A", 0); - ITUtilStructures.assertRead("?mnemonic=A__", 15, -1); - ITUtilStructures.assertRead("?mnemonic=AG_", 10); - ITUtilStructures.assertRead("?mnemonic=AG1", 2); + ITUtilStructures.assertRead("?mnemonic=A__", 30, -1); + ITUtilStructures.assertRead("?mnemonic=AE_", 5); + ITUtilStructures.assertRead("?mnemonic=AE1", 1); ITUtilStructures.assertRead("?mnemonic=A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonic=A__&statuses=APPROVED&deleted=false", 15, -1); - ITUtilStructures.assertRead("?mnemonic=AG_&statuses=APPROVED&deleted=false", 5); - ITUtilStructures.assertRead("?mnemonic=AG1&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=AE_&statuses=APPROVED&deleted=false", 5); + ITUtilStructures.assertRead("?mnemonic=AE1&statuses=APPROVED&deleted=false", 1); // mnemonic path // ?mnemonicPath={mnemonicPath} ITUtilStructures.assertRead("?mnemonicPath=A", 0); ITUtilStructures.assertRead("?mnemonicPath=A__", 15, -1); - ITUtilStructures.assertRead("?mnemonicPath=AG_", 10); - ITUtilStructures.assertRead("?mnemonicPath=AG1", 2); + ITUtilStructures.assertRead("?mnemonicPath=AE_", 5); + ITUtilStructures.assertRead("?mnemonicPath=AE1", 1); ITUtilStructures.assertRead("?mnemonicPath=A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=A__&statuses=APPROVED&deleted=false", 15, -1); - ITUtilStructures.assertRead("?mnemonicPath=AG_&statuses=APPROVED&deleted=false", 5); - ITUtilStructures.assertRead("?mnemonicPath=AG1&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonicPath=AE_&statuses=APPROVED&deleted=false", 5); + ITUtilStructures.assertRead("?mnemonicPath=AE1&statuses=APPROVED&deleted=false", 1); // history // /history/{uuid} - ITUtilStructures.assertHistory("/" + uuid.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 9); + ITUtilStructures.assertHistory("/" + uuid.toString(), 1); + ITUtilStructures.assertHistory("/" + uuid2.toString(), 5); ITUtilStructures.assertHistory("/" + uuidRandom.toString(), 0, HttpURLConnection.HTTP_NOT_FOUND); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AA1", Boolean.TRUE); @@ -1599,11 +987,11 @@ class StructuresSystemGroupIT { ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AA3", Boolean.TRUE); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AA4", Boolean.TRUE); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AA5", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AB1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AB2", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AB3", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AB4", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AB5", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AB1", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AB2", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AB3", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AB4", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AB5", Boolean.TRUE); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AC1", Boolean.FALSE); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AC2", Boolean.FALSE); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AC3", Boolean.FALSE); @@ -1624,16 +1012,16 @@ class StructuresSystemGroupIT { ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AF3", Boolean.FALSE); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AF4", Boolean.FALSE); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AF5", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AG1", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AG2", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AG3", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AG4", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AG5", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AH1", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AH2", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AH3", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AH4", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AH5", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AG1", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AG2", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AG3", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AG4", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AG5", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AH1", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AH2", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AH3", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AH4", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEMGROUP, "AH5", Boolean.FALSE); } } diff --git a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java index 055da053..2c14fedf 100644 --- a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java +++ b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java @@ -78,13 +78,13 @@ class StructuresSystemIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Sg", null, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemGroupUuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemGroupUuid = structureElements[0].getUuid(); // check content ITUtilStructures.assertRead("", 1); @@ -271,158 +271,39 @@ class StructuresSystemIT { } @Test - void createApprove() { - // test create and approve system - // - // note - // create in order to approve - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.SYSTEM, systemGroupUuid, "Ca", null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.SYSTEM, "Ca", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "Ca", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - ITUtilStructures.assertExists(Type.SYSTEM, "Ca", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "Ca", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.SYSTEM, "Ca", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "Ca", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(createdStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void createCancel() { - // test create and cancel system - // - // note - // create in order to cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.SYSTEM, systemGroupUuid, "Cc", null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.SYSTEM, "Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.SYSTEM, "Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.SYSTEM, "Cc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "Cc", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void createReject() { - // test create and reject system - // - // note - // create in order to reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; - - structureElementCommand = new StructureElementCommand(null, Type.SYSTEM, systemGroupUuid, "Cr", null, "description"); - - structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); - structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); - - ITUtilStructures.assertExists(Type.SYSTEM, "Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - UUID uuid = structureElementCommandConfirm.getUuid(); - - ITUtilStructures.assertExists(Type.SYSTEM, "Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - structureElementCommandConfirm.setUuid(uuid); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - - ITUtilStructures.assertExists(Type.SYSTEM, "Cr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "Cr", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(uuid); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } + void create() { + // test create system + + StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; + StructureElementCommandConfirm structureElementCommandConfirm = null; + StructureElementCommand structureElementCommand = null; + StructureElement structureElement = null; + + structureElementCommand = new StructureElementCommand(null, Type.SYSTEM, systemGroupUuid, "Ca", null, "description"); + + structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); + structureElementCommandUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommand); + structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); + + ITUtilStructures.assertExists(Type.SYSTEM, "Ca", Boolean.FALSE); + ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "Ca", Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); + + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + + ITUtilStructures.assertExists(Type.SYSTEM, "Ca", Boolean.TRUE); + ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "Ca", Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); + ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); + } @Test void checkUpdate() { @@ -430,7 +311,7 @@ class StructuresSystemIT { // not update // // note - // create, approve in order to update + // create in order to update // // validate update // uuid @@ -442,15 +323,15 @@ class StructuresSystemIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; UUID uuid = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Cu", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - uuid = approvedStructureElement.getUuid(); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid = structureElement.getUuid(); // validate update @@ -504,132 +385,36 @@ class StructuresSystemIT { } @Test - void updateApprove() { - // test update and approve system + void update() { + // test update system // // note - // create, approve in order to update, approve + // create in order to update StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Ua", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // update - ITUtilStructures.assertUpdate(structureElementCommandUpdate); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void updateCancel() { - // test update and cancel system - // - // note - // create, approve in order to update, cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Uc", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // update - ITUtilStructures.assertUpdate(structureElementCommandUpdate); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void updateReject() { - // test update and reject system - // - // note - // create, approve in order to update, reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Ur", null, "description"); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); + structureElementCommandUpdate.setDescription("description update check"); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); // update ITUtilStructures.assertUpdate(structureElementCommandUpdate); - ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); - ITUtilStructures.assertUpdate(structureElementCommandUpdate, HttpURLConnection.HTTP_CONFLICT); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); } @Test @@ -638,7 +423,7 @@ class StructuresSystemIT { // not delete // // note - // create, approve in order to delete + // create in order to delete // // validate delete // uuid @@ -646,15 +431,15 @@ class StructuresSystemIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; UUID uuid = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Cd", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - uuid = approvedStructureElement.getUuid(); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + uuid = structureElement.getUuid(); // validate delete @@ -684,131 +469,40 @@ class StructuresSystemIT { } @Test - void deleteApprove() { - // test delete and approve system + void delete() { + // test delete system // // note - // create, approve in order to delete, approve + // create in order to delete, approve StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; + StructureElement structureElement = null; structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Da", null, "description"); - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - // delete - ITUtilStructures.assertDelete(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void deleteCancel() { - // test delete and cancel system - // - // note - // create, approve in order to delete, cancel - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Dc", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - // delete - ITUtilStructures.assertDelete(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // cancel - ITUtilStructures.assertCancel(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertCancel(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertCancel(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - } - - @Test - void deleteReject() { - // test delete and reject system - // - // note - // create, approve in order to delete, reject - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement approvedStructureElement = null; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Dr", null, "description"); - - // create, approve - approvedStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); // delete ITUtilStructures.assertDelete(structureElementCommandConfirm); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE); ITUtilStructures.assertDelete(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); - - // reject - ITUtilStructures.assertReject(structureElementCommandConfirm); - - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertReject(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(approvedStructureElement.getUuid()); - ITUtilStructures.assertReject(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); } @Test - void readSearchHistoryApprove() { - // test read system in various ways for create, approve + void readSearchHistoryStatus() { + // test read system in various ways for create // search // latest // history @@ -817,347 +511,75 @@ class StructuresSystemIT { // create (and more) to read (with content) StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement approvedStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Rsha", 41, "description"); + StructureElement structureElement = null; + int count = 0; - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); + structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Rshs", 41, "description"); // read (1) - length = ITUtilStructures.assertRead("?type=SYSTEM", 1, -1).getListSize(); + count = ITUtilStructures.assertRead("?type=SYSTEM").getListSize(); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING", 1, -1); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING", 0, -1); ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED", 0, -1); ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED", 0, -1); ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED&mnemonic=Rsha", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED&mnemonic=Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Sg", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?mnemonic=Sg-Rsha", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?mnemonic=Sg-Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Rsha&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Sg-Rshs&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Rsha", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sg-Rshs", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Rsha&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); + ITUtilStructures.assertRead("?mnemonicPath=Rshs&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sg-Rshs&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertExists(Type.SYSTEM, "Rsha", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-Rsha", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "Rshs", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "Sg-Rshs", Boolean.FALSE); - // approve - approvedStructureElement = ITUtilStructures.assertApprove(structureElementCommandConfirm); + // create + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=SYSTEM", 1, -1).getListSize()); + assertEquals(count + 1, ITUtilStructures.assertRead("?type=SYSTEM", 1, -1).getListSize()); ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING", 0, -1); ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED", 1, -1); ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED", 0, -1); ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED&mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED&mnemonic=Rsha", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED&mnemonic=Rsha", 0); - - ITUtilStructures.assertFind("/" + approvedStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Sg", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha", 1); - ITUtilStructures.assertRead("?mnemonic=Sg-Rsha", 0); - ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rsha&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Sg-Rsha&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Sg", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha", 1); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Rsha", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rsha&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Rsha&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + approvedStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.SYSTEM, "Rsha", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-Rsha", Boolean.FALSE); - } - - @Test - void readSearchHistoryCancel() { - // test read system in various ways for create, cancel - // search - // latest - // history - // - // note - // create (and more) to read (with content) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement cancelledStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Rshc", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - // read (1) - length = ITUtilStructures.assertRead("?type=SYSTEM", 1, -1).getListSize(); - - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING", 1, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&mnemonic=Rshc", 1, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED&mnemonic=Rshc", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Sg", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?mnemonic=Sg-Rshc", 0); - ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Sg", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); - - ITUtilStructures.assertExists(Type.SYSTEM, "Rshc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-Rshc", Boolean.FALSE); - - // cancel - cancelledStructureElement = ITUtilStructures.assertCancel(structureElementCommandConfirm); - - // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=SYSTEM", 1, -1).getListSize()); - - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED", 1, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED&mnemonic=Rshc", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED&mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED&mnemonic=Rshc", 0); - - ITUtilStructures.assertFind("/" + cancelledStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Sg", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc", 1); - ITUtilStructures.assertRead("?mnemonic=Sg-Rshc", 0); - ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Sg", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Rshc", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshc&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Rshc&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + cancelledStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.SYSTEM, "Rshc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-Rshc", Boolean.FALSE); - } - - @Test - void readSearchHistoryReject() { - // test read system in various ways for create, reject - // search - // latest - // history - // - // note - // create (and more) to read (with content) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElementCommandConfirm structureElementCommandConfirm = null; - StructureElement createdStructureElement = null; - StructureElement rejectedStructureElement = null; - int length = 0; - - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Rshr", 41, "description"); - - // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - // read (1) - length = ITUtilStructures.assertRead("?type=SYSTEM", 1, -1).getListSize(); - - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING", 1, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED&mnemonic=Rshr", 0); - - ITUtilStructures.assertFind("/" + createdStructureElement.getUuid().toString()); - - ITUtilStructures.assertRead("?mnemonic=Sg", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?mnemonic=Sg-Rshr", 0); - ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertRead("?mnemonicPath=Sg", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + createdStructureElement.getUuid().toString(), 1); - - ITUtilStructures.assertExists(Type.SYSTEM, "Rshr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-Rshr", Boolean.FALSE); - - // reject - rejectedStructureElement = ITUtilStructures.assertReject(structureElementCommandConfirm); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED&mnemonic=Rshs", 1); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED&mnemonic=Rshs", 0); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED&mnemonic=Rshs", 0); - // read (2) - assertEquals(length, ITUtilStructures.assertRead("?type=SYSTEM", 1, -1).getListSize()); - - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED", 1, -1); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED&mnemonic=Rshr", 0); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED&mnemonic=Rshr", 1); - - ITUtilStructures.assertFind("/" + rejectedStructureElement.getUuid().toString()); + ITUtilStructures.assertFind("/" + structureElement.getUuid().toString()); ITUtilStructures.assertRead("?mnemonic=Sg", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr", 1); - ITUtilStructures.assertRead("?mnemonic=Sg-Rshr", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs", 1); + ITUtilStructures.assertRead("?mnemonic=Sg-Rshs", 0); ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=Sg-Rshr&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonic=Rshs&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=Sg-Rshs&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Rshr", 0); + ITUtilStructures.assertRead("?mnemonicPath=Rshs", 1); + ITUtilStructures.assertRead("?mnemonicPath=Sg-Rshs", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonicPath=Rshr&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-Rshr&statuses=APPROVED&deleted=false", 0); - - ITUtilStructures.assertHistory("/" + rejectedStructureElement.getUuid().toString(), 2); - - ITUtilStructures.assertExists(Type.SYSTEM, "Rshr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-Rshr", Boolean.FALSE); - } - - @Test - void readSearchHistoryStatusLatest1() { - // test read system in various ways - // status - // latest - // ( deleted ) - // history - // - // note - // entries with different statuses - // - // create (and more) to read (with content) - // 4 different lines of uuid with combinations of status and latest - // 1 entry for each line of uuid - // in particular different statuses for last entry in lines of uuid - // mnemonic - P, C, R, A (pending, cancelled, rejected, approved) - // - // exclude content (with latest) before latest - // exclude content (with latest) after latest (cancelled, rejected) - // keep most recent content (without latest) (to have most recent in line of uuid without latest) - - StructureElementCommandCreate structureElementCommandCreate = null; - StructureElement createdStructureElement = null; - UUID uuid, uuid2, uuid3, uuid4 = null; + ITUtilStructures.assertRead("?mnemonicPath=Rshs&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonicPath=Sg-Rshs&statuses=APPROVED&deleted=false", 0); - // a number of entries for which the last entry has status PENDING - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "P1", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - uuid = createdStructureElement.getUuid(); + ITUtilStructures.assertHistory("/" + structureElement.getUuid().toString(), 1); - // a number of entries for which the last entry has status CANCELLED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "C1", 2, "description"); - createdStructureElement = ITUtilStructures.assertCreateCancel(structureElementCommandCreate); - uuid2 = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status REJECTED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "R1", 3, "description"); - createdStructureElement = ITUtilStructures.assertCreateReject(structureElementCommandCreate); - uuid3 = createdStructureElement.getUuid(); - - // a number of entries for which the last entry has status APPROVED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "A1", 4, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - uuid4 = createdStructureElement.getUuid(); - - // ---------------------------------------------------------------------------------------------------- - // from first structure element - assertNotNull(uuid); - - ITUtilStructures.assertFind("/" + uuid.toString()); - ITUtilStructures.assertFind("/" + uuid2.toString()); - ITUtilStructures.assertFind("/" + uuid3.toString()); - ITUtilStructures.assertFind("/" + uuid4.toString()); - - ITUtilStructures.assertRead("?mnemonic=P1", 1); - ITUtilStructures.assertRead("?mnemonic=C1", 1); - ITUtilStructures.assertRead("?mnemonic=R1", 1); - ITUtilStructures.assertRead("?mnemonic=A1", 1); - ITUtilStructures.assertRead("?mnemonic=P1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=C1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=R1&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonic=A1&statuses=APPROVED&deleted=false", 1); - - ITUtilStructures.assertHistory("/" + uuid.toString(), 1); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid3.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid4.toString(), 2); - - ITUtilStructures.assertExists(Type.SYSTEM, "P1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "C1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "R1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "A1", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-P1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-C1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-R1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-A1", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "Rshs", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEM, "Sg-Rshs", Boolean.FALSE); } @Test @@ -1172,10 +594,9 @@ class StructuresSystemIT { // entries with different statuses // // create (and more) to read (with content) - // 4 different lines of uuid with combinations of status and latest + // 2 different lines of uuid with combinations of status and latest // 9 entries for each line of uuid - // in particular different statuses for last entry in lines of uuid - // mnemonic - P, C, R, A (pending, cancelled, rejected, approved) + // mnemonic - Ab, A9 // // exclude content (with latest) before latest // exclude content (with latest) after latest (cancelled, rejected) @@ -1183,100 +604,54 @@ class StructuresSystemIT { StructureElementCommandCreate structureElementCommandCreate = null; StructureElementCommandUpdate structureElementCommandUpdate = null; - StructureElement createdStructureElement = null; - UUID uuid, uuid2, uuid3, uuid4 = null; + StructureElement structureElement = null; + UUID uuid, uuid2 = null; // a number of entries for which the last entry has status PENDING - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "P9", null, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); + structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Ab", null, "description mnemonic Ab"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid = structureElement.getUuid(); + + structureElementCommandUpdate.setDescription("description mnemonic Ab 2"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 3"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 4"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 5"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 6"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 7"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 8"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic Ab 9"); ITUtilStructures.assertUpdate(structureElementCommandUpdate); // a number of entries for which the last entry has status CANCELLED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "C9", 2, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid2 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - - // a number of entries for which the last entry has status REJECTED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "R9", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid3 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - - // a number of entries for which the last entry has status APPROVED - structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "A9", 1, "description"); - createdStructureElement = ITUtilStructures.assertCreateApprove(structureElementCommandCreate); - structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElement); - uuid4 = createdStructureElement.getUuid(); - - structureElementCommandUpdate.setDescription("description 2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 3"); - ITUtilStructures.assertUpdateCancel(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 4"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 5"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 6"); - ITUtilStructures.assertUpdateReject(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 7"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 8"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); - structureElementCommandUpdate.setDescription("description 9"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "A9", 2, "description mnemonic A9"); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + uuid2 = structureElement.getUuid(); + + structureElementCommandUpdate.setDescription("description mnemonic A9 2"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 3"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 4"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 5"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 6"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 7"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 8"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); + structureElementCommandUpdate.setDescription("description mnemonic A9 9"); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); // ---------------------------------------------------------------------------------------------------- // from first structure element @@ -1284,30 +659,18 @@ class StructuresSystemIT { ITUtilStructures.assertFind("/" + uuid.toString()); ITUtilStructures.assertFind("/" + uuid2.toString()); - ITUtilStructures.assertFind("/" + uuid3.toString()); - ITUtilStructures.assertFind("/" + uuid4.toString()); - ITUtilStructures.assertRead("?mnemonic=P9", 2); - ITUtilStructures.assertRead("?mnemonic=C9", 1); - ITUtilStructures.assertRead("?mnemonic=R9", 1); + ITUtilStructures.assertRead("?mnemonic=Ab", 1); ITUtilStructures.assertRead("?mnemonic=A9", 1); - ITUtilStructures.assertRead("?mnemonic=P9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=C9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertRead("?mnemonic=R9&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=Ab&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonic=A9&statuses=APPROVED&deleted=false", 1); - ITUtilStructures.assertHistory("/" + uuid.toString(), 17); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 18); - ITUtilStructures.assertHistory("/" + uuid3.toString(), 18); - ITUtilStructures.assertHistory("/" + uuid4.toString(), 18); + ITUtilStructures.assertHistory("/" + uuid.toString(), 9); + ITUtilStructures.assertHistory("/" + uuid2.toString(), 9); - ITUtilStructures.assertExists(Type.SYSTEM, "P9", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "C9", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "R9", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEM, "Ab", Boolean.TRUE); ITUtilStructures.assertExists(Type.SYSTEM, "A9", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-P9", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-C9", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "Sg-R9", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "Sg-Ab", Boolean.FALSE); ITUtilStructures.assertExists(Type.SYSTEM, "Sg-A9", Boolean.FALSE); } @@ -1333,14 +696,18 @@ class StructuresSystemIT { StructureElementCommandCreate[] structureElementCommandsCreate = null; StructureElementCommandUpdate[] structureElementCommandsUpdate = null; StructureElementCommandConfirm[] structureElementCommandsConfirm = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; ResponsePageStructureElements response, response2 = null; UUID uuid = null; UUID uuid2 = null; UUID uuidRandom = UUID.randomUUID(); - // create + approve + String description2 = "some other description"; + String description3 = "more description"; + String description4 = "yet another description"; + + // create structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AA1", 1, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AA2", 1, "description"), @@ -1348,20 +715,27 @@ class StructuresSystemIT { new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AA4", 1, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AA5", 1, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - uuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + uuid = structureElements[0].getUuid(); - // create + cancel + // create + // update structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AB1", 2, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AB2", 2, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AB3", 2, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AB4", 2, "description"), - new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AB5", 2, "description") + new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AB5", 2, "description"), }; - ITUtilStructures.assertCreateCancel(structureElementCommandsCreate); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description2); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - // create + reject + // create + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AC1", 3, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AC2", 3, "description"), @@ -1369,9 +743,13 @@ class StructuresSystemIT { new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AC4", 3, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AC5", 3, "description") }; - ITUtilStructures.assertCreateReject(structureElementCommandsCreate); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); + ITUtilStructures.assertDelete(structureElementCommandsConfirm); // create + // update + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AD1", 4, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AD2", 4, "description"), @@ -1379,15 +757,19 @@ class StructuresSystemIT { new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AD4", 4, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AD5", 4, "description") }; - ITUtilStructures.assertCreate(structureElementCommandsCreate); - - String description2 = "some other description"; - String description3 = "more description"; + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description2); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); + ITUtilStructures.assertDelete(structureElementCommandsConfirm); - // create + approve - // update + approve - // update + approve - // delete + reject + // create + // update + // update + // update structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AE1", 5, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AE2", 5, "description"), @@ -1395,79 +777,56 @@ class StructuresSystemIT { new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AE4", 5, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AE5", 5, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description2); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description3); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteReject(structureElementCommandsConfirm); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description4); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - // create + approve - // delete + approve + // create + // update + // update + // update + // delete structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AF1", 6, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AF2", 6, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AF3", 6, "description"), new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AF4", 6, "description"), - new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AF5", 6, "description") - }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteApprove(structureElementCommandsConfirm); - - // create + approve - // delete - structureElementCommandsCreate = new StructureElementCommandCreate[] { - new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AG1", 7, "description"), - new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AG2", 7, "description"), - new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AG3", 7, "description"), - new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AG4", 7, "description"), - new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AG5", 7, "description") + new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AF5", 6, "description"), }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDelete(structureElementCommandsConfirm); - - // 60 system entries - - // create + approve - // update + approve - // update + approve - // delete + reject - // delete - structureElementCommandsCreate = new StructureElementCommandCreate[] { - new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AH1", 8, "description"), - new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AH2", 8, "description"), - new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AH3", 8, "description"), - new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AH4", 8, "description"), - new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "AH5", 8, "description") - }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - uuid2 = approvedStructureElements[0].getUuid(); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + uuid2 = structureElements[0].getUuid(); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description2); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { structureElementCommandUpdate.setDescription(description3); } - approvedStructureElements = ITUtilStructures.assertUpdateApprove(structureElementCommandsUpdate); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - ITUtilStructures.assertDeleteReject(structureElementCommandsConfirm); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + for (StructureElementCommandUpdate structureElementCommandUpdate : structureElementCommandsUpdate) { + structureElementCommandUpdate.setDescription(description4); + } + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); ITUtilStructures.assertDelete(structureElementCommandsConfirm); - // 85 system entries + // 85 system group entries // ---------------------------------------------------------------------------------------------------- // from first structure element @@ -1487,48 +846,48 @@ class StructuresSystemIT { // content for field in first and last items - always possible // first and last items - not always possible - ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__", 50); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&mnemonic=A__", 15); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED&mnemonic=A__", 25); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 40); + ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__", 30); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=APPROVED&mnemonic=A__", 30); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=CANCELLED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=REJECTED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 30); - ITUtilStructures.assertRead("?type=SYSTEM&deleted=false&mnemonic=A__", 35); - ITUtilStructures.assertRead("?type=SYSTEM&deleted=false&statuses=PENDING&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SYSTEM&deleted=false&statuses=APPROVED&mnemonic=A__", 20); - ITUtilStructures.assertRead("?type=SYSTEM&deleted=false&statuses=CANCELLED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SYSTEM&deleted=false&statuses=REJECTED&mnemonic=A__", 5); - ITUtilStructures.assertRead("?type=SYSTEM&deleted=false&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 25); + ITUtilStructures.assertRead("?type=SYSTEM&deleted=false&mnemonic=A__", 15); + ITUtilStructures.assertRead("?type=SYSTEM&deleted=false&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEM&deleted=false&statuses=APPROVED&mnemonic=A__", 15); + ITUtilStructures.assertRead("?type=SYSTEM&deleted=false&statuses=CANCELLED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEM&deleted=false&statuses=REJECTED&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEM&deleted=false&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 15); ITUtilStructures.assertRead("?type=SYSTEM&deleted=true&mnemonic=A__", 15); - ITUtilStructures.assertRead("?type=SYSTEM&deleted=true&statuses=PENDING&mnemonic=A__", 10); - ITUtilStructures.assertRead("?type=SYSTEM&deleted=true&statuses=APPROVED&mnemonic=A__", 5); + ITUtilStructures.assertRead("?type=SYSTEM&deleted=true&statuses=PENDING&mnemonic=A__", 0); + ITUtilStructures.assertRead("?type=SYSTEM&deleted=true&statuses=APPROVED&mnemonic=A__", 15); ITUtilStructures.assertRead("?type=SYSTEM&deleted=true&statuses=CANCELLED&mnemonic=A__", 0); ITUtilStructures.assertRead("?type=SYSTEM&deleted=true&statuses=REJECTED&mnemonic=A__", 0); ITUtilStructures.assertRead("?type=SYSTEM&deleted=true&statuses=PENDING&statuses=APPROVED&mnemonic=A__", 15); - ITUtilStructures.assertRead("?type=SYSTEM&parent=" + systemGroupUuid.toString(), 45, -1); + ITUtilStructures.assertRead("?type=SYSTEM&parent=" + systemGroupUuid.toString(), 30, -1); ITUtilStructures.assertRead("?type=SYSTEM&parent=" + uuid.toString(), 0); ITUtilStructures.assertRead("?type=SYSTEM&parent=" + uuid2.toString(), 0); - ITUtilStructures.assertRead("?type=SYSTEM&mnemonicPath=A__", 35); + ITUtilStructures.assertRead("?type=SYSTEM&mnemonicPath=A__", 30); ITUtilStructures.assertRead("?type=SYSTEM&description=desc", 0); - ITUtilStructures.assertRead("?type=SYSTEM&description=desc%", 35, -1); + ITUtilStructures.assertRead("?type=SYSTEM&description=desc%", 10, -1); ITUtilStructures.assertRead("?type=SYSTEM&description=sc", 0); ITUtilStructures.assertRead("?type=SYSTEM&description=sc%", 0); ITUtilStructures.assertRead("?type=SYSTEM&description=%sc", 0); - ITUtilStructures.assertRead("?type=SYSTEM&description=%sc%", 45, -1); - ITUtilStructures.assertRead("?type=SYSTEM&description=description", 35, -1); + ITUtilStructures.assertRead("?type=SYSTEM&description=%sc%", 30, -1); + ITUtilStructures.assertRead("?type=SYSTEM&description=description", 10, -1); - ITUtilStructures.assertRead("?type=SYSTEM&who=test who", 45, -1); + ITUtilStructures.assertRead("?type=SYSTEM&who=test who", 30, -1); ITUtilStructures.assertRead("?type=SYSTEM&who=test", 0); ITUtilStructures.assertRead("?type=SYSTEM&who=who", 0); - ITUtilStructures.assertRead("?type=SYSTEM&who=test%", 45, -1); - ITUtilStructures.assertRead("?type=SYSTEM&who=%who", 45, -1); - ITUtilStructures.assertRead("?type=SYSTEM&who=%est%", 45, -1); - ITUtilStructures.assertRead("?type=SYSTEM&who=%wh%", 45, -1); + ITUtilStructures.assertRead("?type=SYSTEM&who=test%", 30, -1); + ITUtilStructures.assertRead("?type=SYSTEM&who=%who", 30, -1); + ITUtilStructures.assertRead("?type=SYSTEM&who=%est%", 30, -1); + ITUtilStructures.assertRead("?type=SYSTEM&who=%wh%", 30, -1); ITUtilStructures.assertRead("?type=SYSTEM&who=wh%", 0); ITUtilStructures.assertRead("?type=SYSTEM&who=asdf", 0); ITUtilStructures.assertRead("?type=SYSTEM&who=%asdf%", 0); @@ -1566,8 +925,8 @@ class StructuresSystemIT { assertEquals(response.getList().size(), response2.getList().size()); assertEquals(1, response.getList().get(0).getOrdering()); assertTrue(response.getList().get(0).getMnemonic().startsWith("AA")); - assertEquals(8, response2.getList().get(0).getOrdering()); - assertTrue(response2.getList().get(0).getMnemonic().startsWith("AH")); + assertEquals(6, response2.getList().get(0).getOrdering()); + assertTrue(response2.getList().get(0).getMnemonic().startsWith("AF")); response = ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=AF_&orderBy=DESCRIPTION&isAsc=true"); response2 = ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=AF_&orderBy=DESCRIPTION&isAsc=false"); @@ -1590,27 +949,27 @@ class StructuresSystemIT { || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1))); // pagination - ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=0&pageSize=100", 50); + ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=0&pageSize=100", 30); ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=1&pageSize=100", 0); - ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=0&pageSize=50", 50); - ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=1&pageSize=50", 0); - ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=0&pageSize=20", 20); - ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=1&pageSize=20", 20); - ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=2&pageSize=20", 10); - ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=3&pageSize=20", 0); + ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=0&pageSize=30", 30); + ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=1&pageSize=30", 0); + ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&page=3&pageSize=12", 0); // pagination - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=15", 15); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=15", 15); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=15", 10); - ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=15", 0); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12", 12); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12", 12); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12", 6); + ITUtilStructures.assertRead("?type=SYSTEM&statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12", 0); // order by, pagination - response = ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20", 20); - response2 = ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20", 10); + response = ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=12", 12); + response2 = ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=12", 6); assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); - response = ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20", 20); - response2 = ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20", 10); + response = ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=12", 12); + response2 = ITUtilStructures.assertRead("?type=SYSTEM&mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=12", 6); assertEquals(response.getList().get(0).getWhen(), response2.getList().get(response2.getList().size()-1).getWhen()); // uuid @@ -1628,10 +987,10 @@ class StructuresSystemIT { ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString(), 15, -1); ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=APPROVED", 15, -1); ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=ARCHIVED", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); - ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=CANCELLED", 0, -1); - ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=PENDING", 0, -1); - ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=REJECTED", 0, -1); - ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=CANCELLED,PENDING", 0, -1); + ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=CANCELLED", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=PENDING", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=REJECTED", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); + ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=CANCELLED,PENDING", 0, -1, HttpURLConnection.HTTP_NOT_FOUND); ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=APPROVED,PENDING", 15, -1); ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=APPROVED&deleted=false", 9, -1); ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString() + "?statuses=APPROVED&deleted=true", 5, -1); @@ -1639,42 +998,42 @@ class StructuresSystemIT { // mnemonic // ?mnemonic={mnemonic} ITUtilStructures.assertRead("?mnemonic=A", 0); - ITUtilStructures.assertRead("?mnemonic=A__", 45, -1); - ITUtilStructures.assertRead("?mnemonic=AG_", 10); - ITUtilStructures.assertRead("?mnemonic=AG1", 2); + ITUtilStructures.assertRead("?mnemonic=A__", 30, -1); + ITUtilStructures.assertRead("?mnemonic=AE_", 5); + ITUtilStructures.assertRead("?mnemonic=AE1", 1); ITUtilStructures.assertRead("?mnemonic=Sg", 1); ITUtilStructures.assertRead("?mnemonic=A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonic=A__&statuses=APPROVED&deleted=false", 15, -1); - ITUtilStructures.assertRead("?mnemonic=AG_&statuses=APPROVED&deleted=false", 5); - ITUtilStructures.assertRead("?mnemonic=AG1&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonic=AE_&statuses=APPROVED&deleted=false", 5); + ITUtilStructures.assertRead("?mnemonic=AE1&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonic=Sg&statuses=APPROVED&deleted=false", 1); // mnemonic path // ?mnemonicPath={mnemonicPath} ITUtilStructures.assertRead("?mnemonicPath=A", 0); ITUtilStructures.assertRead("?mnemonicPath=A__", 30, -1); - ITUtilStructures.assertRead("?mnemonicPath=AG_", 10); - ITUtilStructures.assertRead("?mnemonicPath=AG1", 2); + ITUtilStructures.assertRead("?mnemonicPath=AE_", 5); + ITUtilStructures.assertRead("?mnemonicPath=AE1", 1); ITUtilStructures.assertRead("?mnemonicPath=Sg-A%", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-A", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-A__", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-AG_", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-AG1", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sg-AE_", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sg-AE1", 0); ITUtilStructures.assertRead("?mnemonicPath=A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=A__&statuses=APPROVED&deleted=false", 15, -1); - ITUtilStructures.assertRead("?mnemonicPath=AG_&statuses=APPROVED&deleted=false", 5); - ITUtilStructures.assertRead("?mnemonicPath=AG1&statuses=APPROVED&deleted=false", 1); + ITUtilStructures.assertRead("?mnemonicPath=AE_&statuses=APPROVED&deleted=false", 5); + ITUtilStructures.assertRead("?mnemonicPath=AE1&statuses=APPROVED&deleted=false", 1); ITUtilStructures.assertRead("?mnemonicPath=Sg-A%&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-A&statuses=APPROVED&deleted=false", 0); ITUtilStructures.assertRead("?mnemonicPath=Sg-A__&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-AG_&statuses=APPROVED&deleted=false", 0); - ITUtilStructures.assertRead("?mnemonicPath=Sg-AG1&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sg-AE_&statuses=APPROVED&deleted=false", 0); + ITUtilStructures.assertRead("?mnemonicPath=Sg-AE1&statuses=APPROVED&deleted=false", 0); // history // /history/{uuid} - ITUtilStructures.assertHistory("/" + uuid.toString(), 2); - ITUtilStructures.assertHistory("/" + uuid2.toString(), 9); - ITUtilStructures.assertHistory("/" + systemGroupUuid.toString(), 2); + ITUtilStructures.assertHistory("/" + uuid.toString(), 1); + ITUtilStructures.assertHistory("/" + uuid2.toString(), 5); + ITUtilStructures.assertHistory("/" + systemGroupUuid.toString(), 1); ITUtilStructures.assertHistory("/" + uuidRandom.toString(), 0, HttpURLConnection.HTTP_NOT_FOUND); ITUtilStructures.assertExists(Type.SYSTEM, "AA1", Boolean.TRUE); @@ -1682,11 +1041,11 @@ class StructuresSystemIT { ITUtilStructures.assertExists(Type.SYSTEM, "AA3", Boolean.TRUE); ITUtilStructures.assertExists(Type.SYSTEM, "AA4", Boolean.TRUE); ITUtilStructures.assertExists(Type.SYSTEM, "AA5", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "AB1", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "AB2", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "AB3", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "AB4", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "AB5", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "AB1", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEM, "AB2", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEM, "AB3", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEM, "AB4", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEM, "AB5", Boolean.TRUE); ITUtilStructures.assertExists(Type.SYSTEM, "AC1", Boolean.FALSE); ITUtilStructures.assertExists(Type.SYSTEM, "AC2", Boolean.FALSE); ITUtilStructures.assertExists(Type.SYSTEM, "AC3", Boolean.FALSE); @@ -1707,16 +1066,16 @@ class StructuresSystemIT { ITUtilStructures.assertExists(Type.SYSTEM, "AF3", Boolean.FALSE); ITUtilStructures.assertExists(Type.SYSTEM, "AF4", Boolean.FALSE); ITUtilStructures.assertExists(Type.SYSTEM, "AF5", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "AG1", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "AG2", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "AG3", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "AG4", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "AG5", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "AH1", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "AH2", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "AH3", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "AH4", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "AH5", Boolean.TRUE); + ITUtilStructures.assertExists(Type.SYSTEM, "AG1", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "AG2", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "AG3", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "AG4", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "AG5", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "AH1", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "AH2", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "AH3", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "AH4", Boolean.FALSE); + ITUtilStructures.assertExists(Type.SYSTEM, "AH5", Boolean.FALSE); } } diff --git a/src/test/java/org/openepics/names/docker/complex/NamesInstanceIndexIT.java b/src/test/java/org/openepics/names/docker/complex/NamesInstanceIndexIT.java index 976a0d60..80cce4ed 100644 --- a/src/test/java/org/openepics/names/docker/complex/NamesInstanceIndexIT.java +++ b/src/test/java/org/openepics/names/docker/complex/NamesInstanceIndexIT.java @@ -146,29 +146,29 @@ class NamesInstanceIndexIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Acc", null, "Accelerator. The ESS Linear Accelerator") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemGroupAcc = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemGroupAcc = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupAcc, "RFQ", null, "Radio Frequency Quadrupole") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemRFQ = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemRFQ = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "010PRL", null, "01 Phase Reference Line"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "010", null, "RFQ-010"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "N1U1", null, "Power switch board 01. Electrical power cabinets") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - subsystem010PRL = approvedStructureElements[0].getUuid(); - subsystem010 = approvedStructureElements[1].getUuid(); - subsystemN1U1 = approvedStructureElements[2].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + subsystem010PRL = structureElements[0].getUuid(); + subsystem010 = structureElements[1].getUuid(); + subsystemN1U1 = structureElements[2].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "Cryo", null, "Cryogenics"), @@ -180,15 +180,15 @@ class NamesInstanceIndexIT { new StructureElementCommandCreate(Type.DISCIPLINE, null, "WtrC", null, "Water Cooling"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "BMD", null, "Beam Magnets and Deflectors") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - disciplineCryo = approvedStructureElements[0].getUuid(); - disciplineEMR = approvedStructureElements[1].getUuid(); - disciplineHVAC = approvedStructureElements[2].getUuid(); - disciplineProc = approvedStructureElements[3].getUuid(); - disciplineSC = approvedStructureElements[4].getUuid(); - disciplineVac = approvedStructureElements[5].getUuid(); - disciplineWtrC = approvedStructureElements[6].getUuid(); - disciplineBMD = approvedStructureElements[7].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + disciplineCryo = structureElements[0].getUuid(); + disciplineEMR = structureElements[1].getUuid(); + disciplineHVAC = structureElements[2].getUuid(); + disciplineProc = structureElements[3].getUuid(); + disciplineSC = structureElements[4].getUuid(); + disciplineVac = structureElements[5].getUuid(); + disciplineWtrC = structureElements[6].getUuid(); + disciplineBMD = structureElements[7].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineCryo, null, null, "empty"), @@ -200,15 +200,15 @@ class NamesInstanceIndexIT { new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineWtrC, null, null, "empty"), new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineBMD, null, null, "empty") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceGroupCryo = approvedStructureElements[0].getUuid(); - deviceGroupEMR = approvedStructureElements[1].getUuid(); - deviceGroupHVAC = approvedStructureElements[2].getUuid(); - deviceGroupProc = approvedStructureElements[3].getUuid(); - deviceGroupSC = approvedStructureElements[4].getUuid(); - deviceGroupVac = approvedStructureElements[5].getUuid(); - deviceGroupWtrC = approvedStructureElements[6].getUuid(); - deviceGroupBMD = approvedStructureElements[7].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceGroupCryo = structureElements[0].getUuid(); + deviceGroupEMR = structureElements[1].getUuid(); + deviceGroupHVAC = structureElements[2].getUuid(); + deviceGroupProc = structureElements[3].getUuid(); + deviceGroupSC = structureElements[4].getUuid(); + deviceGroupVac = structureElements[5].getUuid(); + deviceGroupWtrC = structureElements[6].getUuid(); + deviceGroupBMD = structureElements[7].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupCryo, "FS", null, "Flow Switch"), @@ -244,39 +244,39 @@ class NamesInstanceIndexIT { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupBMD, "RFA", null, "RF Antenna"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupBMD, "TT", null, "Temperature Transmitter") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceType_Cryo_FS = approvedStructureElements[0].getUuid(); - deviceType_Cryo_IOC = approvedStructureElements[1].getUuid(); - deviceType_Cryo_RFA = approvedStructureElements[2].getUuid(); - deviceType_Cryo_TT = approvedStructureElements[3].getUuid(); - deviceType_EMR_FS = approvedStructureElements[4].getUuid(); - deviceType_EMR_IOC = approvedStructureElements[5].getUuid(); - deviceType_EMR_RFA = approvedStructureElements[6].getUuid(); - deviceType_EMR_TT = approvedStructureElements[7].getUuid(); - deviceType_HVAC_FS = approvedStructureElements[8].getUuid(); - deviceType_HVAC_IOC = approvedStructureElements[9].getUuid(); - deviceType_HVAC_RFA = approvedStructureElements[10].getUuid(); - deviceType_HVAC_TT = approvedStructureElements[11].getUuid(); - deviceType_Proc_FS = approvedStructureElements[12].getUuid(); - deviceType_Proc_IOC = approvedStructureElements[13].getUuid(); - deviceType_Proc_RFA = approvedStructureElements[14].getUuid(); - deviceType_Proc_TT = approvedStructureElements[15].getUuid(); - deviceType_SC_FS = approvedStructureElements[16].getUuid(); - deviceType_SC_IOC = approvedStructureElements[17].getUuid(); - deviceType_SC_RFA = approvedStructureElements[18].getUuid(); - deviceType_SC_TT = approvedStructureElements[19].getUuid(); - deviceType_Vac_FS = approvedStructureElements[20].getUuid(); - deviceType_Vac_IOC = approvedStructureElements[21].getUuid(); - deviceType_Vac_RFA = approvedStructureElements[22].getUuid(); - deviceType_Vac_TT = approvedStructureElements[23].getUuid(); - deviceType_WtrC_FS = approvedStructureElements[24].getUuid(); - deviceType_WtrC_IOC = approvedStructureElements[25].getUuid(); - deviceType_WtrC_RFA = approvedStructureElements[26].getUuid(); - deviceType_WtrC_TT = approvedStructureElements[27].getUuid(); - deviceType_BMD_FS = approvedStructureElements[28].getUuid(); - deviceType_BMD_IOC = approvedStructureElements[29].getUuid(); - deviceType_BMD_RFA = approvedStructureElements[30].getUuid(); - deviceType_BMD_TT = approvedStructureElements[31].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceType_Cryo_FS = structureElements[0].getUuid(); + deviceType_Cryo_IOC = structureElements[1].getUuid(); + deviceType_Cryo_RFA = structureElements[2].getUuid(); + deviceType_Cryo_TT = structureElements[3].getUuid(); + deviceType_EMR_FS = structureElements[4].getUuid(); + deviceType_EMR_IOC = structureElements[5].getUuid(); + deviceType_EMR_RFA = structureElements[6].getUuid(); + deviceType_EMR_TT = structureElements[7].getUuid(); + deviceType_HVAC_FS = structureElements[8].getUuid(); + deviceType_HVAC_IOC = structureElements[9].getUuid(); + deviceType_HVAC_RFA = structureElements[10].getUuid(); + deviceType_HVAC_TT = structureElements[11].getUuid(); + deviceType_Proc_FS = structureElements[12].getUuid(); + deviceType_Proc_IOC = structureElements[13].getUuid(); + deviceType_Proc_RFA = structureElements[14].getUuid(); + deviceType_Proc_TT = structureElements[15].getUuid(); + deviceType_SC_FS = structureElements[16].getUuid(); + deviceType_SC_IOC = structureElements[17].getUuid(); + deviceType_SC_RFA = structureElements[18].getUuid(); + deviceType_SC_TT = structureElements[19].getUuid(); + deviceType_Vac_FS = structureElements[20].getUuid(); + deviceType_Vac_IOC = structureElements[21].getUuid(); + deviceType_Vac_RFA = structureElements[22].getUuid(); + deviceType_Vac_TT = structureElements[23].getUuid(); + deviceType_WtrC_FS = structureElements[24].getUuid(); + deviceType_WtrC_IOC = structureElements[25].getUuid(); + deviceType_WtrC_RFA = structureElements[26].getUuid(); + deviceType_WtrC_TT = structureElements[27].getUuid(); + deviceType_BMD_FS = structureElements[28].getUuid(); + deviceType_BMD_IOC = structureElements[29].getUuid(); + deviceType_BMD_RFA = structureElements[30].getUuid(); + deviceType_BMD_TT = structureElements[31].getUuid(); // check content ITUtilStructures.assertRead("", 53); diff --git a/src/test/java/org/openepics/names/docker/complex/NamesMultipleIT.java b/src/test/java/org/openepics/names/docker/complex/NamesMultipleIT.java index 1edbb96c..5dee04ff 100644 --- a/src/test/java/org/openepics/names/docker/complex/NamesMultipleIT.java +++ b/src/test/java/org/openepics/names/docker/complex/NamesMultipleIT.java @@ -90,43 +90,43 @@ class NamesMultipleIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Acc", null, "Accelerator. The ESS Linear Accelerator") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemGroupAcc = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemGroupAcc = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupAcc, "RFQ", null, "Radio Frequency Quadrupole") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemRFQ = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemRFQ = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "010PRL", null, "01 Phase Reference Line") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - subsystem010PRL = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + subsystem010PRL = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "Cryo", null, "Cryogenics") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - disciplineCryo = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + disciplineCryo = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineCryo, null, null, "empty") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceGroupCryo = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceGroupCryo = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupCryo, "FS", null, "Flow Switch") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceType_Cryo_FS = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceType_Cryo_FS = structureElements[0].getUuid(); // check content ITUtilStructures.assertRead("", 6); diff --git a/src/test/java/org/openepics/names/docker/complex/NamesStructuresDeleteIT.java b/src/test/java/org/openepics/names/docker/complex/NamesStructuresDeleteIT.java index ef78f77f..e33f6d1f 100644 --- a/src/test/java/org/openepics/names/docker/complex/NamesStructuresDeleteIT.java +++ b/src/test/java/org/openepics/names/docker/complex/NamesStructuresDeleteIT.java @@ -115,7 +115,7 @@ class NamesStructuresDeleteIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; NameElementCommandCreate[] nameElementCommandsCreate = null; String description = "description"; @@ -160,9 +160,9 @@ class NamesStructuresDeleteIT { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Sg1", null, description), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Sg2", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - sg1 = approvedStructureElements[1].getUuid(); - sg2 = approvedStructureElements[2].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + sg1 = structureElements[1].getUuid(); + sg2 = structureElements[2].getUuid(); // system structureElementCommandsCreate = new StructureElementCommandCreate[] { @@ -170,10 +170,10 @@ class NamesStructuresDeleteIT { new StructureElementCommandCreate(Type.SYSTEM, sg1, "Sys12", null, description), new StructureElementCommandCreate(Type.SYSTEM, sg1, "Sys13", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - sys11 = approvedStructureElements[0].getUuid(); - sys12 = approvedStructureElements[1].getUuid(); - sys13 = approvedStructureElements[2].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + sys11 = structureElements[0].getUuid(); + sys12 = structureElements[1].getUuid(); + sys13 = structureElements[2].getUuid(); // subsystem structureElementCommandsCreate = new StructureElementCommandCreate[] { @@ -187,8 +187,8 @@ class NamesStructuresDeleteIT { new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, "Sub132", null, description), new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, "Sub133", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - sub132 = approvedStructureElements[7].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + sub132 = structureElements[7].getUuid(); // system structureElementCommandsCreate = new StructureElementCommandCreate[] { @@ -196,10 +196,10 @@ class NamesStructuresDeleteIT { new StructureElementCommandCreate(Type.SYSTEM, sg2, "Sys22", null, description), new StructureElementCommandCreate(Type.SYSTEM, sg2, "Sys23", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - sys21 = approvedStructureElements[0].getUuid(); - sys22 = approvedStructureElements[1].getUuid(); - sys23 = approvedStructureElements[2].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + sys21 = structureElements[0].getUuid(); + sys22 = structureElements[1].getUuid(); + sys23 = structureElements[2].getUuid(); // subsystem structureElementCommandsCreate = new StructureElementCommandCreate[] { @@ -213,10 +213,10 @@ class NamesStructuresDeleteIT { new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, "Sub232", null, description), new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, "Sub233", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - sub231 = approvedStructureElements[6].getUuid(); - sub232 = approvedStructureElements[7].getUuid(); - sub233 = approvedStructureElements[8].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + sub231 = structureElements[6].getUuid(); + sub232 = structureElements[7].getUuid(); + sub233 = structureElements[8].getUuid(); // check content ITUtilStructures.assertRead("", 27); @@ -244,8 +244,8 @@ class NamesStructuresDeleteIT { structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "Di2", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - di2 = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + di2 = structureElements[0].getUuid(); // device group structureElementCommandsCreate = new StructureElementCommandCreate[] { @@ -253,10 +253,10 @@ class NamesStructuresDeleteIT { new StructureElementCommandCreate(Type.DEVICEGROUP, di2, "", null, description), new StructureElementCommandCreate(Type.DEVICEGROUP, di2, "", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - dg21 = approvedStructureElements[0].getUuid(); - dg22 = approvedStructureElements[1].getUuid(); - dg23 = approvedStructureElements[2].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + dg21 = structureElements[0].getUuid(); + dg22 = structureElements[1].getUuid(); + dg23 = structureElements[2].getUuid(); // device type structureElementCommandsCreate = new StructureElementCommandCreate[] { @@ -270,16 +270,16 @@ class NamesStructuresDeleteIT { new StructureElementCommandCreate(Type.DEVICETYPE, dg23, "Dt232", null, description), new StructureElementCommandCreate(Type.DEVICETYPE, dg23, "Dt233", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - dt211 = approvedStructureElements[0].getUuid(); - dt212 = approvedStructureElements[1].getUuid(); - dt213 = approvedStructureElements[2].getUuid(); - dt221 = approvedStructureElements[3].getUuid(); - dt222 = approvedStructureElements[4].getUuid(); - dt223 = approvedStructureElements[5].getUuid(); - dt231 = approvedStructureElements[6].getUuid(); - dt232 = approvedStructureElements[7].getUuid(); - dt233 = approvedStructureElements[8].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + dt211 = structureElements[0].getUuid(); + dt212 = structureElements[1].getUuid(); + dt213 = structureElements[2].getUuid(); + dt221 = structureElements[3].getUuid(); + dt222 = structureElements[4].getUuid(); + dt223 = structureElements[5].getUuid(); + dt231 = structureElements[6].getUuid(); + dt232 = structureElements[7].getUuid(); + dt233 = structureElements[8].getUuid(); // check content ITUtilStructures.assertRead("", 40); @@ -417,7 +417,7 @@ class NamesStructuresDeleteIT { response = ITUtilStructures.assertFind("/" + sub132); structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(response.getList().get(0)); - ITUtilStructures.assertDeleteApprove(structureElementCommandConfirm); + ITUtilStructures.assertDelete(structureElementCommandConfirm); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys13-Sub132", Boolean.FALSE); ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys13-Sub132", Boolean.TRUE); @@ -448,7 +448,7 @@ class NamesStructuresDeleteIT { response = ITUtilStructures.assertFind("/" + sys12); structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(response.getList().get(0)); - ITUtilStructures.assertDeleteApprove(structureElementCommandConfirm); + ITUtilStructures.assertDelete(structureElementCommandConfirm); ITUtilStructures.assertExists(Type.SYSTEM, "Sys12", Boolean.FALSE); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys12-Sub121", Boolean.FALSE); @@ -498,7 +498,7 @@ class NamesStructuresDeleteIT { response = ITUtilStructures.assertFind("/" + sg1); structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(response.getList().get(0)); - ITUtilStructures.assertDeleteApprove(structureElementCommandConfirm); + ITUtilStructures.assertDelete(structureElementCommandConfirm); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "Sg1", Boolean.FALSE); ITUtilStructures.assertExists(Type.SYSTEM, "Sys11", Boolean.FALSE); @@ -593,7 +593,7 @@ class NamesStructuresDeleteIT { response = ITUtilStructures.assertFind("/" + dt232); structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(response.getList().get(0)); - ITUtilStructures.assertDeleteApprove(structureElementCommandConfirm); + ITUtilStructures.assertDelete(structureElementCommandConfirm); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di2-Dt232", Boolean.FALSE); ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di2-Dt232", Boolean.TRUE); @@ -619,7 +619,7 @@ class NamesStructuresDeleteIT { response = ITUtilStructures.assertFind("/" + dg22); structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(response.getList().get(0)); - ITUtilStructures.assertDeleteApprove(structureElementCommandConfirm); + ITUtilStructures.assertDelete(structureElementCommandConfirm); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di2-Dt221", Boolean.FALSE); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di2-Dt222", Boolean.FALSE); @@ -658,7 +658,7 @@ class NamesStructuresDeleteIT { response = ITUtilStructures.assertFind("/" + di2); structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(response.getList().get(0)); - ITUtilStructures.assertDeleteApprove(structureElementCommandConfirm); + ITUtilStructures.assertDelete(structureElementCommandConfirm); ITUtilStructures.assertExists(Type.DISCIPLINE, "Di2", Boolean.FALSE); ITUtilStructures.assertExists(Type.DEVICETYPE, "Di2-Dt211", Boolean.FALSE); diff --git a/src/test/java/org/openepics/names/docker/complex/NamesStructuresUpdateIT.java b/src/test/java/org/openepics/names/docker/complex/NamesStructuresUpdateIT.java index 6576fa55..e21418f8 100644 --- a/src/test/java/org/openepics/names/docker/complex/NamesStructuresUpdateIT.java +++ b/src/test/java/org/openepics/names/docker/complex/NamesStructuresUpdateIT.java @@ -115,7 +115,7 @@ class NamesStructuresUpdateIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; NameElementCommandCreate[] nameElementCommandsCreate = null; String description = "description"; @@ -160,9 +160,9 @@ class NamesStructuresUpdateIT { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Sg1", null, description), new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Sg2", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - sg1 = approvedStructureElements[1].getUuid(); - sg2 = approvedStructureElements[2].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + sg1 = structureElements[1].getUuid(); + sg2 = structureElements[2].getUuid(); // system structureElementCommandsCreate = new StructureElementCommandCreate[] { @@ -170,10 +170,10 @@ class NamesStructuresUpdateIT { new StructureElementCommandCreate(Type.SYSTEM, sg1, "Sys12", null, description), new StructureElementCommandCreate(Type.SYSTEM, sg1, "Sys13", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - sys11 = approvedStructureElements[0].getUuid(); - sys12 = approvedStructureElements[1].getUuid(); - sys13 = approvedStructureElements[2].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + sys11 = structureElements[0].getUuid(); + sys12 = structureElements[1].getUuid(); + sys13 = structureElements[2].getUuid(); // subsystem structureElementCommandsCreate = new StructureElementCommandCreate[] { @@ -187,8 +187,8 @@ class NamesStructuresUpdateIT { new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, "Sub132", null, description), new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, "Sub133", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - sub132 = approvedStructureElements[7].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + sub132 = structureElements[7].getUuid(); // system structureElementCommandsCreate = new StructureElementCommandCreate[] { @@ -196,10 +196,10 @@ class NamesStructuresUpdateIT { new StructureElementCommandCreate(Type.SYSTEM, sg2, "Sys22", null, description), new StructureElementCommandCreate(Type.SYSTEM, sg2, "Sys23", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - sys21 = approvedStructureElements[0].getUuid(); - sys22 = approvedStructureElements[1].getUuid(); - sys23 = approvedStructureElements[2].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + sys21 = structureElements[0].getUuid(); + sys22 = structureElements[1].getUuid(); + sys23 = structureElements[2].getUuid(); // subsystem structureElementCommandsCreate = new StructureElementCommandCreate[] { @@ -213,10 +213,10 @@ class NamesStructuresUpdateIT { new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, "Sub232", null, description), new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, "Sub233", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - sub231 = approvedStructureElements[6].getUuid(); - sub232 = approvedStructureElements[7].getUuid(); - sub233 = approvedStructureElements[8].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + sub231 = structureElements[6].getUuid(); + sub232 = structureElements[7].getUuid(); + sub233 = structureElements[8].getUuid(); // check content ITUtilStructures.assertRead("", 27); @@ -244,8 +244,8 @@ class NamesStructuresUpdateIT { structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "Di2", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - di2 = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + di2 = structureElements[0].getUuid(); // device group structureElementCommandsCreate = new StructureElementCommandCreate[] { @@ -253,10 +253,10 @@ class NamesStructuresUpdateIT { new StructureElementCommandCreate(Type.DEVICEGROUP, di2, "", null, description), new StructureElementCommandCreate(Type.DEVICEGROUP, di2, "", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - dg21 = approvedStructureElements[0].getUuid(); - dg22 = approvedStructureElements[1].getUuid(); - dg23 = approvedStructureElements[2].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + dg21 = structureElements[0].getUuid(); + dg22 = structureElements[1].getUuid(); + dg23 = structureElements[2].getUuid(); // device type structureElementCommandsCreate = new StructureElementCommandCreate[] { @@ -270,16 +270,16 @@ class NamesStructuresUpdateIT { new StructureElementCommandCreate(Type.DEVICETYPE, dg23, "Dt232", null, description), new StructureElementCommandCreate(Type.DEVICETYPE, dg23, "Dt233", null, description) }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - dt211 = approvedStructureElements[0].getUuid(); - dt212 = approvedStructureElements[1].getUuid(); - dt213 = approvedStructureElements[2].getUuid(); - dt221 = approvedStructureElements[3].getUuid(); - dt222 = approvedStructureElements[4].getUuid(); - dt223 = approvedStructureElements[5].getUuid(); - dt231 = approvedStructureElements[6].getUuid(); - dt232 = approvedStructureElements[7].getUuid(); - dt233 = approvedStructureElements[8].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + dt211 = structureElements[0].getUuid(); + dt212 = structureElements[1].getUuid(); + dt213 = structureElements[2].getUuid(); + dt221 = structureElements[3].getUuid(); + dt222 = structureElements[4].getUuid(); + dt223 = structureElements[5].getUuid(); + dt231 = structureElements[6].getUuid(); + dt232 = structureElements[7].getUuid(); + dt233 = structureElements[8].getUuid(); // check content ITUtilStructures.assertRead("", 40); @@ -411,12 +411,12 @@ class NamesStructuresUpdateIT { response = ITUtilStructures.assertFind("/" + sub132); structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(response.getList().get(0)); structureElementCommandUpdate.setDescription("asdf"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); ITUtilNames.assertExists("Sys13-Su132", Boolean.FALSE); structureElementCommandUpdate.setMnemonic("Su132"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); ITUtilNames.assertRead("", count); @@ -441,7 +441,7 @@ class NamesStructuresUpdateIT { response = ITUtilStructures.assertFind("/" + sys12); structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(response.getList().get(0)); structureElementCommandUpdate.setDescription("asdf"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); ITUtilNames.assertExists("Sy12", Boolean.FALSE); ITUtilNames.assertExists("Sy12-Sub121", Boolean.FALSE); @@ -449,7 +449,7 @@ class NamesStructuresUpdateIT { ITUtilNames.assertExists("Sy12-Sub123", Boolean.FALSE); structureElementCommandUpdate.setMnemonic("Sy12"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); ITUtilNames.assertRead("", count); @@ -477,12 +477,12 @@ class NamesStructuresUpdateIT { response = ITUtilStructures.assertFind("/" + sg1); structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(response.getList().get(0)); structureElementCommandUpdate.setDescription("asdf"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); ITUtilNames.assertExists("S1", Boolean.FALSE); structureElementCommandUpdate.setMnemonic("S1"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); ITUtilNames.assertRead("", count); @@ -536,12 +536,12 @@ class NamesStructuresUpdateIT { response = ITUtilStructures.assertFind("/" + dt232); structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(response.getList().get(0)); structureElementCommandUpdate.setDescription("asdf"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); ITUtilNames.assertExists("Sys23-Sub232:Di2-D232-232", Boolean.FALSE); structureElementCommandUpdate.setMnemonic("D232"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); ITUtilNames.assertRead("", count); @@ -562,7 +562,7 @@ class NamesStructuresUpdateIT { response = ITUtilStructures.assertFind("/" + dg22); structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(response.getList().get(0)); structureElementCommandUpdate.setDescription("asdf"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); ITUtilNames.assertRead("", count); @@ -581,7 +581,7 @@ class NamesStructuresUpdateIT { response = ITUtilStructures.assertFind("/" + di2); structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(response.getList().get(0)); structureElementCommandUpdate.setDescription("asdf"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); ITUtilNames.assertExists("Sg2:D2-Dt211-211", Boolean.FALSE); ITUtilNames.assertExists("Sg2:D2-Dt212-212", Boolean.FALSE); @@ -594,7 +594,7 @@ class NamesStructuresUpdateIT { ITUtilNames.assertExists("Sys23-Sub233:D2-Dt233-233", Boolean.FALSE); structureElementCommandUpdate.setMnemonic("D2"); - ITUtilStructures.assertUpdateApprove(structureElementCommandUpdate); + ITUtilStructures.assertUpdate(structureElementCommandUpdate); ITUtilNames.assertRead("", count); diff --git a/src/test/java/org/openepics/names/docker/complex/StructuresLevel3IT.java b/src/test/java/org/openepics/names/docker/complex/StructuresLevel3IT.java index 4f434bd0..316eed94 100644 --- a/src/test/java/org/openepics/names/docker/complex/StructuresLevel3IT.java +++ b/src/test/java/org/openepics/names/docker/complex/StructuresLevel3IT.java @@ -133,19 +133,19 @@ class StructuresLevel3IT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Acc", null, "Accelerator. The ESS Linear Accelerator") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemGroupAcc = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemGroupAcc = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupAcc, "RFQ", null, "Radio Frequency Quadrupole") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemRFQ = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemRFQ = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "Cryo", null, "Cryogenics"), @@ -157,15 +157,15 @@ class StructuresLevel3IT { new StructureElementCommandCreate(Type.DISCIPLINE, null, "WtrC", null, "Water Cooling"), new StructureElementCommandCreate(Type.DISCIPLINE, null, "BMD", null, "Beam Magnets and Deflectors") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - disciplineCryo = approvedStructureElements[0].getUuid(); - disciplineEMR = approvedStructureElements[1].getUuid(); - disciplineHVAC = approvedStructureElements[2].getUuid(); - disciplineProc = approvedStructureElements[3].getUuid(); - disciplineSC = approvedStructureElements[4].getUuid(); - disciplineVac = approvedStructureElements[5].getUuid(); - disciplineWtrC = approvedStructureElements[6].getUuid(); - disciplineBMD = approvedStructureElements[7].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + disciplineCryo = structureElements[0].getUuid(); + disciplineEMR = structureElements[1].getUuid(); + disciplineHVAC = structureElements[2].getUuid(); + disciplineProc = structureElements[3].getUuid(); + disciplineSC = structureElements[4].getUuid(); + disciplineVac = structureElements[5].getUuid(); + disciplineWtrC = structureElements[6].getUuid(); + disciplineBMD = structureElements[7].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineCryo, null, null, "empty"), @@ -177,15 +177,15 @@ class StructuresLevel3IT { new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineWtrC, null, null, "empty"), new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineBMD, null, null, "empty") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceGroupCryo = approvedStructureElements[0].getUuid(); - deviceGroupEMR = approvedStructureElements[1].getUuid(); - deviceGroupHVAC = approvedStructureElements[2].getUuid(); - deviceGroupProc = approvedStructureElements[3].getUuid(); - deviceGroupSC = approvedStructureElements[4].getUuid(); - deviceGroupVac = approvedStructureElements[5].getUuid(); - deviceGroupWtrC = approvedStructureElements[6].getUuid(); - deviceGroupBMD = approvedStructureElements[7].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceGroupCryo = structureElements[0].getUuid(); + deviceGroupEMR = structureElements[1].getUuid(); + deviceGroupHVAC = structureElements[2].getUuid(); + deviceGroupProc = structureElements[3].getUuid(); + deviceGroupSC = structureElements[4].getUuid(); + deviceGroupVac = structureElements[5].getUuid(); + deviceGroupWtrC = structureElements[6].getUuid(); + deviceGroupBMD = structureElements[7].getUuid(); // check content ITUtilStructures.assertRead("", 18); @@ -207,12 +207,8 @@ class StructuresLevel3IT { @Test void createSubsystem() { - // test create and approve subsystem - // all create, then all approve - // - // note - // create in order to approve - // all create first, all approve separately after all create + // test create subsystem + // all create StructureElementCommandCreate[] structureElementCommandsCreate = null; StructureElement[] approvedStructureElements = null; @@ -222,7 +218,7 @@ class StructuresLevel3IT { new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "010", null, "RFQ-010"), new StructureElementCommandCreate(Type.SUBSYSTEM, systemRFQ, "N1U1", null, "Power switch board 01. Electrical power cabinets") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); + approvedStructureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); subsystem010PRL = approvedStructureElements[0].getUuid(); subsystem010 = approvedStructureElements[1].getUuid(); subsystemN1U1 = approvedStructureElements[2].getUuid(); @@ -234,12 +230,8 @@ class StructuresLevel3IT { @Test void createDeviceType() { - // test create and approve device type - // all create, then all approve - // - // note - // create in order to approve - // all create first, all approve separately after all create + // test create device type + // all create StructureElementCommandCreate[] structureElementCommandsCreate = null; StructureElement[] approvedStructureElements = null; @@ -278,7 +270,7 @@ class StructuresLevel3IT { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupBMD, "RFA", null, "RF Antenna"), new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupBMD, "TT", null, "Temperature Transmitter") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); + approvedStructureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); deviceType_Cryo_FS = approvedStructureElements[0].getUuid(); deviceType_Cryo_IOC = approvedStructureElements[1].getUuid(); deviceType_Cryo_RFA = approvedStructureElements[2].getUuid(); diff --git a/src/test/java/org/openepics/names/docker/complex/StructuresMultipleIT.java b/src/test/java/org/openepics/names/docker/complex/StructuresMultipleIT.java index 5b12530f..6af8f47f 100644 --- a/src/test/java/org/openepics/names/docker/complex/StructuresMultipleIT.java +++ b/src/test/java/org/openepics/names/docker/complex/StructuresMultipleIT.java @@ -81,43 +81,43 @@ class StructuresMultipleIT { // check content StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEMGROUP, null, "Sg", null, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemGroupUuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemGroupUuid = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SYSTEM, systemGroupUuid, "Sys", null, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - systemUuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + systemUuid = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.SUBSYSTEM, systemUuid, "Sub", null, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - subsystemUuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + subsystemUuid = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DISCIPLINE, null, "Di", null, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - disciplineUuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + disciplineUuid = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICEGROUP, disciplineUuid, null, null, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceGroupUuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceGroupUuid = structureElements[0].getUuid(); structureElementCommandsCreate = new StructureElementCommandCreate[] { new StructureElementCommandCreate(Type.DEVICETYPE, deviceGroupUuid, "Dt", null, "description") }; - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - deviceTypeUuid = approvedStructureElements[0].getUuid(); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + deviceTypeUuid = structureElements[0].getUuid(); // check content ITUtilStructures.assertRead("", 6); @@ -200,9 +200,6 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); structureElementCommandsCreate[1].setType(null); ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); @@ -230,18 +227,14 @@ class StructuresMultipleIT { } @Test - void createApprove() { - // test create and approve subsystem - // - // note - // create in order to approve + void create() { + // test create subsystem StructureElementCommandCreate[] structureElementCommandsCreate = null; StructureElementCommandUpdate[] structureElementCommandsUpdate = null; StructureElementCommandConfirm[] structureElementCommandsConfirm = null; StructureElementCommand[] structureElementCommands = null; - StructureElement[] createdStructureElements = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; structureElementCommands = new StructureElementCommand[] { new StructureElementCommand(null, Type.SYSTEMGROUP, null, "SgCa", null, "description"), @@ -271,40 +264,13 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - createdStructureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); - assertNotNull(createdStructureElements); - assertEquals(6, createdStructureElements.length); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElements); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElements); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgCa", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysCa", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubCa", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiCa", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpCa", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtCa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgCa", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysCa", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubCa", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiCa", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtCa", Boolean.TRUE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.TRUE); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + assertNotNull(structureElements); + assertEquals(6, structureElements.length); - approvedStructureElements = ITUtilStructures.assertApprove(structureElementCommandsConfirm); - assertNotNull(approvedStructureElements); - assertEquals(6, approvedStructureElements.length); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgCa", Boolean.TRUE); ITUtilStructures.assertExists(Type.SYSTEM, "SysCa", Boolean.TRUE); @@ -322,205 +288,6 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - } - - @Test - void createCancel() { - // test create and cancel subsystem - // - // note - // create in order to cancel - - StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElementCommandUpdate[] structureElementCommandsUpdate = null; - StructureElementCommandConfirm[] structureElementCommandsConfirm = null; - StructureElementCommand[] structureElementCommands = null; - StructureElement[] createdStructureElements = null; - StructureElement[] cancelledStructureElements = null; - - structureElementCommands = new StructureElementCommand[] { - new StructureElementCommand(null, Type.SYSTEMGROUP, null, "SgCc", null, "description"), - new StructureElementCommand(null, Type.SYSTEM, systemGroupUuid, "SysCc", null, "description"), - new StructureElementCommand(null, Type.SUBSYSTEM, systemUuid, "SubCc", null, "description"), - new StructureElementCommand(null, Type.DISCIPLINE, null, "DiCc", null, "description"), - new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid, "", null, "description"), - new StructureElementCommand(null, Type.DEVICETYPE, deviceGroupUuid, "DtCc", null, "description") - }; - structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands); - structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands); - structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtCc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgCc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysCc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubCc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiCc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtCc", Boolean.TRUE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - createdStructureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); - assertNotNull(createdStructureElements); - assertEquals(6, createdStructureElements.length); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElements); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElements); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtCc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgCc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysCc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubCc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiCc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtCc", Boolean.TRUE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.TRUE); - - cancelledStructureElements = ITUtilStructures.assertCancel(structureElementCommandsConfirm); - assertNotNull(cancelledStructureElements); - assertEquals(6, cancelledStructureElements.length); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpCc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtCc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgCc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysCc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubCc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiCc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtCc", Boolean.TRUE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - } - - @Test - void createReject() { - // test create and reject subsystem - // - // note - // create in order to reject - - StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElementCommandUpdate[] structureElementCommandsUpdate = null; - StructureElementCommandConfirm[] structureElementCommandsConfirm = null; - StructureElementCommand[] structureElementCommands = null; - StructureElement[] createdStructureElements = null; - StructureElement[] rejectedStructureElements = null; - - structureElementCommands = new StructureElementCommand[] { - new StructureElementCommand(null, Type.SYSTEMGROUP, null, "SgCr", null, "description"), - new StructureElementCommand(null, Type.SYSTEM, systemGroupUuid, "SysCr", null, "description"), - new StructureElementCommand(null, Type.SUBSYSTEM, systemUuid, "SubCr", null, "description"), - new StructureElementCommand(null, Type.DISCIPLINE, null, "DiCr", null, "description"), - new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid, "", null, "description"), - new StructureElementCommand(null, Type.DEVICETYPE, deviceGroupUuid, "DtCr", null, "description") - }; - structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands); - structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands); - structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtCr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgCr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysCr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubCr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiCr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtCr", Boolean.TRUE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - createdStructureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); - assertNotNull(createdStructureElements); - assertEquals(6, createdStructureElements.length); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElements); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElements); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtCr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgCr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysCr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubCr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiCr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtCr", Boolean.TRUE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.TRUE); - - rejectedStructureElements = ITUtilStructures.assertReject(structureElementCommandsConfirm); - assertNotNull(rejectedStructureElements); - assertEquals(6, rejectedStructureElements.length); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpCr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtCr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgCr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysCr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubCr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiCr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtCr", Boolean.TRUE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); } @Test @@ -529,7 +296,7 @@ class StructuresMultipleIT { // not update // // note - // create, approve in order to update + // create in order to update // // validate update // uuid @@ -543,7 +310,7 @@ class StructuresMultipleIT { StructureElementCommandUpdate[] structureElementCommandsUpdate = null; StructureElementCommandConfirm[] structureElementCommandsConfirm = null; StructureElementCommand[] structureElementCommands = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; UUID uuid = null; String value = null; @@ -575,16 +342,13 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - assertNotNull(approvedStructureElements); - assertEquals(6, approvedStructureElements.length); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + assertNotNull(structureElements); + assertEquals(6, structureElements.length); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgCu", Boolean.TRUE); ITUtilStructures.assertExists(Type.SYSTEM, "SysCu", Boolean.TRUE); @@ -602,11 +366,8 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - uuid = approvedStructureElements[1].getUuid(); + uuid = structureElements[1].getUuid(); structureElementCommandsUpdate[1].setUuid(null); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); structureElementCommandsUpdate[1].setUuid(uuid); @@ -638,18 +399,17 @@ class StructuresMultipleIT { } @Test - void updateApprove() { - // test update and approve subsystem + void update() { + // test update subsystem // // note - // create, approve in order to update, approve + // create in order to update StructureElementCommandCreate[] structureElementCommandsCreate = null; StructureElementCommandUpdate[] structureElementCommandsUpdate = null; StructureElementCommandConfirm[] structureElementCommandsConfirm = null; StructureElementCommand[] structureElementCommands = null; - StructureElement[] approvedStructureElements = null; - StructureElement[] updatedStructureElements = null; + StructureElement[] structureElements = null; structureElementCommands = new StructureElementCommand[] { new StructureElementCommand(null, Type.SYSTEMGROUP, null, "SgUa", null, "description"), @@ -679,36 +439,13 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - assertNotNull(approvedStructureElements); - assertEquals(6, approvedStructureElements.length); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUa", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysUa", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubUa", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiUa", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpUa", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtUa", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgUa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysUa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubUa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiUa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtUa", Boolean.FALSE); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + assertNotNull(structureElements); + assertEquals(6, structureElements.length); - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); structureElementCommandsUpdate[0].setDescription("0"); structureElementCommandsUpdate[1].setDescription("1"); @@ -733,37 +470,10 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - updatedStructureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - assertNotNull(updatedStructureElements); - assertEquals(6, updatedStructureElements.length); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUa", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysUa", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubUa", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiUa", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpUa", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtUa", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgUa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysUa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubUa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiUa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtUa", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.TRUE); - - approvedStructureElements = ITUtilStructures.assertApprove(structureElementCommandsConfirm); - assertNotNull(approvedStructureElements); - assertEquals(6, approvedStructureElements.length); + structureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); + assertNotNull(structureElements); + assertEquals(6, structureElements.length); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUa", Boolean.TRUE); ITUtilStructures.assertExists(Type.SYSTEM, "SysUa", Boolean.TRUE); @@ -781,309 +491,6 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - } - - @Test - void updateCancel() { - // test update and cancel subsystem - // - // note - // create, approve in order to update, cancel - - StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElementCommandUpdate[] structureElementCommandsUpdate = null; - StructureElementCommandConfirm[] structureElementCommandsConfirm = null; - StructureElementCommand[] structureElementCommands = null; - StructureElement[] approvedStructureElements = null; - StructureElement[] updatedStructureElements = null; - StructureElement[] cancelledStructureElements = null; - - structureElementCommands = new StructureElementCommand[] { - new StructureElementCommand(null, Type.SYSTEMGROUP, null, "SgUc", null, "description"), - new StructureElementCommand(null, Type.SYSTEM, systemGroupUuid, "SysUc", null, "description"), - new StructureElementCommand(null, Type.SUBSYSTEM, systemUuid, "SubUc", null, "description"), - new StructureElementCommand(null, Type.DISCIPLINE, null, "DiUc", null, "description"), - new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid, "", null, "description"), - new StructureElementCommand(null, Type.DEVICETYPE, deviceGroupUuid, "DtUc", null, "description") - }; - structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands); - structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands); - structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysUc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubUc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiUc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpUc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgUc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysUc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubUc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiUc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtUc", Boolean.TRUE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - assertNotNull(approvedStructureElements); - assertEquals(6, approvedStructureElements.length); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpUc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtUc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtUc", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandsUpdate[0].setDescription("0"); - structureElementCommandsUpdate[1].setDescription("1"); - structureElementCommandsUpdate[2].setDescription("2"); - structureElementCommandsUpdate[3].setDescription("3"); - structureElementCommandsUpdate[4].setDescription("4"); - structureElementCommandsUpdate[5].setDescription("5"); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpUc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtUc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtUc", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - updatedStructureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - assertNotNull(updatedStructureElements); - assertEquals(6, updatedStructureElements.length); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpUc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtUc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtUc", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.TRUE); - - cancelledStructureElements = ITUtilStructures.assertCancel(structureElementCommandsConfirm); - assertNotNull(cancelledStructureElements); - assertEquals(6, cancelledStructureElements.length); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiUc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpUc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtUc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtUc", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - } - - @Test - void updateReject() { - // test update and reject subsystem - // - // note - // create, approve in order to update, reject - - StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElementCommandUpdate[] structureElementCommandsUpdate = null; - StructureElementCommandConfirm[] structureElementCommandsConfirm = null; - StructureElementCommand[] structureElementCommands = null; - StructureElement[] approvedStructureElements = null; - StructureElement[] updatedStructureElements = null; - StructureElement[] rejectedStructureElements = null; - - structureElementCommands = new StructureElementCommand[] { - new StructureElementCommand(null, Type.SYSTEMGROUP, null, "SgUr", null, "description"), - new StructureElementCommand(null, Type.SYSTEM, systemGroupUuid, "SysUr", null, "description"), - new StructureElementCommand(null, Type.SUBSYSTEM, systemUuid, "SubUr", null, "description"), - new StructureElementCommand(null, Type.DISCIPLINE, null, "DiUr", null, "description"), - new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid, "", null, "description"), - new StructureElementCommand(null, Type.DEVICETYPE, deviceGroupUuid, "DtUr", null, "description") - }; - structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands); - structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands); - structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysUr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubUr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiUr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpUr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgUr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysUr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubUr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiUr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtUr", Boolean.TRUE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - assertNotNull(approvedStructureElements); - assertEquals(6, approvedStructureElements.length); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpUr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtUr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtUr", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - structureElementCommandsUpdate[0].setDescription("0"); - structureElementCommandsUpdate[1].setDescription("1"); - structureElementCommandsUpdate[2].setDescription("2"); - structureElementCommandsUpdate[3].setDescription("3"); - structureElementCommandsUpdate[4].setDescription("4"); - structureElementCommandsUpdate[5].setDescription("5"); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpUr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtUr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtUr", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - updatedStructureElements = ITUtilStructures.assertUpdate(structureElementCommandsUpdate); - assertNotNull(updatedStructureElements); - assertEquals(6, updatedStructureElements.length); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpUr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtUr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtUr", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.TRUE); - - rejectedStructureElements = ITUtilStructures.assertReject(structureElementCommandsConfirm); - assertNotNull(rejectedStructureElements); - assertEquals(6, rejectedStructureElements.length); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiUr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpUr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtUr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtUr", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); } @Test @@ -1092,7 +499,7 @@ class StructuresMultipleIT { // not delete // // note - // create, approve in order to delete + // create in order to delete // // validate delete // uuid @@ -1102,7 +509,7 @@ class StructuresMultipleIT { StructureElementCommandUpdate[] structureElementCommandsUpdate = null; StructureElementCommandConfirm[] structureElementCommandsConfirm = null; StructureElementCommand[] structureElementCommands = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; UUID uuid = null; structureElementCommands = new StructureElementCommand[] { @@ -1133,16 +540,13 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - assertNotNull(approvedStructureElements); - assertEquals(6, approvedStructureElements.length); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + assertNotNull(structureElements); + assertEquals(6, structureElements.length); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgCd", Boolean.TRUE); ITUtilStructures.assertExists(Type.SYSTEM, "SysCd", Boolean.TRUE); @@ -1160,9 +564,6 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); uuid = structureElementCommandsConfirm[1].getUuid(); structureElementCommandsConfirm[1].setUuid(null); @@ -1172,17 +573,17 @@ class StructuresMultipleIT { } @Test - void deleteApprove() { - // test delete and approve subsystem + void delete() { + // test delete subsystem // // note - // create, approve in order to delete, approve + // create in order to delete StructureElementCommandCreate[] structureElementCommandsCreate = null; StructureElementCommandUpdate[] structureElementCommandsUpdate = null; StructureElementCommandConfirm[] structureElementCommandsConfirm = null; StructureElementCommand[] structureElementCommands = null; - StructureElement[] approvedStructureElements = null; + StructureElement[] structureElements = null; structureElementCommands = new StructureElementCommand[] { new StructureElementCommand(null, Type.SYSTEMGROUP, null, "SgDa", null, "description"), @@ -1212,16 +613,13 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - assertNotNull(approvedStructureElements); - assertEquals(6, approvedStructureElements.length); + structureElements = ITUtilStructures.assertCreate(structureElementCommandsCreate); + assertNotNull(structureElements); + assertEquals(6, structureElements.length); - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); + structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElements); + structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElements); ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgDa", Boolean.TRUE); ITUtilStructures.assertExists(Type.SYSTEM, "SysDa", Boolean.TRUE); @@ -1239,36 +637,9 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); ITUtilStructures.assertDelete(structureElementCommandsConfirm); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgDa", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysDa", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubDa", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiDa", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpDa", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtDa", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgDa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysDa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubDa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiDa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDa", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtDa", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.TRUE); - - approvedStructureElements = ITUtilStructures.assertApprove(structureElementCommandsConfirm); - assertNotNull(approvedStructureElements); - assertEquals(6, approvedStructureElements.length); - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgDa", Boolean.FALSE); ITUtilStructures.assertExists(Type.SYSTEM, "SysDa", Boolean.FALSE); ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubDa", Boolean.FALSE); @@ -1285,249 +656,6 @@ class StructuresMultipleIT { ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - } - - @Test - void deleteCancel() { - // test delete and cancel subsystem - // - // note - // create, approve in order to delete, cancel - - StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElementCommandUpdate[] structureElementCommandsUpdate = null; - StructureElementCommandConfirm[] structureElementCommandsConfirm = null; - StructureElementCommand[] structureElementCommands = null; - StructureElement[] approvedStructureElements = null; - StructureElement[] cancelledStructureElements = null; - - structureElementCommands = new StructureElementCommand[] { - new StructureElementCommand(null, Type.SYSTEMGROUP, null, "SgDc", null, "description"), - new StructureElementCommand(null, Type.SYSTEM, systemGroupUuid, "SysDc", null, "description"), - new StructureElementCommand(null, Type.SUBSYSTEM, systemUuid, "SubDc", null, "description"), - new StructureElementCommand(null, Type.DISCIPLINE, null, "DiDc", null, "description"), - new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid, "", null, "description"), - new StructureElementCommand(null, Type.DEVICETYPE, deviceGroupUuid, "DtDc", null, "description") - }; - structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands); - structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands); - structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgDc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysDc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubDc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiDc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpDc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgDc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysDc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubDc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiDc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtDc", Boolean.TRUE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - assertNotNull(approvedStructureElements); - assertEquals(6, approvedStructureElements.length); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgDc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysDc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubDc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiDc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpDc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtDc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtDc", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - ITUtilStructures.assertDelete(structureElementCommandsConfirm); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgDc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysDc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubDc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiDc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpDc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtDc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtDc", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.TRUE); - - cancelledStructureElements = ITUtilStructures.assertCancel(structureElementCommandsConfirm); - assertNotNull(cancelledStructureElements); - assertEquals(6, cancelledStructureElements.length); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgDc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysDc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubDc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiDc", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpDc", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtDc", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDc", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtDc", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - } - - @Test - void deleteReject() { - // test delete and reject subsystem - // - // note - // create, approve in order to delete, reject - - StructureElementCommandCreate[] structureElementCommandsCreate = null; - StructureElementCommandUpdate[] structureElementCommandsUpdate = null; - StructureElementCommandConfirm[] structureElementCommandsConfirm = null; - StructureElementCommand[] structureElementCommands = null; - StructureElement[] approvedStructureElements = null; - StructureElement[] rejectedStructureElements = null; - - structureElementCommands = new StructureElementCommand[] { - new StructureElementCommand(null, Type.SYSTEMGROUP, null, "SgDr", null, "description"), - new StructureElementCommand(null, Type.SYSTEM, systemGroupUuid, "SysDr", null, "description"), - new StructureElementCommand(null, Type.SUBSYSTEM, systemUuid, "SubDr", null, "description"), - new StructureElementCommand(null, Type.DISCIPLINE, null, "DiDr", null, "description"), - new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid, "", null, "description"), - new StructureElementCommand(null, Type.DEVICETYPE, deviceGroupUuid, "DtDr", null, "description") - }; - structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands); - structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands); - structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgDr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysDr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubDr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiDr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpDr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgDr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysDr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubDr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiDr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtDr", Boolean.TRUE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - approvedStructureElements = ITUtilStructures.assertCreateApprove(structureElementCommandsCreate); - assertNotNull(approvedStructureElements); - assertEquals(6, approvedStructureElements.length); - - structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements); - structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgDr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysDr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubDr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiDr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpDr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtDr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtDr", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); - - ITUtilStructures.assertDelete(structureElementCommandsConfirm); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgDr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysDr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubDr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiDr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpDr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtDr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtDr", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.TRUE); - - rejectedStructureElements = ITUtilStructures.assertReject(structureElementCommandsConfirm); - assertNotNull(rejectedStructureElements); - assertEquals(6, rejectedStructureElements.length); - - ITUtilStructures.assertExists(Type.SYSTEMGROUP, "SgDr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SYSTEM, "SysDr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-SubDr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DISCIPLINE, "DiDr", Boolean.TRUE); - ITUtilStructures.assertExists(Type.DEVICEGROUP, "GrpDr", Boolean.FALSE); - ITUtilStructures.assertExists(Type.DEVICETYPE, "Di-DtDr", Boolean.TRUE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEMGROUP, "SgDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SYSTEM, "SysDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-SubDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "DiDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDr", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtDr", Boolean.FALSE); - - ITUtilStructures.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT, Boolean.FALSE); } } diff --git a/src/test/java/org/openepics/names/util/notification/NotificationStructureTest.java b/src/test/java/org/openepics/names/util/notification/NotificationStructureTest.java index 1e9ce012..cd05425a 100644 --- a/src/test/java/org/openepics/names/util/notification/NotificationStructureTest.java +++ b/src/test/java/org/openepics/names/util/notification/NotificationStructureTest.java @@ -39,9 +39,9 @@ import org.openepics.names.util.StructureCommand; class NotificationStructureTest { @Test - void createApprove() { + void create() { NotificationStructure ns = new NotificationStructure( - StructureCommand.CREATE, StructureCommand.APPROVE, + StructureCommand.CREATE, Type.SYSTEM, UUID.randomUUID(), "oldMnemonicW", "oldMnemonicpathE", "oldDescriptionR", "newMnemonicY", "newMnemonicpathU", "newDescriptionI", @@ -52,9 +52,9 @@ class NotificationStructureTest { } @Test - void updateCancel() { + void update() { NotificationStructure ns = new NotificationStructure( - StructureCommand.CREATE, StructureCommand.APPROVE, + StructureCommand.UPDATE, Type.DISCIPLINE, UUID.randomUUID(), "oldMnemonicS", "oldMnemonicpathD", "oldDescriptionF", "newMnemonicH", "newMnemonicpathJ", "newDescriptionK", @@ -65,9 +65,9 @@ class NotificationStructureTest { } @Test - void deleteReject() { + void delete() { NotificationStructure ns = new NotificationStructure( - StructureCommand.CREATE, StructureCommand.APPROVE, + StructureCommand.DELETE, Type.DEVICETYPE, UUID.randomUUID(), "oldMnemonicC", "oldMnemonicpathV", "oldDescriptionB", "newMnemonicM", "newMnemonicpathQ", "newDescriptionW", diff --git a/src/test/java/org/openepics/names/util/notification/NotificationUtilTest.java b/src/test/java/org/openepics/names/util/notification/NotificationUtilTest.java index 7f375634..b2424a8a 100644 --- a/src/test/java/org/openepics/names/util/notification/NotificationUtilTest.java +++ b/src/test/java/org/openepics/names/util/notification/NotificationUtilTest.java @@ -77,19 +77,19 @@ class NotificationUtilTest { @Test void sortByNewMnemonicpath() { NotificationStructure ns1 = new NotificationStructure( - StructureCommand.CREATE, StructureCommand.APPROVE, + StructureCommand.CREATE, Type.SYSTEM, UUID.randomUUID(), "oldMnemonicW", "oldMnemonicpathE", "oldDescriptionR", "newMnemonicY", "newMnemonicpathU", "newDescriptionI", new Date(), "whoP"); NotificationStructure ns2 = new NotificationStructure( - StructureCommand.CREATE, StructureCommand.APPROVE, + StructureCommand.CREATE, Type.DISCIPLINE, UUID.randomUUID(), "oldMnemonicS", "oldMnemonicpathD", "oldDescriptionF", "newMnemonicH", "newMnemonicpathJ", "newDescriptionK", new Date(), "whoZ"); NotificationStructure ns3 = new NotificationStructure( - StructureCommand.CREATE, StructureCommand.APPROVE, + StructureCommand.CREATE, Type.DEVICETYPE, UUID.randomUUID(), "oldMnemonicC", "oldMnemonicpathV", "oldDescriptionB", "newMnemonicM", "newMnemonicpathQ", "newDescriptionW", diff --git a/src/test/resources/INTEGRATIONTEST_DOCKER_TUTORIAL.md b/src/test/resources/INTEGRATIONTEST_DOCKER_TUTORIAL.md index defec2ea..e722578b 100644 --- a/src/test/resources/INTEGRATIONTEST_DOCKER_TUTORIAL.md +++ b/src/test/resources/INTEGRATIONTEST_DOCKER_TUTORIAL.md @@ -61,7 +61,7 @@ How ``` @Test -void createApprove() +void create() ``` Purpose @@ -105,58 +105,38 @@ class StructuresDisciplineIT { public static final ComposeContainer ENVIRONMENT = ITUtil.defaultComposeContainers(); @Test - void createApprove() { - // purpose - // test create and approve discipline - // - // what - combination of - // create create structures - // read validate create - // read validate approve - // patch approve structures - // - // note - // create in order to approve + void create() { + // test create discipline StructureElementCommandCreate structureElementCommandCreate = null; + StructureElementCommandUpdate structureElementCommandUpdate = null; StructureElementCommandConfirm structureElementCommandConfirm = null; StructureElementCommand structureElementCommand = null; - StructureElement createdStructureElement = null; + StructureElement structureElement = null; - structureElementCommand = new StructureElementCommand(, Type.DISCIPLINE, null, ", null, "description"); + structureElementCommand = new StructureElementCommand(null, Type.DISCIPLINE, null, "Ca", null, "description"); structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand); + structureElementCommandUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommand); structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand); ITUtilStructures.assertExists(Type.DISCIPLINE, "Ca", Boolean.FALSE); ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "Ca", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE); // create - createdStructureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); - structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement); - - ITUtilStructures.assertExists(Type.DISCIPLINE, "Ca", Boolean.FALSE); - ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "Ca", Boolean.TRUE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE); - ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); - - // approve - ITUtilStructures.assertApprove(structureElementCommandConfirm); + structureElement = ITUtilStructures.assertCreate(structureElementCommandCreate); + structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement); + structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(structureElement); ITUtilStructures.assertExists(Type.DISCIPLINE, "Ca", Boolean.TRUE); ITUtilStructures.assertIsValidToCreate(Type.DISCIPLINE, "Ca", Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); - ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE); - - structureElementCommandConfirm.setUuid(null); - ITUtilStructures.assertApprove(structureElementCommandConfirm, ITUtil.HTTP_UNPROCESSABLE_ENTITY); - structureElementCommandConfirm.setUuid(UUID.randomUUID()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_NOT_FOUND); - structureElementCommandConfirm.setUuid(createdStructureElement.getUuid()); - ITUtilStructures.assertApprove(structureElementCommandConfirm, HttpURLConnection.HTTP_CONFLICT); + ITUtilStructures.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE); + ITUtilStructures.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE); + ITUtilStructures.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE); + ITUtilStructures.assertCreate(structureElementCommandCreate, HttpURLConnection.HTTP_CONFLICT); } ``` @@ -171,26 +151,23 @@ Note the extensive use of test utility classes (in more detail below) in which a * Http requests (GET) and curl commands (POST, PUT, PATCH, DELETE) corresponding to endpoints in Naming REST API * assert response -##### Examining `createApprove` +##### Examining `create` 1. A GET request is made to Naming to check if Discipline exists 2. A GET request is made to Naming to check if Discipline is valid to create 3. A GET request is made to Naming to validate command to create Discipline -4. A GET request is made to Naming to validate command to approve Discipline -5. A POST request is made to Naming to create Discipline -6. A GET request is made to Naming to check if Discipline exists -7. A GET request is made to Naming to check if Discipline is valid to create -8. A GET request is made to Naming to validate command to create Discipline -9. A GET request is made to Naming to validate command to approve Discipline -10. A POST request is made to Naming to create Discipline -11. A POST request is made to Naming to approve Discipline -12. A GET request is made to Naming to check if Discipline exists -13. A GET request is made to Naming to check if Discipline is valid to create -14. A GET request is made to Naming to validate command to create Discipline -15. A GET request is made to Naming to validate command to approve Discipline - - -* 1, 6, 12 - Request correspond to IStructures method +4. A GET request is made to Naming to validate command to update Discipline +5. A GET request is made to Naming to validate command to delete Discipline +6. A POST request is made to Naming to create Discipline +7. A GET request is made to Naming to check if Discipline exists +8. A GET request is made to Naming to check if Discipline is valid to create +9. A GET request is made to Naming to validate command to create Discipline +10. A GET request is made to Naming to validate command to update Discipline +11. A GET request is made to Naming to validate command to delete Discipline +12. A POST request is made to Naming to create Discipline + + +* 1, 7 - Request correspond to IStructures method ``` @GetMapping( @@ -198,7 +175,7 @@ Note the extensive use of test utility classes (in more detail below) in which a public ResponseEntity<ResponseBoolean> existsStructure( ``` -* 2, 7, 13 - Request correspond to IStructures method +* 2, 8 - Request correspond to IStructures method ``` @GetMapping( @@ -207,7 +184,7 @@ Note the extensive use of test utility classes (in more detail below) in which a public ResponseEntity<ResponseBoolean> isValidToCreateStructure( ``` -* 3, 8, 14 - Request correspond to IStructures method +* 3, 9 - Request correspond to IStructures method ``` @GetMapping( @@ -217,33 +194,33 @@ Note the extensive use of test utility classes (in more detail below) in which a public ResponseEntity<ResponseBooleanList> validateStructuresCreate( ``` -* 4, 9, 15 - Request correspond to IStructures method +* 4, 10 - Request correspond to IStructures method ``` @GetMapping( - value = "/validateApprove", + value = "/validateUpdate", produces = {"application/json"}, consumes = {"application/json"}) - public ResponseEntity<ResponseBooleanList> validateStructuresApprove( + public ResponseEntity<ResponseBooleanList> validateStructuresUpdate( ``` -* 5, 10 - Request correspond to IStructures method +* 5, 11 - Request correspond to IStructures method ``` - @PostMapping( + @GetMapping( + value = "/validateDelete", produces = {"application/json"}, consumes = {"application/json"}) - public ResponseEntity<List<StructureElement>> createStructures( + public ResponseEntity<ResponseBooleanList> validateStructuresDelete( ``` -* 11 - Request correspond to IStructures method +* 6, 12 - Request correspond to IStructures method ``` - @PatchMapping( - value = "/approve", + @PostMapping( produces = {"application/json"}, consumes = {"application/json"}) - public List<StructureElement> approveStructures( + public ResponseEntity<List<StructureElement>> createStructures( ``` ##### Test classes @@ -320,19 +297,15 @@ class NamesIT { @Test void readSearchHistoryDeleted() { - - NameElementCommandCreate nameElementCommandCreate = new NameElementCommandCreate( - subsystem010, deviceTypeFS, - "001", "description"); + NameElementCommandCreate nameElementCommandCreate = new NameElementCommandCreate(subsystem010, deviceTypeFS, "001", "description"); ITUtilNames.assertCreate(nameElementCommandCreate); - ITUtilNames.assertRead("?name=RFQ-010:EMR-FS-005", 1); - ITUtilNames.assertRead("?name=RFQ-010%", 10, -1); - - ITUtilNames.assertRead("?index=00_&page=0&pageSize=3&orderBy=WHEN&isAsc=true", 3); - ITUtilNames.assertRead("?index=00_&page=2&pageSize=3&orderBy=WHEN&isAsc=false", 2); + ITUtilNames.assertRead("?name=RFQ-010:EMR-FS-005", 1); + ITUtilNames.assertRead("?name=RFQ-010%", 10, -1); + ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=true&page=0&pageSize=3", 3); + ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=false&page=2&pageSize=3", 2); ``` ##### Note diff --git a/src/test/resources/data/db/README.txt b/src/test/resources/data/db/README.txt index 0f1359dd..2642ea94 100644 --- a/src/test/resources/data/db/README.txt +++ b/src/test/resources/data/db/README.txt @@ -7,7 +7,7 @@ Content prepared by - integration test class - method NamesIT readSearchHistoryDeleted StructuresSubsystemIT readSearchStatusDeletedChildren -- setting debug point in methods at first statement in try clause +- setting debug point in methods at first statement in read & search section - debug - when test is halted, use database management tool to backup data diff --git a/src/test/resources/data/db/dump-discs_names_namesit.sql b/src/test/resources/data/db/dump-discs_names_namesit.sql index ead8bacd..bc35e385 100644 --- a/src/test/resources/data/db/dump-discs_names_namesit.sql +++ b/src/test/resources/data/db/dump-discs_names_namesit.sql @@ -5,7 +5,7 @@ -- Dumped from database version 9.6.7 -- Dumped by pg_dump version 9.6.24 --- Started on 2022-09-30 09:25:14 CEST +-- Started on 2024-03-04 17:17:29 CET SET statement_timeout = 0; SET lock_timeout = 0; @@ -283,21 +283,21 @@ ALTER SEQUENCE public.device_id_seq OWNED BY public.device.id; CREATE TABLE public.devicegroup ( id bigint NOT NULL, version integer, - uuid character varying(255), - parent_uuid character varying(255), - name character varying(255), - mnemonic character varying(255), - mnemonic_equivalence character varying(255), - description character varying(255), - status character varying(255), + uuid text NOT NULL, + parent_uuid text NOT NULL, + mnemonic text, + mnemonic_equivalence text, + ordering integer, + description text, + status text, latest boolean NOT NULL, deleted boolean NOT NULL, requested timestamp without time zone, - requested_by character varying(255), - requested_comment character varying(255), + requested_by text, + requested_comment text, processed timestamp without time zone, - processed_by character varying(255), - processed_comment character varying(255) + processed_by text, + processed_comment text ); @@ -375,21 +375,21 @@ ALTER SEQUENCE public.devicerevision_id_seq OWNED BY public.devicerevision.id; CREATE TABLE public.devicetype ( id bigint NOT NULL, version integer, - uuid character varying(255), - parent_uuid character varying(255), - name character varying(255), - mnemonic character varying(255), - mnemonic_equivalence character varying(255), - description character varying(255), - status character varying(255), + uuid text NOT NULL, + parent_uuid text NOT NULL, + mnemonic text, + mnemonic_equivalence text, + ordering integer, + description text, + status text, latest boolean NOT NULL, deleted boolean NOT NULL, requested timestamp without time zone, - requested_by character varying(255), - requested_comment character varying(255), + requested_by text, + requested_comment text, processed timestamp without time zone, - processed_by character varying(255), - processed_comment character varying(255) + processed_by text, + processed_comment text ); @@ -423,20 +423,20 @@ ALTER SEQUENCE public.devicetype_id_seq OWNED BY public.devicetype.id; CREATE TABLE public.discipline ( id bigint NOT NULL, version integer, - uuid character varying(255), - name character varying(255), - mnemonic character varying(255), - mnemonic_equivalence character varying(255), - description character varying(255), - status character varying(255), + uuid text NOT NULL, + mnemonic text, + mnemonic_equivalence text, + ordering integer, + description text, + status text, latest boolean NOT NULL, deleted boolean NOT NULL, requested timestamp without time zone, - requested_by character varying(255), - requested_comment character varying(255), + requested_by text, + requested_comment text, processed timestamp without time zone, - processed_by character varying(255), - processed_comment character varying(255) + processed_by text, + processed_comment text ); @@ -470,24 +470,24 @@ ALTER SEQUENCE public.discipline_id_seq OWNED BY public.discipline.id; CREATE TABLE public.name ( id bigint NOT NULL, version integer, - uuid character varying(255), - systemgroup_uuid character varying(255), - system_uuid character varying(255), - subsystem_uuid character varying(255), - devicetype_uuid character varying(255), - instance_index character varying(255), - convention_name character varying(255), - convention_name_equivalence character varying(255), - description character varying(255), - status character varying(255), + uuid text NOT NULL, + systemgroup_uuid text, + system_uuid text, + subsystem_uuid text, + devicetype_uuid text, + instance_index text, + convention_name text, + convention_name_equivalence text, + description text, + status text, latest boolean NOT NULL, deleted boolean NOT NULL, requested timestamp without time zone, - requested_by character varying(255), - requested_comment character varying(255), + requested_by text, + requested_comment text, processed timestamp without time zone, - processed_by character varying(255), - processed_comment character varying(255) + processed_by text, + processed_comment text ); @@ -603,21 +603,21 @@ ALTER SEQUENCE public.namepartrevision_id_seq OWNED BY public.namepartrevision.i CREATE TABLE public.subsystem ( id bigint NOT NULL, version integer, - uuid character varying(255), - parent_uuid character varying(255), - name character varying(255), - mnemonic character varying(255), - mnemonic_equivalence character varying(255), - description character varying(255), - status character varying(255), + uuid text NOT NULL, + parent_uuid text NOT NULL, + mnemonic text, + mnemonic_equivalence text, + ordering integer, + description text, + status text, latest boolean NOT NULL, deleted boolean NOT NULL, requested timestamp without time zone, - requested_by character varying(255), - requested_comment character varying(255), + requested_by text, + requested_comment text, processed timestamp without time zone, - processed_by character varying(255), - processed_comment character varying(255) + processed_by text, + processed_comment text ); @@ -651,21 +651,21 @@ ALTER SEQUENCE public.subsystem_id_seq OWNED BY public.subsystem.id; CREATE TABLE public.system ( id bigint NOT NULL, version integer, - uuid character varying(255), - parent_uuid character varying(255), - name character varying(255), - mnemonic character varying(255), - mnemonic_equivalence character varying(255), - description character varying(255), - status character varying(255), + uuid text NOT NULL, + parent_uuid text NOT NULL, + mnemonic text, + mnemonic_equivalence text, + ordering integer, + description text, + status text, latest boolean NOT NULL, deleted boolean NOT NULL, requested timestamp without time zone, - requested_by character varying(255), - requested_comment character varying(255), + requested_by text, + requested_comment text, processed timestamp without time zone, - processed_by character varying(255), - processed_comment character varying(255) + processed_by text, + processed_comment text ); @@ -699,20 +699,20 @@ ALTER SEQUENCE public.system_id_seq OWNED BY public.system.id; CREATE TABLE public.systemgroup ( id bigint NOT NULL, version integer, - uuid character varying(255), - name character varying(255), - mnemonic character varying(255), - mnemonic_equivalence character varying(255), - description character varying(255), - status character varying(255), + uuid text NOT NULL, + mnemonic text, + mnemonic_equivalence text, + ordering integer, + description text, + status text, latest boolean NOT NULL, deleted boolean NOT NULL, requested timestamp without time zone, - requested_by character varying(255), - requested_comment character varying(255), + requested_by text, + requested_comment text, processed timestamp without time zone, - processed_by character varying(255), - processed_comment character varying(255) + processed_by text, + processed_comment text ); @@ -964,8 +964,8 @@ SELECT pg_catalog.setval('public.device_id_seq', 1, false); -- Data for Name: devicegroup; Type: TABLE DATA; Schema: public; Owner: - -- -COPY public.devicegroup (id, version, uuid, parent_uuid, name, mnemonic, mnemonic_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; -1 1 7e036d2e-0f81-469a-91e3-79725e9db70e aa1aaa31-1463-490f-a173-4006ceea953c Control \N \N empty APPROVED t f 2022-09-30 07:11:27.894 test who These names are needed now, so I am approving, but please add a description to these later. 2022-09-30 07:11:27.979 test who These names are needed now, so I am approving, but please add a description to these later. +COPY public.devicegroup (id, version, uuid, parent_uuid, mnemonic, mnemonic_equivalence, ordering, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +1 0 d64e3a84-1224-4352-af0a-e7d2b512aa94 5c27876e-8cb8-4576-b918-c984748cf996 \N \N \N Control APPROVED t f \N \N \N 2024-03-04 16:14:51.173 test who \N \. @@ -1003,10 +1003,10 @@ SELECT pg_catalog.setval('public.devicerevision_id_seq', 1, false); -- Data for Name: devicetype; Type: TABLE DATA; Schema: public; Owner: - -- -COPY public.devicetype (id, version, uuid, parent_uuid, name, mnemonic, mnemonic_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; -1 1 ac201308-1f64-459c-bc39-afa5ae1d6889 7e036d2e-0f81-469a-91e3-79725e9db70e Flow Switch FS FS empty APPROVED t f 2022-09-30 07:11:28.073 test who Approve names added from misc device group 2022-09-30 07:11:28.169 test who Approve names added from misc device group -2 1 5deb551f-87ec-43a3-8116-eb6692767012 7e036d2e-0f81-469a-91e3-79725e9db70e RF Antenna RFA RFA empty APPROVED t f 2022-09-30 07:11:28.267 test who Approve names added from misc device group 2022-09-30 07:11:28.35 test who Approve names added from misc device group -3 1 195eb50f-cdac-44c9-bf2e-c7cb3d89bcb1 7e036d2e-0f81-469a-91e3-79725e9db70e Temperature Transmitter TT TT empty APPROVED t f 2022-09-30 07:11:28.446 test who Approve names added from misc device group 2022-09-30 07:11:28.513 test who Approve names added from misc device group +COPY public.devicetype (id, version, uuid, parent_uuid, mnemonic, mnemonic_equivalence, ordering, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +1 0 e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d d64e3a84-1224-4352-af0a-e7d2b512aa94 FS FS \N Flow Switch APPROVED t f \N \N \N 2024-03-04 16:14:51.264 test who \N +2 0 f91e2bef-c50c-45b9-8b51-051872993313 d64e3a84-1224-4352-af0a-e7d2b512aa94 RFA RFA \N RF Antenna APPROVED t f \N \N \N 2024-03-04 16:14:51.264 test who \N +3 0 fe0bce90-46fc-4d78-b47b-6679e29235bc d64e3a84-1224-4352-af0a-e7d2b512aa94 TT TT \N Temperature Transmitter APPROVED t f \N \N \N 2024-03-04 16:14:51.264 test who \N \. @@ -1025,8 +1025,8 @@ SELECT pg_catalog.setval('public.devicetype_id_seq', 3, true); -- Data for Name: discipline; Type: TABLE DATA; Schema: public; Owner: - -- -COPY public.discipline (id, version, uuid, name, mnemonic, mnemonic_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; -1 1 aa1aaa31-1463-490f-a173-4006ceea953c Electromagnetic Resonators EMR EMR empty APPROVED t f 2022-09-30 07:11:27.769 test who empty 2022-09-30 07:11:27.828 test who empty +COPY public.discipline (id, version, uuid, mnemonic, mnemonic_equivalence, ordering, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +1 0 5c27876e-8cb8-4576-b918-c984748cf996 EMR EMR \N Electromagnetic Resonators APPROVED t f \N \N \N 2024-03-04 16:14:51.124 test who \N \. @@ -1046,23 +1046,23 @@ SELECT pg_catalog.setval('public.discipline_id_seq', 1, true); -- COPY public.name (id, version, uuid, systemgroup_uuid, system_uuid, subsystem_uuid, devicetype_uuid, instance_index, convention_name, convention_name_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; -1 0 4c8fcc43-e7f9-4f43-9be9-06e1873f1e9a 0b1fbe52-b581-4bdf-8cfc-6c975882262e \N \N \N \N Acc ACC System structure only APPROVED t f 2022-09-30 07:11:26.957 test who \N \N \N \N -2 0 976d0e3b-9353-46cf-9550-a1949296c22f \N 91eafa70-a0b4-4fa7-889a-0812d0a3ac04 \N \N \N RFQ RFQ System structure only APPROVED t f 2022-09-30 07:11:27.172 test who \N \N \N \N -3 0 60d7c1dc-f6e3-4819-8278-a091f5779ad5 \N \N 420f81b4-cdd6-4a3f-a528-135c2a2eb3ed \N \N RFQ-010PRL RFQ-10PR1 System structure only APPROVED t f 2022-09-30 07:11:27.361 test who \N \N \N \N -4 0 c87a620a-d169-4263-8c0b-f5b41695446c \N \N d85f970f-be06-445a-8b48-f896be710f67 \N \N RFQ-010 RFQ-10 System structure only APPROVED t f 2022-09-30 07:11:27.532 test who \N \N \N \N -5 0 a58f08c7-6961-49ff-9e83-d863746af46b \N \N 66fdb990-7f76-475c-9e8c-c1716af839c3 \N \N RFQ-N1U1 RFQ-N1U1 System structure only APPROVED t f 2022-09-30 07:11:27.67 test who \N \N \N \N -7 0 61f3818d-316e-4593-aed3-1522726b279e \N \N d85f970f-be06-445a-8b48-f896be710f67 ac201308-1f64-459c-bc39-afa5ae1d6889 002 RFQ-010:EMR-FS-002 RFQ-10:EMR-FS-2 description APPROVED t f 2022-09-30 07:11:28.735 test who comment \N \N \N -8 0 8635c489-fd82-4939-8193-066d6f0a8c2a \N \N d85f970f-be06-445a-8b48-f896be710f67 ac201308-1f64-459c-bc39-afa5ae1d6889 003 RFQ-010:EMR-FS-003 RFQ-10:EMR-FS-3 description APPROVED t f 2022-09-30 07:11:28.804 test who comment \N \N \N -9 0 126d3f78-9ed8-4f97-98d3-d7a2f2bd6dd4 \N \N d85f970f-be06-445a-8b48-f896be710f67 ac201308-1f64-459c-bc39-afa5ae1d6889 004 RFQ-010:EMR-FS-004 RFQ-10:EMR-FS-4 description APPROVED t f 2022-09-30 07:11:28.879 test who comment \N \N \N -10 0 7c8ceabb-aed7-4e0d-8503-d8bc38e7d25b \N \N d85f970f-be06-445a-8b48-f896be710f67 ac201308-1f64-459c-bc39-afa5ae1d6889 005 RFQ-010:EMR-FS-005 RFQ-10:EMR-FS-5 description APPROVED t f 2022-09-30 07:11:28.934 test who comment \N \N \N -11 0 18170b1a-dd95-4aa5-a05c-555fbbab8a75 \N \N d85f970f-be06-445a-8b48-f896be710f67 ac201308-1f64-459c-bc39-afa5ae1d6889 006 RFQ-010:EMR-FS-006 RFQ-10:EMR-FS-6 description APPROVED t f 2022-09-30 07:11:28.992 test who comment \N \N \N -6 1 4c92c9e9-5a34-48e4-a2c3-ca284682f57c \N \N d85f970f-be06-445a-8b48-f896be710f67 ac201308-1f64-459c-bc39-afa5ae1d6889 001 RFQ-010:EMR-FS-001 RFQ-10:EMR-FS-1 description APPROVED f f 2022-09-30 07:11:28.645 test who comment \N \N \N -15 0 4c92c9e9-5a34-48e4-a2c3-ca284682f57c \N \N d85f970f-be06-445a-8b48-f896be710f67 ac201308-1f64-459c-bc39-afa5ae1d6889 001 RFQ-010:EMR-FS-001 RFQ-10:EMR-FS-1 updated description again APPROVED t f 2022-09-30 07:11:29.223 test who updated comment again \N \N \N -14 1 4c92c9e9-5a34-48e4-a2c3-ca284682f57c \N \N d85f970f-be06-445a-8b48-f896be710f67 ac201308-1f64-459c-bc39-afa5ae1d6889 001 RFQ-010:EMR-FS-001 RFQ-10:EMR-FS-1 updated description APPROVED f f 2022-09-30 07:11:29.167 test who updated comment \N \N \N -16 0 fd22b033-0fad-48a4-afa1-65cfd1098464 \N \N d85f970f-be06-445a-8b48-f896be710f67 ac201308-1f64-459c-bc39-afa5ae1d6889 007 RFQ-010:EMR-FS-007 RFQ-10:EMR-FS-7 description APPROVED t t 2022-09-30 07:11:29.271 test who comment \N \N \N -12 1 fd22b033-0fad-48a4-afa1-65cfd1098464 \N \N d85f970f-be06-445a-8b48-f896be710f67 ac201308-1f64-459c-bc39-afa5ae1d6889 007 RFQ-010:EMR-FS-007 RFQ-10:EMR-FS-7 description APPROVED f f 2022-09-30 07:11:29.05 test who comment \N \N \N -17 0 3743a2a8-3a8f-41b3-aa9b-352ea722f46a \N \N d85f970f-be06-445a-8b48-f896be710f67 ac201308-1f64-459c-bc39-afa5ae1d6889 008 RFQ-010:EMR-FS-008 RFQ-10:EMR-FS-8 description APPROVED t t 2022-09-30 07:11:29.315 test who comment \N \N \N -13 1 3743a2a8-3a8f-41b3-aa9b-352ea722f46a \N \N d85f970f-be06-445a-8b48-f896be710f67 ac201308-1f64-459c-bc39-afa5ae1d6889 008 RFQ-010:EMR-FS-008 RFQ-10:EMR-FS-8 description APPROVED f f 2022-09-30 07:11:29.107 test who comment \N \N \N +1 0 b6177d1f-fdc3-47f0-b35e-3e61ea8760be 9aae66a8-ac73-4c0c-b252-430249882403 \N \N \N \N Acc ACC System structure only APPROVED t f 2024-03-04 16:14:50.452 test who \N \N \N \N +2 0 bce1e479-115e-4aa4-a641-e634af3a4f71 \N e5c2b06e-7f3e-4adf-9c2d-c20c0f873ba9 \N \N \N RFQ RFQ System structure only APPROVED t f 2024-03-04 16:14:50.871 test who \N \N \N \N +3 0 e317123a-a00f-4009-873e-17212267ed20 \N \N de2b46ae-2459-4da4-92e1-d0dcff67e96f \N \N RFQ-010PRL RFQ-10PR1 System structure only APPROVED t f 2024-03-04 16:14:51.015 test who \N \N \N \N +4 0 fdd97e12-7591-483b-ae54-a3fd83c5f86b \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f \N \N RFQ-010 RFQ-10 System structure only APPROVED t f 2024-03-04 16:14:51.015 test who \N \N \N \N +5 0 1a0924f4-9b30-4064-89cd-7ce2c547595f \N \N 3c36d87f-3d2c-4a88-87f1-77614e20aa89 \N \N RFQ-N1U1 RFQ-N1U1 System structure only APPROVED t f 2024-03-04 16:14:51.015 test who \N \N \N \N +7 0 0a6ac5c8-e177-4630-85a5-0b20c1eb1c08 \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d 002 RFQ-010:EMR-FS-002 RFQ-10:EMR-FS-2 description APPROVED t f 2024-03-04 16:14:51.512 test who \N \N \N \N +8 0 7a39848e-7075-4327-8402-e3c80e92f8f6 \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d 003 RFQ-010:EMR-FS-003 RFQ-10:EMR-FS-3 description APPROVED t f 2024-03-04 16:14:51.512 test who \N \N \N \N +9 0 311f25dd-8ab3-4482-9d83-0c00c0f09858 \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d 004 RFQ-010:EMR-FS-004 RFQ-10:EMR-FS-4 description APPROVED t f 2024-03-04 16:14:51.512 test who \N \N \N \N +10 0 0b70edf6-e7e9-40d9-8983-01eb03b99076 \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d 005 RFQ-010:EMR-FS-005 RFQ-10:EMR-FS-5 description APPROVED t f 2024-03-04 16:14:51.512 test who \N \N \N \N +11 0 4d40d460-8de3-4525-80e7-1ca28e984240 \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d 006 RFQ-010:EMR-FS-006 RFQ-10:EMR-FS-6 description APPROVED t f 2024-03-04 16:14:51.512 test who \N \N \N \N +6 1 cb709c37-a1a2-4188-9acb-4692d603ad81 \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d 001 RFQ-010:EMR-FS-001 RFQ-10:EMR-FS-1 description APPROVED f f 2024-03-04 16:14:51.512 test who \N \N \N \N +15 0 cb709c37-a1a2-4188-9acb-4692d603ad81 \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d 001 RFQ-010:EMR-FS-001 RFQ-10:EMR-FS-1 updated description again APPROVED t f 2024-03-04 16:14:51.628 test who \N \N \N \N +14 1 cb709c37-a1a2-4188-9acb-4692d603ad81 \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d 001 RFQ-010:EMR-FS-001 RFQ-10:EMR-FS-1 updated description APPROVED f f 2024-03-04 16:14:51.584 test who \N \N \N \N +16 0 57291cdc-41e9-4c9f-aeeb-520692ac3a57 \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d 007 RFQ-010:EMR-FS-007 RFQ-10:EMR-FS-7 description APPROVED t t 2024-03-04 16:14:51.66 test who \N \N \N \N +12 1 57291cdc-41e9-4c9f-aeeb-520692ac3a57 \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d 007 RFQ-010:EMR-FS-007 RFQ-10:EMR-FS-7 description APPROVED f f 2024-03-04 16:14:51.512 test who \N \N \N \N +17 0 22f8625f-7135-4503-8413-d3792c6a1215 \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d 008 RFQ-010:EMR-FS-008 RFQ-10:EMR-FS-8 description APPROVED t t 2024-03-04 16:14:51.683 test who \N \N \N \N +13 1 22f8625f-7135-4503-8413-d3792c6a1215 \N \N 40743524-3a06-4d8c-be81-5cfe8419e05f e5b662f9-ca7e-4fb3-b083-30b0e6a38a9d 008 RFQ-010:EMR-FS-008 RFQ-10:EMR-FS-8 description APPROVED f f 2024-03-04 16:14:51.512 test who \N \N \N \N \. @@ -1119,10 +1119,10 @@ SELECT pg_catalog.setval('public.namepartrevision_id_seq', 1, false); -- Data for Name: subsystem; Type: TABLE DATA; Schema: public; Owner: - -- -COPY public.subsystem (id, version, uuid, parent_uuid, name, mnemonic, mnemonic_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; -1 1 420f81b4-cdd6-4a3f-a528-135c2a2eb3ed 91eafa70-a0b4-4fa7-889a-0812d0a3ac04 01 Phase Reference Line 010PRL 10PR1 empty APPROVED t f 2022-09-30 07:11:27.282 test who Approved by Daniel Piso 2022-09-30 07:11:27.361 test who Approved by Daniel Piso -2 1 d85f970f-be06-445a-8b48-f896be710f67 91eafa70-a0b4-4fa7-889a-0812d0a3ac04 RFQ-010 010 10 empty APPROVED t f 2022-09-30 07:11:27.452 test who Approved by Daniel Piso 2022-09-30 07:11:27.532 test who Approved by Daniel Piso -3 1 66fdb990-7f76-475c-9e8c-c1716af839c3 91eafa70-a0b4-4fa7-889a-0812d0a3ac04 Power switch board 01 N1U1 N1U1 Electrical power cabinets APPROVED t f 2022-09-30 07:11:27.612 test who Approved by Daniel Piso 2022-09-30 07:11:27.67 test who Approved by Daniel Piso +COPY public.subsystem (id, version, uuid, parent_uuid, mnemonic, mnemonic_equivalence, ordering, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +1 0 de2b46ae-2459-4da4-92e1-d0dcff67e96f e5c2b06e-7f3e-4adf-9c2d-c20c0f873ba9 010PRL 10PR1 \N 01 Phase Reference Line APPROVED t f \N \N \N 2024-03-04 16:14:51.015 test who \N +2 0 40743524-3a06-4d8c-be81-5cfe8419e05f e5c2b06e-7f3e-4adf-9c2d-c20c0f873ba9 010 10 \N RFQ-010 APPROVED t f \N \N \N 2024-03-04 16:14:51.015 test who \N +3 0 3c36d87f-3d2c-4a88-87f1-77614e20aa89 e5c2b06e-7f3e-4adf-9c2d-c20c0f873ba9 N1U1 N1U1 \N Power switch board 01. Electrical power cabinets APPROVED t f \N \N \N 2024-03-04 16:14:51.015 test who \N \. @@ -1141,8 +1141,8 @@ SELECT pg_catalog.setval('public.subsystem_id_seq', 3, true); -- Data for Name: system; Type: TABLE DATA; Schema: public; Owner: - -- -COPY public.system (id, version, uuid, parent_uuid, name, mnemonic, mnemonic_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; -1 1 91eafa70-a0b4-4fa7-889a-0812d0a3ac04 0b1fbe52-b581-4bdf-8cfc-6c975882262e Radio Frequency Quadrupole RFQ RFQ empty APPROVED t f 2022-09-30 07:11:27.109 test who empty 2022-09-30 07:11:27.172 test who empty +COPY public.system (id, version, uuid, parent_uuid, mnemonic, mnemonic_equivalence, ordering, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +1 0 e5c2b06e-7f3e-4adf-9c2d-c20c0f873ba9 9aae66a8-ac73-4c0c-b252-430249882403 RFQ RFQ \N Radio Frequency Quadrupole APPROVED t f \N \N \N 2024-03-04 16:14:50.871 test who \N \. @@ -1161,8 +1161,8 @@ SELECT pg_catalog.setval('public.system_id_seq', 1, true); -- Data for Name: systemgroup; Type: TABLE DATA; Schema: public; Owner: - -- -COPY public.systemgroup (id, version, uuid, name, mnemonic, mnemonic_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; -1 1 0b1fbe52-b581-4bdf-8cfc-6c975882262e Accelerator Acc ACC The ESS Linear Accelerator APPROVED t f 2022-09-30 07:11:26.775 test who approved by alfio 2022-09-30 07:11:26.957 test who approved by alfio +COPY public.systemgroup (id, version, uuid, mnemonic, mnemonic_equivalence, ordering, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +1 0 9aae66a8-ac73-4c0c-b252-430249882403 Acc ACC \N Accelerator. The ESS Linear Accelerator APPROVED t f \N \N \N 2024-03-04 16:14:50.452 test who \N \. @@ -1268,7 +1268,7 @@ ALTER TABLE ONLY public.discipline -- --- TOC entry 2190 (class 2606 OID 16620) +-- TOC entry 2187 (class 2606 OID 16620) -- Name: name name_pk; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -1516,59 +1516,59 @@ CREATE INDEX name_deleted_idx ON public.name USING btree (deleted); -- --- TOC entry 2183 (class 1259 OID 16571) --- Name: name_id_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2183 (class 1259 OID 16575) +-- Name: name_devicetype_uuid_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_id_idx ON public.name USING btree (id); +CREATE INDEX name_devicetype_uuid_idx ON public.name USING btree (devicetype_uuid); -- --- TOC entry 2184 (class 1259 OID 16585) --- Name: name_latest_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2184 (class 1259 OID 16571) +-- Name: name_id_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_latest_idx ON public.name USING btree (latest); +CREATE INDEX name_id_idx ON public.name USING btree (id); -- --- TOC entry 2185 (class 1259 OID 16575) --- Name: name_namepartrevision_devicetype_uuid_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2185 (class 1259 OID 16585) +-- Name: name_latest_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_namepartrevision_devicetype_uuid_idx ON public.name USING btree (devicetype_uuid); +CREATE INDEX name_latest_idx ON public.name USING btree (latest); -- --- TOC entry 2186 (class 1259 OID 16574) --- Name: name_namepartrevision_subsystem_uuid_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2188 (class 1259 OID 16577) +-- Name: name_status_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_namepartrevision_subsystem_uuid_idx ON public.name USING btree (subsystem_uuid); +CREATE INDEX name_status_idx ON public.name USING btree (status); -- --- TOC entry 2187 (class 1259 OID 16573) --- Name: name_namepartrevision_system_uuid_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2189 (class 1259 OID 16574) +-- Name: name_subsystem_uuid_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_namepartrevision_system_uuid_idx ON public.name USING btree (system_uuid); +CREATE INDEX name_subsystem_uuid_idx ON public.name USING btree (subsystem_uuid); -- --- TOC entry 2188 (class 1259 OID 16572) --- Name: name_namepartrevision_systemgroup_uuid_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2190 (class 1259 OID 16573) +-- Name: name_system_uuid_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_namepartrevision_systemgroup_uuid_idx ON public.name USING btree (systemgroup_uuid); +CREATE INDEX name_system_uuid_idx ON public.name USING btree (system_uuid); -- --- TOC entry 2191 (class 1259 OID 16577) --- Name: name_status_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2191 (class 1259 OID 16572) +-- Name: name_systemgroup_uuid_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_status_idx ON public.name USING btree (status); +CREATE INDEX name_systemgroup_uuid_idx ON public.name USING btree (systemgroup_uuid); -- @@ -1811,7 +1811,7 @@ ALTER TABLE ONLY public.namepartrevision ADD CONSTRAINT fk_lufxqy46l9eiq55d445rbukag FOREIGN KEY (parent_id) REFERENCES public.namepart(id); --- Completed on 2022-09-30 09:25:14 CEST +-- Completed on 2024-03-04 17:17:29 CET -- -- PostgreSQL database dump complete diff --git a/src/test/resources/data/db/dump-discs_names_subsystemit.sql b/src/test/resources/data/db/dump-discs_names_subsystemit.sql index b8c8576e..f6d43329 100644 --- a/src/test/resources/data/db/dump-discs_names_subsystemit.sql +++ b/src/test/resources/data/db/dump-discs_names_subsystemit.sql @@ -5,7 +5,7 @@ -- Dumped from database version 9.6.7 -- Dumped by pg_dump version 9.6.24 --- Started on 2024-01-02 15:16:38 CET +-- Started on 2024-03-04 17:19:26 CET SET statement_timeout = 0; SET lock_timeout = 0; @@ -283,11 +283,11 @@ ALTER SEQUENCE public.device_id_seq OWNED BY public.device.id; CREATE TABLE public.devicegroup ( id bigint NOT NULL, version integer, - uuid text, - parent_uuid text, - name text, + uuid text NOT NULL, + parent_uuid text NOT NULL, mnemonic text, mnemonic_equivalence text, + ordering integer, description text, status text, latest boolean NOT NULL, @@ -375,11 +375,11 @@ ALTER SEQUENCE public.devicerevision_id_seq OWNED BY public.devicerevision.id; CREATE TABLE public.devicetype ( id bigint NOT NULL, version integer, - uuid text, - parent_uuid text, - name text, + uuid text NOT NULL, + parent_uuid text NOT NULL, mnemonic text, mnemonic_equivalence text, + ordering integer, description text, status text, latest boolean NOT NULL, @@ -423,10 +423,10 @@ ALTER SEQUENCE public.devicetype_id_seq OWNED BY public.devicetype.id; CREATE TABLE public.discipline ( id bigint NOT NULL, version integer, - uuid text, - name text, + uuid text NOT NULL, mnemonic text, mnemonic_equivalence text, + ordering integer, description text, status text, latest boolean NOT NULL, @@ -470,7 +470,7 @@ ALTER SEQUENCE public.discipline_id_seq OWNED BY public.discipline.id; CREATE TABLE public.name ( id bigint NOT NULL, version integer, - uuid text, + uuid text NOT NULL, systemgroup_uuid text, system_uuid text, subsystem_uuid text, @@ -603,11 +603,11 @@ ALTER SEQUENCE public.namepartrevision_id_seq OWNED BY public.namepartrevision.i CREATE TABLE public.subsystem ( id bigint NOT NULL, version integer, - uuid text, - parent_uuid text, - name text, + uuid text NOT NULL, + parent_uuid text NOT NULL, mnemonic text, mnemonic_equivalence text, + ordering integer, description text, status text, latest boolean NOT NULL, @@ -651,11 +651,11 @@ ALTER SEQUENCE public.subsystem_id_seq OWNED BY public.subsystem.id; CREATE TABLE public.system ( id bigint NOT NULL, version integer, - uuid text, - parent_uuid text, - name text, + uuid text NOT NULL, + parent_uuid text NOT NULL, mnemonic text, mnemonic_equivalence text, + ordering integer, description text, status text, latest boolean NOT NULL, @@ -699,10 +699,10 @@ ALTER SEQUENCE public.system_id_seq OWNED BY public.system.id; CREATE TABLE public.systemgroup ( id bigint NOT NULL, version integer, - uuid text, - name text, + uuid text NOT NULL, mnemonic text, mnemonic_equivalence text, + ordering integer, description text, status text, latest boolean NOT NULL, @@ -964,7 +964,7 @@ SELECT pg_catalog.setval('public.device_id_seq', 1, false); -- Data for Name: devicegroup; Type: TABLE DATA; Schema: public; Owner: - -- -COPY public.devicegroup (id, version, uuid, parent_uuid, name, mnemonic, mnemonic_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +COPY public.devicegroup (id, version, uuid, parent_uuid, mnemonic, mnemonic_equivalence, ordering, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; \. @@ -1002,7 +1002,7 @@ SELECT pg_catalog.setval('public.devicerevision_id_seq', 1, false); -- Data for Name: devicetype; Type: TABLE DATA; Schema: public; Owner: - -- -COPY public.devicetype (id, version, uuid, parent_uuid, name, mnemonic, mnemonic_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +COPY public.devicetype (id, version, uuid, parent_uuid, mnemonic, mnemonic_equivalence, ordering, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; \. @@ -1021,7 +1021,7 @@ SELECT pg_catalog.setval('public.devicetype_id_seq', 1, false); -- Data for Name: discipline; Type: TABLE DATA; Schema: public; Owner: - -- -COPY public.discipline (id, version, uuid, name, mnemonic, mnemonic_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +COPY public.discipline (id, version, uuid, mnemonic, mnemonic_equivalence, ordering, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; \. @@ -1041,6 +1041,53 @@ SELECT pg_catalog.setval('public.discipline_id_seq', 1, false); -- COPY public.name (id, version, uuid, systemgroup_uuid, system_uuid, subsystem_uuid, devicetype_uuid, instance_index, convention_name, convention_name_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +1 0 aa42ed64-4dd6-40c5-80fc-4b8381da414e b3f5b914-9607-4df8-a701-553f4d238e1e \N \N \N \N Sg SG System structure only APPROVED t f 2024-03-04 16:18:38.976 test who \N \N \N \N +2 0 33db7396-ed60-4368-bb6d-481dca8cfee4 \N 25a231ac-cc79-43f0-a8aa-00d34b6262a8 \N \N \N Sys SYS System structure only APPROVED t f 2024-03-04 16:18:39.52 test who \N \N \N \N +3 0 c80cc24f-bdd9-4469-90fb-c28469ca301c \N \N 0ccfe162-7bf2-46f0-b670-910e9c7a0f99 \N \N Sys-AA1 SYS-AA1 System structure only APPROVED t f 2024-03-04 16:18:39.858 test who \N \N \N \N +4 0 34fdad07-44c3-4d6e-9821-ea78e9d9950a \N \N 4fe32787-9e4e-48df-b2d4-413b6310ddd8 \N \N Sys-AA2 SYS-AA2 System structure only APPROVED t f 2024-03-04 16:18:39.858 test who \N \N \N \N +5 0 eb39c613-f8cc-4e35-84be-a71eb6c4e371 \N \N 921fd974-b02e-4535-9fa4-832e1f413a2f \N \N Sys-AA3 SYS-AA3 System structure only APPROVED t f 2024-03-04 16:18:39.858 test who \N \N \N \N +6 0 f6cd08cb-8383-404d-bf24-72280e2fdfb2 \N \N d8c8a289-3b50-4d45-bff0-0ba6933235fd \N \N Sys-AA4 SYS-AA4 System structure only APPROVED t f 2024-03-04 16:18:39.858 test who \N \N \N \N +7 0 4d8db96a-9a42-4901-9e56-5ae9f915a9fd \N \N ca0d26d2-fcf0-4844-9509-9c60835857e1 \N \N Sys-AA5 SYS-AA5 System structure only APPROVED t f 2024-03-04 16:18:39.858 test who \N \N \N \N +8 0 8bdd044f-17bd-4846-ba10-49c5c4bb3418 \N \N ed15e5ff-0641-4185-9fb0-f43702a14350 \N \N Sys-AB1 SYS-AB1 System structure only APPROVED t f 2024-03-04 16:18:39.95 test who \N \N \N \N +9 0 067b4dd9-fd59-4786-8b65-58bb0177e3ce \N \N 8e158f4b-0ea5-4ca9-87ae-def88d72a647 \N \N Sys-AB2 SYS-AB2 System structure only APPROVED t f 2024-03-04 16:18:39.95 test who \N \N \N \N +10 0 b47a43f0-8991-4fc4-a6d1-0296578e1bff \N \N b8e9bbfc-e3c4-4eef-883e-0e2d0709ec03 \N \N Sys-AB3 SYS-AB3 System structure only APPROVED t f 2024-03-04 16:18:39.95 test who \N \N \N \N +11 0 d84cce5c-a687-473f-b4bc-7512d4ac820f \N \N d13ea971-d722-45ea-bbab-96c5e221a344 \N \N Sys-AB4 SYS-AB4 System structure only APPROVED t f 2024-03-04 16:18:39.95 test who \N \N \N \N +12 0 23937a8b-39a0-4193-a436-df45ad9cef88 \N \N 63d701ba-555b-41fd-9810-9d87454aa1fa \N \N Sys-AB5 SYS-AB5 System structure only APPROVED t f 2024-03-04 16:18:39.95 test who \N \N \N \N +18 0 809eec71-dd7c-4a26-a50c-85bf9c1ec6d3 \N \N 9659c6e8-7d37-47d8-aaf6-eeb7ada222d1 \N \N Sys-AC1 SYS-AC1 System structure only APPROVED t t 2024-03-04 16:18:40.261 test who \N \N \N \N +13 1 809eec71-dd7c-4a26-a50c-85bf9c1ec6d3 \N \N 9659c6e8-7d37-47d8-aaf6-eeb7ada222d1 \N \N Sys-AC1 SYS-AC1 System structure only APPROVED f f 2024-03-04 16:18:40.157 test who \N \N \N \N +19 0 e0bb293d-a1a4-4146-97ba-c5ca6e69cc48 \N \N 0db3c127-d8f7-48ea-8af1-6433928f928b \N \N Sys-AC2 SYS-AC2 System structure only APPROVED t t 2024-03-04 16:18:40.272 test who \N \N \N \N +14 1 e0bb293d-a1a4-4146-97ba-c5ca6e69cc48 \N \N 0db3c127-d8f7-48ea-8af1-6433928f928b \N \N Sys-AC2 SYS-AC2 System structure only APPROVED f f 2024-03-04 16:18:40.157 test who \N \N \N \N +20 0 4b013f5e-e25c-4936-8a37-e1c0ba0fb7b8 \N \N 5d1164af-e155-433e-a8e6-1a60cbc315b8 \N \N Sys-AC3 SYS-AC3 System structure only APPROVED t t 2024-03-04 16:18:40.282 test who \N \N \N \N +15 1 4b013f5e-e25c-4936-8a37-e1c0ba0fb7b8 \N \N 5d1164af-e155-433e-a8e6-1a60cbc315b8 \N \N Sys-AC3 SYS-AC3 System structure only APPROVED f f 2024-03-04 16:18:40.157 test who \N \N \N \N +21 0 665f4a7d-c678-4e01-9fce-3b3f5709a384 \N \N 2542b027-513b-40bb-9be8-74fcb400459e \N \N Sys-AC4 SYS-AC4 System structure only APPROVED t t 2024-03-04 16:18:40.291 test who \N \N \N \N +16 1 665f4a7d-c678-4e01-9fce-3b3f5709a384 \N \N 2542b027-513b-40bb-9be8-74fcb400459e \N \N Sys-AC4 SYS-AC4 System structure only APPROVED f f 2024-03-04 16:18:40.157 test who \N \N \N \N +22 0 96f51bac-74cf-49ca-a73f-9d4d411e2a1d \N \N e1e4b087-c3d5-409f-9a5f-a9e9f84962fb \N \N Sys-AC5 SYS-AC5 System structure only APPROVED t t 2024-03-04 16:18:40.3 test who \N \N \N \N +17 1 96f51bac-74cf-49ca-a73f-9d4d411e2a1d \N \N e1e4b087-c3d5-409f-9a5f-a9e9f84962fb \N \N Sys-AC5 SYS-AC5 System structure only APPROVED f f 2024-03-04 16:18:40.157 test who \N \N \N \N +28 0 91476425-714e-4ed4-bc93-d6a1087e4e61 \N \N 2cb15615-72a4-48af-aa88-57fe20caaebe \N \N Sys-AD1 SYS-AD1 System structure only APPROVED t t 2024-03-04 16:18:40.48 test who \N \N \N \N +23 1 91476425-714e-4ed4-bc93-d6a1087e4e61 \N \N 2cb15615-72a4-48af-aa88-57fe20caaebe \N \N Sys-AD1 SYS-AD1 System structure only APPROVED f f 2024-03-04 16:18:40.361 test who \N \N \N \N +29 0 e147bba9-4389-47d5-90d1-45672e947173 \N \N 1c764e48-dbda-4d6a-baf0-013be384dce0 \N \N Sys-AD2 SYS-AD2 System structure only APPROVED t t 2024-03-04 16:18:40.484 test who \N \N \N \N +24 1 e147bba9-4389-47d5-90d1-45672e947173 \N \N 1c764e48-dbda-4d6a-baf0-013be384dce0 \N \N Sys-AD2 SYS-AD2 System structure only APPROVED f f 2024-03-04 16:18:40.361 test who \N \N \N \N +30 0 0bfa9007-1399-418e-94b2-cff5185d09a3 \N \N 700ff3d0-ec0f-41b0-9d0d-dfd4c8091b9d \N \N Sys-AD3 SYS-AD3 System structure only APPROVED t t 2024-03-04 16:18:40.488 test who \N \N \N \N +25 1 0bfa9007-1399-418e-94b2-cff5185d09a3 \N \N 700ff3d0-ec0f-41b0-9d0d-dfd4c8091b9d \N \N Sys-AD3 SYS-AD3 System structure only APPROVED f f 2024-03-04 16:18:40.361 test who \N \N \N \N +31 0 7089a67c-5cad-40bb-8165-9fa7e7aa7eb4 \N \N ab167f84-7c67-4364-a6b7-42405d98cb69 \N \N Sys-AD4 SYS-AD4 System structure only APPROVED t t 2024-03-04 16:18:40.491 test who \N \N \N \N +26 1 7089a67c-5cad-40bb-8165-9fa7e7aa7eb4 \N \N ab167f84-7c67-4364-a6b7-42405d98cb69 \N \N Sys-AD4 SYS-AD4 System structure only APPROVED f f 2024-03-04 16:18:40.361 test who \N \N \N \N +32 0 25b75ada-e6c6-4255-9268-f940adfc1729 \N \N 8f76876a-504e-4402-bd60-6bb4c60d4d29 \N \N Sys-AD5 SYS-AD5 System structure only APPROVED t t 2024-03-04 16:18:40.496 test who \N \N \N \N +27 1 25b75ada-e6c6-4255-9268-f940adfc1729 \N \N 8f76876a-504e-4402-bd60-6bb4c60d4d29 \N \N Sys-AD5 SYS-AD5 System structure only APPROVED f f 2024-03-04 16:18:40.361 test who \N \N \N \N +33 0 dec7ecf7-b8a3-4bcd-a0bf-cce3def865c8 \N \N b8485a11-1c59-4ef5-876b-16a49512d457 \N \N Sys-AE1 SYS-AE1 System structure only APPROVED t f 2024-03-04 16:18:40.556 test who \N \N \N \N +34 0 5644b3da-abfa-45ff-beb6-68c4f87aa237 \N \N 30fbb919-376d-40d2-9bd2-3c9fd7b952da \N \N Sys-AE2 SYS-AE2 System structure only APPROVED t f 2024-03-04 16:18:40.556 test who \N \N \N \N +35 0 aaee4277-8fd0-46fc-b80d-bc87333a506d \N \N 89feee5b-5003-4dc6-a693-d0e2dd92112b \N \N Sys-AE3 SYS-AE3 System structure only APPROVED t f 2024-03-04 16:18:40.556 test who \N \N \N \N +36 0 8813dbcd-0454-45f3-ac5d-24559042218e \N \N f4eaf55f-01bb-4a37-8d61-56f576444dd7 \N \N Sys-AE4 SYS-AE4 System structure only APPROVED t f 2024-03-04 16:18:40.556 test who \N \N \N \N +37 0 1b7f2c10-5504-42cb-aaf4-2aa1230aafd8 \N \N 87932c6c-909e-4165-a75d-2bc10db24415 \N \N Sys-AE5 SYS-AE5 System structure only APPROVED t f 2024-03-04 16:18:40.556 test who \N \N \N \N +43 0 523d31e4-fda3-4830-bb6a-d043b1a8fed6 \N \N 9ce444c8-4dd9-4456-84fa-ff3f60a6dbf3 \N \N Sys-AF1 SYS-AF1 System structure only APPROVED t t 2024-03-04 16:18:41.008 test who \N \N \N \N +38 1 523d31e4-fda3-4830-bb6a-d043b1a8fed6 \N \N 9ce444c8-4dd9-4456-84fa-ff3f60a6dbf3 \N \N Sys-AF1 SYS-AF1 System structure only APPROVED f f 2024-03-04 16:18:40.822 test who \N \N \N \N +44 0 8c59fa83-4f97-4225-86d7-5c7efc73cf75 \N \N 0eb86e59-0afc-4a49-a554-4a449d1cec3d \N \N Sys-AF2 SYS-AF2 System structure only APPROVED t t 2024-03-04 16:18:41.012 test who \N \N \N \N +39 1 8c59fa83-4f97-4225-86d7-5c7efc73cf75 \N \N 0eb86e59-0afc-4a49-a554-4a449d1cec3d \N \N Sys-AF2 SYS-AF2 System structure only APPROVED f f 2024-03-04 16:18:40.822 test who \N \N \N \N +45 0 fe412faa-2226-4bf0-82fb-96ada804a96f \N \N efe208d0-4e11-4c28-b84c-f0d589448ccb \N \N Sys-AF3 SYS-AF3 System structure only APPROVED t t 2024-03-04 16:18:41.016 test who \N \N \N \N +40 1 fe412faa-2226-4bf0-82fb-96ada804a96f \N \N efe208d0-4e11-4c28-b84c-f0d589448ccb \N \N Sys-AF3 SYS-AF3 System structure only APPROVED f f 2024-03-04 16:18:40.822 test who \N \N \N \N +46 0 767d91ec-0979-4a5f-a470-1d1898c83258 \N \N 6746256a-3cfb-4b04-8250-29805a1fa4a4 \N \N Sys-AF4 SYS-AF4 System structure only APPROVED t t 2024-03-04 16:18:41.019 test who \N \N \N \N +41 1 767d91ec-0979-4a5f-a470-1d1898c83258 \N \N 6746256a-3cfb-4b04-8250-29805a1fa4a4 \N \N Sys-AF4 SYS-AF4 System structure only APPROVED f f 2024-03-04 16:18:40.822 test who \N \N \N \N +47 0 c9a66287-5c79-4bb2-98f3-60cb9eb902b9 \N \N d2bac9ef-4a4a-43c4-855a-ba22d1005798 \N \N Sys-AF5 SYS-AF5 System structure only APPROVED t t 2024-03-04 16:18:41.022 test who \N \N \N \N +42 1 c9a66287-5c79-4bb2-98f3-60cb9eb902b9 \N \N d2bac9ef-4a4a-43c4-855a-ba22d1005798 \N \N Sys-AF5 SYS-AF5 System structure only APPROVED f f 2024-03-04 16:18:40.822 test who \N \N \N \N \. @@ -1050,7 +1097,7 @@ COPY public.name (id, version, uuid, systemgroup_uuid, system_uuid, subsystem_uu -- Name: name_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - -- -SELECT pg_catalog.setval('public.name_id_seq', 1, true); +SELECT pg_catalog.setval('public.name_id_seq', 47, true); -- @@ -1097,67 +1144,92 @@ SELECT pg_catalog.setval('public.namepartrevision_id_seq', 1, false); -- Data for Name: subsystem; Type: TABLE DATA; Schema: public; Owner: - -- -COPY public.subsystem (id, version, uuid, parent_uuid, name, mnemonic, mnemonic_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; -1 1 bf198d61-e4c8-4bfb-a782-e5febdca3434 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AA1 AA1 description APPROVED t f 2024-01-02 14:10:10.623 test who comment 2024-01-02 14:10:10.67 test who comment -2 1 93034f9f-4d46-4b97-b9f3-0dc3bebd1a44 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AA2 AA2 description APPROVED t f 2024-01-02 14:10:10.71 test who comment 2024-01-02 14:10:10.74 test who comment -3 1 191815db-f25f-4bdd-a296-81a69d82d6dc dbf3b52d-d212-4ace-9b3a-099e8902beaf name AA3 AA3 description APPROVED t f 2024-01-02 14:10:10.777 test who comment 2024-01-02 14:10:10.807 test who comment -4 1 b42fadc1-f6e1-4fbb-a687-e8df018db482 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AA4 AA4 description APPROVED t f 2024-01-02 14:10:10.852 test who comment 2024-01-02 14:10:10.88 test who comment -5 1 0721390f-05b3-4093-a954-7012084b2c24 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AA5 AA5 description APPROVED t f 2024-01-02 14:10:10.912 test who comment 2024-01-02 14:10:10.939 test who comment -6 1 80174ab5-f1e7-4c75-beb4-5542f153e98c dbf3b52d-d212-4ace-9b3a-099e8902beaf name AB1 AB1 description CANCELLED f f 2024-01-02 14:10:10.977 test who comment 2024-01-02 14:10:11.003 test who comment -7 1 6a354c12-82fe-4725-996e-3e8d7af24a97 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AB2 AB2 description CANCELLED f f 2024-01-02 14:10:11.036 test who comment 2024-01-02 14:10:11.071 test who comment -8 1 0582fadc-11c4-4fe2-b091-afc435c36343 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AB3 AB3 description CANCELLED f f 2024-01-02 14:10:11.093 test who comment 2024-01-02 14:10:11.116 test who comment -9 1 cba8ca99-0913-40f0-8d6c-9d0276ae652c dbf3b52d-d212-4ace-9b3a-099e8902beaf name AB4 AB4 description CANCELLED f f 2024-01-02 14:10:11.139 test who comment 2024-01-02 14:10:11.159 test who comment -10 1 e4cba52f-7f63-4347-b302-0fee6526ab71 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AB5 AB5 description CANCELLED f f 2024-01-02 14:10:11.18 test who comment 2024-01-02 14:10:11.2 test who comment -11 1 0b2929ab-a3b3-491b-b541-761d0f8a4527 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AC1 AC1 description REJECTED f f 2024-01-02 14:10:11.224 test who comment 2024-01-02 14:10:11.245 test who comment -12 1 4e52fa1d-2660-4855-9d3b-00e0cdf9ecdd dbf3b52d-d212-4ace-9b3a-099e8902beaf name AC2 AC2 description REJECTED f f 2024-01-02 14:10:11.266 test who comment 2024-01-02 14:10:11.285 test who comment -13 1 7db2efed-54b8-4b40-9bae-c44464661a80 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AC3 AC3 description REJECTED f f 2024-01-02 14:10:11.31 test who comment 2024-01-02 14:10:11.332 test who comment -14 1 dc3548fb-66f3-4258-b17b-ee5ab88445fe dbf3b52d-d212-4ace-9b3a-099e8902beaf name AC4 AC4 description REJECTED f f 2024-01-02 14:10:11.353 test who comment 2024-01-02 14:10:11.372 test who comment -15 1 231d8e96-3afd-497c-bef4-86437cf07cb9 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AC5 AC5 description REJECTED f f 2024-01-02 14:10:11.394 test who comment 2024-01-02 14:10:11.415 test who comment -16 0 c00924f0-6f2a-4296-b694-ec4eb845ae4c dbf3b52d-d212-4ace-9b3a-099e8902beaf name AD1 AD1 description PENDING f f 2024-01-02 14:10:11.435 test who comment \N \N \N -17 0 1ad22b9d-2d58-417f-b7c8-8a04e8ca9857 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AD2 AD2 description PENDING f f 2024-01-02 14:10:11.459 test who comment \N \N \N -18 0 cd976976-123a-47fb-8e05-06ecf348ad75 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AD3 AD3 description PENDING f f 2024-01-02 14:10:11.491 test who comment \N \N \N -19 0 3ed7a658-86f3-4684-9280-fea2c760596e dbf3b52d-d212-4ace-9b3a-099e8902beaf name AD4 AD4 description PENDING f f 2024-01-02 14:10:11.517 test who comment \N \N \N -20 0 9675d178-c7a8-4a03-906b-516b86cffa72 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AD5 AD5 description PENDING f f 2024-01-02 14:10:11.537 test who comment \N \N \N -21 2 49d97dc0-bfe6-4dd7-b1ec-511870ef8a9f dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE1 AE1 description APPROVED f f 2024-01-02 14:10:11.557 test who comment 2024-01-02 14:10:11.581 test who comment -22 2 49d97dc0-bfe6-4dd7-b1ec-511870ef8a9f dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE1 AE1 some other description APPROVED f f 2024-01-02 14:10:11.624 test who some other comment 2024-01-02 14:10:11.65 test who some other comment -23 1 49d97dc0-bfe6-4dd7-b1ec-511870ef8a9f dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE1 AE1 more description APPROVED t f 2024-01-02 14:10:11.689 test who more comment 2024-01-02 14:10:11.725 test who more comment -24 1 49d97dc0-bfe6-4dd7-b1ec-511870ef8a9f dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE1 AE1 more description REJECTED f t 2024-01-02 14:10:11.763 test who comment 2024-01-02 14:10:11.794 test who comment -25 2 8c9cefc9-549e-4ab2-8385-850b77dc51aa dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE2 AE2 description APPROVED f f 2024-01-02 14:10:11.827 test who comment 2024-01-02 14:10:11.857 test who comment -26 2 8c9cefc9-549e-4ab2-8385-850b77dc51aa dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE2 AE2 some other description APPROVED f f 2024-01-02 14:10:11.89 test who some other comment 2024-01-02 14:10:11.924 test who some other comment -27 1 8c9cefc9-549e-4ab2-8385-850b77dc51aa dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE2 AE2 more description APPROVED t f 2024-01-02 14:10:11.957 test who more comment 2024-01-02 14:10:11.984 test who more comment -28 1 8c9cefc9-549e-4ab2-8385-850b77dc51aa dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE2 AE2 more description REJECTED f t 2024-01-02 14:10:12.005 test who comment 2024-01-02 14:10:12.036 test who comment -29 2 a3b65288-9b15-4111-9c07-89ac0335c442 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE3 AE3 description APPROVED f f 2024-01-02 14:10:12.069 test who comment 2024-01-02 14:10:12.099 test who comment -30 2 a3b65288-9b15-4111-9c07-89ac0335c442 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE3 AE3 some other description APPROVED f f 2024-01-02 14:10:12.128 test who some other comment 2024-01-02 14:10:12.153 test who some other comment -31 1 a3b65288-9b15-4111-9c07-89ac0335c442 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE3 AE3 more description APPROVED t f 2024-01-02 14:10:12.185 test who more comment 2024-01-02 14:10:12.204 test who more comment -32 1 a3b65288-9b15-4111-9c07-89ac0335c442 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE3 AE3 more description REJECTED f t 2024-01-02 14:10:12.224 test who comment 2024-01-02 14:10:12.245 test who comment -33 2 73002440-4a1a-4d36-97c0-260ca06d41c4 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE4 AE4 description APPROVED f f 2024-01-02 14:10:12.274 test who comment 2024-01-02 14:10:12.301 test who comment -34 2 73002440-4a1a-4d36-97c0-260ca06d41c4 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE4 AE4 some other description APPROVED f f 2024-01-02 14:10:12.33 test who some other comment 2024-01-02 14:10:12.349 test who some other comment -35 1 73002440-4a1a-4d36-97c0-260ca06d41c4 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE4 AE4 more description APPROVED t f 2024-01-02 14:10:12.368 test who more comment 2024-01-02 14:10:12.386 test who more comment -36 1 73002440-4a1a-4d36-97c0-260ca06d41c4 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE4 AE4 more description REJECTED f t 2024-01-02 14:10:12.413 test who comment 2024-01-02 14:10:12.43 test who comment -37 2 9f768e3a-7643-44f2-b0ce-9c8ed41024d1 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE5 AE5 description APPROVED f f 2024-01-02 14:10:12.45 test who comment 2024-01-02 14:10:12.47 test who comment -38 2 9f768e3a-7643-44f2-b0ce-9c8ed41024d1 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE5 AE5 some other description APPROVED f f 2024-01-02 14:10:12.496 test who some other comment 2024-01-02 14:10:12.528 test who some other comment -39 1 9f768e3a-7643-44f2-b0ce-9c8ed41024d1 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE5 AE5 more description APPROVED t f 2024-01-02 14:10:12.562 test who more comment 2024-01-02 14:10:12.593 test who more comment -40 1 9f768e3a-7643-44f2-b0ce-9c8ed41024d1 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AE5 AE5 more description REJECTED f t 2024-01-02 14:10:12.618 test who comment 2024-01-02 14:10:12.643 test who comment -41 2 94635ca4-bf61-46e0-863f-84934a61117b dbf3b52d-d212-4ace-9b3a-099e8902beaf name AF1 AF1 description APPROVED f f 2024-01-02 14:10:12.663 test who comment 2024-01-02 14:10:12.69 test who comment -42 1 94635ca4-bf61-46e0-863f-84934a61117b dbf3b52d-d212-4ace-9b3a-099e8902beaf name AF1 AF1 description APPROVED t t 2024-01-02 14:10:12.718 test who comment 2024-01-02 14:10:12.745 test who comment -43 2 a50a7a4b-cb5e-40a1-b286-05012276dcc0 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AF2 AF2 description APPROVED f f 2024-01-02 14:10:12.768 test who comment 2024-01-02 14:10:12.791 test who comment -44 1 a50a7a4b-cb5e-40a1-b286-05012276dcc0 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AF2 AF2 description APPROVED t t 2024-01-02 14:10:12.818 test who comment 2024-01-02 14:10:12.837 test who comment -45 2 8c5bdae5-2b9b-4490-9e15-566739f36e1b dbf3b52d-d212-4ace-9b3a-099e8902beaf name AF3 AF3 description APPROVED f f 2024-01-02 14:10:12.861 test who comment 2024-01-02 14:10:12.888 test who comment -46 1 8c5bdae5-2b9b-4490-9e15-566739f36e1b dbf3b52d-d212-4ace-9b3a-099e8902beaf name AF3 AF3 description APPROVED t t 2024-01-02 14:10:12.906 test who comment 2024-01-02 14:10:12.924 test who comment -47 2 e48112ff-18b6-4691-bbcd-03be6b735a17 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AF4 AF4 description APPROVED f f 2024-01-02 14:10:12.949 test who comment 2024-01-02 14:10:12.965 test who comment -48 1 e48112ff-18b6-4691-bbcd-03be6b735a17 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AF4 AF4 description APPROVED t t 2024-01-02 14:10:12.991 test who comment 2024-01-02 14:10:13.009 test who comment -49 2 2da50b7c-185d-4f6e-8273-9f68943a7bc5 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AF5 AF5 description APPROVED f f 2024-01-02 14:10:13.03 test who comment 2024-01-02 14:10:13.046 test who comment -50 1 2da50b7c-185d-4f6e-8273-9f68943a7bc5 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AF5 AF5 description APPROVED t t 2024-01-02 14:10:13.063 test who comment 2024-01-02 14:10:13.08 test who comment -51 1 c3d18240-319e-4915-86fc-2a45bc02f537 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AG1 AG1 description APPROVED t f 2024-01-02 14:10:13.1 test who comment 2024-01-02 14:10:13.121 test who comment -52 0 c3d18240-319e-4915-86fc-2a45bc02f537 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AG1 AG1 description PENDING f t 2024-01-02 14:10:13.142 test who comment \N \N \N -53 1 870b93f4-df90-4c03-8373-7ac5767256b8 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AG2 AG2 description APPROVED t f 2024-01-02 14:10:13.168 test who comment 2024-01-02 14:10:13.191 test who comment -54 0 870b93f4-df90-4c03-8373-7ac5767256b8 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AG2 AG2 description PENDING f t 2024-01-02 14:10:13.208 test who comment \N \N \N -55 1 ddc87e8d-6641-4159-ba2a-15180cb6c076 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AG3 AG3 description APPROVED t f 2024-01-02 14:10:13.225 test who comment 2024-01-02 14:10:13.246 test who comment -56 0 ddc87e8d-6641-4159-ba2a-15180cb6c076 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AG3 AG3 description PENDING f t 2024-01-02 14:10:13.276 test who comment \N \N \N -57 1 43906547-007d-4ac2-baa7-20b99b299ee3 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AG4 AG4 description APPROVED t f 2024-01-02 14:10:13.301 test who comment 2024-01-02 14:10:13.321 test who comment -58 0 43906547-007d-4ac2-baa7-20b99b299ee3 dbf3b52d-d212-4ace-9b3a-099e8902beaf name AG4 AG4 description PENDING f t 2024-01-02 14:10:13.343 test who comment \N \N \N -59 1 43502b1d-5002-434e-b265-f7487cc8cc8b dbf3b52d-d212-4ace-9b3a-099e8902beaf name AG5 AG5 description APPROVED t f 2024-01-02 14:10:13.363 test who comment 2024-01-02 14:10:13.379 test who comment -60 0 43502b1d-5002-434e-b265-f7487cc8cc8b dbf3b52d-d212-4ace-9b3a-099e8902beaf name AG5 AG5 description PENDING f t 2024-01-02 14:10:13.396 test who comment \N \N \N +COPY public.subsystem (id, version, uuid, parent_uuid, mnemonic, mnemonic_equivalence, ordering, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +1 0 0ccfe162-7bf2-46f0-b670-910e9c7a0f99 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AA1 AA1 1 description APPROVED t f \N \N \N 2024-03-04 16:18:39.858 test who \N +2 0 4fe32787-9e4e-48df-b2d4-413b6310ddd8 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AA2 AA2 1 description APPROVED t f \N \N \N 2024-03-04 16:18:39.858 test who \N +3 0 921fd974-b02e-4535-9fa4-832e1f413a2f 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AA3 AA3 1 description APPROVED t f \N \N \N 2024-03-04 16:18:39.858 test who \N +4 0 d8c8a289-3b50-4d45-bff0-0ba6933235fd 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AA4 AA4 1 description APPROVED t f \N \N \N 2024-03-04 16:18:39.858 test who \N +5 0 ca0d26d2-fcf0-4844-9509-9c60835857e1 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AA5 AA5 1 description APPROVED t f \N \N \N 2024-03-04 16:18:39.858 test who \N +11 0 ed15e5ff-0641-4185-9fb0-f43702a14350 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AB1 AB1 2 some other description APPROVED t f \N \N \N 2024-03-04 16:18:40.081 test who \N +6 1 ed15e5ff-0641-4185-9fb0-f43702a14350 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AB1 AB1 2 description APPROVED f f \N \N \N 2024-03-04 16:18:39.95 test who \N +12 0 8e158f4b-0ea5-4ca9-87ae-def88d72a647 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AB2 AB2 2 some other description APPROVED t f \N \N \N 2024-03-04 16:18:40.081 test who \N +7 1 8e158f4b-0ea5-4ca9-87ae-def88d72a647 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AB2 AB2 2 description APPROVED f f \N \N \N 2024-03-04 16:18:39.95 test who \N +13 0 b8e9bbfc-e3c4-4eef-883e-0e2d0709ec03 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AB3 AB3 2 some other description APPROVED t f \N \N \N 2024-03-04 16:18:40.081 test who \N +8 1 b8e9bbfc-e3c4-4eef-883e-0e2d0709ec03 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AB3 AB3 2 description APPROVED f f \N \N \N 2024-03-04 16:18:39.95 test who \N +14 0 d13ea971-d722-45ea-bbab-96c5e221a344 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AB4 AB4 2 some other description APPROVED t f \N \N \N 2024-03-04 16:18:40.081 test who \N +9 1 d13ea971-d722-45ea-bbab-96c5e221a344 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AB4 AB4 2 description APPROVED f f \N \N \N 2024-03-04 16:18:39.95 test who \N +15 0 63d701ba-555b-41fd-9810-9d87454aa1fa 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AB5 AB5 2 some other description APPROVED t f \N \N \N 2024-03-04 16:18:40.081 test who \N +10 1 63d701ba-555b-41fd-9810-9d87454aa1fa 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AB5 AB5 2 description APPROVED f f \N \N \N 2024-03-04 16:18:39.95 test who \N +21 0 9659c6e8-7d37-47d8-aaf6-eeb7ada222d1 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AC1 AC1 3 description APPROVED t t \N \N \N 2024-03-04 16:18:40.254 test who \N +16 1 9659c6e8-7d37-47d8-aaf6-eeb7ada222d1 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AC1 AC1 3 description APPROVED f f \N \N \N 2024-03-04 16:18:40.157 test who \N +22 0 0db3c127-d8f7-48ea-8af1-6433928f928b 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AC2 AC2 3 description APPROVED t t \N \N \N 2024-03-04 16:18:40.254 test who \N +17 1 0db3c127-d8f7-48ea-8af1-6433928f928b 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AC2 AC2 3 description APPROVED f f \N \N \N 2024-03-04 16:18:40.157 test who \N +23 0 5d1164af-e155-433e-a8e6-1a60cbc315b8 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AC3 AC3 3 description APPROVED t t \N \N \N 2024-03-04 16:18:40.254 test who \N +18 1 5d1164af-e155-433e-a8e6-1a60cbc315b8 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AC3 AC3 3 description APPROVED f f \N \N \N 2024-03-04 16:18:40.157 test who \N +24 0 2542b027-513b-40bb-9be8-74fcb400459e 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AC4 AC4 3 description APPROVED t t \N \N \N 2024-03-04 16:18:40.254 test who \N +19 1 2542b027-513b-40bb-9be8-74fcb400459e 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AC4 AC4 3 description APPROVED f f \N \N \N 2024-03-04 16:18:40.157 test who \N +25 0 e1e4b087-c3d5-409f-9a5f-a9e9f84962fb 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AC5 AC5 3 description APPROVED t t \N \N \N 2024-03-04 16:18:40.254 test who \N +20 1 e1e4b087-c3d5-409f-9a5f-a9e9f84962fb 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AC5 AC5 3 description APPROVED f f \N \N \N 2024-03-04 16:18:40.157 test who \N +26 1 2cb15615-72a4-48af-aa88-57fe20caaebe 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD1 AD1 4 description APPROVED f f \N \N \N 2024-03-04 16:18:40.361 test who \N +27 1 1c764e48-dbda-4d6a-baf0-013be384dce0 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD2 AD2 4 description APPROVED f f \N \N \N 2024-03-04 16:18:40.361 test who \N +28 1 700ff3d0-ec0f-41b0-9d0d-dfd4c8091b9d 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD3 AD3 4 description APPROVED f f \N \N \N 2024-03-04 16:18:40.361 test who \N +29 1 ab167f84-7c67-4364-a6b7-42405d98cb69 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD4 AD4 4 description APPROVED f f \N \N \N 2024-03-04 16:18:40.361 test who \N +30 1 8f76876a-504e-4402-bd60-6bb4c60d4d29 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD5 AD5 4 description APPROVED f f \N \N \N 2024-03-04 16:18:40.361 test who \N +36 0 2cb15615-72a4-48af-aa88-57fe20caaebe 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD1 AD1 4 some other description APPROVED t t \N \N \N 2024-03-04 16:18:40.478 test who \N +31 1 2cb15615-72a4-48af-aa88-57fe20caaebe 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD1 AD1 4 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.43 test who \N +37 0 1c764e48-dbda-4d6a-baf0-013be384dce0 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD2 AD2 4 some other description APPROVED t t \N \N \N 2024-03-04 16:18:40.478 test who \N +32 1 1c764e48-dbda-4d6a-baf0-013be384dce0 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD2 AD2 4 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.43 test who \N +38 0 700ff3d0-ec0f-41b0-9d0d-dfd4c8091b9d 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD3 AD3 4 some other description APPROVED t t \N \N \N 2024-03-04 16:18:40.478 test who \N +33 1 700ff3d0-ec0f-41b0-9d0d-dfd4c8091b9d 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD3 AD3 4 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.43 test who \N +39 0 ab167f84-7c67-4364-a6b7-42405d98cb69 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD4 AD4 4 some other description APPROVED t t \N \N \N 2024-03-04 16:18:40.478 test who \N +34 1 ab167f84-7c67-4364-a6b7-42405d98cb69 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD4 AD4 4 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.43 test who \N +40 0 8f76876a-504e-4402-bd60-6bb4c60d4d29 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD5 AD5 4 some other description APPROVED t t \N \N \N 2024-03-04 16:18:40.478 test who \N +35 1 8f76876a-504e-4402-bd60-6bb4c60d4d29 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AD5 AD5 4 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.43 test who \N +41 1 b8485a11-1c59-4ef5-876b-16a49512d457 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE1 AE1 5 description APPROVED f f \N \N \N 2024-03-04 16:18:40.556 test who \N +42 1 30fbb919-376d-40d2-9bd2-3c9fd7b952da 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE2 AE2 5 description APPROVED f f \N \N \N 2024-03-04 16:18:40.556 test who \N +43 1 89feee5b-5003-4dc6-a693-d0e2dd92112b 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE3 AE3 5 description APPROVED f f \N \N \N 2024-03-04 16:18:40.556 test who \N +44 1 f4eaf55f-01bb-4a37-8d61-56f576444dd7 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE4 AE4 5 description APPROVED f f \N \N \N 2024-03-04 16:18:40.556 test who \N +45 1 87932c6c-909e-4165-a75d-2bc10db24415 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE5 AE5 5 description APPROVED f f \N \N \N 2024-03-04 16:18:40.556 test who \N +46 1 b8485a11-1c59-4ef5-876b-16a49512d457 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE1 AE1 5 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.633 test who \N +47 1 30fbb919-376d-40d2-9bd2-3c9fd7b952da 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE2 AE2 5 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.633 test who \N +48 1 89feee5b-5003-4dc6-a693-d0e2dd92112b 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE3 AE3 5 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.633 test who \N +49 1 f4eaf55f-01bb-4a37-8d61-56f576444dd7 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE4 AE4 5 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.633 test who \N +50 1 87932c6c-909e-4165-a75d-2bc10db24415 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE5 AE5 5 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.633 test who \N +56 0 b8485a11-1c59-4ef5-876b-16a49512d457 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE1 AE1 5 yet another description APPROVED t f \N \N \N 2024-03-04 16:18:40.768 test who \N +51 1 b8485a11-1c59-4ef5-876b-16a49512d457 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE1 AE1 5 more description APPROVED f f \N \N \N 2024-03-04 16:18:40.698 test who \N +57 0 30fbb919-376d-40d2-9bd2-3c9fd7b952da 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE2 AE2 5 yet another description APPROVED t f \N \N \N 2024-03-04 16:18:40.768 test who \N +52 1 30fbb919-376d-40d2-9bd2-3c9fd7b952da 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE2 AE2 5 more description APPROVED f f \N \N \N 2024-03-04 16:18:40.698 test who \N +58 0 89feee5b-5003-4dc6-a693-d0e2dd92112b 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE3 AE3 5 yet another description APPROVED t f \N \N \N 2024-03-04 16:18:40.768 test who \N +53 1 89feee5b-5003-4dc6-a693-d0e2dd92112b 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE3 AE3 5 more description APPROVED f f \N \N \N 2024-03-04 16:18:40.698 test who \N +59 0 f4eaf55f-01bb-4a37-8d61-56f576444dd7 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE4 AE4 5 yet another description APPROVED t f \N \N \N 2024-03-04 16:18:40.768 test who \N +54 1 f4eaf55f-01bb-4a37-8d61-56f576444dd7 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE4 AE4 5 more description APPROVED f f \N \N \N 2024-03-04 16:18:40.698 test who \N +60 0 87932c6c-909e-4165-a75d-2bc10db24415 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE5 AE5 5 yet another description APPROVED t f \N \N \N 2024-03-04 16:18:40.768 test who \N +55 1 87932c6c-909e-4165-a75d-2bc10db24415 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AE5 AE5 5 more description APPROVED f f \N \N \N 2024-03-04 16:18:40.698 test who \N +61 1 9ce444c8-4dd9-4456-84fa-ff3f60a6dbf3 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF1 AF1 6 description APPROVED f f \N \N \N 2024-03-04 16:18:40.822 test who \N +62 1 0eb86e59-0afc-4a49-a554-4a449d1cec3d 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF2 AF2 6 description APPROVED f f \N \N \N 2024-03-04 16:18:40.822 test who \N +63 1 efe208d0-4e11-4c28-b84c-f0d589448ccb 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF3 AF3 6 description APPROVED f f \N \N \N 2024-03-04 16:18:40.822 test who \N +64 1 6746256a-3cfb-4b04-8250-29805a1fa4a4 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF4 AF4 6 description APPROVED f f \N \N \N 2024-03-04 16:18:40.822 test who \N +65 1 d2bac9ef-4a4a-43c4-855a-ba22d1005798 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF5 AF5 6 description APPROVED f f \N \N \N 2024-03-04 16:18:40.822 test who \N +66 1 9ce444c8-4dd9-4456-84fa-ff3f60a6dbf3 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF1 AF1 6 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.872 test who \N +67 1 0eb86e59-0afc-4a49-a554-4a449d1cec3d 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF2 AF2 6 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.872 test who \N +68 1 efe208d0-4e11-4c28-b84c-f0d589448ccb 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF3 AF3 6 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.872 test who \N +69 1 6746256a-3cfb-4b04-8250-29805a1fa4a4 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF4 AF4 6 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.872 test who \N +71 1 9ce444c8-4dd9-4456-84fa-ff3f60a6dbf3 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF1 AF1 6 more description APPROVED f f \N \N \N 2024-03-04 16:18:40.921 test who \N +72 1 0eb86e59-0afc-4a49-a554-4a449d1cec3d 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF2 AF2 6 more description APPROVED f f \N \N \N 2024-03-04 16:18:40.921 test who \N +73 1 efe208d0-4e11-4c28-b84c-f0d589448ccb 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF3 AF3 6 more description APPROVED f f \N \N \N 2024-03-04 16:18:40.921 test who \N +74 1 6746256a-3cfb-4b04-8250-29805a1fa4a4 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF4 AF4 6 more description APPROVED f f \N \N \N 2024-03-04 16:18:40.921 test who \N +75 1 d2bac9ef-4a4a-43c4-855a-ba22d1005798 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF5 AF5 6 more description APPROVED f f \N \N \N 2024-03-04 16:18:40.921 test who \N +70 1 d2bac9ef-4a4a-43c4-855a-ba22d1005798 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF5 AF5 6 some other description APPROVED f f \N \N \N 2024-03-04 16:18:40.872 test who \N +81 0 9ce444c8-4dd9-4456-84fa-ff3f60a6dbf3 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF1 AF1 6 yet another description APPROVED t t \N \N \N 2024-03-04 16:18:41.006 test who \N +76 1 9ce444c8-4dd9-4456-84fa-ff3f60a6dbf3 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF1 AF1 6 yet another description APPROVED f f \N \N \N 2024-03-04 16:18:40.959 test who \N +82 0 0eb86e59-0afc-4a49-a554-4a449d1cec3d 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF2 AF2 6 yet another description APPROVED t t \N \N \N 2024-03-04 16:18:41.006 test who \N +77 1 0eb86e59-0afc-4a49-a554-4a449d1cec3d 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF2 AF2 6 yet another description APPROVED f f \N \N \N 2024-03-04 16:18:40.959 test who \N +83 0 efe208d0-4e11-4c28-b84c-f0d589448ccb 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF3 AF3 6 yet another description APPROVED t t \N \N \N 2024-03-04 16:18:41.006 test who \N +78 1 efe208d0-4e11-4c28-b84c-f0d589448ccb 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF3 AF3 6 yet another description APPROVED f f \N \N \N 2024-03-04 16:18:40.959 test who \N +84 0 6746256a-3cfb-4b04-8250-29805a1fa4a4 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF4 AF4 6 yet another description APPROVED t t \N \N \N 2024-03-04 16:18:41.006 test who \N +79 1 6746256a-3cfb-4b04-8250-29805a1fa4a4 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF4 AF4 6 yet another description APPROVED f f \N \N \N 2024-03-04 16:18:40.959 test who \N +85 0 d2bac9ef-4a4a-43c4-855a-ba22d1005798 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF5 AF5 6 yet another description APPROVED t t \N \N \N 2024-03-04 16:18:41.006 test who \N +80 1 d2bac9ef-4a4a-43c4-855a-ba22d1005798 25a231ac-cc79-43f0-a8aa-00d34b6262a8 AF5 AF5 6 yet another description APPROVED f f \N \N \N 2024-03-04 16:18:40.959 test who \N \. @@ -1167,7 +1239,7 @@ COPY public.subsystem (id, version, uuid, parent_uuid, name, mnemonic, mnemonic_ -- Name: subsystem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - -- -SELECT pg_catalog.setval('public.subsystem_id_seq', 60, true); +SELECT pg_catalog.setval('public.subsystem_id_seq', 85, true); -- @@ -1176,8 +1248,8 @@ SELECT pg_catalog.setval('public.subsystem_id_seq', 60, true); -- Data for Name: system; Type: TABLE DATA; Schema: public; Owner: - -- -COPY public.system (id, version, uuid, parent_uuid, name, mnemonic, mnemonic_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; -1 1 dbf3b52d-d212-4ace-9b3a-099e8902beaf 944db2b0-a880-4289-b1c2-b7aa98cab1b2 name Sys SYS description APPROVED t f 2024-01-02 14:10:10.492 test who comment 2024-01-02 14:10:10.563 test who comment +COPY public.system (id, version, uuid, parent_uuid, mnemonic, mnemonic_equivalence, ordering, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +1 0 25a231ac-cc79-43f0-a8aa-00d34b6262a8 b3f5b914-9607-4df8-a701-553f4d238e1e Sys SYS \N description APPROVED t f \N \N \N 2024-03-04 16:18:39.52 test who \N \. @@ -1196,8 +1268,8 @@ SELECT pg_catalog.setval('public.system_id_seq', 1, true); -- Data for Name: systemgroup; Type: TABLE DATA; Schema: public; Owner: - -- -COPY public.systemgroup (id, version, uuid, name, mnemonic, mnemonic_equivalence, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; -1 1 944db2b0-a880-4289-b1c2-b7aa98cab1b2 name Sg SG description APPROVED t f 2024-01-02 14:10:10.057 test who comment 2024-01-02 14:10:10.373 test who comment +COPY public.systemgroup (id, version, uuid, mnemonic, mnemonic_equivalence, ordering, description, status, latest, deleted, requested, requested_by, requested_comment, processed, processed_by, processed_comment) FROM stdin; +1 0 b3f5b914-9607-4df8-a701-553f4d238e1e Sg SG \N description APPROVED t f \N \N \N 2024-03-04 16:18:38.976 test who \N \. @@ -1303,7 +1375,7 @@ ALTER TABLE ONLY public.discipline -- --- TOC entry 2190 (class 2606 OID 16620) +-- TOC entry 2187 (class 2606 OID 16620) -- Name: name name_pk; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -1551,59 +1623,59 @@ CREATE INDEX name_deleted_idx ON public.name USING btree (deleted); -- --- TOC entry 2183 (class 1259 OID 16571) --- Name: name_id_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2183 (class 1259 OID 16575) +-- Name: name_devicetype_uuid_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_id_idx ON public.name USING btree (id); +CREATE INDEX name_devicetype_uuid_idx ON public.name USING btree (devicetype_uuid); -- --- TOC entry 2184 (class 1259 OID 16585) --- Name: name_latest_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2184 (class 1259 OID 16571) +-- Name: name_id_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_latest_idx ON public.name USING btree (latest); +CREATE INDEX name_id_idx ON public.name USING btree (id); -- --- TOC entry 2185 (class 1259 OID 16575) --- Name: name_namepartrevision_devicetype_uuid_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2185 (class 1259 OID 16585) +-- Name: name_latest_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_namepartrevision_devicetype_uuid_idx ON public.name USING btree (devicetype_uuid); +CREATE INDEX name_latest_idx ON public.name USING btree (latest); -- --- TOC entry 2186 (class 1259 OID 16574) --- Name: name_namepartrevision_subsystem_uuid_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2188 (class 1259 OID 16577) +-- Name: name_status_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_namepartrevision_subsystem_uuid_idx ON public.name USING btree (subsystem_uuid); +CREATE INDEX name_status_idx ON public.name USING btree (status); -- --- TOC entry 2187 (class 1259 OID 16573) --- Name: name_namepartrevision_system_uuid_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2189 (class 1259 OID 16574) +-- Name: name_subsystem_uuid_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_namepartrevision_system_uuid_idx ON public.name USING btree (system_uuid); +CREATE INDEX name_subsystem_uuid_idx ON public.name USING btree (subsystem_uuid); -- --- TOC entry 2188 (class 1259 OID 16572) --- Name: name_namepartrevision_systemgroup_uuid_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2190 (class 1259 OID 16573) +-- Name: name_system_uuid_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_namepartrevision_systemgroup_uuid_idx ON public.name USING btree (systemgroup_uuid); +CREATE INDEX name_system_uuid_idx ON public.name USING btree (system_uuid); -- --- TOC entry 2191 (class 1259 OID 16577) --- Name: name_status_idx; Type: INDEX; Schema: public; Owner: - +-- TOC entry 2191 (class 1259 OID 16572) +-- Name: name_systemgroup_uuid_idx; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX name_status_idx ON public.name USING btree (status); +CREATE INDEX name_systemgroup_uuid_idx ON public.name USING btree (systemgroup_uuid); -- @@ -1846,7 +1918,7 @@ ALTER TABLE ONLY public.namepartrevision ADD CONSTRAINT fk_lufxqy46l9eiq55d445rbukag FOREIGN KEY (parent_id) REFERENCES public.namepart(id); --- Completed on 2024-01-02 15:16:38 CET +-- Completed on 2024-03-04 17:19:26 CET -- -- PostgreSQL database dump complete -- GitLab