BET-34 Store/Load forwarding UUID
diff --git a/db/oracle/UpdateTo2.0.0FromDB_1.0.0/01_migrate_from_2.0.0_to_2.0.1.sql b/db/oracle/UpdateTo2.0.0FromDB_1.0.0/01_migrate_from_2.0.0_to_2.0.1.sql
new file mode 100644
index 0000000..bc6fc20
--- /dev/null
+++ b/db/oracle/UpdateTo2.0.0FromDB_1.0.0/01_migrate_from_2.0.0_to_2.0.1.sql
@@ -0,0 +1 @@
+ALTER TABLE TBL_NOTIFICATION add "RESPONSIBILITY_FORWARDING_UUID" RAW(16);
diff --git a/db/postgreSQL/UpdateTo2.0.0FromDB_1.0.0/01_migrate_from_2.0.0_to_2.0.1.sql b/db/postgreSQL/UpdateTo2.0.0FromDB_1.0.0/01_migrate_from_2.0.0_to_2.0.1.sql
new file mode 100644
index 0000000..b2db146
--- /dev/null
+++ b/db/postgreSQL/UpdateTo2.0.0FromDB_1.0.0/01_migrate_from_2.0.0_to_2.0.1.sql
@@ -0,0 +1,2 @@
+ALTER TABLE tbl_notification add responsibility_forwarding_uuid uuid;
+
diff --git a/pom.xml b/pom.xml
index 8516e68..922f92b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,7 @@
<maven.test.skip>false</maven.test.skip>
<jacoco-maven-plugin.version>0.7.9</jacoco-maven-plugin.version>
<sonar-maven-plugin.version>3.0.2</sonar-maven-plugin.version>
- <!--<javax.mail.version>3.0.2</javax.mail.version>-->
+ <hibernate-annotations.version>3.5.6-Final</hibernate-annotations.version>
</properties>
<dependencies>
<dependency>
@@ -129,6 +129,11 @@
<version>2.5.4</version>
</dependency>
<dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-annotations</artifactId>
+ <version>${hibernate-annotations.version}</version>
+ </dependency>
+ <dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.2.0</version>
diff --git a/src/main/java/org/eclipse/openk/elogbook/common/mapper/NotificationMapper.java b/src/main/java/org/eclipse/openk/elogbook/common/mapper/NotificationMapper.java
index 92d6b02..8ac4d64 100644
--- a/src/main/java/org/eclipse/openk/elogbook/common/mapper/NotificationMapper.java
+++ b/src/main/java/org/eclipse/openk/elogbook/common/mapper/NotificationMapper.java
@@ -11,13 +11,6 @@
*/
package org.eclipse.openk.elogbook.common.mapper;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
import org.eclipse.openk.elogbook.persistence.dao.RefBranchDao;
import org.eclipse.openk.elogbook.persistence.dao.RefGridTerritoryDao;
import org.eclipse.openk.elogbook.persistence.dao.RefNotificationPriorityDao;
@@ -30,6 +23,13 @@
import org.eclipse.openk.elogbook.persistence.model.TblNotification;
import org.eclipse.openk.elogbook.viewmodel.Notification;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
public class NotificationMapper {
private Map<Integer, RefNotificationStatus> refStatusMap;
private Map<Integer, RefNotificationPriority> refPriorityMap;
@@ -77,6 +77,7 @@
trg.setRefGridTerritory(refGridTerritoryMap.get(vmNot.getFkRefGridTerritory()));
trg.setAdminFlag(vmNot.isAdminFlag());
trg.setType(vmNot.getType());
+ trg.setResponsibilityForwardingUuid(vmNot.getResponsibilityForwardingUuid());
return trg;
}
@@ -126,6 +127,7 @@
}
not.getAdminFlag(tblNot.isAdminFlag());
not.setType(tblNot.getType());
+ not.setResponsibilityForwardingUuid(tblNot.getResponsibilityForwardingUuid());
return not;
}
diff --git a/src/main/java/org/eclipse/openk/elogbook/controller/BackendControllerUser.java b/src/main/java/org/eclipse/openk/elogbook/controller/BackendControllerUser.java
index 8820ce3..6e0a18d 100644
--- a/src/main/java/org/eclipse/openk/elogbook/controller/BackendControllerUser.java
+++ b/src/main/java/org/eclipse/openk/elogbook/controller/BackendControllerUser.java
@@ -29,6 +29,7 @@
import org.eclipse.openk.elogbook.persistence.model.TblUserSettings;
import org.eclipse.openk.elogbook.viewmodel.LoginCredentials;
import org.eclipse.openk.elogbook.viewmodel.UserAuthentication;
+import org.eclipse.openk.elogbook.viewmodel.contactbasedata.ContactTupel;
import javax.persistence.EntityManager;
import java.util.List;
@@ -85,9 +86,9 @@
return ret;
}
- public List<String> getUserSuggestionsFromContactdatabase(String token) throws BtbException {
+ public List<ContactTupel> getUserSuggestionsFromContactdatabase(String token) throws BtbException {
LOGGER.debug("getUserSuggestionsFromContactdatabase() is called");
- List<String> userContacts = ContactBaseDataManager.getInstance().getUserContacts(token);
+ List<ContactTupel> userContacts = ContactBaseDataManager.getInstance().getUserContacts(token);
LOGGER.debug("getUserSuggestionsFromContactdatabase() is finished");
return userContacts;
}
diff --git a/src/main/java/org/eclipse/openk/elogbook/controller/ContactBaseDataManager.java b/src/main/java/org/eclipse/openk/elogbook/controller/ContactBaseDataManager.java
index 4005527..8bc650d 100644
--- a/src/main/java/org/eclipse/openk/elogbook/controller/ContactBaseDataManager.java
+++ b/src/main/java/org/eclipse/openk/elogbook/controller/ContactBaseDataManager.java
@@ -16,11 +16,12 @@
import org.eclipse.openk.elogbook.common.JsonGeneratorBase;
import org.eclipse.openk.elogbook.communication.RestServiceWrapper;
import org.eclipse.openk.elogbook.exceptions.BtbException;
+import org.eclipse.openk.elogbook.viewmodel.contactbasedata.ContactTupel;
import org.eclipse.openk.elogbook.viewmodel.contactbasedata.VwDetailedContact;
import org.eclipse.openk.elogbook.viewmodel.contactbasedata.VwDetailedContactPage;
-import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
public class ContactBaseDataManager {
@@ -33,21 +34,24 @@
return INSTANCE;
}
- public List<String> getUserContacts(String token) throws BtbException {
- List<String> returnList = new ArrayList();
+ public List<ContactTupel> getUserContacts(String token) throws BtbException {
RestServiceWrapper restServiceWrapper = new RestServiceWrapper(BackendConfig.getInstance().getContactBaseDataApiUrl(), false);
String response = restServiceWrapper.performGetRequest("contacts?size=2000",token);
VwDetailedContactPage vwDetailedContactPage = JsonGeneratorBase.getGson().fromJson(response,
VwDetailedContactPage.class);
- List<VwDetailedContact> content = vwDetailedContactPage.getContent();
- for (VwDetailedContact vwDetailedContact : content) {
- String userName = vwDetailedContact.getName();
- if (userName != null) {
- userName = userName.replace("," ,"");
- }
- returnList.add(userName);
+ return vwDetailedContactPage.getContent().stream().map(this::mapFromViewObj ).collect(Collectors.toList());
+ }
+
+ private ContactTupel mapFromViewObj( VwDetailedContact vwDetailedContact ) {
+ String userName = vwDetailedContact.getName();
+ if (userName != null) {
+ userName = userName.replace("," ,"");
}
- return returnList;
+ ContactTupel ct = new ContactTupel();
+ ct.setContactName(userName);
+ ct.setContactUuid(vwDetailedContact.getUuid());
+ return ct;
+
}
}
diff --git a/src/main/java/org/eclipse/openk/elogbook/controller/ControllerImplementations.java b/src/main/java/org/eclipse/openk/elogbook/controller/ControllerImplementations.java
index 5070e94..4b33f32 100644
--- a/src/main/java/org/eclipse/openk/elogbook/controller/ControllerImplementations.java
+++ b/src/main/java/org/eclipse/openk/elogbook/controller/ControllerImplementations.java
@@ -31,6 +31,7 @@
import org.eclipse.openk.elogbook.viewmodel.TerritoryResponsibility;
import org.eclipse.openk.elogbook.viewmodel.UserAuthentication;
import org.eclipse.openk.elogbook.viewmodel.VersionInfo;
+import org.eclipse.openk.elogbook.viewmodel.contactbasedata.ContactTupel;
import javax.ws.rs.core.Response;
import java.util.List;
@@ -573,7 +574,7 @@
@Override
public Response invoke() throws BtbException {
- List<String> userSuggestionsList = backendControllerUser.getUserSuggestionsFromContactdatabase(this.token);
+ List<ContactTupel> userSuggestionsList = backendControllerUser.getUserSuggestionsFromContactdatabase(this.token);
return ResponseBuilderWrapper.INSTANCE
.buildOKResponse(JsonGeneratorBase.getGson().toJson(userSuggestionsList));
}
diff --git a/src/main/java/org/eclipse/openk/elogbook/persistence/model/AbstractNotification.java b/src/main/java/org/eclipse/openk/elogbook/persistence/model/AbstractNotification.java
index 2944de0..5dde8c6 100644
--- a/src/main/java/org/eclipse/openk/elogbook/persistence/model/AbstractNotification.java
+++ b/src/main/java/org/eclipse/openk/elogbook/persistence/model/AbstractNotification.java
@@ -11,9 +11,21 @@
*/
package org.eclipse.openk.elogbook.persistence.model;
-import javax.persistence.*;
+import org.eclipse.openk.elogbook.persistence.util.UUIDConverter;
+import org.eclipse.persistence.annotations.Convert;
+import org.eclipse.persistence.annotations.Converter;
+
+import javax.persistence.Column;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.SequenceGenerator;
import java.io.Serializable;
import java.sql.Timestamp;
+import java.util.UUID;
/**
@@ -72,6 +84,11 @@
@Column(name="responsibility_forwarding")
private String responsibilityForwarding;
+ @Column(name="responsibility_forwarding_uuid")
+ @Converter(converterClass= UUIDConverter.class, name="responsibility_forwarding_uuid")
+ @Convert("responsibility_forwarding_uuid")
+ private UUID responsibilityForwardingUuid;
+
@Column(name="version")
private Integer version;
@@ -279,4 +296,12 @@
public void setType(String type) {
this.type = type;
}
+
+ public UUID getResponsibilityForwardingUuid() {
+ return responsibilityForwardingUuid;
+ }
+
+ public void setResponsibilityForwardingUuid(UUID responsibilityForwardingUuid) {
+ this.responsibilityForwardingUuid = responsibilityForwardingUuid;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/elogbook/persistence/util/UUIDConverter.java b/src/main/java/org/eclipse/openk/elogbook/persistence/util/UUIDConverter.java
new file mode 100644
index 0000000..c39247c
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/elogbook/persistence/util/UUIDConverter.java
@@ -0,0 +1,67 @@
+package org.eclipse.openk.elogbook.persistence.util;
+
+import org.eclipse.persistence.internal.helper.DatabaseField;
+import org.eclipse.persistence.mappings.DatabaseMapping;
+import org.eclipse.persistence.mappings.OneToOneMapping;
+import org.eclipse.persistence.sessions.Session;
+
+import java.sql.Types;
+import java.text.MessageFormat;
+import java.util.UUID;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+public class UUIDConverter implements org.eclipse.persistence.mappings.converters.Converter
+{
+ private static final Logger LOG = Logger.getLogger(UUIDConverter.class.getName());
+
+ @Override
+ public UUID convertObjectValueToDataValue(Object objectValue, Session session)
+ {
+ return (UUID) objectValue;
+ }
+
+ @Override
+ public UUID convertDataValueToObjectValue(Object dataValue, Session session)
+ {
+ return (UUID) dataValue;
+ }
+
+ @Override
+ public boolean isMutable()
+ {
+ return false;
+ }
+
+ @Override
+ public void initialize(DatabaseMapping mapping, Session session)
+ {
+ DatabaseField field = mapping.getField();
+ field.setSqlType(Types.OTHER);
+ field.setTypeName("java.util.UUID");
+ field.setColumnDefinition("UUID");
+
+
+ if (LOG.isLoggable(Level.FINE))
+ LOG.log(Level.FINE, MessageFormat.format("Setting local field {0} to be a UUID", field) );
+
+ // Find the bi-directional references other objects have to this field, and update them to be uuid too
+ for (DatabaseMapping m : mapping.getDescriptor().getMappings())
+ {
+ if (m instanceof OneToOneMapping)
+ {
+ OneToOneMapping oneToOneMapping = (OneToOneMapping) m;
+
+ DatabaseField relationshipField = oneToOneMapping.getSourceToTargetKeyFields().get(field);
+ if (relationshipField != null)
+ {
+ relationshipField.setSqlType(Types.OTHER);
+ relationshipField.setColumnDefinition("UUID");
+ relationshipField.setTypeName("java.util.UUID");
+ if (LOG.isLoggable(Level.FINE))
+ LOG.log(Level.FINE, MessageFormat.format("Setting foreign key field {0} to be a UUID", relationshipField));
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/elogbook/viewmodel/Notification.java b/src/main/java/org/eclipse/openk/elogbook/viewmodel/Notification.java
index 02c8177..0a29961 100644
--- a/src/main/java/org/eclipse/openk/elogbook/viewmodel/Notification.java
+++ b/src/main/java/org/eclipse/openk/elogbook/viewmodel/Notification.java
@@ -13,6 +13,7 @@
import java.util.Date;
import java.util.List;
+import java.util.UUID;
public class Notification {
@@ -28,6 +29,7 @@
private String freeText;
private String freeTextExtended;
private String responsibilityForwarding;
+ private UUID responsibilityForwardingUuid;
private String responsibilityControlPoint;
private Date reminderDate;
private Date futureDate;
@@ -255,4 +257,12 @@
public void setType(String type) {
this.type = type;
}
+
+ public UUID getResponsibilityForwardingUuid() {
+ return responsibilityForwardingUuid;
+ }
+
+ public void setResponsibilityForwardingUuid(UUID responsibilityForwardingUuid) {
+ this.responsibilityForwardingUuid = responsibilityForwardingUuid;
+ }
}
diff --git a/src/main/java/org/eclipse/openk/elogbook/viewmodel/contactbasedata/ContactTupel.java b/src/main/java/org/eclipse/openk/elogbook/viewmodel/contactbasedata/ContactTupel.java
new file mode 100644
index 0000000..63d22eb
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/elogbook/viewmodel/contactbasedata/ContactTupel.java
@@ -0,0 +1,24 @@
+package org.eclipse.openk.elogbook.viewmodel.contactbasedata;
+
+import java.util.UUID;
+
+public class ContactTupel {
+ private String contactName;
+ private UUID contactUuid;
+
+ public String getContactName() {
+ return contactName;
+ }
+
+ public void setContactName(String contactName) {
+ this.contactName = contactName;
+ }
+
+ public UUID getContactUuid() {
+ return contactUuid;
+ }
+
+ public void setContactUuid(UUID contactUuid) {
+ this.contactUuid = contactUuid;
+ }
+}