diff --git a/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/Contact.java b/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/Contact.java
index 6720fbd..733611e 100644
--- a/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/Contact.java
+++ b/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/Contact.java
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonIdentityReference;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import org.hibernate.envers.Audited;
import org.libreccm.core.CcmObjects;
+import org.libreccm.imexport.Exportable;
import org.librecms.assets.ContactableEntity;
import java.io.Serializable;
@@ -33,7 +34,7 @@ import static org.scientificcms.contenttypes.scidepartment.SciDepartmentConstant
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "uuid"
)
-public class Contact implements Serializable {
+public class Contact implements Exportable, Serializable {
private static final long serialVersionUID = 1L;
@@ -41,6 +42,9 @@ public class Contact implements Serializable {
@Column(name = "CONTACT_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private long contactId;
+
+ @Column(name = "uuid", unique = true, nullable = false)
+ private String uuid;
@Column(name = "CONTACT_TYPE", length = 255, nullable = true)
private String contactType;
@@ -65,6 +69,15 @@ public class Contact implements Serializable {
protected void setContactId(final long contactId) {
this.contactId = contactId;
}
+
+ @Override
+ public String getUuid() {
+ return uuid;
+ }
+
+ protected void setUuid(final String uuid) {
+ this.uuid = uuid;
+ }
public String getContactType() {
return contactType;
@@ -102,6 +115,7 @@ public class Contact implements Serializable {
public int hashCode() {
int hash = 7;
hash = 41 * hash + (int) (contactId ^ (contactId >>> 32));
+ hash = 41 * hash * Objects.hashCode(uuid);
hash = 41 * hash + Objects.hashCode(contactType);
hash = 41 * hash + (int) (order ^ (order >>> 32));
hash = 41 * hash + CcmObjects.hashCodeUsingUuid(department);
@@ -127,6 +141,9 @@ public class Contact implements Serializable {
if (contactId != other.getContactId()) {
return false;
}
+ if (!Objects.equals(uuid, other.getUuid())) {
+ return false;
+ }
if (!Objects.equals(contactType, other.getContactType())) {
return false;
}
@@ -140,7 +157,6 @@ public class Contact implements Serializable {
}
public boolean canEqual(final Object obj) {
-
return obj instanceof Contact;
}
@@ -153,6 +169,7 @@ public class Contact implements Serializable {
return String.format(
"%s{ "
+ "contactId = %d, "
+ + "uuid = %s, "
+ "contactType = \"%s\", "
+ "order = %d, "
+ "project = { %s } "
@@ -160,6 +177,7 @@ public class Contact implements Serializable {
+ " }",
super.toString(),
contactId,
+ uuid,
contactType,
order,
Optional
diff --git a/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/ContactRepository.java b/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/ContactRepository.java
index 7baf47d..79341bf 100644
--- a/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/ContactRepository.java
+++ b/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/ContactRepository.java
@@ -2,6 +2,8 @@ package org.scientificcms.contenttypes.scidepartment;
import org.libreccm.auditing.AbstractAuditedEntityRepository;
+import java.util.UUID;
+
import javax.enterprise.context.RequestScoped;
/**
@@ -39,4 +41,9 @@ public class ContactRepository
return contact.getContactId() == 0;
}
+ @Override
+ public void initNewEntity(final Contact contact) {
+ contact.setUuid(UUID.randomUUID().toString());
+ }
+
}
diff --git a/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/DepartmentProject.java b/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/DepartmentProject.java
index 814a2eb..07743b0 100644
--- a/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/DepartmentProject.java
+++ b/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/DepartmentProject.java
@@ -3,6 +3,7 @@ package org.scientificcms.contenttypes.scidepartment;
import com.fasterxml.jackson.annotation.JsonIdentityReference;
import org.hibernate.envers.Audited;
import org.libreccm.core.CcmObjects;
+import org.libreccm.imexport.Exportable;
import org.scientificcms.contenttypes.sciproject.SciProject;
import java.io.Serializable;
@@ -27,7 +28,7 @@ import static org.scientificcms.contenttypes.scidepartment.SciDepartmentConstant
@Entity
@Audited
@Table(name = "DEPARTMENT_PROJECTS", schema = DB_SCHEMA)
-public class DepartmentProject implements Serializable {
+public class DepartmentProject implements Exportable, Serializable {
private static final long serialVersionUID = 1L;
@@ -35,6 +36,9 @@ public class DepartmentProject implements Serializable {
@Column(name = "DEPARTMENT_PROJECT_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private long departmentProjectId;
+
+ @Column(name = "uuid", unique = true, nullable = false)
+ private String uuid;
@ManyToOne
@JoinColumn(name = "DEPARTMENT_ID")
@@ -54,6 +58,15 @@ public class DepartmentProject implements Serializable {
this.departmentProjectId = departmentProjectId;
}
+ @Override
+ public String getUuid() {
+ return uuid;
+ }
+
+ protected void setUuid(final String uuid) {
+ this.uuid = uuid;
+ }
+
public SciDepartment getDepartment() {
return department;
}
@@ -73,9 +86,9 @@ public class DepartmentProject implements Serializable {
@Override
public int hashCode() {
int hash = 7;
- hash
- = 59 * hash + (int) (departmentProjectId ^ (departmentProjectId
- >>> 32));
+ hash = 59 * hash
+ + (int) (departmentProjectId ^ (departmentProjectId >>> 32));
+ hash = 59 * hash + Objects.hashCode(uuid);
hash = 59 * hash + CcmObjects.hashCodeUsingUuid(department);
hash = 59 * hash + CcmObjects.hashCodeUsingUuid(project);
return hash;
@@ -100,6 +113,9 @@ public class DepartmentProject implements Serializable {
if (departmentProjectId != other.getDepartmentProjectId()) {
return false;
}
+ if (!Objects.equals(uuid, other.getUuid())) {
+ return false;
+ }
if (!CcmObjects.equalsUsingUuid(department, other.getDepartment())) {
return false;
}
@@ -119,16 +135,18 @@ public class DepartmentProject implements Serializable {
return String.format(
"%s{ "
+ "departmentProjectId = %d, "
+ + "uuid = %s, "
+ "department = { %s }, "
+ "project = { %s}%s"
+ " }",
super.toString(),
departmentProjectId,
+ uuid,
Optional
.ofNullable(department)
.map(
dep -> String.format(
- "objectId = %d,"
+ "objectId = %d, "
+ "uuid = \"%s\", "
+ "name = \"%s\"",
dep.getObjectId(),
diff --git a/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/DepartmentProjectRepository.java b/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/DepartmentProjectRepository.java
index b3266c8..1d8b116 100644
--- a/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/DepartmentProjectRepository.java
+++ b/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/DepartmentProjectRepository.java
@@ -2,6 +2,8 @@ package org.scientificcms.contenttypes.scidepartment;
import org.libreccm.auditing.AbstractAuditedEntityRepository;
+import java.util.UUID;
+
import javax.enterprise.context.RequestScoped;
/**
@@ -38,5 +40,10 @@ public class DepartmentProjectRepository
public boolean isNew(final DepartmentProject project) {
return project.getDepartmentProjectId() == 0;
}
+
+ @Override
+ public void initNewEntity(final DepartmentProject project) {
+ project.setUuid(UUID.randomUUID().toString());
+ }
}
diff --git a/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/Membership.java b/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/Membership.java
index 758fc9b..7bb7588 100644
--- a/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/Membership.java
+++ b/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/Membership.java
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonIdentityReference;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import org.hibernate.envers.Audited;
import org.libreccm.core.CcmObjects;
+import org.libreccm.imexport.Exportable;
import org.librecms.assets.Person;
import java.io.Serializable;
@@ -35,7 +36,7 @@ import static org.scientificcms.contenttypes.scidepartment.SciDepartmentConstant
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "uuid"
)
-public class Membership implements Serializable {
+public class Membership implements Exportable, Serializable {
private static final long serialVersionUID = 1L;
@@ -43,6 +44,9 @@ public class Membership implements Serializable {
@Column(name = "MEMBERSHIP_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private long membershipId;
+
+ @Column(name = "uuid", unique = true, nullable = false)
+ private String uuid;
@Column(name = "MEMBER_ROLE", length = 255, nullable = true)
private String role;
@@ -68,6 +72,15 @@ public class Membership implements Serializable {
protected void setMembershipId(final long membershipId) {
this.membershipId = membershipId;
}
+
+ @Override
+ public String getUuid() {
+ return uuid;
+ }
+
+ protected void setUuid(final String uuid) {
+ this.uuid = uuid;
+ }
public String getRole() {
return role;
@@ -104,8 +117,8 @@ public class Membership implements Serializable {
@Override
public int hashCode() {
int hash = 7;
- hash = 37 * hash
- + (int) (membershipId ^ (membershipId >>> 32));
+ hash = 37 * hash + (int) (membershipId ^ (membershipId >>> 32));
+ hash = 37 * hash + Objects.hashCode(uuid);
hash = 37 * hash + Objects.hashCode(role);
hash = 37 * hash + Objects.hashCode(status);
hash = 37 * hash + CcmObjects.hashCodeUsingUuid(department);
@@ -132,6 +145,9 @@ public class Membership implements Serializable {
if (membershipId != other.getMembershipId()) {
return false;
}
+ if (!Objects.equals(uuid, other.getUuid())) {
+ return false;
+ }
if (!Objects.equals(role, other.getRole())) {
return false;
}
@@ -158,6 +174,7 @@ public class Membership implements Serializable {
return String.format(
"%s{ "
+ "membershipId = %d, "
+ + "uuid = %s, "
+ "role = \"%s\", "
+ "status = \"%s\","
+ "project = { %s }, "
@@ -165,6 +182,7 @@ public class Membership implements Serializable {
+ " }",
super.toString(),
membershipId,
+ uuid,
role,
Objects.toString(status),
Optional
diff --git a/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/MembershipRepository.java b/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/MembershipRepository.java
index 6ba1116..4b80f3b 100644
--- a/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/MembershipRepository.java
+++ b/sci-types-department/src/main/java/org/scientificcms/contenttypes/scidepartment/MembershipRepository.java
@@ -2,6 +2,8 @@ package org.scientificcms.contenttypes.scidepartment;
import org.libreccm.auditing.AbstractAuditedEntityRepository;
+import java.util.UUID;
+
import javax.enterprise.context.RequestScoped;
/**
@@ -36,5 +38,10 @@ public class MembershipRepository
public boolean isNew(final Membership membership) {
return membership.getMembershipId() == 0;
}
+
+ @Override
+ public void initNewEntity(final Membership membership) {
+ membership.setUuid(UUID.randomUUID().toString());
+ }
}
diff --git a/sci-types-department/src/main/resources/db/migrations/org/scientificcms/sci_types_department/h2/V7_0_0_1__add_uuids.sql b/sci-types-department/src/main/resources/db/migrations/org/scientificcms/sci_types_department/h2/V7_0_0_1__add_uuids.sql
new file mode 100644
index 0000000..b9c8c64
--- /dev/null
+++ b/sci-types-department/src/main/resources/db/migrations/org/scientificcms/sci_types_department/h2/V7_0_0_1__add_uuids.sql
@@ -0,0 +1,30 @@
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_CONTACTS
+ add column uuid varchar(255);
+update SCI_TYPES_DEPARTMENT.DEPARTMENT_CONTACTS set uuid = random_uuid();
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_CONTACTS
+ alter column uuid set not null;
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_CONTACTS
+ add constraint UK_cj8lfjkv543vx69md42sk1voy unique (uuid);
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_CONTACTS_AUD
+ add column uuid varchar(255);
+
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_MEMBERSHIPS
+ add column uuid varchar(255);
+update SCI_TYPES_DEPARTMENT.DEPARTMENT_MEMBERSHIPS set uuid = random_uuid();
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_MEMBERSHIPS
+ alter column uuid set not null;
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_MEMBERSHIPS
+ add constraint UK_eam1w4v274hfskf9o68q7whho unique (uuid);
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_MEMBERSHIPS_AUD
+ add column uuid varchar(255);
+
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_PROJECTS
+ add column uuid varchar(255);
+update SCI_TYPES_DEPARTMENT.DEPARTMENT_PROJECTS set uuid = random_uuid();
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_PROJECTS
+ alter column uuid set not null;
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_PROJECTS
+ add constraint UK_nvmvbgwo422wsh4td2jcx6cv7 unique (uuid);
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_PROJECTS_AUD
+ add column uuid varchar(255);
+
diff --git a/sci-types-department/src/main/resources/db/migrations/org/scientificcms/sci_types_department/pgsql/V7_0_0_1__add_uuids.sql b/sci-types-department/src/main/resources/db/migrations/org/scientificcms/sci_types_department/pgsql/V7_0_0_1__add_uuids.sql
new file mode 100644
index 0000000..e4643f8
--- /dev/null
+++ b/sci-types-department/src/main/resources/db/migrations/org/scientificcms/sci_types_department/pgsql/V7_0_0_1__add_uuids.sql
@@ -0,0 +1,30 @@
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_CONTACTS
+ add column uuid varchar(255);
+update SCI_TYPES_DEPARTMENT.DEPARTMENT_CONTACTS set uuid = gen_random_uuid();
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_CONTACTS
+ alter column uuid set not null;
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_CONTACTS
+ add constraint UK_cj8lfjkv543vx69md42sk1voy unique (uuid);
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_CONTACTS_AUD
+ add column uuid varchar(255);
+
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_MEMBERSHIPS
+ add column uuid varchar(255);
+update SCI_TYPES_DEPARTMENT.DEPARTMENT_MEMBERSHIPS set uuid = gen_random_uuid();
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_MEMBERSHIPS
+ alter column uuid set not null;
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_MEMBERSHIPS
+ add constraint UK_eam1w4v274hfskf9o68q7whho unique (uuid);
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_MEMBERSHIPS_AUD
+ add column uuid varchar(255);
+
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_PROJECTS
+ add column uuid varchar(255);
+update SCI_TYPES_DEPARTMENT.DEPARTMENT_PROJECTS set uuid = gen_random_uuid();
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_PROJECTS
+ alter column uuid set not null;
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_PROJECTS
+ add constraint UK_nvmvbgwo422wsh4td2jcx6cv7 unique (uuid);
+alter table SCI_TYPES_DEPARTMENT.DEPARTMENT_PROJECTS_AUD
+ add column uuid varchar(255);
+
diff --git a/scicms-bundle-devel-wildfly/pom.xml b/scicms-bundle-devel-wildfly/pom.xml
index 370cf9a..7921489 100644
--- a/scicms-bundle-devel-wildfly/pom.xml
+++ b/scicms-bundle-devel-wildfly/pom.xml
@@ -335,6 +335,13 @@
org.wildfly.plugins
wildfly-jar-maven-plugin
+
+
+
+
+
+
+
-agentlib:jdwp=transport=dt_socket,server=y,suspend=${libreccm.debug.suspend},address=${libreccm.debug.port}
diff --git a/scicms-bundle-devel-wildfly/set-transaction-timeout.cli b/scicms-bundle-devel-wildfly/set-transaction-timeout.cli
new file mode 100644
index 0000000..9273f21
--- /dev/null
+++ b/scicms-bundle-devel-wildfly/set-transaction-timeout.cli
@@ -0,0 +1 @@
+/subsystem=transactions:write-attribute(name=default-timeout,value=3600)