From a323318427b07a27f96f5053cb804b1120a1d7a1 Mon Sep 17 00:00:00 2001
From: Lars Johansson <lars.johansson@ess.eu>
Date: Fri, 8 Jul 2022 15:29:09 +0200
Subject: [PATCH] Refactor model objects and service classes

Purpose to increase readability and reduce complexity.
---
 .../names/repository/model/DeviceGroup.java   |  35 ++
 .../names/repository/model/DeviceType.java    |  35 ++
 .../names/repository/model/Discipline.java    |  35 ++
 .../names/repository/model/Name.java          |  49 +++
 .../names/repository/model/Structure.java     |  56 +++
 .../names/repository/model/Subsystem.java     |  35 ++
 .../names/repository/model/System.java        |  35 ++
 .../names/repository/model/SystemGroup.java   |  35 ++
 .../openepics/names/service/NamesService.java |  69 +---
 .../names/service/StructuresService.java      | 381 +++++++-----------
 10 files changed, 476 insertions(+), 289 deletions(-)

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 c471df7d..5c729b9d 100644
--- a/src/main/java/org/openepics/names/repository/model/DeviceGroup.java
+++ b/src/main/java/org/openepics/names/repository/model/DeviceGroup.java
@@ -18,11 +18,14 @@
 
 package org.openepics.names.repository.model;
 
+import java.util.Date;
 import java.util.UUID;
 
 import javax.persistence.Entity;
 import javax.persistence.Table;
 
+import org.openepics.names.rest.beans.Status;
+
 /**
  * This entity represents a device group name part.
  *
@@ -43,6 +46,38 @@ public class DeviceGroup extends Structure {
 
     private String parent_uuid;
 
+    /**
+     * Constructor for DeviceGroup.
+     */
+    public DeviceGroup() {
+    }
+
+    /**
+     * Constructor for DeviceGroup.
+     *
+     * @param uuid uuid
+     * @param parentUuid parent uuid
+     * @param name name
+     * @param mnemonic mnemonic
+     * @param mnemonicEquivalence mnemonic equivalence
+     * @param description description
+     * @param status status
+     * @param latest latest
+     * @param deleted deleted
+     * @param requested requested
+     * @param requestedBy requested by
+     * @param requestedComment requested comment
+     */
+    public DeviceGroup(UUID uuid, UUID parentUuid,
+            String name, String mnemonic, String mnemonicEquivalence,
+            String description, Status status, Boolean latest, Boolean deleted,
+            Date requested, String requestedBy, String requestedComment) {
+        super(uuid, name, mnemonic, mnemonicEquivalence,
+                description, status, latest, deleted,
+                requested, requestedBy, requestedComment);
+        this.parent_uuid = parentUuid != null ? parentUuid.toString() : null;
+    }
+
     public UUID getParentUuid() {
         return parent_uuid != null ? UUID.fromString(parent_uuid) : 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 065e64f6..8bc11354 100644
--- a/src/main/java/org/openepics/names/repository/model/DeviceType.java
+++ b/src/main/java/org/openepics/names/repository/model/DeviceType.java
@@ -18,11 +18,14 @@
 
 package org.openepics.names.repository.model;
 
+import java.util.Date;
 import java.util.UUID;
 
 import javax.persistence.Entity;
 import javax.persistence.Table;
 
+import org.openepics.names.rest.beans.Status;
+
 /**
  * This entity represents a device type name part.
  *
@@ -43,6 +46,38 @@ public class DeviceType extends Structure {
 
     private String parent_uuid;
 
+    /**
+     * Constructor for DeviceType.
+     */
+    public DeviceType() {
+    }
+
+    /**
+     * Constructor for DeviceType.
+     *
+     * @param uuid uuid
+     * @param parentUuid parent uuid
+     * @param name name
+     * @param mnemonic mnemonic
+     * @param mnemonicEquivalence mnemonic equivalence
+     * @param description description
+     * @param status status
+     * @param latest latest
+     * @param deleted deleted
+     * @param requested requested
+     * @param requestedBy requested by
+     * @param requestedComment requested comment
+     */
+    public DeviceType(UUID uuid, UUID parentUuid,
+            String name, String mnemonic, String mnemonicEquivalence,
+            String description, Status status, Boolean latest, Boolean deleted,
+            Date requested, String requestedBy, String requestedComment) {
+        super(uuid, name, mnemonic, mnemonicEquivalence,
+                description, status, latest, deleted,
+                requested, requestedBy, requestedComment);
+        this.parent_uuid = parentUuid != null ? parentUuid.toString() : null;
+    }
+
     public UUID getParentUuid() {
         return parent_uuid != null ? UUID.fromString(parent_uuid) : 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 24198d4d..be9ff32d 100644
--- a/src/main/java/org/openepics/names/repository/model/Discipline.java
+++ b/src/main/java/org/openepics/names/repository/model/Discipline.java
@@ -18,9 +18,14 @@
 
 package org.openepics.names.repository.model;
 
+import java.util.Date;
+import java.util.UUID;
+
 import javax.persistence.Entity;
 import javax.persistence.Table;
 
+import org.openepics.names.rest.beans.Status;
+
 /**
  * This entity represents a discipline name part.
  *
@@ -35,6 +40,36 @@ public class Discipline extends Structure {
      */
     private static final long serialVersionUID = 8729921221024362502L;
 
+    /**
+     * Constructor for Discipline.
+     */
+    public Discipline() {
+    }
+
+    /**
+     * Constructor for Discipline.
+     *
+     * @param uuid uuid
+     * @param name name
+     * @param mnemonic mnemonic
+     * @param mnemonicEquivalence mnemonic equivalence
+     * @param description description
+     * @param status status
+     * @param latest latest
+     * @param deleted deleted
+     * @param requested requested
+     * @param requestedBy requested by
+     * @param requestedComment requested comment
+     */
+    public Discipline(UUID uuid,
+            String name, String mnemonic, String mnemonicEquivalence,
+            String description, Status status, Boolean latest, Boolean deleted,
+            Date requested, String requestedBy, String requestedComment) {
+        super(uuid, name, mnemonic, mnemonicEquivalence,
+                description, status, latest, deleted,
+                requested, requestedBy, requestedComment);
+    }
+
     @Override
     public boolean equals(Object obj) {
         if (this == obj)
diff --git a/src/main/java/org/openepics/names/repository/model/Name.java b/src/main/java/org/openepics/names/repository/model/Name.java
index 4454e39d..b5afcb39 100644
--- a/src/main/java/org/openepics/names/repository/model/Name.java
+++ b/src/main/java/org/openepics/names/repository/model/Name.java
@@ -19,11 +19,14 @@
 package org.openepics.names.repository.model;
 
 import java.io.Serializable;
+import java.util.Date;
 import java.util.UUID;
 
 import javax.persistence.Entity;
 import javax.persistence.Table;
 
+import org.openepics.names.rest.beans.Status;
+
 /**
  * This entity represents a name.
  *
@@ -54,6 +57,52 @@ public class Name extends NameStructure implements Serializable {
     private String convention_name;
     private String convention_name_equivalence;
 
+    /**
+     * Constructor for Name.
+     */
+    public Name() {
+    }
+
+    /**
+     * Constructor for Name.
+     *
+     * @param uuid uuid
+     * @param systemgroupUuid system group uuid
+     * @param systemUuid system uuid
+     * @param subsystemUuid subsystem uuid
+     * @param parentdevicestructure parent device structure uuid
+     * @param index index
+     * @param conventionName convention name
+     * @param conventionNameEquivalence convention name equivalence
+     * @param description description
+     * @param status status
+     * @param latest latest
+     * @param deleted deleted
+     * @param requested requested
+     * @param requestedBy requested by
+     * @param requestedComment requested comment
+     */
+    public Name(UUID uuid, UUID systemgroupUuid, UUID systemUuid, UUID subsystemUuid, UUID parentdevicestructure,
+            String index, String conventionName, String conventionNameEquivalence,
+            String description, Status status, Boolean latest, Boolean deleted,
+            Date requested, String requestedBy, String requestedComment) {
+        setUuid(uuid);
+        setSystemgroupUuid(systemgroupUuid);
+        setSystemUuid(systemUuid);
+        setSubsystemUuid(subsystemUuid);
+        setDevicetypeUuid(parentdevicestructure);
+        setInstanceIndex(index);
+        setConventionName(conventionName);
+        setConventionNameEquivalence(conventionNameEquivalence);
+        setDescription(description);
+        setStatus(Status.APPROVED);
+        setLatest(latest);
+        setDeleted(deleted);
+        setRequested(requested);
+        setRequestedBy(requestedBy);
+        setRequestedComment(requestedComment);
+    }
+
     public UUID getSystemgroupUuid() {
         return systemgroup_uuid != null ? UUID.fromString(systemgroup_uuid) : null;
     }
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 215eb277..4bcc0c6d 100644
--- a/src/main/java/org/openepics/names/repository/model/Structure.java
+++ b/src/main/java/org/openepics/names/repository/model/Structure.java
@@ -19,9 +19,13 @@
 package org.openepics.names.repository.model;
 
 import java.io.Serializable;
+import java.util.Date;
+import java.util.UUID;
 
 import javax.persistence.MappedSuperclass;
 
+import org.openepics.names.rest.beans.Status;
+
 /**
  * A superclass implementing properties required by JPA. It should be extended by
  * System structure and Device structure classes that need to be persisted to the database.
@@ -44,6 +48,43 @@ public class Structure extends NameStructure implements Serializable {
     private String mnemonic;
     private String mnemonic_equivalence;
 
+    /**
+     * Constructor for Structure.
+     */
+    public Structure() {
+    }
+
+    /**
+     * Constructor for Structure.
+     *
+     * @param uuid uuid
+     * @param name name
+     * @param mnemonic mnemonic
+     * @param mnemonicEquivalence mnemonic equivalence
+     * @param description description
+     * @param status status
+     * @param latest latest
+     * @param deleted deleted
+     * @param requested requested
+     * @param requestedBy requested by
+     * @param requestedComment requested comment
+     */
+    public Structure(UUID uuid, String name, String mnemonic, String mnemonicEquivalence,
+            String description, Status status, Boolean latest, Boolean deleted,
+            Date requested, String requestedBy, String requestedComment) {
+        setUuid(uuid);
+        setName(name);
+        setMnemonic(mnemonic);
+        setMnemonicEquivalence(mnemonicEquivalence);
+        setDescription(description);
+        setStatus(status);
+        setLatest(latest);
+        setDeleted(deleted);
+        setRequested(requested);
+        setRequestedBy(requestedBy);
+        setRequestedComment(requestedComment);
+    }
+
     public String getName() {
         return name;
     }
@@ -63,6 +104,21 @@ public class Structure extends NameStructure implements Serializable {
         this.mnemonic_equivalence = mnemonic_equivalence;
     }
 
+    /**
+     * Utility method to help set attributes for Structure class, which in practice is either of its sub classes.
+     *
+     * @param status status
+     * @param requested requested
+     * @param requestedBy requested by
+     * @param requestedComment requested comment
+     */
+    public void setAttributesStatusProcessed(Status status, Date processed, String processedBy, String processedComment) {
+        setStatus(status);
+        setProcessed(processed);
+        setProcessedBy(processedBy);
+        setProcessedComment(processedComment);
+    }
+
     @Override
     public boolean equals(Object obj) {
         if (this == obj)
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 f6bd8c9e..22bdece5 100644
--- a/src/main/java/org/openepics/names/repository/model/Subsystem.java
+++ b/src/main/java/org/openepics/names/repository/model/Subsystem.java
@@ -18,11 +18,14 @@
 
 package org.openepics.names.repository.model;
 
+import java.util.Date;
 import java.util.UUID;
 
 import javax.persistence.Entity;
 import javax.persistence.Table;
 
+import org.openepics.names.rest.beans.Status;
+
 /**
  * This entity represents a subsystem name part.
  *
@@ -43,6 +46,38 @@ public class Subsystem extends Structure {
 
     private String parent_uuid;
 
+    /**
+     * Constructor for Subsystem.
+     */
+    public Subsystem() {
+    }
+
+    /**
+     * Constructor for Subsystem.
+     *
+     * @param uuid uuid
+     * @param parentUuid parent uuid
+     * @param name name
+     * @param mnemonic mnemonic
+     * @param mnemonicEquivalence mnemonic equivalence
+     * @param description description
+     * @param status status
+     * @param latest latest
+     * @param deleted deleted
+     * @param requested requested
+     * @param requestedBy requested by
+     * @param requestedComment requested comment
+     */
+    public Subsystem(UUID uuid, UUID parentUuid,
+            String name, String mnemonic, String mnemonicEquivalence,
+            String description, Status status, Boolean latest, Boolean deleted,
+            Date requested, String requestedBy, String requestedComment) {
+        super(uuid, name, mnemonic, mnemonicEquivalence,
+                description, status, latest, deleted,
+                requested, requestedBy, requestedComment);
+        this.parent_uuid = parentUuid != null ? parentUuid.toString() : null;
+    }
+
     public UUID getParentUuid() {
         return parent_uuid != null ? UUID.fromString(parent_uuid) : 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 63a59baf..684da88c 100644
--- a/src/main/java/org/openepics/names/repository/model/System.java
+++ b/src/main/java/org/openepics/names/repository/model/System.java
@@ -18,11 +18,14 @@
 
 package org.openepics.names.repository.model;
 
+import java.util.Date;
 import java.util.UUID;
 
 import javax.persistence.Entity;
 import javax.persistence.Table;
 
+import org.openepics.names.rest.beans.Status;
+
 /**
  * This entity represents a system name part.
  *
@@ -43,6 +46,38 @@ public class System extends Structure {
 
     private String parent_uuid;
 
+    /**
+     * Constructor for System.
+     */
+    public System() {
+    }
+
+    /**
+     * Constructor for System.
+     *
+     * @param uuid uuid
+     * @param parentUuid parent uuid
+     * @param name name
+     * @param mnemonic mnemonic
+     * @param mnemonicEquivalence mnemonic equivalence
+     * @param description description
+     * @param status status
+     * @param latest latest
+     * @param deleted deleted
+     * @param requested requested
+     * @param requestedBy requested by
+     * @param requestedComment requested comment
+     */
+    public System(UUID uuid, UUID parentUuid,
+            String name, String mnemonic, String mnemonicEquivalence,
+            String description, Status status, Boolean latest, Boolean deleted,
+            Date requested, String requestedBy, String requestedComment) {
+        super(uuid, name, mnemonic, mnemonicEquivalence,
+                description, status, latest, deleted,
+                requested, requestedBy, requestedComment);
+        this.parent_uuid = parentUuid != null ? parentUuid.toString() : null;
+    }
+
     public UUID getParentUuid() {
         return parent_uuid != null ? UUID.fromString(parent_uuid) : 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 03f7702c..3428d644 100644
--- a/src/main/java/org/openepics/names/repository/model/SystemGroup.java
+++ b/src/main/java/org/openepics/names/repository/model/SystemGroup.java
@@ -18,9 +18,14 @@
 
 package org.openepics.names.repository.model;
 
+import java.util.Date;
+import java.util.UUID;
+
 import javax.persistence.Entity;
 import javax.persistence.Table;
 
+import org.openepics.names.rest.beans.Status;
+
 /**
  * This entity represents a system group name part.
  *
@@ -35,6 +40,36 @@ public class SystemGroup extends Structure {
      */
     private static final long serialVersionUID = 6298835206366539021L;
 
+    /**
+     * Constructor for SystemGroup.
+     */
+    public SystemGroup() {
+    }
+
+    /**
+     * Constructor for SystemGroup.
+     *
+     * @param uuid uuid
+     * @param name name
+     * @param mnemonic mnemonic
+     * @param mnemonicEquivalence mnemonic equivalence
+     * @param description description
+     * @param status status
+     * @param latest latest
+     * @param deleted deleted
+     * @param requested requested
+     * @param requestedBy requested by
+     * @param requestedComment requested comment
+     */
+    public SystemGroup(UUID uuid,
+            String name, String mnemonic, String mnemonicEquivalence,
+            String description, Status status, Boolean latest, Boolean deleted,
+            Date requested, String requestedBy, String requestedComment) {
+        super(uuid, name, mnemonic, mnemonicEquivalence,
+                description, status, latest, deleted,
+                requested, requestedBy, requestedComment);
+    }
+
     @Override
     public boolean equals(Object obj) {
         if (this == obj)
diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java
index d1f918a4..bd438712 100644
--- a/src/main/java/org/openepics/names/service/NamesService.java
+++ b/src/main/java/org/openepics/names/service/NamesService.java
@@ -150,18 +150,19 @@ public class NamesService {
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
         // do
+        Date requested = new Date();
         String requestedBy = "test who";
         final List<NameElement> createdNameElements = Lists.newArrayList();
         for (NameElementCommand nameElement : nameElements) {
             // create name within current transaction
-            createdNameElements.add(createName(nameElement, holder, requestedBy));
+            createdNameElements.add(createName(nameElement, holder, requested, requestedBy));
         }
 
         LOGGER.log(Level.FINE, "createNames, createdNameElements.size: {0}", createdNameElements.size());
         return createdNameElements;
     }
     @Transactional(propagation = Propagation.MANDATORY)
-    NameElement createName(NameElementCommand nameElement, HolderSystemDeviceStructure holder, String requestedBy) {
+    public NameElement createName(NameElementCommand nameElement, HolderSystemDeviceStructure holder, Date requested, String requestedBy) {
         // transaction
         //     support a current transaction, throw an exception if none exists
 
@@ -186,13 +187,11 @@ public class NamesService {
         }
 
         // create
-        Name name = new Name();
-        setAttributes(name,
-                UUID.randomUUID(),
+        Name name = new Name(UUID.randomUUID(),
                 systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(),
                 nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName),
                 nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                new Date(), requestedBy, nameElement.getComment());
+                requested, requestedBy, nameElement.getComment());
 
         nameRepository.createName(name);
 
@@ -630,6 +629,7 @@ public class NamesService {
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
         // do
+        Date requested = new Date();
         String requestedBy = "test who";
         final List<NameElement> updatedNameElements = Lists.newArrayList();
         for (NameElementCommand nameElement : nameElements) {
@@ -671,13 +671,11 @@ public class NamesService {
             }
 
             // create
-            name = new Name();
-            setAttributes(name,
-                    nameElement.getUuid(),
+            name = new Name(nameElement.getUuid(),
                     systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(),
                     nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName),
                     nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                    new Date(), requestedBy, nameElement.getComment());
+                    requested, requestedBy, nameElement.getComment());
 
             nameRepository.createName(name);
 
@@ -711,6 +709,7 @@ public class NamesService {
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
         // do
+        Date requested = new Date();
         String requestedBy = "test who";
         final List<NameElement> deletedNameElements = Lists.newArrayList();
         for (NameElementCommand nameElement : nameElements) {
@@ -741,13 +740,11 @@ public class NamesService {
                 derivedName = NameUtil.getName(subsystem, deviceType, nameElement.getIndex(), holder);
             }
 
-            name = new Name();
-            setAttributes(name,
-                    nameElement.getUuid(),
+            name = new Name(nameElement.getUuid(),
                     systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(),
                     nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName),
                     nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.TRUE,
-                    new Date(), requestedBy, nameElement.getComment());
+                    requested, requestedBy, nameElement.getComment());
 
             nameRepository.createName(name);
 
@@ -761,48 +758,4 @@ public class NamesService {
         return deletedNameElements;
     }
 
-    // ----------------------------------------------------------------------------------------------------
-
-    /**
-     * Utility method to help set attributes for Name class.
-     *
-     * @param name name
-     * @param uuid uuid
-     * @param systemgroupUuid system group uuid
-     * @param systemUuid system uuid
-     * @param subsystemUuid subsystem uuid
-     * @param parentdevicestructure parent device structure uuid (device type)
-     * @param index index
-     * @param conventionName convention name
-     * @param conventionNameEquivalence convention name equivalence
-     * @param description description
-     * @param status status
-     * @param latest latest
-     * @param deleted deleted
-     * @param requested requested
-     * @param requestedBy requested by
-     * @param requestedComment requested comment
-     */
-    private void setAttributes(Name name,
-            UUID uuid, UUID systemgroupUuid, UUID systemUuid, UUID subsystemUuid, UUID parentdevicestructure,
-            String index, String conventionName, String conventionNameEquivalence,
-            String description, Status status, Boolean latest, Boolean deleted,
-            Date requested, String requestedBy, String requestedComment) {
-        name.setUuid(uuid);
-        name.setSystemgroupUuid(systemgroupUuid);
-        name.setSystemUuid(systemUuid);
-        name.setSubsystemUuid(subsystemUuid);
-        name.setDevicetypeUuid(parentdevicestructure);
-        name.setInstanceIndex(index);
-        name.setConventionName(conventionName);
-        name.setConventionNameEquivalence(conventionNameEquivalence);
-        name.setDescription(description);
-        name.setStatus(Status.APPROVED);
-        name.setLatest(latest);
-        name.setDeleted(deleted);
-        name.setRequested(requested);
-        name.setRequestedBy(requestedBy);
-        name.setRequestedComment(requestedComment);
-    }
-
 }
diff --git a/src/main/java/org/openepics/names/service/StructuresService.java b/src/main/java/org/openepics/names/service/StructuresService.java
index 255c615e..cb854921 100644
--- a/src/main/java/org/openepics/names/service/StructuresService.java
+++ b/src/main/java/org/openepics/names/service/StructuresService.java
@@ -44,7 +44,6 @@ import org.openepics.names.repository.SystemRepository;
 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;
@@ -154,21 +153,29 @@ public class StructuresService {
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
         // do
+        Date requested = new Date();
         String requestedBy = "test who";
         final List<StructureElement> createdStructureElements = Lists.newArrayList();
         for (StructureElementCommand structureElement : structureElements) {
+            // note
+            //     namingConvention.equivalenceClassRepresentative return null for null input
+
+            UUID uuid = UUID.randomUUID();
+            String name = structureElement.getName();
+            String mnemonic = structureElement.getMnemonic();
+            mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
+            String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
+            String description = structureElement.getDescription();
+            String requestedComment = structureElement.getComment();
+
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // note rules for mnemonic for system group
-                String mnemonic = structureElement.getMnemonic();
-                mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
 
                 // create
-                SystemGroup systemGroup = new SystemGroup();
-                setAttributes(systemGroup,
-                        UUID.randomUUID(),
-                        structureElement.getName(), mnemonic, !StringUtils.isEmpty(mnemonic) ? namingConvention.equivalenceClassRepresentative(mnemonic) : null,
-                        structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        new Date(), requestedBy, structureElement.getComment());
+                SystemGroup systemGroup = new SystemGroup(uuid,
+                        name, mnemonic, equivalenceClassRepresentative,
+                        description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                        requested, requestedBy, requestedComment);
 
                 holderRepositories.getSystemGroupRepository().createSystemGroup(systemGroup);
 
@@ -178,12 +185,10 @@ public class StructuresService {
                 createdStructureElements.add(StructureElementUtil.getStructureElementRequested(systemGroup, holder));
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 // create
-                System system = new System();
-                setAttributes(system,
-                        UUID.randomUUID(), structureElement.getParent(),
-                        structureElement.getName(), structureElement.getMnemonic(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic()),
-                        structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        new Date(), requestedBy, structureElement.getComment());
+                System system = new System(uuid, structureElement.getParent(),
+                        name, mnemonic, equivalenceClassRepresentative,
+                        description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                        requested, requestedBy, requestedComment);
 
                 holderRepositories.getSystemRepository().createSystem(system);
 
@@ -193,12 +198,10 @@ public class StructuresService {
                 createdStructureElements.add(StructureElementUtil.getStructureElementRequested(system, holder));
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 // create
-                Subsystem subsystem = new Subsystem();
-                setAttributes(subsystem,
-                        UUID.randomUUID(), structureElement.getParent(),
-                        structureElement.getName(), structureElement.getMnemonic(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic()),
-                        structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        new Date(), requestedBy, structureElement.getComment());
+                Subsystem subsystem = new Subsystem(uuid, structureElement.getParent(),
+                        name, mnemonic, equivalenceClassRepresentative,
+                        description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                        requested, requestedBy, requestedComment);
 
                 holderRepositories.getSubsystemRepository().createSubsystem(subsystem);
 
@@ -208,12 +211,10 @@ public class StructuresService {
                 createdStructureElements.add(StructureElementUtil.getStructureElementRequested(subsystem, holder));
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
                 // create
-                Discipline discipline = new Discipline();
-                setAttributes(discipline,
-                        UUID.randomUUID(),
-                        structureElement.getName(), structureElement.getMnemonic(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic()),
-                        structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        new Date(), requestedBy, structureElement.getComment());
+                Discipline discipline = new Discipline(uuid,
+                        name, mnemonic, equivalenceClassRepresentative,
+                        description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                        requested, requestedBy, requestedComment);
 
                 holderRepositories.getDisciplineRepository().createDiscipline(discipline);
 
@@ -223,16 +224,12 @@ public class StructuresService {
                 createdStructureElements.add(StructureElementUtil.getStructureElementRequested(discipline, holder));
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 // note rules for mnemonic for device group
-                String mnemonic = structureElement.getMnemonic();
-                mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
 
                 // create
-                DeviceGroup deviceGroup = new DeviceGroup();
-                setAttributes(deviceGroup,
-                        UUID.randomUUID(), structureElement.getParent(),
-                        structureElement.getName(), mnemonic, !StringUtils.isEmpty(mnemonic) ? namingConvention.equivalenceClassRepresentative(mnemonic) : null,
-                        structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        new Date(), requestedBy, structureElement.getComment());
+                DeviceGroup deviceGroup = new DeviceGroup(uuid, structureElement.getParent(),
+                        name, mnemonic, equivalenceClassRepresentative,
+                        description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                        requested, requestedBy, requestedComment);
 
                 holderRepositories.getDeviceGroupRepository().createDeviceGroup(deviceGroup);
 
@@ -242,12 +239,10 @@ public class StructuresService {
                 createdStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceGroup, holder));
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
                 // create
-                DeviceType deviceType = new DeviceType();
-                setAttributes(deviceType,
-                        UUID.randomUUID(), structureElement.getParent(),
-                        structureElement.getName(), structureElement.getMnemonic(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic()),
-                        structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        new Date(), requestedBy, structureElement.getComment());
+                DeviceType deviceType = new DeviceType(uuid, structureElement.getParent(),
+                        name, mnemonic, equivalenceClassRepresentative,
+                        description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                        requested, requestedBy, requestedComment);
 
                 holderRepositories.getDeviceTypeRepository().createDeviceType(deviceType);
 
@@ -845,21 +840,29 @@ public class StructuresService {
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
         // do
+        Date requested = new Date();
         String requestedBy = "test who";
         final List<StructureElement> updatedStructureElements = Lists.newArrayList();
         for (StructureElementCommand structureElement : structureElements) {
+            // note
+            //     namingConvention.equivalenceClassRepresentative return null for null input
+
+            UUID uuid = structureElement.getUuid();
+            String name = structureElement.getName();
+            String mnemonic = structureElement.getMnemonic();
+            mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
+            String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
+            String description = structureElement.getDescription();
+            String requestedComment = structureElement.getComment();
+
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // note rules for mnemonic for system group
-                String mnemonic = structureElement.getMnemonic();
-                mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
 
                 // create
-                SystemGroup systemGroup = new SystemGroup();
-                setAttributes(systemGroup,
-                        structureElement.getUuid(),
-                        structureElement.getName(), mnemonic, !StringUtils.isEmpty(mnemonic) ? namingConvention.equivalenceClassRepresentative(mnemonic) : null,
-                        structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        new Date(), requestedBy, structureElement.getComment());
+                SystemGroup systemGroup = new SystemGroup(uuid,
+                        name, mnemonic, equivalenceClassRepresentative,
+                        description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                        requested, requestedBy, requestedComment);
 
                 holderRepositories.getSystemGroupRepository().createSystemGroup(systemGroup);
 
@@ -869,12 +872,10 @@ public class StructuresService {
                 updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(systemGroup, holder));
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 // create
-                System system = new System();
-                setAttributes(system,
-                        structureElement.getUuid(), structureElement.getParent(),
-                        structureElement.getName(), structureElement.getMnemonic(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic()),
-                        structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        new Date(), requestedBy, structureElement.getComment());
+                System system = new System(uuid, structureElement.getParent(),
+                        name, structureElement.getMnemonic(), equivalenceClassRepresentative,
+                        description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                        requested, requestedBy, requestedComment);
 
                 holderRepositories.getSystemRepository().createSystem(system);
 
@@ -884,12 +885,10 @@ public class StructuresService {
                 updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(system, holder));
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 // create
-                Subsystem subsystem = new Subsystem();
-                setAttributes(subsystem,
-                        structureElement.getUuid(), structureElement.getParent(),
-                        structureElement.getName(), structureElement.getMnemonic(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic()),
-                        structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        new Date(), requestedBy, structureElement.getComment());
+                Subsystem subsystem = new Subsystem(uuid, structureElement.getParent(),
+                        name, mnemonic, equivalenceClassRepresentative,
+                        description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                        requested, requestedBy, requestedComment);
 
                 holderRepositories.getSubsystemRepository().createSubsystem(subsystem);
 
@@ -899,12 +898,10 @@ public class StructuresService {
                 updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(subsystem, holder));
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
                 // create
-                Discipline discipline = new Discipline();
-                setAttributes(discipline,
-                        structureElement.getUuid(),
-                        structureElement.getName(), structureElement.getMnemonic(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic()),
-                        structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        new Date(), requestedBy, structureElement.getComment());
+                Discipline discipline = new Discipline(uuid,
+                        name, mnemonic, equivalenceClassRepresentative,
+                        description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                        requested, requestedBy, requestedComment);
 
                 holderRepositories.getDisciplineRepository().createDiscipline(discipline);
 
@@ -914,16 +911,12 @@ public class StructuresService {
                 updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(discipline, holder));
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 // note rules for mnemonic for device group
-                String mnemonic = structureElement.getMnemonic();
-                mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
 
                 // create
-                DeviceGroup deviceGroup = new DeviceGroup();
-                setAttributes(deviceGroup,
-                        structureElement.getUuid(), structureElement.getParent(),
-                        structureElement.getName(), mnemonic, !StringUtils.isEmpty(mnemonic) ? namingConvention.equivalenceClassRepresentative(mnemonic) : null,
-                        structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        new Date(), requestedBy, structureElement.getComment());
+                DeviceGroup deviceGroup = new DeviceGroup(uuid, structureElement.getParent(),
+                        name, mnemonic, equivalenceClassRepresentative,
+                        description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                        requested, requestedBy, requestedComment);
 
                 holderRepositories.getDeviceGroupRepository().createDeviceGroup(deviceGroup);
 
@@ -933,12 +926,10 @@ public class StructuresService {
                 updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceGroup, holder));
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
                 // create
-                DeviceType deviceType = new DeviceType();
-                setAttributes(deviceType,
-                        structureElement.getUuid(), structureElement.getParent(),
-                        structureElement.getName(), structureElement.getMnemonic(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic()),
-                        structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                        new Date(), requestedBy, structureElement.getComment());
+                DeviceType deviceType = new DeviceType(uuid, structureElement.getParent(),
+                        name, mnemonic, equivalenceClassRepresentative,
+                        description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                        requested, requestedBy, requestedComment);
 
                 holderRepositories.getDeviceTypeRepository().createDeviceType(deviceType);
 
@@ -975,24 +966,25 @@ public class StructuresService {
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
         // do
+        Date requested = new Date();
         String requestedBy = "test who";
         final List<StructureElement> deletedStructureElements = Lists.newArrayList();
         for (StructureElementCommand structureElement : structureElements) {
+            String queryValue = structureElement.getUuid().toString();
+
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // find
-                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, queryValue);
                 if (systemGroups == null || systemGroups.size() != 1) {
                     continue;
                 }
                 SystemGroup toBeDeleted = systemGroups.get(0);
 
                 // create
-                SystemGroup systemGroup = new SystemGroup();
-                setAttributes(systemGroup,
-                        toBeDeleted.getUuid(),
+                SystemGroup systemGroup = new SystemGroup(toBeDeleted.getUuid(),
                         toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()),
                         toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                        new Date(), requestedBy, structureElement.getComment());
+                        requested, requestedBy, structureElement.getComment());
 
                 holderRepositories.getSystemGroupRepository().createSystemGroup(systemGroup);
 
@@ -1002,19 +994,17 @@ public class StructuresService {
                 deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(systemGroup, holder));
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 // find
-                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, queryValue);
                 if (systems == null || systems.size() != 1) {
                     continue;
                 }
                 System toBeDeleted = systems.get(0);
 
                 // create
-                System system = new System();
-                setAttributes(system,
-                        toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
+                System system = new System(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
                         toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()),
                         toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                        new Date(), requestedBy, structureElement.getComment());
+                        requested, requestedBy, structureElement.getComment());
 
                 holderRepositories.getSystemRepository().createSystem(system);
 
@@ -1024,19 +1014,17 @@ public class StructuresService {
                 deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(system, holder));
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 // find
-                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, queryValue);
                 if (subsystems == null || subsystems.size() != 1) {
                     continue;
                 }
                 Subsystem toBeDeleted = subsystems.get(0);
 
                 // create
-                Subsystem subsystem = new Subsystem();
-                setAttributes(subsystem,
-                        toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
+                Subsystem subsystem = new Subsystem(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
                         toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()),
                         toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                        new Date(), requestedBy, structureElement.getComment());
+                        requested, requestedBy, structureElement.getComment());
 
                 holderRepositories.getSubsystemRepository().createSubsystem(subsystem);
 
@@ -1046,19 +1034,17 @@ public class StructuresService {
                 deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(subsystem, holder));
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
                 // find
-                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, queryValue);
                 if (disciplines == null || disciplines.size() != 1) {
                     continue;
                 }
                 Discipline toBeDeleted = disciplines.get(0);
 
                 // create
-                Discipline discipline = new Discipline();
-                setAttributes(discipline,
-                        toBeDeleted.getUuid(),
+                Discipline discipline = new Discipline(toBeDeleted.getUuid(),
                         toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()),
                         toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                        new Date(), requestedBy, structureElement.getComment());
+                        requested, requestedBy, structureElement.getComment());
 
                 holderRepositories.getDisciplineRepository().createDiscipline(discipline);
 
@@ -1068,19 +1054,17 @@ public class StructuresService {
                 deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(discipline, holder));
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 // find
-                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, queryValue);
                 if (deviceGroups == null || deviceGroups.size() != 1) {
                     continue;
                 }
                 DeviceGroup toBeDeleted = deviceGroups.get(0);
 
                 // create
-                DeviceGroup deviceGroup = new DeviceGroup();
-                setAttributes(deviceGroup,
-                        toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
+                DeviceGroup deviceGroup = new DeviceGroup(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
                         toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()),
                         toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                        new Date(), requestedBy, structureElement.getComment());
+                        requested, requestedBy, structureElement.getComment());
 
                 holderRepositories.getDeviceGroupRepository().createDeviceGroup(deviceGroup);
 
@@ -1090,19 +1074,17 @@ public class StructuresService {
                 deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceGroup, holder));
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
                 // find
-                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, queryValue);
                 if (deviceTypes == null || deviceTypes.size() != 1) {
                     continue;
                 }
                 DeviceType toBeDeleted = deviceTypes.get(0);
 
                 // create
-                DeviceType deviceType = new DeviceType();
-                setAttributes(deviceType,
-                        toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
+                DeviceType deviceType = new DeviceType(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
                         toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()),
                         toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                        new Date(), requestedBy, structureElement.getComment());
+                        requested, requestedBy, structureElement.getComment());
 
                 holderRepositories.getDeviceTypeRepository().createDeviceType(deviceType);
 
@@ -1147,12 +1129,16 @@ public class StructuresService {
         //     update
         //         set not latest for current latest
         //         set approved, latest for pending
+        Date processed = new Date();
         String processedBy = "test who";
         final List<StructureElement> approvedStructureElements = Lists.newArrayList();
         for (StructureElementCommand structureElement : structureElements) {
+            String queryValue = structureElement.getUuid().toString();
+            String processedComment = structureElement.getComment();
+
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // find
-                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, queryValue);
                 SystemGroup systemGroup = null;
                 if (systemGroups != null && systemGroups.size() == 1) {
                     systemGroup = systemGroups.get(0);
@@ -1163,14 +1149,14 @@ public class StructuresService {
                 }
 
                 // find
-                systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (systemGroups == null || systemGroups.size() != 1) {
                     continue;
                 }
                 systemGroup = systemGroups.get(0);
 
                 // approve
-                setAttributesStatusProcessed(systemGroup, Status.APPROVED, new Date(), processedBy, structureElement.getComment());
+                systemGroup.setAttributesStatusProcessed(Status.APPROVED, processed, processedBy, processedComment);
                 systemGroup.setLatest(Boolean.TRUE);
                 holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup);
 
@@ -1180,7 +1166,7 @@ public class StructuresService {
                 // create name within current transaction
                 if (!StringUtils.isEmpty(systemGroup.getMnemonic())) {
                     NameElementCommand nameElement = new NameElementCommand(null, systemGroup.getUuid(), null, null, SYSTEM_STRUCTURE_ONLY, null);
-                    NameElement createdNameElement = namesService.createName(nameElement, holder, processedBy);
+                    NameElement createdNameElement = namesService.createName(nameElement, holder, processed, processedBy);
                     LOGGER.log(Level.FINE, "approveStructures, nameElement created, name:      {0}", createdNameElement.getName());
                 }
 
@@ -1188,7 +1174,7 @@ public class StructuresService {
                 approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(systemGroup, holder));
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 // find
-                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, queryValue);
                 System system = null;
                 if (systems != null && systems.size() == 1) {
                     system = systems.get(0);
@@ -1199,14 +1185,14 @@ public class StructuresService {
                 }
 
                 // find
-                systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (systems == null || systems.size() != 1) {
                     continue;
                 }
                 system = systems.get(0);
 
                 // approve
-                setAttributesStatusProcessed(system, Status.APPROVED, new Date(), processedBy, structureElement.getComment());
+                system.setAttributesStatusProcessed(Status.APPROVED, processed, processedBy, processedComment);
                 system.setLatest(Boolean.TRUE);
                 holderRepositories.getSystemRepository().updateSystem(system);
 
@@ -1216,7 +1202,7 @@ public class StructuresService {
                 // create name within current transaction
                 if (!StringUtils.isEmpty(system.getMnemonic())) {
                     NameElementCommand nameElement = new NameElementCommand(null, system.getUuid(), null, null, SYSTEM_STRUCTURE_ONLY, null);
-                    NameElement createdNameElement = namesService.createName(nameElement, holder, processedBy);
+                    NameElement createdNameElement = namesService.createName(nameElement, holder, processed, processedBy);
                     LOGGER.log(Level.FINE, "approveStructures, nameElement created, name:      {0}", createdNameElement.getName());
                 }
 
@@ -1224,7 +1210,7 @@ public class StructuresService {
                 approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(system, holder));
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 // find
-                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, queryValue);
                 Subsystem subsystem = null;
                 if (subsystems != null && subsystems.size() == 1) {
                     subsystem = subsystems.get(0);
@@ -1235,14 +1221,14 @@ public class StructuresService {
                 }
 
                 // find
-                subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (subsystems == null || subsystems.size() != 1) {
                     continue;
                 }
                 subsystem = subsystems.get(0);
 
                 // approve
-                setAttributesStatusProcessed(subsystem, Status.APPROVED, new Date(), processedBy, structureElement.getComment());
+                subsystem.setAttributesStatusProcessed(Status.APPROVED, processed, processedBy, processedComment);
                 subsystem.setLatest(Boolean.TRUE);
                 holderRepositories.getSubsystemRepository().updateSubsystem(subsystem);
 
@@ -1252,14 +1238,14 @@ public class StructuresService {
                 // create name within current transaction
                 if (!StringUtils.isEmpty(subsystem.getMnemonic())) {
                     NameElementCommand nameElement = new NameElementCommand(null, subsystem.getUuid(), null, null, SYSTEM_STRUCTURE_ONLY, null);
-                    NameElement createdNameElement = namesService.createName(nameElement, holder, processedBy);
+                    NameElement createdNameElement = namesService.createName(nameElement, holder, processed, processedBy);
                     LOGGER.log(Level.FINE, "approveStructures, nameElement created, name:      {0}", createdNameElement.getName());
                 }
 
                 // add
                 approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(subsystem, holder));
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
-                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, queryValue);
                 Discipline discipline = null;
                 if (disciplines != null && disciplines.size() == 1) {
                     discipline = disciplines.get(0);
@@ -1270,14 +1256,14 @@ public class StructuresService {
                 }
 
                 // find
-                disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (disciplines == null || disciplines.size() != 1) {
                     continue;
                 }
                 discipline = disciplines.get(0);
 
                 // approve
-                setAttributesStatusProcessed(discipline, Status.APPROVED, new Date(), processedBy, structureElement.getComment());
+                discipline.setAttributesStatusProcessed(Status.APPROVED, processed, processedBy, processedComment);
                 discipline.setLatest(Boolean.TRUE);
                 holderRepositories.getDisciplineRepository().updateDiscipline(discipline);
 
@@ -1287,7 +1273,7 @@ public class StructuresService {
                 approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(discipline, holder));
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 // find
-                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, queryValue);
                 DeviceGroup deviceGroup = null;
                 if (deviceGroups != null && deviceGroups.size() == 1) {
                     deviceGroup = deviceGroups.get(0);
@@ -1298,14 +1284,14 @@ public class StructuresService {
                 }
 
                 // find
-                deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (deviceGroups == null || deviceGroups.size() != 1) {
                     continue;
                 }
                 deviceGroup = deviceGroups.get(0);
 
                 // approve
-                setAttributesStatusProcessed(deviceGroup, Status.APPROVED, new Date(), processedBy, structureElement.getComment());
+                deviceGroup.setAttributesStatusProcessed(Status.APPROVED, processed, processedBy, processedComment);
                 deviceGroup.setLatest(Boolean.TRUE);
                 holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup);
 
@@ -1315,7 +1301,7 @@ public class StructuresService {
                 approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceGroup, holder));
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
                 // find
-                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, queryValue);
                 DeviceType deviceType = null;
                 if (deviceTypes != null && deviceTypes.size() == 1) {
                     deviceType = deviceTypes.get(0);
@@ -1326,14 +1312,14 @@ public class StructuresService {
                 }
 
                 // find
-                deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (deviceTypes == null || deviceTypes.size() != 1) {
                     continue;
                 }
                 deviceType = deviceTypes.get(0);
 
                 // approve
-                setAttributesStatusProcessed(deviceType, Status.APPROVED, new Date(), processedBy, structureElement.getComment());
+                deviceType.setAttributesStatusProcessed(Status.APPROVED, processed, processedBy, processedComment);
                 deviceType.setLatest(Boolean.TRUE);
                 holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType);
 
@@ -1365,19 +1351,23 @@ public class StructuresService {
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
         // do
+        Date processed = new Date();
         String processedBy = "test who";
         final List<StructureElement> cancelledStructureElements = Lists.newArrayList();
         for (StructureElementCommand structureElement : structureElements) {
+            String queryValue = structureElement.getUuid().toString();
+            String processedComment = structureElement.getComment();
+
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // find
-                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (systemGroups == null || systemGroups.size() != 1) {
                     continue;
                 }
                 SystemGroup systemGroup = systemGroups.get(0);
 
                 // cancel
-                setAttributesStatusProcessed(systemGroup, Status.CANCELLED, new Date(), processedBy, structureElement.getComment());
+                systemGroup.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
                 holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup);
 
                 // possibly validate that cancelled
@@ -1386,14 +1376,14 @@ public class StructuresService {
                 cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(systemGroup, holder));
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 // find
-                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (systems == null || systems.size() != 1) {
                     continue;
                 }
                 System system = systems.get(0);
 
                 // cancel
-                setAttributesStatusProcessed(system, Status.CANCELLED, new Date(), processedBy, structureElement.getComment());
+                system.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
                 holderRepositories.getSystemRepository().updateSystem(system);
 
                 // possibly validate that cancelled
@@ -1402,14 +1392,14 @@ public class StructuresService {
                 cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(system, holder));
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 // find
-                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (subsystems == null || subsystems.size() != 1) {
                     continue;
                 }
                 Subsystem subsystem = subsystems.get(0);
 
                 // cancel
-                setAttributesStatusProcessed(subsystem, Status.CANCELLED, new Date(), processedBy, structureElement.getComment());
+                subsystem.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
                 holderRepositories.getSubsystemRepository().updateSubsystem(subsystem);
 
                 // possibly validate that cancelled
@@ -1418,14 +1408,14 @@ public class StructuresService {
                 cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(subsystem, holder));
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
                 // find
-                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (disciplines == null || disciplines.size() != 1) {
                     continue;
                 }
                 Discipline discipline = disciplines.get(0);
 
                 // cancel
-                setAttributesStatusProcessed(discipline, Status.CANCELLED, new Date(), processedBy, structureElement.getComment());
+                discipline.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
                 holderRepositories.getDisciplineRepository().updateDiscipline(discipline);
 
                 // possibly validate that cancelled
@@ -1434,14 +1424,14 @@ public class StructuresService {
                 cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(discipline, holder));
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 // find
-                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (deviceGroups == null || deviceGroups.size() != 1) {
                     continue;
                 }
                 DeviceGroup deviceGroup = deviceGroups.get(0);
 
                 // cancel
-                setAttributesStatusProcessed(deviceGroup, Status.CANCELLED, new Date(), processedBy, structureElement.getComment());
+                deviceGroup.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
                 holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup);
 
                 // possibly validate that cancelled
@@ -1449,14 +1439,14 @@ public class StructuresService {
                 // add
                 cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceGroup, holder));
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
-                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (deviceTypes == null || deviceTypes.size() != 1) {
                     continue;
                 }
                 DeviceType deviceType = deviceTypes.get(0);
 
                 // cancel
-                setAttributesStatusProcessed(deviceType, Status.CANCELLED, new Date(), processedBy, structureElement.getComment());
+                deviceType.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
                 holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType);
 
                 // possibly validate that cancelled
@@ -1487,19 +1477,23 @@ public class StructuresService {
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
         // do
+        Date processed = new Date();
         String processedBy = "test who";
         final List<StructureElement> rejectedStructureElements = Lists.newArrayList();
         for (StructureElementCommand structureElement : structureElements) {
+            String queryValue = structureElement.getUuid().toString();
+            String processedComment = structureElement.getComment();
+
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // find
-                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (systemGroups == null || systemGroups.size() != 1) {
                     continue;
                 }
                 SystemGroup systemGroup = systemGroups.get(0);
 
                 // reject
-                setAttributesStatusProcessed(systemGroup, Status.REJECTED, new Date(), processedBy, structureElement.getComment());
+                systemGroup.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
                 holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup);
 
                 // possibly validate that rejected
@@ -1508,14 +1502,14 @@ public class StructuresService {
                 rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(systemGroup, holder));
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 // find
-                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (systems == null || systems.size() != 1) {
                     continue;
                 }
                 System system = systems.get(0);
 
                 // reject
-                setAttributesStatusProcessed(system, Status.REJECTED, new Date(), processedBy, structureElement.getComment());
+                system.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
                 holderRepositories.getSystemRepository().updateSystem(system);
 
                 // possibly validate that rejected
@@ -1524,14 +1518,14 @@ public class StructuresService {
                 rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(system, holder));
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 // find
-                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (subsystems == null || subsystems.size() != 1) {
                     continue;
                 }
                 Subsystem subsystem = subsystems.get(0);
 
                 // reject
-                setAttributesStatusProcessed(subsystem, Status.REJECTED, new Date(), processedBy, structureElement.getComment());
+                subsystem.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
                 holderRepositories.getSubsystemRepository().updateSubsystem(subsystem);
 
                 // possibly validate that rejected
@@ -1540,14 +1534,14 @@ public class StructuresService {
                 rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(subsystem, holder));
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
                 // find
-                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (disciplines == null || disciplines.size() != 1) {
                     continue;
                 }
                 Discipline discipline = disciplines.get(0);
 
                 // reject
-                setAttributesStatusProcessed(discipline, Status.REJECTED, new Date(), processedBy, structureElement.getComment());
+                discipline.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
                 holderRepositories.getDisciplineRepository().updateDiscipline(discipline);
 
                 // possibly validate that rejected
@@ -1556,14 +1550,14 @@ public class StructuresService {
                 rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(discipline, holder));
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 // find
-                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (deviceGroups == null || deviceGroups.size() != 1) {
                     continue;
                 }
                 DeviceGroup deviceGroup = deviceGroups.get(0);
 
                 // reject
-                setAttributesStatusProcessed(deviceGroup, Status.REJECTED, new Date(), processedBy, structureElement.getComment());
+                deviceGroup.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
                 holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup);
 
                 // possibly validate that rejected
@@ -1571,14 +1565,14 @@ public class StructuresService {
                 // add
                 rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceGroup, holder));
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
-                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
+                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, queryValue);
                 if (deviceTypes == null || deviceTypes.size() != 1) {
                     continue;
                 }
                 DeviceType deviceType = deviceTypes.get(0);
 
                 // reject
-                setAttributesStatusProcessed(deviceType, Status.REJECTED, new Date(), processedBy, structureElement.getComment());
+                deviceType.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
                 holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType);
 
                 // possibly validate that rejected
@@ -1592,79 +1586,4 @@ public class StructuresService {
         return rejectedStructureElements;
     }
 
-    // ----------------------------------------------------------------------------------------------------
-
-    /**
-     * Utility method to help set attributes for Structure class, which in practice is either of its sub classes.
-     *
-     * @param structure structure
-     * @param status status
-     * @param requested requested
-     * @param requestedBy requested by
-     * @param requestedComment requested comment
-     */
-    private void setAttributesStatusProcessed(Structure structure, Status status, Date processed, String processedBy, String processedComment) {
-        structure.setStatus(status);
-        structure.setProcessed(processed);
-        structure.setProcessedBy(processedBy);
-        structure.setProcessedComment(processedComment);
-    }
-
-    private void setAttributes(SystemGroup systemGroup, UUID uuid, String name, String mnemonic, String mnemonicEquivalence, String description, Status status, Boolean isLatest, Boolean isDeleted, Date requested, String requestedBy, String requestedComment) {
-        setAttributesStructure(systemGroup, uuid, name, mnemonic, mnemonicEquivalence, description, status, isLatest, isDeleted, requested, requestedBy, requestedComment);
-    }
-    private void setAttributes(System system, UUID uuid, UUID parentUuid, String name, String mnemonic, String mnemonicEquivalence, String description, Status status, Boolean isLatest, Boolean isDeleted, Date requested, String requestedBy, String requestedComment) {
-        system.setParentUuid(parentUuid);
-        setAttributesStructure(system, uuid, name, mnemonic, mnemonicEquivalence, description, status, isLatest, isDeleted, requested, requestedBy, requestedComment);
-    }
-    private void setAttributes(Subsystem subsystem, UUID uuid, UUID parentUuid, String name, String mnemonic, String mnemonicEquivalence, String description, Status status, Boolean isLatest, Boolean isDeleted, Date requested, String requestedBy, String requestedComment) {
-        subsystem.setParentUuid(parentUuid);
-        setAttributesStructure(subsystem, uuid, name, mnemonic, mnemonicEquivalence, description, status, isLatest, isDeleted, requested, requestedBy, requestedComment);
-    }
-    private void setAttributes(Discipline discipline, UUID uuid, String name, String mnemonic, String mnemonicEquivalence, String description, Status status, Boolean isLatest, Boolean isDeleted, Date requested, String requestedBy, String requestedComment) {
-        setAttributesStructure(discipline, uuid, name, mnemonic, mnemonicEquivalence, description, status, isLatest, isDeleted, requested, requestedBy, requestedComment);
-    }
-    private void setAttributes(DeviceGroup deviceGroup, UUID uuid, UUID parentUuid, String name, String mnemonic, String mnemonicEquivalence, String description, Status status, Boolean isLatest, Boolean isDeleted, Date requested, String requestedBy, String requestedComment) {
-        deviceGroup.setParentUuid(parentUuid);
-        setAttributesStructure(deviceGroup, uuid, name, mnemonic, mnemonicEquivalence, description, status, isLatest, isDeleted, requested, requestedBy, requestedComment);
-    }
-    private void setAttributes(DeviceType deviceType, UUID uuid, UUID parentUuid, String name, String mnemonic, String mnemonicEquivalence, String description, Status status, Boolean isLatest, Boolean isDeleted, Date requested, String requestedBy, String requestedComment) {
-        deviceType.setParentUuid(parentUuid);
-        setAttributesStructure(deviceType, uuid, name, mnemonic, mnemonicEquivalence, description, status, isLatest, isDeleted, requested, requestedBy, requestedComment);
-    }
-
-    /**
-     * Utility method to help set attributes for Structure class, which in practice is either of its sub classes.
-     *
-     * @param structure structure
-     * @param uuid uuid
-     * @param name name
-     * @param mnemonic mnemonic
-     * @param mnemonicEquivalence mnemonic equivalence
-     * @param description description
-     * @param status status
-     * @param latest latest
-     * @param deleted deleted
-     * @param requested requested
-     * @param requestedBy requested by
-     * @param requestedComment requested comment
-     */
-    private void setAttributesStructure(Structure structure,
-            UUID uuid,
-            String name, String mnemonic, String mnemonicEquivalence,
-            String description, Status status, Boolean latest, Boolean deleted,
-            Date requested, String requestedBy, String requestedComment) {
-        structure.setUuid(uuid);
-        structure.setName(name);
-        structure.setMnemonic(mnemonic);
-        structure.setMnemonicEquivalence(mnemonicEquivalence);
-        structure.setDescription(description);
-        structure.setStatus(status);
-        structure.setLatest(latest);
-        structure.setDeleted(deleted);
-        structure.setRequested(requested);
-        structure.setRequestedBy(requestedBy);
-        structure.setRequestedComment(requestedComment);
-    }
-
 }
-- 
GitLab