diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Contact.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Contact.java
index 0b237e1..ce88444 100644
--- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Contact.java
+++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Contact.java
@@ -21,6 +21,8 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
import static org.scientificcms.contenttypes.sciproject.SciProjectConstants.*;
@@ -29,9 +31,15 @@ import static org.scientificcms.contenttypes.sciproject.SciProjectConstants.*;
*
* @author Jens Pelzetter
*/
-@Entity(name = "ProjectContact")
+@Entity(name = "SciProjectContact")
@Audited
@Table(name = "PROJECT_CONTACTS", schema = DB_SCHEMA)
+@NamedQueries({
+ @NamedQuery(
+ name = "SciProjectContact.findByUuid",
+ query = "SELECT c FROM SciProjectContact c WHERE c.uuid = :uuid"
+ )
+})
public class Contact implements Exportable, Serializable {
private static final long serialVersionUID = 1L;
diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/ContactImExporter.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/ContactImExporter.java
index 3af13cd..2f8c7e6 100644
--- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/ContactImExporter.java
+++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/ContactImExporter.java
@@ -9,12 +9,12 @@ import org.librecms.assets.Person;
import org.librecms.contentsection.ContentItemRepository;
import java.util.Objects;
+import java.util.Optional;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
-import javax.transaction.Transactional;
/**
* Importer/Exporter for {@link Contact} entities.
@@ -25,14 +25,14 @@ import javax.transaction.Transactional;
@Processes(Contact.class)
public class ContactImExporter
extends AbstractEntityImExporter {
-
+
private static final Logger LOGGER = LogManager.getLogger(
ContactImExporter.class
);
@Inject
private ContactRepository contactRepo;
-
+
@Inject
private ContentItemRepository itemRepo;
@@ -54,10 +54,34 @@ public class ContactImExporter
}
@Override
- @Transactional(Transactional.TxType.REQUIRED)
+ protected Optional findExistingEntity(final String uuid) {
+ return contactRepo.findByUuid(uuid);
+
+ }
+
+ @Override
protected void saveImportedEntity(final Contact entity) {
contactRepo.save(entity);
}
+
+ @Override
+ protected void updateExistingEntity(
+ final Contact existingEntity,
+ final Contact importedEntity
+ ) {
+ if (!Objects.equals(
+ existingEntity.getContactType(),
+ importedEntity.getContactType()
+ )) {
+ existingEntity.setContactType(importedEntity.getContactType());
+ }
+
+ if (existingEntity.getOrder() != importedEntity.getOrder()) {
+ existingEntity.setOrder(importedEntity.getOrder());
+ }
+
+ contactRepo.save(existingEntity);
+ }
@Override
protected Contact reloadEntity(final Contact entity) {
diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/ContactRepository.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/ContactRepository.java
index 77c637d..aaa4857 100644
--- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/ContactRepository.java
+++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/ContactRepository.java
@@ -2,9 +2,12 @@ package org.scientificcms.contenttypes.sciproject;
import org.libreccm.auditing.AbstractAuditedEntityRepository;
+import java.util.Optional;
import java.util.UUID;
import javax.enterprise.context.RequestScoped;
+import javax.persistence.NoResultException;
+import javax.transaction.Transactional;
/**
*
@@ -45,5 +48,19 @@ public class ContactRepository
public void initNewEntity(final Contact contact) {
contact.setUuid(UUID.randomUUID().toString());
}
+
+ @Transactional(Transactional.TxType.REQUIRED)
+ public Optional findByUuid(final String uuid) {
+ try {
+ return Optional.of(
+ getEntityManager()
+ .createNamedQuery("SciProjectContact.findByUuid", Contact.class)
+ .setParameter("uuid", uuid)
+ .getSingleResult()
+ );
+ } catch(NoResultException ex) {
+ return Optional.empty();
+ }
+ }
}
diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Membership.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Membership.java
index 92c6e98..59e0c0f 100644
--- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Membership.java
+++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Membership.java
@@ -20,6 +20,8 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
import static org.scientificcms.contenttypes.sciproject.SciProjectConstants.*;
@@ -28,7 +30,7 @@ import static org.scientificcms.contenttypes.sciproject.SciProjectConstants.*;
*
* @author Jens Pelzetter
*/
-@Entity(name = "PROJECT_MEMBERSHIP")
+@Entity(name = "SciProjectMembership")
@Audited
@Table(name = "PROJECT_MEMBERSHIPS", schema = DB_SCHEMA)
@JsonIdentityInfo(
@@ -36,6 +38,12 @@ import static org.scientificcms.contenttypes.sciproject.SciProjectConstants.*;
property = "uuid",
scope = Membership.class
)
+@NamedQueries({
+ @NamedQuery(
+ name = "SciProjectMembership.findByUuid",
+ query = "SELECT m FROM SciProjectMembership m WHERE m.uuid = :uuid"
+ )
+})
public class Membership implements Exportable, Serializable {
private static final long serialVersionUID = 1L;
diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/MembershipImExporter.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/MembershipImExporter.java
index 71f6981..18e4835 100644
--- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/MembershipImExporter.java
+++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/MembershipImExporter.java
@@ -6,12 +6,12 @@ import org.librecms.assets.Person;
import org.librecms.contentsection.ContentItemRepository;
import java.util.Objects;
+import java.util.Optional;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
-import javax.transaction.Transactional;
/**
* Importer/Exporter for {@link Membership} entities.
@@ -25,7 +25,7 @@ public class MembershipImExporter
@Inject
private ContentItemRepository itemRepo;
-
+
@Inject
private MembershipRepository membershipRepo;
@@ -46,11 +46,34 @@ public class MembershipImExporter
}
@Override
- @Transactional(Transactional.TxType.REQUIRED)
+ protected Optional findExistingEntity(final String uuid) {
+ return membershipRepo.findByUuid(uuid);
+ }
+
+ @Override
protected void saveImportedEntity(final Membership entity) {
membershipRepo.save(entity);
}
+ @Override
+ protected void updateExistingEntity(
+ final Membership existingEntity,
+ final Membership importedEntity
+ ) {
+ if (!Objects.equals(
+ existingEntity.getRole(),
+ importedEntity.getRole()
+ )) {
+ existingEntity.setRole(importedEntity.getRole());
+ }
+
+ if (existingEntity.getStatus() != importedEntity.getStatus()) {
+ existingEntity.setStatus(importedEntity.getStatus());
+ }
+
+ membershipRepo.save(existingEntity);
+ }
+
@Override
protected Membership reloadEntity(final Membership entity) {
return membershipRepo
diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/MembershipRepository.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/MembershipRepository.java
index 87e9f70..956aad1 100644
--- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/MembershipRepository.java
+++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/MembershipRepository.java
@@ -2,7 +2,12 @@ package org.scientificcms.contenttypes.sciproject;
import org.libreccm.auditing.AbstractAuditedEntityRepository;
+import java.util.Optional;
+
+import javax.ejb.TransactionAttribute;
import javax.enterprise.context.RequestScoped;
+import javax.persistence.NoResultException;
+import javax.transaction.Transactional;
/**
*
@@ -39,4 +44,21 @@ public class MembershipRepository
return membership.getMembershipId() == 0;
}
+ @Transactional(Transactional.TxType.REQUIRED)
+ public Optional findByUuid(final String uuid) {
+ try {
+ return Optional.of(
+ getEntityManager()
+ .createNamedQuery(
+ "SciProjectMembership.findByUuid",
+ Membership.class
+ )
+ .setParameter("uuid", uuid)
+ .getSingleResult()
+ );
+ } catch (NoResultException ex) {
+ return Optional.empty();
+ }
+ }
+
}
diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProjectImExporter.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProjectImExporter.java
index 15e22df..9bcaf09 100644
--- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProjectImExporter.java
+++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SciProjectImExporter.java
@@ -8,6 +8,8 @@ package org.scientificcms.contenttypes.sciproject;
import org.libreccm.imexport.Processes;
import org.librecms.contentsection.AbstractContentItemImExporter;
+import java.util.Objects;
+
import javax.enterprise.context.RequestScoped;
/**
@@ -16,16 +18,77 @@ import javax.enterprise.context.RequestScoped;
*/
@RequestScoped
@Processes(SciProject.class)
-public class SciProjectImExporter extends AbstractContentItemImExporter{
+public class SciProjectImExporter
+ extends AbstractContentItemImExporter {
@Override
protected void initContentItemImExporter() {
// Nothing
}
-
+
@Override
public Class getEntityClass() {
return SciProject.class;
}
-
+
+ @Override
+ protected void updateExistingContentItem(
+ final SciProject existingContentItem,
+ final SciProject importedContentItem
+ ) {
+ if (!Objects.equals(
+ existingContentItem.getBegin(),
+ importedContentItem.getBegin()
+ )) {
+ existingContentItem.setBegin(importedContentItem.getBegin());
+ }
+
+ if (!Objects.equals(
+ existingContentItem.getEnd(),
+ importedContentItem.getEnd()
+ )) {
+ existingContentItem.setEnd(importedContentItem.getEnd());
+ }
+
+ if (!Objects.equals(
+ existingContentItem.getShortDescription(),
+ importedContentItem.getShortDescription()
+ )) {
+ syncLocalizedStrings(
+ importedContentItem.getShortDescription(),
+ existingContentItem.getShortDescription()
+ );
+ }
+
+ if (!Objects.equals(
+ existingContentItem.getDescription(),
+ importedContentItem.getDescription()
+ )) {
+ syncLocalizedStrings(
+ importedContentItem.getDescription(),
+ existingContentItem.getDescription()
+ );
+ }
+
+ if (!Objects.equals(
+ existingContentItem.getFunding(),
+ importedContentItem.getFunding()
+ )) {
+ syncLocalizedStrings(
+ importedContentItem.getFunding(),
+ existingContentItem.getFunding()
+ );
+ }
+
+ if (!Objects.equals(
+ existingContentItem.getFundingVolume(),
+ importedContentItem.getFundingVolume()
+ )) {
+ syncLocalizedStrings(
+ importedContentItem.getFundingVolume(),
+ existingContentItem.getFundingVolume()
+ );
+ }
+ }
+
}
diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Sponsoring.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Sponsoring.java
index 1abdc39..381afee 100644
--- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Sponsoring.java
+++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/Sponsoring.java
@@ -16,6 +16,8 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
import static org.scientificcms.contenttypes.sciproject.SciProjectConstants.*;
@@ -27,6 +29,12 @@ import static org.scientificcms.contenttypes.sciproject.SciProjectConstants.*;
@Entity
@Audited
@Table(name = "SPONSORING", schema = DB_SCHEMA)
+@NamedQueries({
+ @NamedQuery(
+ name = "Sponsoring.findByUuid",
+ query = "SELECT s FROM Sponsoring s WHERE s.uuid = :uuid"
+ )
+})
public class Sponsoring implements Exportable, Serializable {
private static final long serialVersionUID = 1L;
diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SponsoringImExporter.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SponsoringImExporter.java
index a734cfa..40a8725 100644
--- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SponsoringImExporter.java
+++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SponsoringImExporter.java
@@ -5,12 +5,12 @@ import org.libreccm.imexport.Processes;
import org.librecms.assets.Organization;
import java.util.Objects;
+import java.util.Optional;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
-import javax.transaction.Transactional;
/**
* Importer/Exporter for {@link Membership} entities.
@@ -40,12 +40,33 @@ public class SponsoringImExporter
public Class getEntityClass() {
return Sponsoring.class;
}
+
+ @Override
+ protected Optional findExistingEntity(final String uuid) {
+ return sponsoringRepo.findByUuid(uuid);
+ }
@Override
- @Transactional(Transactional.TxType.REQUIRED)
protected void saveImportedEntity(final Sponsoring entity) {
sponsoringRepo.save(entity);
}
+
+ @Override
+ protected void updateExistingEntity(
+ final Sponsoring existingEntity,
+ final Sponsoring importedEntity
+ ) {
+ if (!Objects.equals(
+ existingEntity.getFundingCode(),
+ importedEntity.getFundingCode()
+ )) {
+ existingEntity.setFundingCode(importedEntity.getFundingCode());
+ }
+
+ if (existingEntity.getOrder() != importedEntity.getOrder()) {
+ existingEntity.setOrder(importedEntity.getOrder());
+ }
+ }
@Override
protected Sponsoring reloadEntity(final Sponsoring entity) {
diff --git a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SponsoringRepository.java b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SponsoringRepository.java
index b1744d7..32f792b 100644
--- a/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SponsoringRepository.java
+++ b/sci-types-project/src/main/java/org/scientificcms/contenttypes/sciproject/SponsoringRepository.java
@@ -2,7 +2,11 @@ package org.scientificcms.contenttypes.sciproject;
import org.libreccm.auditing.AbstractAuditedEntityRepository;
+import java.util.Optional;
+
import javax.enterprise.context.RequestScoped;
+import javax.persistence.NoResultException;
+import javax.transaction.Transactional;
/**
*
@@ -36,8 +40,22 @@ public class SponsoringRepository
@Override
public boolean isNew(final Sponsoring sponsoring) {
- return sponsoring.getSponsoringId() == 0
- || sponsoring.getUuid() == null;
+ return sponsoring.getSponsoringId() == 0
+ || sponsoring.getUuid() == null;
+ }
+
+ @Transactional(Transactional.TxType.REQUIRED)
+ public Optional findByUuid(final String uuid) {
+ try {
+ return Optional.of(
+ getEntityManager()
+ .createNamedQuery("Sponsoring.findByUuid", Sponsoring.class)
+ .setParameter("uuid", uuid)
+ .getSingleResult()
+ );
+ } catch (NoResultException ex) {
+ return Optional.empty();
+ }
}
}