From 70a67e22e35de6358fbdb700d757bfee1e4d9123 Mon Sep 17 00:00:00 2001 From: Richard Millet Date: Wed, 27 Jun 2018 12:48:10 -0700 Subject: [PATCH] NOJIRA: Added support for concept and org term initialization at startup. --- .../client/ConceptAuthorityClient.java | 4 +- .../client/ConceptAuthorityClientUtils.java | 73 ++++++++++++++++++- .../nuxeo/ConceptValidatorHandler.java | 3 +- .../services/client/OrgAuthorityClient.java | 4 +- .../client/OrgAuthorityClientUtils.java | 67 +++++++++++++---- .../nuxeo/OrganizationValidatorHandler.java | 3 +- .../client/PersonAuthorityClient.java | 2 +- .../person/nuxeo/PersonValidatorHandler.java | 3 +- 8 files changed, 134 insertions(+), 25 deletions(-) diff --git a/services/concept/client/src/main/java/org/collectionspace/services/client/ConceptAuthorityClient.java b/services/concept/client/src/main/java/org/collectionspace/services/client/ConceptAuthorityClient.java index 651a26ab2..1c7fece55 100644 --- a/services/concept/client/src/main/java/org/collectionspace/services/client/ConceptAuthorityClient.java +++ b/services/concept/client/src/main/java/org/collectionspace/services/client/ConceptAuthorityClient.java @@ -98,7 +98,7 @@ public class ConceptAuthorityClient extends AuthorityClientImpl conceptInfo, + List terms, + String headerLabel) { + + ConceptsCommon concept = new ConceptsCommon(); + String shortId = conceptInfo.get(ConceptJAXBSchema.SHORT_IDENTIFIER); + if (shortId == null || shortId.isEmpty()) { + throw new IllegalArgumentException("shortIdentifier cannot be null or empty"); + } + concept.setShortIdentifier(shortId); + + // Set values in the Term Information Group + ConceptTermGroupList termList = new ConceptTermGroupList(); + if (terms == null || terms.isEmpty()) { + terms = getTermGroupInstance(getGeneratedIdentifier()); + } + termList.getConceptTermGroup().addAll(terms); + concept.setConceptTermGroupList(termList); + + PoxPayloadOut multipart = new PoxPayloadOut(ConceptAuthorityClient.SERVICE_ITEM_PAYLOAD_NAME); + PayloadOutputPart commonPart = multipart.addPart(concept, MediaType.APPLICATION_XML_TYPE); + commonPart.setLabel(headerLabel); + + if (logger.isDebugEnabled()) { + logger.debug("to be created, concept common ", concept, ConceptsCommon.class); + } + + return multipart; + } /** * @param commonPartXML the XML payload for the common part. @@ -73,6 +113,35 @@ public class ConceptAuthorityClientUtils { return multipart; } + + public static List getTermGroupInstance(String shortIdentifier, String displayName) { + if (Tools.isBlank(shortIdentifier)) { + shortIdentifier = getGeneratedIdentifier(); + } + if (Tools.isBlank(shortIdentifier)) { + displayName = shortIdentifier; + } + + List terms = new ArrayList(); + ConceptTermGroup term = new ConceptTermGroup(); + term.setTermDisplayName(displayName); + term.setTermName(shortIdentifier); + terms.add(term); + return terms; + } + + /* + * Create a very simple Concept term -just a short ID and display name. + */ + public static PoxPayloadOut createConceptInstance(String shortIdentifier, String displayName, + String headerLabel) { + List terms = getTermGroupInstance(shortIdentifier, displayName); + + Map conceptInfo = new HashMap(); + conceptInfo.put(ConceptJAXBSchema.SHORT_IDENTIFIER, shortIdentifier); + + return createConceptInstance(conceptInfo, terms, headerLabel); + } public static String createItemInAuthority(String vcsid, String commonPartXML, diff --git a/services/concept/service/src/main/java/org/collectionspace/services/concept/nuxeo/ConceptValidatorHandler.java b/services/concept/service/src/main/java/org/collectionspace/services/concept/nuxeo/ConceptValidatorHandler.java index 8f5d342f0..17a77961e 100644 --- a/services/concept/service/src/main/java/org/collectionspace/services/concept/nuxeo/ConceptValidatorHandler.java +++ b/services/concept/service/src/main/java/org/collectionspace/services/concept/nuxeo/ConceptValidatorHandler.java @@ -67,7 +67,8 @@ public class ConceptValidatorHandler extends ValidatorHandlerImpl { try { String shortId = concept.getShortIdentifier(); if (shortId != null) { - CS_ASSERT(shortIdentifierContainsOnlyValidChars(shortId), SHORT_ID_BAD_CHARS_ERROR); + String msg = String.format("%s: %s", SHORT_ID_BAD_CHARS_ERROR, shortId); + CS_ASSERT(shortIdentifierContainsOnlyValidChars(shortId), msg); } CS_ASSERT(containsAtLeastOneTerm(concept), HAS_NO_TERMS_ERROR); CS_ASSERT(allTermsContainDisplayName(concept), TERM_HAS_EMPTY_DISPLAYNAME_ERROR); diff --git a/services/organization/client/src/main/java/org/collectionspace/services/client/OrgAuthorityClient.java b/services/organization/client/src/main/java/org/collectionspace/services/client/OrgAuthorityClient.java index 5b807403b..bb2146d49 100644 --- a/services/organization/client/src/main/java/org/collectionspace/services/client/OrgAuthorityClient.java +++ b/services/organization/client/src/main/java/org/collectionspace/services/client/OrgAuthorityClient.java @@ -103,7 +103,7 @@ public class OrgAuthorityClient extends AuthorityWithContactsClientImpl getTermGroupInstance(String shortIdentifier, String displayName) { + if (Tools.isBlank(shortIdentifier)) { + shortIdentifier = getGeneratedIdentifier(); + } + if (Tools.isBlank(shortIdentifier)) { + displayName = shortIdentifier; + } + + List terms = new ArrayList(); + OrgTermGroup term = new OrgTermGroup(); + term.setTermDisplayName(displayName); + term.setTermName(shortIdentifier); + terms.add(term); + return terms; + } + + /* + * Create a very simple Organization term -just a short ID and display name. + */ + public static PoxPayloadOut createOrganizationInstance(String shortIdentifier, String displayName, + String headerLabel) { + List terms = getTermGroupInstance(shortIdentifier, displayName); + + Map orgInfo = new HashMap(); + orgInfo.put(OrganizationJAXBSchema.SHORT_IDENTIFIER, shortIdentifier); + + final Map> EMPTY_ORG_REPEATABLES_INFO = new HashMap>(); + + return createOrganizationInstance(null, orgInfo, terms, EMPTY_ORG_REPEATABLES_INFO, headerLabel); + } /** * Creates the organization instance. @@ -234,14 +267,18 @@ public class OrgAuthorityClientUtils { * @return the multipart output */ public static PoxPayloadOut createOrganizationInstance( - String orgAuthRefName, Map orgInfo, List terms, - Map> orgRepeatablesInfo, String headerLabel){ + String orgAuthRefName, + Map orgInfo, + List terms, + Map> orgRepeatablesInfo, + String headerLabel) { + OrganizationsCommon organization = new OrganizationsCommon(); - String shortId = orgInfo.get(OrganizationJAXBSchema.SHORT_IDENTIFIER); - if (shortId == null || shortId.isEmpty()) { - throw new IllegalArgumentException("shortIdentifier cannot be null or empty"); - } - organization.setShortIdentifier(shortId); + String shortId = orgInfo.get(OrganizationJAXBSchema.SHORT_IDENTIFIER); + if (shortId == null || shortId.isEmpty()) { + throw new IllegalArgumentException("shortIdentifier cannot be null or empty"); + } + organization.setShortIdentifier(shortId); String value = null; List values = null; @@ -253,23 +290,23 @@ public class OrgAuthorityClientUtils { termList.getOrgTermGroup().addAll(terms); organization.setOrgTermGroupList(termList); - if((values = (List)orgRepeatablesInfo.get(OrganizationJAXBSchema.CONTACT_NAMES))!=null) { + if ((values = (List)orgRepeatablesInfo.get(OrganizationJAXBSchema.CONTACT_NAMES))!=null) { ContactNameList contactsList = new ContactNameList(); List contactNames = contactsList.getContactName(); contactNames.addAll(values); organization.setContactNames(contactsList); } - if((value = (String)orgInfo.get(OrganizationJAXBSchema.FOUNDING_DATE))!=null) { + if ((value = (String)orgInfo.get(OrganizationJAXBSchema.FOUNDING_DATE))!=null) { StructuredDateGroup foundingDate = new StructuredDateGroup(); foundingDate.setDateDisplayDate(value); organization.setFoundingDateGroup(foundingDate); } - if((value = (String)orgInfo.get(OrganizationJAXBSchema.DISSOLUTION_DATE))!=null) { + if ((value = (String)orgInfo.get(OrganizationJAXBSchema.DISSOLUTION_DATE))!=null) { StructuredDateGroup dissolutionDate = new StructuredDateGroup(); dissolutionDate.setDateDisplayDate(value); organization.setDissolutionDateGroup(dissolutionDate); } - if((value = (String)orgInfo.get(OrganizationJAXBSchema.FOUNDING_PLACE))!=null) + if ((value = (String)orgInfo.get(OrganizationJAXBSchema.FOUNDING_PLACE))!=null) organization.setFoundingPlace(value); if((values = (List)orgRepeatablesInfo.get(OrganizationJAXBSchema.GROUPS))!=null) { GroupList groupsList = new GroupList(); @@ -277,13 +314,13 @@ public class OrgAuthorityClientUtils { groups.addAll(values); organization.setGroups(groupsList); } - if((values = (List)orgRepeatablesInfo.get(OrganizationJAXBSchema.FUNCTIONS))!=null) { + if ((values = (List)orgRepeatablesInfo.get(OrganizationJAXBSchema.FUNCTIONS))!=null) { FunctionList functionsList = new FunctionList(); List functions = functionsList.getFunction(); functions.addAll(values); organization.setFunctions(functionsList); } - if((values = (List)orgRepeatablesInfo.get(OrganizationJAXBSchema.HISTORY_NOTES))!=null) { + if ((values = (List)orgRepeatablesInfo.get(OrganizationJAXBSchema.HISTORY_NOTES))!=null) { HistoryNoteList historyNotesList = new HistoryNoteList(); List historyNotes = historyNotesList.getHistoryNote(); historyNotes.addAll(values); @@ -296,7 +333,7 @@ public class OrgAuthorityClientUtils { commonPart.setLabel(headerLabel); if(logger.isDebugEnabled()){ - logger.debug("to be created, organization common ", organization, OrganizationsCommon.class); + logger.debug("to be created, organization common ", organization, OrganizationsCommon.class); } return multipart; diff --git a/services/organization/service/src/main/java/org/collectionspace/services/organization/nuxeo/OrganizationValidatorHandler.java b/services/organization/service/src/main/java/org/collectionspace/services/organization/nuxeo/OrganizationValidatorHandler.java index c28a4c8f0..85c5b621c 100644 --- a/services/organization/service/src/main/java/org/collectionspace/services/organization/nuxeo/OrganizationValidatorHandler.java +++ b/services/organization/service/src/main/java/org/collectionspace/services/organization/nuxeo/OrganizationValidatorHandler.java @@ -67,7 +67,8 @@ public class OrganizationValidatorHandler extends ValidatorHandlerImpl { try { String shortId = organization.getShortIdentifier(); if (shortId != null) { - CS_ASSERT(shortIdentifierContainsOnlyValidChars(shortId), SHORT_ID_BAD_CHARS_ERROR); + String msg = String.format("%s: %s", SHORT_ID_BAD_CHARS_ERROR, shortId); + CS_ASSERT(shortIdentifierContainsOnlyValidChars(shortId), msg); } CS_ASSERT(containsAtLeastOneTerm(organization), HAS_NO_TERMS_ERROR); CS_ASSERT(allTermsContainDisplayName(organization), TERM_HAS_EMPTY_DISPLAYNAME_ERROR); diff --git a/services/person/client/src/main/java/org/collectionspace/services/client/PersonAuthorityClient.java b/services/person/client/src/main/java/org/collectionspace/services/client/PersonAuthorityClient.java index c59f88a98..44e1a85c6 100644 --- a/services/person/client/src/main/java/org/collectionspace/services/client/PersonAuthorityClient.java +++ b/services/person/client/src/main/java/org/collectionspace/services/client/PersonAuthorityClient.java @@ -104,7 +104,7 @@ public class PersonAuthorityClient extends AuthorityWithContactsClientImpl