diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/v0/BaseAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/v0/BaseAPI.java index 125fba650f..c4844156aa 100644 --- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/v0/BaseAPI.java +++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/v0/BaseAPI.java @@ -640,26 +640,4 @@ public abstract class BaseAPI { return FILE_PLAN_PATH; } - - /** - * List of existing records management custom references. - */ - public enum CUSTOM_DEFINITIONS - { - ATTACHMENT("Attachment"), - MESSAGE("Message"), - NEXT_VERSION("Next Version"), - RENDITION("Rendition"); - String definition; - - private CUSTOM_DEFINITIONS(String definition) - { - this.definition = definition; - } - - public String getDefinition() - { - return definition; - } - } } diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/model/custom/CustomDefinitions.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/model/custom/CustomDefinitions.java new file mode 100644 index 0000000000..5e94f25d91 --- /dev/null +++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/model/custom/CustomDefinitions.java @@ -0,0 +1,63 @@ +/* + * #%L + * Alfresco Records Management Module + * %% + * Copyright (C) 2005 - 2017 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * - + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * - + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * - + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * - + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ +package org.alfresco.rest.rm.community.model.custom; + +/** + * List of existing records management custom references. + * + * @author Rodica Sutu + * @since 2.6 + */ +public enum CustomDefinitions +{ + ATTACHMENT("Attachment"), + MESSAGE("Message"), + NEXT_VERSION("Next Version"), + RENDITION("Rendition"); + /** + * The name of custom reference. + */ + private String definition; + + /** + * Private constructor. + */ + CustomDefinitions(String definition) + { + this.definition = definition; + } + + /** + * Get the name of the custom reference. + * + * @return The value of custom reference. + */ + public String getDefinition() + { + return definition; + } +} diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/v0/CustomDefinitionsAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/v0/CustomDefinitionsAPI.java index 257ac05bb7..fd2ab72a1b 100644 --- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/v0/CustomDefinitionsAPI.java +++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/v0/CustomDefinitionsAPI.java @@ -29,6 +29,7 @@ package org.alfresco.rest.v0; import java.text.MessageFormat; import org.alfresco.rest.core.v0.BaseAPI; +import org.alfresco.rest.rm.community.model.custom.CustomDefinitions; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -55,35 +56,52 @@ public class CustomDefinitionsAPI extends BaseAPI */ private static final String CREATE_RELATIONSHIP_API_ENDPOINT = "{0}node/{1}/customreferences"; - // logger + /** + * logger + */ private static final Logger LOGGER = LoggerFactory.getLogger(CustomDefinitionsAPI.class); /** - * Helper method to get custom references definitions + * Helper method to get the reference id for a custom reference * * @param adminUser user with administrative privileges * @param adminPassword password for adminUser * @param customDefinition custom reference definition name + * @return reference id if the customDefinition is found + * null otherwise + * */ - - public String getCustomReferencesId(String adminUser, String adminPassword, String customDefinition) + public String getCustomReferenceId(String adminUser, String adminPassword, String customDefinition) { JSONObject getResponse = doGetRequest(adminUser, adminPassword, CUSTOM_REFERENCE_API_ENDPOINT); if (getResponse != null) + { try { JSONArray customDefinitions = getResponse.getJSONObject("data").getJSONArray("customReferences"); for (int i = 0; i < customDefinitions.length(); i++) { JSONObject item = customDefinitions.getJSONObject(i); - if (customDefinition.equalsIgnoreCase(item.has("source") ? item.getString("source") : null) || - customDefinition.equalsIgnoreCase(item.has("target") ? item.getString("target") : null) || - customDefinition.equalsIgnoreCase(item.has("label") ? item.getString("label") : null) - ) + boolean hasSource = customDefinition.equalsIgnoreCase( + item.has("source") ? item.getString("source") : null + ); + + boolean hasTarget = customDefinition.equalsIgnoreCase( + item.has("target") ? item.getString("target") : null + ); + + boolean hasLabel = customDefinition.equalsIgnoreCase( + item.has("label") ? item.getString("label") : null + ); + if ( hasSource || hasTarget || hasLabel) { return item.getString("refId"); } + else + { + return null; + } } } @@ -91,6 +109,7 @@ public class CustomDefinitionsAPI extends BaseAPI { LOGGER.error("Unable to get the refId for the custom reference definition " + customDefinition); } + } return null; } @@ -100,23 +119,24 @@ public class CustomDefinitionsAPI extends BaseAPI * @param adminUser user with administrative privileges * @param adminPassword password for adminUser * @param recordNodeIdFrom node ref to set a custom reference - * @param recordNodeIdto node ref of the to record - * @return true if creating relationship was successful, - * falseotherwise + * @param recordNodeIdTo node ref of the to record + * @param relationshipType relation type to be created + * @return true if creating relationship was successful, + * false otherwise */ public boolean createRelationship( String adminUser, String adminPassword, String recordNodeIdFrom, - String recordNodeIdto, - CUSTOM_DEFINITIONS relationshipType) + String recordNodeIdTo, + CustomDefinitions relationshipType) { try { //create the request body JSONObject requestParams = new JSONObject(); - requestParams.put("toNode", NODE_REF_WORKSPACE_SPACES_STORE + recordNodeIdto); - requestParams.put("refId", getCustomReferencesId(adminUser, adminPassword, relationshipType + requestParams.put("toNode", NODE_REF_WORKSPACE_SPACES_STORE + recordNodeIdTo); + requestParams.put("refId", getCustomReferenceId(adminUser, adminPassword, relationshipType .getDefinition())); //send the API request to create the relationship JSONObject setRelationshipStatus = doPostRequest(adminUser, adminPassword, requestParams,