From ca56e84dfd7e21ed0537bd1dd61fc390bf740795 Mon Sep 17 00:00:00 2001 From: Richard Millet Date: Fri, 17 Aug 2018 16:41:57 -0700 Subject: [PATCH] NOJIRA: Added support to Work and Citation to allow them to be initialized with configured terms at startup. --- .../client/CitationAuthorityClient.java | 6 +- .../client/CitationAuthorityClientUtils.java | 65 +++++++++++++++++++ .../services/client/WorkAuthorityClient.java | 6 +- .../client/WorkAuthorityClientUtils.java | 61 +++++++++++++++++ 4 files changed, 132 insertions(+), 6 deletions(-) diff --git a/services/citation/client/src/main/java/org/collectionspace/services/client/CitationAuthorityClient.java b/services/citation/client/src/main/java/org/collectionspace/services/client/CitationAuthorityClient.java index 4eb49e814..8403b7d21 100644 --- a/services/citation/client/src/main/java/org/collectionspace/services/client/CitationAuthorityClient.java +++ b/services/citation/client/src/main/java/org/collectionspace/services/client/CitationAuthorityClient.java @@ -97,7 +97,7 @@ public class CitationAuthorityClient extends AuthorityClientImpl terms = getTermGroupInstance(shortIdentifier, displayName); + + Map citationInfo = new HashMap(); + citationInfo.put(CitationJAXBSchema.SHORT_IDENTIFIER, shortIdentifier); + + final Map> EMPTY_CITATION_REPEATABLES_INFO = new HashMap>(); + + return createCitationInstance(null, citationInfo, terms, EMPTY_CITATION_REPEATABLES_INFO, serviceItemCommonPartName); + } + + private static PoxPayloadOut createCitationInstance(Object object, Map citationInfo, + List terms, Map> citationRepeatablesInfo, + String serviceItemCommonPartName) { + + CitationsCommon citation = new CitationsCommon(); + String shortId = citationInfo.get(CitationJAXBSchema.SHORT_IDENTIFIER); + if (shortId == null || shortId.isEmpty()) { + throw new IllegalArgumentException("shortIdentifier cannot be null or empty"); + } + citation.setShortIdentifier(shortId); + + // Set values in the Term Information Group + CitationTermGroupList termList = new CitationTermGroupList(); + if (terms == null || terms.isEmpty()) { + terms = getTermGroupInstance(getGeneratedIdentifier()); + } + termList.getCitationTermGroup().addAll(terms); + citation.setCitationTermGroupList(termList); + + PoxPayloadOut multipart = new PoxPayloadOut(CitationAuthorityClient.SERVICE_ITEM_PAYLOAD_NAME); + PayloadOutputPart commonPart = multipart.addPart(citation, MediaType.APPLICATION_XML_TYPE); + commonPart.setLabel(serviceItemCommonPartName); + + if (logger.isDebugEnabled()){ + logger.debug("to be created, organization common ", citation, CitationsCommon.class); + } + + return multipart; + } + + private static List getTermGroupInstance(String shortIdentifier, String displayName) { + if (Tools.isBlank(shortIdentifier)) { + shortIdentifier = getGeneratedIdentifier(); + } + if (Tools.isBlank(shortIdentifier)) { + displayName = shortIdentifier; + } + + List terms = new ArrayList(); + CitationTermGroup term = new CitationTermGroup(); + term.setTermDisplayName(displayName); + term.setTermName(shortIdentifier); + terms.add(term); + return terms; + } + } diff --git a/services/work/client/src/main/java/org/collectionspace/services/client/WorkAuthorityClient.java b/services/work/client/src/main/java/org/collectionspace/services/client/WorkAuthorityClient.java index 8057795eb..d537096c3 100644 --- a/services/work/client/src/main/java/org/collectionspace/services/client/WorkAuthorityClient.java +++ b/services/work/client/src/main/java/org/collectionspace/services/client/WorkAuthorityClient.java @@ -90,7 +90,7 @@ public class WorkAuthorityClient extends AuthorityClientImpl getTermGroupInstance(String shortIdentifier, String displayName) { + if (Tools.isBlank(shortIdentifier)) { + shortIdentifier = getGeneratedIdentifier(); + } + if (Tools.isBlank(shortIdentifier)) { + displayName = shortIdentifier; + } + + List terms = new ArrayList(); + WorkTermGroup term = new WorkTermGroup(); + term.setTermDisplayName(displayName); + term.setTermName(shortIdentifier); + terms.add(term); + return terms; + } + private static String getGeneratedIdentifier() { return "id" + new Date().getTime(); } + public static PoxPayloadOut createWorkInstance(String shortIdentifier, String displayName, + String serviceItemCommonPartName) { + List terms = getTermGroupInstance(shortIdentifier, displayName); + + Map workInfo = new HashMap(); + workInfo.put(WorkJAXBSchema.SHORT_IDENTIFIER, shortIdentifier); + + final Map> EMPTY_WORK_REPEATABLES_INFO = new HashMap>(); + + return createWorkInstance(null, workInfo, terms, EMPTY_WORK_REPEATABLES_INFO, serviceItemCommonPartName); + } + + private static PoxPayloadOut createWorkInstance(Object object, Map orgInfo, + List terms, Map> workRepeatablesInfo, + String serviceItemCommonPartName) { + + WorksCommon work = new WorksCommon(); + String shortId = orgInfo.get(WorkJAXBSchema.SHORT_IDENTIFIER); + if (shortId == null || shortId.isEmpty()) { + throw new IllegalArgumentException("shortIdentifier cannot be null or empty"); + } + work.setShortIdentifier(shortId); + + // Set values in the Term Information Group + WorkTermGroupList termList = new WorkTermGroupList(); + if (terms == null || terms.isEmpty()) { + terms = getTermGroupInstance(getGeneratedIdentifier()); + } + termList.getWorkTermGroup().addAll(terms); + work.setWorkTermGroupList(termList); + + PoxPayloadOut multipart = new PoxPayloadOut(WorkAuthorityClient.SERVICE_ITEM_PAYLOAD_NAME); + PayloadOutputPart commonPart = multipart.addPart(work, MediaType.APPLICATION_XML_TYPE); + commonPart.setLabel(serviceItemCommonPartName); + + if (logger.isDebugEnabled()) { + logger.debug("to be created, organization common ", work, WorksCommon.class); + } + + return multipart; + } + } -- 2.47.3