aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/backend/openecomp-sdc-action-manager
diff options
context:
space:
mode:
authorSonsino, Ofir (os0695) <os0695@intl.att.com>2018-11-21 13:34:44 +0200
committerSonsino, Ofir (os0695) <os0695@intl.att.com>2018-11-21 13:34:44 +0200
commit619adb5955870e3b03250262677eff9b83713f14 (patch)
tree9290f7a26da6d9cab6de1961013ad93943fb684a /openecomp-be/backend/openecomp-sdc-action-manager
parent5066cce9ed46addd12434864607706394a133c45 (diff)
Sonar code smell fixes
Change-Id: I324de653e8e3b4c74bd3723f6bed221f21094f5c Issue-ID: SDC-1948 Signed-off-by: Sonsino, Ofir (os0695) <os0695@intl.att.com>
Diffstat (limited to 'openecomp-be/backend/openecomp-sdc-action-manager')
-rw-r--r--openecomp-be/backend/openecomp-sdc-action-manager/src/main/java/org/openecomp/sdc/action/impl/ActionManagerImpl.java2167
1 files changed, 1086 insertions, 1081 deletions
diff --git a/openecomp-be/backend/openecomp-sdc-action-manager/src/main/java/org/openecomp/sdc/action/impl/ActionManagerImpl.java b/openecomp-be/backend/openecomp-sdc-action-manager/src/main/java/org/openecomp/sdc/action/impl/ActionManagerImpl.java
index 458883ebb0..87edc9a0d4 100644
--- a/openecomp-be/backend/openecomp-sdc-action-manager/src/main/java/org/openecomp/sdc/action/impl/ActionManagerImpl.java
+++ b/openecomp-be/backend/openecomp-sdc-action-manager/src/main/java/org/openecomp/sdc/action/impl/ActionManagerImpl.java
@@ -58,1133 +58,1138 @@ import static org.openecomp.sdc.action.util.ActionUtil.*;
import static org.openecomp.sdc.versioning.dao.types.Version.VERSION_STRING_VIOLATION_MSG;
/**
- * Manager Implementation for {@link ActionManager Action Library Operations} <br> Handles Business
- * layer validations and acts as an interface between the REST and DAO layers.
+ * Manager Implementation for {@link ActionManager Action Library Operations}
+ * <br>
+ * Handles Business layer validations and acts as an interface between the REST
+ * and DAO layers.
*/
public class ActionManagerImpl implements ActionManager {
- private final ActionDao actionDao;
- private final ActionVersioningManager versioningManager;
- private final ActionArtifactDao actionArtifactDao;
- private final VersionInfoDao versionInfoDao;
-
- private final Logger log = (Logger) LoggerFactory.getLogger(this.getClass().getName());
-
- public ActionManagerImpl() {
- actionDao = ActionDaoFactory.getInstance().createInterface();
- versioningManager = ActionVersioningManagerFactory.getInstance().createInterface();
- actionArtifactDao = ActionArtifactDaoFactory.getInstance().createInterface();
- versionInfoDao = VersionInfoDaoFactory.getInstance().createInterface();
- actionDao.registerVersioning(ACTION_VERSIONABLE_TYPE);
- }
-
- public ActionManagerImpl(ActionDao actionDao, ActionVersioningManager versioningManager,
- ActionArtifactDao actionArtifactDao, VersionInfoDao versionInfoDao) {
- this.actionDao = actionDao;
- this.versioningManager = versioningManager;
- this.actionArtifactDao = actionArtifactDao;
- this.versionInfoDao = versionInfoDao;
- }
- /**
- * List All Major, Last Minor and Candidate version (if any) for Given Action Invariant UUID
- *
- * @param invariantId Invariant UUID of the action for which the information is required
- * @return List of All Major, Last Minor and Candidate version if any Of {@link Action} with given
- * actionInvariantUuId.
- * @throws ActionException Exception with an action library specific code, short description and
- * detailed message for the error occurred during the operation
- */
-
- @Override
- public List<Action> getActionsByActionInvariantUuId(String invariantId) throws ActionException {
- List<Action> actions;
-
- log.debug(" entering getActionsByActionInvariantUuId with invariantID = " + invariantId);
- actions = actionDao
- .getActionsByActionInvariantUuId(invariantId != null ? invariantId.toUpperCase() : null);
-
- if (actions != null && actions.isEmpty()) {
- throw new ActionException(ACTION_ENTITY_NOT_EXIST_CODE, ACTION_ENTITY_NOT_EXIST);
+ private static final String ARTIFACT_UUID = "artifactUUID= ";
+ private static final String BY_USER = " by user = ";
+ private static final String WITH_VALUE = " With value = ";
+ private static final String AND_VERSION = " and version";
+ private final ActionDao actionDao;
+ private final ActionVersioningManager versioningManager;
+ private final ActionArtifactDao actionArtifactDao;
+ private final VersionInfoDao versionInfoDao;
+
+ private final Logger log = LoggerFactory.getLogger(this.getClass()
+ .getName());
+
+ public ActionManagerImpl() {
+ actionDao = ActionDaoFactory.getInstance()
+ .createInterface();
+ versioningManager = ActionVersioningManagerFactory.getInstance()
+ .createInterface();
+ actionArtifactDao = ActionArtifactDaoFactory.getInstance()
+ .createInterface();
+ versionInfoDao = VersionInfoDaoFactory.getInstance()
+ .createInterface();
+ actionDao.registerVersioning(ACTION_VERSIONABLE_TYPE);
}
- log.debug(" exit getActionsByActionInvariantUuId with invariantID = " + invariantId);
- return actions;
- }
-
- /**
- * Get list of actions based on a filter criteria. If no filter is sent all actions will be
- * returned
- *
- * @param filterType Filter by Vendor/Category/Model/Component/None
- * @param filterValue Filter Parameter Value (Vendor ID/Category ID/Model ID/Component ID)
- * @return List of {@link Action} objects based on a filter criteria <br> Empty List if no records
- * match the provided filter criteria
- * @throws ActionException Exception with an action library specific code, short description and
- * detailed message for the error occurred for the error occurred during
- * the operation
- */
- @Override
- public List<Action> getFilteredActions(String filterType, String filterValue)
- throws ActionException {
- List<Action> actions;
- log.debug(" entering getFilteredActions By filterType = " + filterType + " With value = "
- + filterValue);
- switch (filterType) {
- case FILTER_TYPE_NONE:
- //Business validation for OPENECOMP Component type fetch (if any)
- break;
- case FILTER_TYPE_VENDOR:
- //Business validation for vendor type fetch (if any)
- break;
- case FILTER_TYPE_CATEGORY:
- //Business validation for Category type fetch (if any)
- break;
- case FILTER_TYPE_MODEL:
- //Business validation for model type fetch (if any)
- break;
- case FILTER_TYPE_OPEN_ECOMP_COMPONENT:
- //Business validation for OPENECOMP Component type fetch (if any)
- break;
- case FILTER_TYPE_NAME:
- actions = actionDao
- .getFilteredActions(filterType, filterValue != null ? filterValue.toLowerCase() : null);
+ public ActionManagerImpl(ActionDao actionDao, ActionVersioningManager versioningManager,
+ ActionArtifactDao actionArtifactDao, VersionInfoDao versionInfoDao) {
+ this.actionDao = actionDao;
+ this.versioningManager = versioningManager;
+ this.actionArtifactDao = actionArtifactDao;
+ this.versionInfoDao = versionInfoDao;
+ }
+
+ /**
+ * List All Major, Last Minor and Candidate version (if any) for Given
+ * Action Invariant UUID
+ *
+ * @param invariantId
+ * Invariant UUID of the action for which the information is
+ * required
+ * @return List of All Major, Last Minor and Candidate version if any Of
+ * {@link Action} with given actionInvariantUuId.
+ */
+
+ @Override
+ public List<Action> getActionsByActionInvariantUuId(String invariantId) {
+ List<Action> actions;
+
+ log.debug(" entering getActionsByActionInvariantUuId with invariantID = " + invariantId);
+ actions = actionDao.getActionsByActionInvariantUuId(invariantId != null ? invariantId.toUpperCase() : null);
+
if (actions != null && actions.isEmpty()) {
- throw new ActionException(ACTION_ENTITY_NOT_EXIST_CODE, ACTION_ENTITY_NOT_EXIST);
+ throw new ActionException(ACTION_ENTITY_NOT_EXIST_CODE, ACTION_ENTITY_NOT_EXIST);
}
- log.debug(" exit getFilteredActions By filterType = " + filterType + " With value = "
- + filterValue);
+
+ log.debug(" exit getActionsByActionInvariantUuId with invariantID = " + invariantId);
return actions;
- default:
- break;
- }
- actions = actionDao
- .getFilteredActions(filterType, filterValue != null ? filterValue.toLowerCase() : null);
- List<Action> majorMinorVersionList = getMajorMinorVersionActions(actions);
- Collections.sort(majorMinorVersionList);
- log.debug(
- " exit getFilteredActions By filterType = " + filterType + " With value = " + filterValue);
- return majorMinorVersionList;
- }
-
- /**
- * Get the properties of an action version by its UUID.
- *
- * @param actionUuId UUID of the specific action version
- * @return {@link Action} object corresponding the version represented by the UUID
- * @throws ActionException Exception with an action library specific code, short description and
- * detailed message for the error occurred for the error occurred during
- * the operation
- */
- @Override
- public Action getActionsByActionUuId(String actionUuId) throws ActionException {
- log.debug(" entering getActionsByActionUuId with actionUUID = " + actionUuId);
- Action action =
- actionDao.getActionsByActionUuId(actionUuId != null ? actionUuId.toUpperCase() : null);
-
- if (action == null) {
- throw new ActionException(ACTION_ENTITY_NOT_EXIST_CODE, ACTION_ENTITY_NOT_EXIST);
}
- log.debug(" exit getActionsByActionUuId with actionUUID = " + actionUuId);
- return action;
- }
-
- /**
- * List OPENECOMP Components supported by Action Library.
- *
- * @return List of {@link OpenEcompComponent} objects supported by Action Library <br> Empty List if
- * no components are found
- * @throws ActionException Exception with an action library specific code, short description and
- * detailed message for the error occurred for the error occurred during
- * the operation
- */
- @Override
- public List<OpenEcompComponent> getOpenEcompComponents() throws ActionException {
- return actionDao.getOpenEcompComponents();
- }
-
-
- /**
- * Delete an action.
- *
- * @param actionInvariantUuId Invariant UUID of the action to be deleted
- * @param user User id of the user performing the operation
- */
- @Override
- public void deleteAction(String actionInvariantUuId, String user) throws ActionException {
- try {
- log.debug("entering deleteAction with actionInvariantUuId = " + actionInvariantUuId
- + " and user = " + user);
- actionLogPreProcessor(ActionSubOperation.DELETE_ACTION, TARGET_ENTITY_API);
- versioningManager.delete(ACTION_VERSIONABLE_TYPE, actionInvariantUuId, user);
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
- actionDao.deleteAction(actionInvariantUuId);
- } catch (CoreException ce) {
- formAndThrowException(ce);
+ /**
+ * Get list of actions based on a filter criteria. If no filter is sent all
+ * actions will be returned
+ *
+ * @param filterType
+ * Filter by Vendor/Category/Model/Component/None
+ * @param filterValue
+ * Filter Parameter Value (Vendor ID/Category ID/Model
+ * ID/Component ID)
+ * @return List of {@link Action} objects based on a filter criteria <br>
+ * Empty List if no records match the provided filter criteria
+ */
+ @Override
+ public List<Action> getFilteredActions(String filterType, String filterValue) {
+ List<Action> actions;
+ log.debug(" entering getFilteredActions By filterType = " + filterType + WITH_VALUE + filterValue);
+ switch (filterType) {
+ case FILTER_TYPE_NONE:
+ // Business validation for OPENECOMP Component type fetch (if any)
+ break;
+ case FILTER_TYPE_VENDOR:
+ // Business validation for vendor type fetch (if any)
+ break;
+ case FILTER_TYPE_CATEGORY:
+ // Business validation for Category type fetch (if any)
+ break;
+ case FILTER_TYPE_MODEL:
+ // Business validation for model type fetch (if any)
+ break;
+ case FILTER_TYPE_OPEN_ECOMP_COMPONENT:
+ // Business validation for OPENECOMP Component type fetch (if any)
+ break;
+ case FILTER_TYPE_NAME:
+ actions = actionDao.getFilteredActions(filterType, filterValue != null ? filterValue.toLowerCase() : null);
+ if (actions != null && actions.isEmpty()) {
+ throw new ActionException(ACTION_ENTITY_NOT_EXIST_CODE, ACTION_ENTITY_NOT_EXIST);
+ }
+ log.debug(" exit getFilteredActions By filterType = " + filterType + WITH_VALUE + filterValue);
+ return actions;
+ default:
+ break;
+ }
+ actions = actionDao.getFilteredActions(filterType, filterValue != null ? filterValue.toLowerCase() : null);
+ List<Action> majorMinorVersionList = getMajorMinorVersionActions(actions);
+ Collections.sort(majorMinorVersionList);
+ log.debug(" exit getFilteredActions By filterType = " + filterType + WITH_VALUE + filterValue);
+ return majorMinorVersionList;
}
- }
-
- /**
- * Create a new Action.
- *
- * @param action Action object model of the user request for creating an action
- * @param user AT&T id of the user sending the create request
- * @return {@link Action} model object for the created action
- * @throws ActionException Exception with an action library specific code, short description and
- * detailed message for the error occurred for the error occurred during
- * the operation
- */
- @Override
- public Action createAction(Action action, String user) throws ActionException {
- UniqueValueUtil uniqueValueUtil =
- new UniqueValueUtil(UniqueValueDaoFactory.getInstance().createInterface());
- try {
- actionLogPreProcessor(ActionSubOperation.VALIDATE_ACTION_UNIQUE_NAME, TARGET_ENTITY_API);
- uniqueValueUtil
- .validateUniqueValue(ActionConstants.UniqueValues.ACTION_NAME, action.getName());
- actionLogPostProcessor(StatusCode.COMPLETE);
- } catch (CoreException exception) {
- String errorDesc = String
- .format(ACTION_ENTITY_UNIQUE_VALUE_MSG, ActionConstants.UniqueValues.ACTION_NAME,
- action.getName());
- log.error(errorDesc, exception);
- actionLogPostProcessor(StatusCode.ERROR, ACTION_ENTITY_UNIQUE_VALUE_ERROR, errorDesc, false);
- throw new ActionException(ACTION_ENTITY_UNIQUE_VALUE_ERROR, errorDesc);
- } finally {
- log.metrics("");
+
+ /**
+ * Get the properties of an action version by its UUID.
+ *
+ * @param actionUuId
+ * UUID of the specific action version
+ * @return {@link Action} object corresponding the version represented by
+ * the UUID
+ */
+ @Override
+ public Action getActionsByActionUuId(String actionUuId) {
+ log.debug(" entering getActionsByActionUuId with actionUUID = " + actionUuId);
+ Action action = actionDao.getActionsByActionUuId(actionUuId != null ? actionUuId.toUpperCase() : null);
+
+ if (action == null) {
+ throw new ActionException(ACTION_ENTITY_NOT_EXIST_CODE, ACTION_ENTITY_NOT_EXIST);
+ }
+
+ log.debug(" exit getActionsByActionUuId with actionUUID = " + actionUuId);
+ return action;
}
- action.setUser(user);
- action.setTimestamp(getCurrentTimeStampUtc());
- action.setActionInvariantUuId(CommonMethods.nextUuId());
- action.setActionUuId(CommonMethods.nextUuId());
-
- actionLogPreProcessor(ActionSubOperation.CREATE_ACTION_VERSION, TARGET_ENTITY_API);
- Version version =
- versioningManager.create(ACTION_VERSIONABLE_TYPE, action.getActionInvariantUuId(), user);
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
-
- action.setVersion(version.toString());
- action.setStatus(ActionStatus.Locked);
- action = updateData(action);
- action = actionDao.createAction(action);
-
- actionLogPreProcessor(ActionSubOperation.CREATE_ACTION_UNIQUE_VALUE, TARGET_ENTITY_API);
- uniqueValueUtil.createUniqueValue(ActionConstants.UniqueValues.ACTION_NAME, action.getName());
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
-
- return action;
- }
-
- /**
- * Update an existing action.
- *
- * @param action Action object model of the user request for creating an action
- * @param user AT&T id of the user sending the update request
- * @return {@link Action} model object for the update action
- * @throws ActionException Exception with an action library specific code, short description and
- * detailed message for the error occurred for the error occurred during
- * the operation
- */
- @Override
- public Action updateAction(Action action, String user) throws ActionException {
- try {
- log.debug("entering updateAction to update action with invariantUuId = "
- + action.getActionInvariantUuId() + " by user = " + user);
- String invariantUuId = action.getActionInvariantUuId();
- actionLogPreProcessor(ActionSubOperation.GET_ACTION_VERSION, TARGET_ENTITY_API);
- VersionInfo versionInfo = versioningManager
- .getEntityVersionInfo(ACTION_VERSIONABLE_TYPE, invariantUuId, user,
- VersionableEntityAction.Write);
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
-
- Version activeVersion = versionInfo.getActiveVersion();
- validateActions(action, activeVersion);
- action.setStatus(ActionStatus.Locked); //Status will be Checkout for update
- updateData(action);
- action.setUser(user);
- action.setTimestamp(getCurrentTimeStampUtc());
- actionDao.updateAction(action);
-
- } catch (CoreException ce) {
- formAndThrowException(ce);
+
+ /**
+ * List OPENECOMP Components supported by Action Library.
+ *
+ * @return List of {@link OpenEcompComponent} objects supported by Action
+ * Library <br>
+ * Empty List if no components are found
+ */
+ @Override
+ public List<OpenEcompComponent> getOpenEcompComponents() {
+ return actionDao.getOpenEcompComponents();
}
- log.debug("exit updateAction");
- return action;
- }
-
- /**
- * Checkout an existing action.
- *
- * @param invariantUuId actionInvariantUuId of the action to be checked out
- * @param user AT&T id of the user sending the checkout request
- * @return {@link Action} model object for the checkout action
- * @throws ActionException Exception with an action library specific code, short description and
- * detailed message for the error occurred for the error occurred during
- * the operation
- */
- @Override
- public Action checkout(String invariantUuId, String user) throws ActionException {
- Version version = null;
- ActionEntity actionEntity = null;
- try {
- log.debug(
- "entering checkout for Action with invariantUUID= " + invariantUuId + " by user = "
- + user);
- actionLogPreProcessor(ActionSubOperation.CHECKOUT_ACTION, TARGET_ENTITY_API);
- version = versioningManager.checkout(ACTION_VERSIONABLE_TYPE, invariantUuId, user);
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
-
- actionEntity =
- updateUniqueIdForVersion(invariantUuId, version, ActionStatus.Locked.name(), user);
- } catch (CoreException exception) {
- if (exception.code() != null && exception.code().id().equals(
- VersioningErrorCodes.CHECKOT_ON_LOCKED_ENTITY)) {
- actionLogPreProcessor(ActionSubOperation.GET_ACTION_VERSION, TARGET_ENTITY_DB);
- VersionInfoEntity versionInfoEntity =
- versionInfoDao.get(new VersionInfoEntity(ACTION_VERSIONABLE_TYPE, invariantUuId));
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
- String checkoutUser = versionInfoEntity.getCandidate().getUser();
- log.debug(
- "Actual checkout user for Action with invariantUUID= " + invariantUuId + " is = "
- + checkoutUser);
- if (!checkoutUser.equals(user)) {
- throw new ActionException(ACTION_CHECKOUT_ON_LOCKED_ENTITY_OTHER_USER,
- exception.getMessage());
+
+ /**
+ * Delete an action.
+ *
+ * @param actionInvariantUuId
+ * Invariant UUID of the action to be deleted
+ * @param user
+ * User id of the user performing the operation
+ */
+ @Override
+ public void deleteAction(String actionInvariantUuId, String user) {
+ try {
+ log.debug(
+ "entering deleteAction with actionInvariantUuId = " + actionInvariantUuId + " and user = " + user);
+ actionLogPreProcessor(ActionSubOperation.DELETE_ACTION, TARGET_ENTITY_API);
+ versioningManager.delete(ACTION_VERSIONABLE_TYPE, actionInvariantUuId, user);
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+ actionDao.deleteAction(actionInvariantUuId);
+ } catch (CoreException ce) {
+ formAndThrowException(ce);
}
- }
- formAndThrowException(exception);
}
- log.debug(
- "exit checkout for Action with invariantUUID= " + invariantUuId + " by user = " + user);
- return actionEntity != null ? actionEntity.toDto() : new Action();
- }
-
- /**
- * Undo an already checked out action.
- *
- * @param invariantUuId actionInvariantUuId of the checked out action
- * @param user AT&T id of the user sending the request
- * @throws ActionException Exception with an action library specific code, short description and
- * detailed message for the error occurred for the error occurred during
- * the operation
- */
- @Override
- public void undoCheckout(String invariantUuId, String user) throws ActionException {
- Version version;
- try {
- log.debug(
- "entering undoCheckout for Action with invariantUUID= " + invariantUuId + " by user = "
- + user);
-
- actionLogPreProcessor(ActionSubOperation.GET_ACTION_VERSION, TARGET_ENTITY_DB);
- //Get list of uploaded artifacts in this checked out version
- VersionInfoEntity versionInfoEntity =
- versionInfoDao.get(new VersionInfoEntity(ACTION_VERSIONABLE_TYPE, invariantUuId));
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
- if (versionInfoEntity == null) {
- throw new CoreException(
- new EntityNotExistErrorBuilder(ACTION_VERSIONABLE_TYPE, invariantUuId).build());
- }
- UserCandidateVersion candidate = versionInfoEntity.getCandidate();
- Version activeVersion;
- if (candidate != null) {
- activeVersion = candidate.getVersion();
- } else {
- activeVersion = versionInfoEntity.getActiveVersion();
- }
-
- actionLogPreProcessor(ActionSubOperation.GET_ACTIONENTITY_BY_VERSION, TARGET_ENTITY_DB);
- Action action = actionDao.get(new ActionEntity(invariantUuId, activeVersion)).toDto();
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
-
- //Perform undo checkout on the action
- actionLogPreProcessor(ActionSubOperation.UNDO_CHECKOUT_ACTION, TARGET_ENTITY_API);
- version = versioningManager.undoCheckout(ACTION_VERSIONABLE_TYPE, invariantUuId, user);
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
-
- if (version.equals(new Version(0, 0))) {
- actionLogPreProcessor(ActionSubOperation.DELETE_UNIQUEVALUE, TARGET_ENTITY_API);
- UniqueValueUtil uniqueValueUtil =
- new UniqueValueUtil(UniqueValueDaoFactory.getInstance().createInterface());
- uniqueValueUtil
- .deleteUniqueValue(ActionConstants.UniqueValues.ACTION_NAME, action.getName());
+
+ /**
+ * Create a new Action.
+ *
+ * @param action
+ * Action object model of the user request for creating an action
+ * @param user
+ * AT&T id of the user sending the create request
+ * @return {@link Action} model object for the created action
+ */
+ @Override
+ public Action createAction(Action action, String user) {
+ UniqueValueUtil uniqueValueUtil = new UniqueValueUtil(UniqueValueDaoFactory.getInstance()
+ .createInterface());
+ try {
+ actionLogPreProcessor(ActionSubOperation.VALIDATE_ACTION_UNIQUE_NAME, TARGET_ENTITY_API);
+ uniqueValueUtil.validateUniqueValue(ActionConstants.UniqueValues.ACTION_NAME, action.getName());
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ } catch (CoreException exception) {
+ String errorDesc = String.format(ACTION_ENTITY_UNIQUE_VALUE_MSG, ActionConstants.UniqueValues.ACTION_NAME,
+ action.getName());
+ log.error(errorDesc, exception);
+ actionLogPostProcessor(StatusCode.ERROR, ACTION_ENTITY_UNIQUE_VALUE_ERROR, errorDesc, false);
+ throw new ActionException(ACTION_ENTITY_UNIQUE_VALUE_ERROR, errorDesc);
+ } finally {
+ log.metrics("");
+ }
+ action.setUser(user);
+ action.setTimestamp(getCurrentTimeStampUtc());
+ action.setActionInvariantUuId(CommonMethods.nextUuId());
+ action.setActionUuId(CommonMethods.nextUuId());
+
+ actionLogPreProcessor(ActionSubOperation.CREATE_ACTION_VERSION, TARGET_ENTITY_API);
+ Version version = versioningManager.create(ACTION_VERSIONABLE_TYPE, action.getActionInvariantUuId(), user);
actionLogPostProcessor(StatusCode.COMPLETE);
log.metrics("");
- actionLogPreProcessor(ActionSubOperation.DELETE_ACTIONVERSION, TARGET_ENTITY_DB);
- //Added for the case where Create->Undo_Checkout->Checkout should not get the action
- versionInfoDao.delete(new VersionInfoEntity(ACTION_VERSIONABLE_TYPE, invariantUuId));
+ action.setVersion(version.toString());
+ action.setStatus(ActionStatus.Locked);
+ action = updateData(action);
+ action = actionDao.createAction(action);
+
+ actionLogPreProcessor(ActionSubOperation.CREATE_ACTION_UNIQUE_VALUE, TARGET_ENTITY_API);
+ uniqueValueUtil.createUniqueValue(ActionConstants.UniqueValues.ACTION_NAME, action.getName());
actionLogPostProcessor(StatusCode.COMPLETE);
log.metrics("");
- }
-
- List<ActionArtifact> currentVersionArtifacts = action.getArtifacts();
-
- //Delete the artifacts from action_artifact table (if any)
- if (CollectionUtils.isNotEmpty(currentVersionArtifacts) &&
- currentVersionArtifacts.size() > 0) {
- for (ActionArtifact artifact : currentVersionArtifacts) {
- ActionArtifactEntity artifactDeleteEntity =
- new ActionArtifactEntity(artifact.getArtifactUuId(),
- getEffectiveVersion(activeVersion.toString()));
- actionLogPreProcessor(ActionSubOperation.DELETE_ARTIFACT, TARGET_ENTITY_DB);
- actionArtifactDao.delete(artifactDeleteEntity);
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
- }
- }
- } catch (CoreException exception) {
- formAndThrowException(exception);
- }
- log.debug(
- "exit undoCheckout for Action with invariantUUID= " + invariantUuId + " by user = " + user);
- }
-
- /**
- * Checkin a checked out action.
- *
- * @param invariantUuId actionInvariantUuId of the checked out action
- * @param user AT&T id of the user sending the request
- * @return {@link Action} model object for the updated action
- * @throws ActionException Exception with an action library specific code, short description and
- * detailed message for the error occurred for the error occurred during
- * the operation
- */
- @Override
- public Action checkin(String invariantUuId, String user) throws ActionException {
- Version version = null;
- ActionEntity actionEntity = null;
- try {
- log.debug("entering checkin for Action with invariantUUID= " + invariantUuId + " by user = "
- + user);
- actionLogPreProcessor(ActionSubOperation.CHECKIN_ACTION, TARGET_ENTITY_API);
- version = versioningManager.checkin(ACTION_VERSIONABLE_TYPE, invariantUuId, user, null);
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
- actionEntity =
- updateStatusForVersion(invariantUuId, version, ActionStatus.Available.name(), user);
- } catch (CoreException exception) {
- formAndThrowException(exception);
- }
- log.debug(
- "exit checkin for Action with invariantUUID= " + invariantUuId + " by user = " + user);
- return actionEntity != null ? actionEntity.toDto() : new Action();
- }
-
- /**
- * Submit a checked in action.
- *
- * @param invariantUuId actionInvariantUuId of the checked in action
- * @param user AT&T id of the user sending the request
- * @return {@link Action} model object for the updated action
- * @throws ActionException Exception with an action library specific code, short description and
- * detailed message for the error occurred for the error occurred during
- * the operation
- */
- @Override
- public Action submit(String invariantUuId, String user) throws ActionException {
- Version version = null;
- ActionEntity actionEntity = null;
- try {
- log.debug(
- "entering submit for Action with invariantUUID= " + invariantUuId + " by user = " + user);
- actionLogPreProcessor(ActionSubOperation.SUBMIT_ACTION, TARGET_ENTITY_API);
- version = versioningManager.submit(ACTION_VERSIONABLE_TYPE, invariantUuId, user, null);
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
- actionEntity =
- updateUniqueIdForVersion(invariantUuId, version, ActionStatus.Final.name(), user);
- } catch (CoreException exception) {
- formAndThrowException(exception);
- }
- log.debug("exit submit for Action with invariantUUID= " + invariantUuId + " by user = " + user);
- return actionEntity != null ? actionEntity.toDto() : new Action();
- }
-
- /**
- * Download an artifact of an action.
- *
- * @param artifactUuId {@link ActionArtifact} object representing the artifact and its metadata
- * @param actionUuId UUID of the action for which the artifact has to be downloaded
- * @return downloaded action artifact object
- */
- @Override
- public ActionArtifact downloadArtifact(String actionUuId, String artifactUuId)
- throws ActionException {
- log.debug(" entering downloadArtifact with actionUUID= " + actionUuId + " and artifactUUID= "
- + artifactUuId);
- Action action = actionDao.getActionsByActionUuId(actionUuId);
- ActionArtifact actionArtifact;
- if (action != null) {
- MDC.put(SERVICE_INSTANCE_ID, action.getActionInvariantUuId());
- List<ActionArtifact> artifacts = action.getArtifacts();
- String actionVersion = action.getVersion();
- int effectiveVersion = getEffectiveVersion(actionVersion);
- ActionArtifact artifactMetadata =
- getArtifactMetadataFromAction(artifacts, ARTIFACT_METADATA_ATTR_UUID, artifactUuId);
- if (artifactMetadata != null) {
- String artifactName = artifactMetadata.getArtifactName();
- actionArtifact = actionArtifactDao.downloadArtifact(effectiveVersion, artifactUuId);
- actionArtifact.setArtifactName(artifactName);
-
- } else {
- throw new ActionException(ActionErrorConstants.ACTION_ARTIFACT_ENTITY_NOT_EXIST_CODE,
- ActionErrorConstants.ACTION_ARTIFACT_ENTITY_NOT_EXIST);
- }
- } else {
- throw new ActionException(ActionErrorConstants.ACTION_ENTITY_NOT_EXIST_CODE,
- ActionErrorConstants.ACTION_ENTITY_NOT_EXIST);
- }
- log.debug(" exit downloadArtifact with actionUUID= " + actionUuId + " and artifactUUID= "
- + artifactUuId);
- return actionArtifact;
- }
-
- /**
- * Upload an artifact to an action.
- *
- * @param artifact {@link ActionArtifact} object representing the artifact and its
- * metadata
- * @param actionInvariantUuId Invariant UUID of the action to which the artifact has to be
- * uploaded
- * @param user User ID of the user sending the request
- * @return Uploaded action artifact object
- */
- @Override
- public ActionArtifact uploadArtifact(ActionArtifact artifact, String actionInvariantUuId,
- String user) {
- ActionArtifact uploadArtifactResponse = new ActionArtifact();
- try {
- log.debug("entering uploadArtifact with actionInvariantUuId= " + actionInvariantUuId
- + "artifactName= " + artifact.getArtifactName());
- actionLogPreProcessor(ActionSubOperation.GET_ACTION_VERSION, TARGET_ENTITY_DB);
- VersionInfo versionInfo = versioningManager
- .getEntityVersionInfo(ACTION_VERSIONABLE_TYPE, actionInvariantUuId, user,
- VersionableEntityAction.Write);
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
- Version activeVersion = versionInfo.getActiveVersion();
- actionLogPreProcessor(ActionSubOperation.GET_ACTIONENTITY_BY_ACTIONINVID, TARGET_ENTITY_DB);
- Action action = actionDao.get(new ActionEntity(actionInvariantUuId, activeVersion)).toDto();
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
- String artifactUuId = generateActionArtifactUuId(action, artifact.getArtifactName());
- //Check for Unique document name
- List<ActionArtifact> actionArtifacts = action.getArtifacts();
- ActionArtifact artifactMetadata =
- getArtifactMetadataFromAction(actionArtifacts, ARTIFACT_METADATA_ATTR_NAME,
- artifact.getArtifactName());
- if (artifactMetadata != null) {
- throw new ActionException(ACTION_ARTIFACT_ALREADY_EXISTS_CODE,
- String.format(ACTION_ARTIFACT_ALREADY_EXISTS, actionInvariantUuId));
- }
-
- //Create the artifact
- artifact.setArtifactUuId(artifactUuId);
- artifact.setTimestamp(getCurrentTimeStampUtc());
- artifact.setEffectiveVersion(getEffectiveVersion(activeVersion.toString()));
- actionArtifactDao.uploadArtifact(artifact);
-
- //Update the action data field and timestamp
- addArtifactMetadataInActionData(action, artifact);
-
- //Set the response object
- uploadArtifactResponse.setArtifactUuId(artifact.getArtifactUuId());
- } catch (CoreException ce) {
- formAndThrowException(ce);
+
+ return action;
}
- log.debug(
- "exit uploadArtifact with actionInvariantUuId= " + actionInvariantUuId + "artifactName= "
- + artifact.getArtifactName());
- return uploadArtifactResponse;
- }
-
- @Override
- public void deleteArtifact(String actionInvariantUuId, String artifactUuId, String user)
- throws ActionException {
- log.debug(
- "enter deleteArtifact with actionInvariantUuId= " + actionInvariantUuId + "artifactUUID= "
- + artifactUuId + " and user = " + user);
- Action action = actionDao.getLockedAction(actionInvariantUuId, user);
- List<ActionArtifact> actionArtifacts = action.getArtifacts();
- ActionArtifact artifactMetadata =
- getArtifactMetadataFromAction(actionArtifacts, ARTIFACT_METADATA_ATTR_UUID, artifactUuId);
- if (artifactMetadata == null) {
- throw new ActionException(ActionErrorConstants.ACTION_ARTIFACT_ENTITY_NOT_EXIST_CODE,
- ActionErrorConstants.ACTION_ARTIFACT_ENTITY_NOT_EXIST);
+
+ /**
+ * Update an existing action.
+ *
+ * @param action
+ * Action object model of the user request for creating an action
+ * @param user
+ * AT&T id of the user sending the update request
+ * @return {@link Action} model object for the update action
+ */
+ @Override
+ public Action updateAction(Action action, String user) {
+ try {
+ log.debug("entering updateAction to update action with invariantUuId = " + action.getActionInvariantUuId()
+ + BY_USER + user);
+ String invariantUuId = action.getActionInvariantUuId();
+ actionLogPreProcessor(ActionSubOperation.GET_ACTION_VERSION, TARGET_ENTITY_API);
+ VersionInfo versionInfo = versioningManager.getEntityVersionInfo(ACTION_VERSIONABLE_TYPE, invariantUuId,
+ user, VersionableEntityAction.Write);
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+
+ Version activeVersion = versionInfo.getActiveVersion();
+ validateActions(action, activeVersion);
+ action.setStatus(ActionStatus.Locked); // Status will be Checkout
+ // for update
+ updateData(action);
+ action.setUser(user);
+ action.setTimestamp(getCurrentTimeStampUtc());
+ actionDao.updateAction(action);
+
+ } catch (CoreException ce) {
+ formAndThrowException(ce);
+ }
+ log.debug("exit updateAction");
+ return action;
}
- if (artifactMetadata.getArtifactProtection().equals(ActionArtifactProtection.readOnly.name())) {
- throw new ActionException(ACTION_ARTIFACT_DELETE_READ_ONLY,
- ACTION_ARTIFACT_DELETE_READ_ONLY_MSG);
- } else {
-
- //Update action by removing artifact metadata
- String jsonData = action.getData();
- List<ActionArtifact> artifacts = action.getArtifacts();//action.getArtifacts();
- ActionArtifact artifact = null;
- Iterator<ActionArtifact> it = artifacts.iterator();
- while (it.hasNext()) {
- artifact = it.next();
- String artifactId = artifact.getArtifactUuId();
- if (artifactId.equals(artifactUuId)) {
- it.remove();
+
+ /**
+ * Checkout an existing action.
+ *
+ * @param invariantUuId
+ * actionInvariantUuId of the action to be checked out
+ * @param user
+ * AT&T id of the user sending the checkout request
+ * @return {@link Action} model object for the checkout action
+ */
+ @Override
+ public Action checkout(String invariantUuId, String user) {
+ Version version = null;
+ ActionEntity actionEntity = null;
+ try {
+ log.debug("entering checkout for Action with invariantUUID= " + invariantUuId + BY_USER + user);
+ actionLogPreProcessor(ActionSubOperation.CHECKOUT_ACTION, TARGET_ENTITY_API);
+ version = versioningManager.checkout(ACTION_VERSIONABLE_TYPE, invariantUuId, user);
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+
+ actionEntity = updateUniqueIdForVersion(invariantUuId, version, ActionStatus.Locked.name(), user);
+ } catch (CoreException exception) {
+ if (exception.code() != null && exception.code()
+ .id()
+ .equals(VersioningErrorCodes.CHECKOT_ON_LOCKED_ENTITY)) {
+ actionLogPreProcessor(ActionSubOperation.GET_ACTION_VERSION, TARGET_ENTITY_DB);
+ VersionInfoEntity versionInfoEntity = versionInfoDao
+ .get(new VersionInfoEntity(ACTION_VERSIONABLE_TYPE, invariantUuId));
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+ String checkoutUser = versionInfoEntity.getCandidate()
+ .getUser();
+ log.debug("Actual checkout user for Action with invariantUUID= " + invariantUuId + " is = "
+ + checkoutUser);
+ if (!checkoutUser.equals(user)) {
+ throw new ActionException(ACTION_CHECKOUT_ON_LOCKED_ENTITY_OTHER_USER, exception.getMessage());
+ }
+ }
+ formAndThrowException(exception);
}
- }
-
- Map dataMap = JsonUtil.json2Object(jsonData, LinkedHashMap.class);
- dataMap.put("artifacts", artifacts);
- String data = JsonUtil.object2Json(dataMap);
- ActionEntity actionEntity = action.toEntity();
- actionEntity.setData(data);
- actionLogPreProcessor(ActionSubOperation.UPDATE_ACTION, TARGET_ENTITY_DB);
- actionDao.update(actionEntity);
- actionLogPostProcessor(StatusCode.COMPLETE, null, "", false);
- log.metrics("");
- // delete Artifact if it's upload and delete action on same checkout version
- String artifactName = artifactMetadata.getArtifactName();
- String generatedArtifactUuId = generateActionArtifactUuId(action, artifactName);
- if (generatedArtifactUuId.equals(artifactUuId)) {
- if (artifact != null) {
- ActionArtifactEntity artifactDeleteEntity =
- new ActionArtifactEntity(artifact.getArtifactUuId(),
- getEffectiveVersion(action.getVersion()));
- actionLogPreProcessor(ActionSubOperation.DELETE_ACTION_ARTIFACT, TARGET_ENTITY_DB);
- actionArtifactDao.delete(artifactDeleteEntity);
+ log.debug("exit checkout for Action with invariantUUID= " + invariantUuId + BY_USER + user);
+ return actionEntity != null ? actionEntity.toDto() : new Action();
+ }
+
+ /**
+ * Undo an already checked out action.
+ *
+ * @param invariantUuId
+ * actionInvariantUuId of the checked out action
+ * @param user
+ * AT&T id of the user sending the request
+ */
+ @Override
+ public void undoCheckout(String invariantUuId, String user) {
+ Version version;
+ try {
+ log.debug("entering undoCheckout for Action with invariantUUID= " + invariantUuId + BY_USER + user);
+
+ actionLogPreProcessor(ActionSubOperation.GET_ACTION_VERSION, TARGET_ENTITY_DB);
+ // Get list of uploaded artifacts in this checked out version
+ VersionInfoEntity versionInfoEntity = versionInfoDao
+ .get(new VersionInfoEntity(ACTION_VERSIONABLE_TYPE, invariantUuId));
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+ if (versionInfoEntity == null) {
+ throw new CoreException(new EntityNotExistErrorBuilder(ACTION_VERSIONABLE_TYPE, invariantUuId).build());
+ }
+ UserCandidateVersion candidate = versionInfoEntity.getCandidate();
+ Version activeVersion;
+ if (candidate != null) {
+ activeVersion = candidate.getVersion();
+ } else {
+ activeVersion = versionInfoEntity.getActiveVersion();
+ }
+
+ actionLogPreProcessor(ActionSubOperation.GET_ACTIONENTITY_BY_VERSION, TARGET_ENTITY_DB);
+ Action action = actionDao.get(new ActionEntity(invariantUuId, activeVersion))
+ .toDto();
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+
+ // Perform undo checkout on the action
+ actionLogPreProcessor(ActionSubOperation.UNDO_CHECKOUT_ACTION, TARGET_ENTITY_API);
+ version = versioningManager.undoCheckout(ACTION_VERSIONABLE_TYPE, invariantUuId, user);
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+
+ if (version.equals(new Version(0, 0))) {
+ actionLogPreProcessor(ActionSubOperation.DELETE_UNIQUEVALUE, TARGET_ENTITY_API);
+ UniqueValueUtil uniqueValueUtil = new UniqueValueUtil(UniqueValueDaoFactory.getInstance()
+ .createInterface());
+ uniqueValueUtil.deleteUniqueValue(ActionConstants.UniqueValues.ACTION_NAME, action.getName());
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+
+ actionLogPreProcessor(ActionSubOperation.DELETE_ACTIONVERSION, TARGET_ENTITY_DB);
+ // Added for the case where Create->Undo_Checkout->Checkout
+ // should not get the action
+ versionInfoDao.delete(new VersionInfoEntity(ACTION_VERSIONABLE_TYPE, invariantUuId));
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+ }
+
+ List<ActionArtifact> currentVersionArtifacts = action.getArtifacts();
+
+ // Delete the artifacts from action_artifact table (if any)
+ if (CollectionUtils.isNotEmpty(currentVersionArtifacts) && currentVersionArtifacts.size() > 0) {
+ for (ActionArtifact artifact : currentVersionArtifacts) {
+ ActionArtifactEntity artifactDeleteEntity = new ActionArtifactEntity(artifact.getArtifactUuId(),
+ getEffectiveVersion(activeVersion.toString()));
+ actionLogPreProcessor(ActionSubOperation.DELETE_ARTIFACT, TARGET_ENTITY_DB);
+ actionArtifactDao.delete(artifactDeleteEntity);
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+ }
+ }
+ } catch (CoreException exception) {
+ formAndThrowException(exception);
}
- actionLogPostProcessor(StatusCode.COMPLETE, null, "", false);
- log.metrics("");
- }
+ log.debug("exit undoCheckout for Action with invariantUUID= " + invariantUuId + BY_USER + user);
+ }
+ /**
+ * Checkin a checked out action.
+ *
+ * @param invariantUuId
+ * actionInvariantUuId of the checked out action
+ * @param user
+ * AT&T id of the user sending the request
+ * @return {@link Action} model object for the updated action
+ */
+ @Override
+ public Action checkin(String invariantUuId, String user) {
+ Version version = null;
+ ActionEntity actionEntity = null;
+ try {
+ log.debug("entering checkin for Action with invariantUUID= " + invariantUuId + BY_USER + user);
+ actionLogPreProcessor(ActionSubOperation.CHECKIN_ACTION, TARGET_ENTITY_API);
+ version = versioningManager.checkin(ACTION_VERSIONABLE_TYPE, invariantUuId, user, null);
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+ actionEntity = updateStatusForVersion(invariantUuId, version, ActionStatus.Available.name(), user);
+ } catch (CoreException exception) {
+ formAndThrowException(exception);
+ }
+ log.debug("exit checkin for Action with invariantUUID= " + invariantUuId + BY_USER + user);
+ return actionEntity != null ? actionEntity.toDto() : new Action();
}
- log.debug(
- "exit deleteArtifact with actionInvariantUuId= " + actionInvariantUuId + "artifactUUID= "
- + artifactUuId + " and user = " + user);
- }
-
- /**
- * Update an existing artifact.
- *
- * @param artifact {@link ActionArtifact} object representing the artifact and its
- * metadata
- * @param actionInvariantUuId Invariant UUID of the action to which the artifact has to be
- * uploaded
- * @param user User ID of the user sending the request
- */
- public void updateArtifact(ActionArtifact artifact, String actionInvariantUuId, String user) {
- try {
- log.debug("Enter updateArtifact with actionInvariantUuId= " + actionInvariantUuId
- + "artifactUUID= " + artifact.getArtifactUuId() + " and user = " + user);
- actionLogPreProcessor(ActionSubOperation.GET_ACTION_VERSION, TARGET_ENTITY_API);
- VersionInfo versionInfo = versioningManager
- .getEntityVersionInfo(ACTION_VERSIONABLE_TYPE, actionInvariantUuId, user,
- VersionableEntityAction.Write);
- actionLogPostProcessor(StatusCode.COMPLETE, null, "", false);
- log.metrics("");
- Version activeVersion = versionInfo.getActiveVersion();
- actionLogPreProcessor(ActionSubOperation.GET_ACTIONENTITY_BY_ACTIONINVID, TARGET_ENTITY_DB);
- Action action = actionDao.get(new ActionEntity(actionInvariantUuId, activeVersion)).toDto();
- actionLogPostProcessor(StatusCode.COMPLETE, null, "", false);
- log.metrics("");
- List<ActionArtifact> actionArtifacts = action.getArtifacts();
- ActionArtifact artifactMetadataByUuId =
- getArtifactMetadataFromAction(actionArtifacts, ARTIFACT_METADATA_ATTR_UUID,
- artifact.getArtifactUuId());
- //Check if artifact is already in action or not
- if (artifactMetadataByUuId == null) {
- throw new ActionException(ActionErrorConstants.ACTION_ARTIFACT_ENTITY_NOT_EXIST_CODE,
- ActionErrorConstants.ACTION_ARTIFACT_ENTITY_NOT_EXIST);
- }
- //If user tries to change artifact name
- if (artifact.getArtifactName() != null
- && !artifactMetadataByUuId.getArtifactName().equalsIgnoreCase(
- artifact.getArtifactName())) {
- throw new ActionException(ACTION_UPDATE_NOT_ALLOWED_CODE,
- ACTION_ARTIFACT_UPDATE_NAME_INVALID);
- }
-
- byte[] payload = artifact.getArtifact();
- String artifactLabel = artifact.getArtifactLabel();
- String artifactCategory = artifact.getArtifactCategory();
- String artifactDescription = artifact.getArtifactDescription();
- String artifactProtection = artifact.getArtifactProtection();
- String artifactName = artifact.getArtifactName();
- //If artifact read only
- if (artifactMetadataByUuId.getArtifactProtection()
- .equals(ActionArtifactProtection.readOnly.name())) {
- if (artifactName != null || artifactLabel != null || artifactCategory != null
- || artifactDescription != null || payload != null) {
- throw new ActionException(ACTION_ARTIFACT_UPDATE_READ_ONLY,
- ACTION_ARTIFACT_UPDATE_READ_ONLY_MSG);
+
+ /**
+ * Submit a checked in action.
+ *
+ * @param invariantUuId
+ * actionInvariantUuId of the checked in action
+ * @param user
+ * AT&T id of the user sending the request
+ * @return {@link Action} model object for the updated action
+ */
+ @Override
+ public Action submit(String invariantUuId, String user) {
+ Version version = null;
+ ActionEntity actionEntity = null;
+ try {
+ log.debug("entering submit for Action with invariantUUID= " + invariantUuId + BY_USER + user);
+ actionLogPreProcessor(ActionSubOperation.SUBMIT_ACTION, TARGET_ENTITY_API);
+ version = versioningManager.submit(ACTION_VERSIONABLE_TYPE, invariantUuId, user, null);
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+ actionEntity = updateUniqueIdForVersion(invariantUuId, version, ActionStatus.Final.name(), user);
+ } catch (CoreException exception) {
+ formAndThrowException(exception);
}
- //Changing value from readOnly to readWrite
- if (artifactProtection != null
- && artifactProtection.equals(ActionArtifactProtection.readWrite.name())) {
- artifactMetadataByUuId.setArtifactProtection(ActionArtifactProtection.readWrite.name());
- artifactMetadataByUuId.setTimestamp(getCurrentTimeStampUtc());
- updateArtifactMetadataInActionData(action, artifactMetadataByUuId);
+ log.debug("exit submit for Action with invariantUUID= " + invariantUuId + BY_USER + user);
+ return actionEntity != null ? actionEntity.toDto() : new Action();
+ }
+
+ /**
+ * Download an artifact of an action.
+ *
+ * @param artifactUuId
+ * {@link ActionArtifact} object representing the artifact and
+ * its metadata
+ * @param actionUuId
+ * UUID of the action for which the artifact has to be downloaded
+ * @return downloaded action artifact object
+ */
+ @Override
+ public ActionArtifact downloadArtifact(String actionUuId, String artifactUuId) {
+ log.debug(" entering downloadArtifact with actionUUID= " + actionUuId + " and artifactUUID= " + artifactUuId);
+ Action action = actionDao.getActionsByActionUuId(actionUuId);
+ ActionArtifact actionArtifact;
+ if (action != null) {
+ MDC.put(SERVICE_INSTANCE_ID, action.getActionInvariantUuId());
+ List<ActionArtifact> artifacts = action.getArtifacts();
+ String actionVersion = action.getVersion();
+ int effectiveVersion = getEffectiveVersion(actionVersion);
+ ActionArtifact artifactMetadata = getArtifactMetadataFromAction(artifacts, ARTIFACT_METADATA_ATTR_UUID,
+ artifactUuId);
+ if (artifactMetadata != null) {
+ String artifactName = artifactMetadata.getArtifactName();
+ actionArtifact = actionArtifactDao.downloadArtifact(effectiveVersion, artifactUuId);
+ actionArtifact.setArtifactName(artifactName);
+
+ } else {
+ throw new ActionException(ActionErrorConstants.ACTION_ARTIFACT_ENTITY_NOT_EXIST_CODE,
+ ActionErrorConstants.ACTION_ARTIFACT_ENTITY_NOT_EXIST);
+ }
+ } else {
+ throw new ActionException(ActionErrorConstants.ACTION_ENTITY_NOT_EXIST_CODE,
+ ActionErrorConstants.ACTION_ENTITY_NOT_EXIST);
}
- } else {
- int effectiveVersion = getEffectiveVersion(activeVersion.toString());
- if (artifactLabel != null) {
- artifactMetadataByUuId.setArtifactLabel(artifactLabel);
+ log.debug(" exit downloadArtifact with actionUUID= " + actionUuId + " and artifactUUID= " + artifactUuId);
+ return actionArtifact;
+ }
+
+ /**
+ * Upload an artifact to an action.
+ *
+ * @param artifact
+ * {@link ActionArtifact} object representing the artifact and
+ * its metadata
+ * @param actionInvariantUuId
+ * Invariant UUID of the action to which the artifact has to be
+ * uploaded
+ * @param user
+ * User ID of the user sending the request
+ * @return Uploaded action artifact object
+ */
+ @Override
+ public ActionArtifact uploadArtifact(ActionArtifact artifact, String actionInvariantUuId, String user) {
+ ActionArtifact uploadArtifactResponse = new ActionArtifact();
+ try {
+ log.debug("entering uploadArtifact with actionInvariantUuId= " + actionInvariantUuId + "artifactName= "
+ + artifact.getArtifactName());
+ actionLogPreProcessor(ActionSubOperation.GET_ACTION_VERSION, TARGET_ENTITY_DB);
+ VersionInfo versionInfo = versioningManager.getEntityVersionInfo(ACTION_VERSIONABLE_TYPE,
+ actionInvariantUuId, user, VersionableEntityAction.Write);
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+ Version activeVersion = versionInfo.getActiveVersion();
+ actionLogPreProcessor(ActionSubOperation.GET_ACTIONENTITY_BY_ACTIONINVID, TARGET_ENTITY_DB);
+ Action action = actionDao.get(new ActionEntity(actionInvariantUuId, activeVersion))
+ .toDto();
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+ String artifactUuId = generateActionArtifactUuId(action, artifact.getArtifactName());
+ // Check for Unique document name
+ List<ActionArtifact> actionArtifacts = action.getArtifacts();
+ ActionArtifact artifactMetadata = getArtifactMetadataFromAction(actionArtifacts,
+ ARTIFACT_METADATA_ATTR_NAME, artifact.getArtifactName());
+ if (artifactMetadata != null) {
+ throw new ActionException(ACTION_ARTIFACT_ALREADY_EXISTS_CODE,
+ String.format(ACTION_ARTIFACT_ALREADY_EXISTS, actionInvariantUuId));
+ }
+
+ // Create the artifact
+ artifact.setArtifactUuId(artifactUuId);
+ artifact.setTimestamp(getCurrentTimeStampUtc());
+ artifact.setEffectiveVersion(getEffectiveVersion(activeVersion.toString()));
+ actionArtifactDao.uploadArtifact(artifact);
+
+ // Update the action data field and timestamp
+ addArtifactMetadataInActionData(action, artifact);
+
+ // Set the response object
+ uploadArtifactResponse.setArtifactUuId(artifact.getArtifactUuId());
+ } catch (CoreException ce) {
+ formAndThrowException(ce);
}
- if (artifactCategory != null) {
- artifactMetadataByUuId.setArtifactCategory(artifactCategory);
+ log.debug("exit uploadArtifact with actionInvariantUuId= " + actionInvariantUuId + "artifactName= "
+ + artifact.getArtifactName());
+ return uploadArtifactResponse;
+ }
+
+ @Override
+ public void deleteArtifact(String actionInvariantUuId, String artifactUuId, String user) {
+ log.debug("enter deleteArtifact with actionInvariantUuId= " + actionInvariantUuId + ARTIFACT_UUID + artifactUuId
+ + " and user = " + user);
+ Action action = actionDao.getLockedAction(actionInvariantUuId, user);
+ List<ActionArtifact> actionArtifacts = action.getArtifacts();
+ ActionArtifact artifactMetadata = getArtifactMetadataFromAction(actionArtifacts, ARTIFACT_METADATA_ATTR_UUID,
+ artifactUuId);
+ if (artifactMetadata == null) {
+ throw new ActionException(ActionErrorConstants.ACTION_ARTIFACT_ENTITY_NOT_EXIST_CODE,
+ ActionErrorConstants.ACTION_ARTIFACT_ENTITY_NOT_EXIST);
}
- if (artifactDescription != null) {
- artifactMetadataByUuId.setArtifactDescription(artifactDescription);
+ if (artifactMetadata.getArtifactProtection()
+ .equals(ActionArtifactProtection.readOnly.name())) {
+ throw new ActionException(ACTION_ARTIFACT_DELETE_READ_ONLY, ACTION_ARTIFACT_DELETE_READ_ONLY_MSG);
+ } else {
+
+ // Update action by removing artifact metadata
+ String jsonData = action.getData();
+ List<ActionArtifact> artifacts = action.getArtifacts();// action.getArtifacts();
+ ActionArtifact artifact = null;
+ Iterator<ActionArtifact> it = artifacts.iterator();
+ while (it.hasNext()) {
+ artifact = it.next();
+ String artifactId = artifact.getArtifactUuId();
+ if (artifactId.equals(artifactUuId)) {
+ it.remove();
+ }
+ }
+
+ Map dataMap = JsonUtil.json2Object(jsonData, LinkedHashMap.class);
+ dataMap.put("artifacts", artifacts);
+ String data = JsonUtil.object2Json(dataMap);
+ ActionEntity actionEntity = action.toEntity();
+ actionEntity.setData(data);
+ actionLogPreProcessor(ActionSubOperation.UPDATE_ACTION, TARGET_ENTITY_DB);
+ actionDao.update(actionEntity);
+ actionLogPostProcessor(StatusCode.COMPLETE, null, "", false);
+ log.metrics("");
+ // delete Artifact if it's upload and delete action on same checkout
+ // version
+ String artifactName = artifactMetadata.getArtifactName();
+ String generatedArtifactUuId = generateActionArtifactUuId(action, artifactName);
+ if (generatedArtifactUuId.equals(artifactUuId)) {
+ if (artifact != null) {
+ ActionArtifactEntity artifactDeleteEntity = new ActionArtifactEntity(artifact.getArtifactUuId(),
+ getEffectiveVersion(action.getVersion()));
+ actionLogPreProcessor(ActionSubOperation.DELETE_ACTION_ARTIFACT, TARGET_ENTITY_DB);
+ actionArtifactDao.delete(artifactDeleteEntity);
+ }
+ actionLogPostProcessor(StatusCode.COMPLETE, null, "", false);
+ log.metrics("");
+ }
+
}
- if (artifactProtection != null) {
- artifactMetadataByUuId.setArtifactProtection(artifactProtection);
+ log.debug("exit deleteArtifact with actionInvariantUuId= " + actionInvariantUuId + ARTIFACT_UUID + artifactUuId
+ + " and user = " + user);
+ }
+
+ /**
+ * Update an existing artifact.
+ *
+ * @param artifact
+ * {@link ActionArtifact} object representing the artifact and
+ * its metadata
+ * @param actionInvariantUuId
+ * Invariant UUID of the action to which the artifact has to be
+ * uploaded
+ * @param user
+ * User ID of the user sending the request
+ */
+ public void updateArtifact(ActionArtifact artifact, String actionInvariantUuId, String user) {
+ try {
+ log.debug("Enter updateArtifact with actionInvariantUuId= " + actionInvariantUuId + ARTIFACT_UUID
+ + artifact.getArtifactUuId() + " and user = " + user);
+ actionLogPreProcessor(ActionSubOperation.GET_ACTION_VERSION, TARGET_ENTITY_API);
+ VersionInfo versionInfo = versioningManager.getEntityVersionInfo(ACTION_VERSIONABLE_TYPE,
+ actionInvariantUuId, user, VersionableEntityAction.Write);
+ actionLogPostProcessor(StatusCode.COMPLETE, null, "", false);
+ log.metrics("");
+ Version activeVersion = versionInfo.getActiveVersion();
+ actionLogPreProcessor(ActionSubOperation.GET_ACTIONENTITY_BY_ACTIONINVID, TARGET_ENTITY_DB);
+ Action action = actionDao.get(new ActionEntity(actionInvariantUuId, activeVersion))
+ .toDto();
+ actionLogPostProcessor(StatusCode.COMPLETE, null, "", false);
+ log.metrics("");
+ List<ActionArtifact> actionArtifacts = action.getArtifacts();
+ ActionArtifact artifactMetadataByUuId = getArtifactMetadataFromAction(actionArtifacts,
+ ARTIFACT_METADATA_ATTR_UUID, artifact.getArtifactUuId());
+ // Check if artifact is already in action or not
+ if (artifactMetadataByUuId == null) {
+ throw new ActionException(ActionErrorConstants.ACTION_ARTIFACT_ENTITY_NOT_EXIST_CODE,
+ ActionErrorConstants.ACTION_ARTIFACT_ENTITY_NOT_EXIST);
+ }
+ // If user tries to change artifact name
+ if (artifact.getArtifactName() != null && !artifactMetadataByUuId.getArtifactName()
+ .equalsIgnoreCase(artifact.getArtifactName())) {
+ throw new ActionException(ACTION_UPDATE_NOT_ALLOWED_CODE, ACTION_ARTIFACT_UPDATE_NAME_INVALID);
+ }
+
+ byte[] payload = artifact.getArtifact();
+ String artifactLabel = artifact.getArtifactLabel();
+ String artifactCategory = artifact.getArtifactCategory();
+ String artifactDescription = artifact.getArtifactDescription();
+ String artifactProtection = artifact.getArtifactProtection();
+ String artifactName = artifact.getArtifactName();
+ // If artifact read only
+ if (artifactMetadataByUuId.getArtifactProtection()
+ .equals(ActionArtifactProtection.readOnly.name())) {
+ if (artifactName != null || artifactLabel != null || artifactCategory != null
+ || artifactDescription != null || payload != null) {
+ throw new ActionException(ACTION_ARTIFACT_UPDATE_READ_ONLY, ACTION_ARTIFACT_UPDATE_READ_ONLY_MSG);
+ }
+ // Changing value from readOnly to readWrite
+ if (artifactProtection != null
+ && artifactProtection.equals(ActionArtifactProtection.readWrite.name())) {
+ artifactMetadataByUuId.setArtifactProtection(ActionArtifactProtection.readWrite.name());
+ artifactMetadataByUuId.setTimestamp(getCurrentTimeStampUtc());
+ updateArtifactMetadataInActionData(action, artifactMetadataByUuId);
+ }
+ } else {
+ int effectiveVersion = getEffectiveVersion(activeVersion.toString());
+ if (artifactLabel != null) {
+ artifactMetadataByUuId.setArtifactLabel(artifactLabel);
+ }
+ if (artifactCategory != null) {
+ artifactMetadataByUuId.setArtifactCategory(artifactCategory);
+ }
+ if (artifactDescription != null) {
+ artifactMetadataByUuId.setArtifactDescription(artifactDescription);
+ }
+ if (artifactProtection != null) {
+ artifactMetadataByUuId.setArtifactProtection(artifactProtection);
+ }
+ if (payload != null) {
+ // get artifact data from action_artifact table for updating
+ // the content
+ ActionArtifact artifactContent = new ActionArtifact();
+ artifactContent.setArtifactUuId(artifact.getArtifactUuId());
+ artifactContent.setArtifact(payload);
+ artifactContent.setEffectiveVersion(effectiveVersion);
+ actionArtifactDao.updateArtifact(artifactContent);
+ }
+ // Update the action data field and timestamp
+ artifactMetadataByUuId.setTimestamp(getCurrentTimeStampUtc());
+ updateArtifactMetadataInActionData(action, artifactMetadataByUuId);
+ }
+ log.debug("exit updateArtifact with actionInvariantUuId= " + actionInvariantUuId + ARTIFACT_UUID
+ + artifact.getArtifactUuId() + " and user = " + user);
+ } catch (CoreException coreException) {
+ formAndThrowException(coreException);
}
- if (payload != null) {
- //get artifact data from action_artifact table for updating the content
- ActionArtifact artifactContent = new ActionArtifact();
- artifactContent.setArtifactUuId(artifact.getArtifactUuId());
- artifactContent.setArtifact(payload);
- artifactContent.setEffectiveVersion(effectiveVersion);
- actionArtifactDao.updateArtifact(artifactContent);
+ }
+
+ /**
+ * Generate artifact UUID at runtime using action name and effective
+ * version.
+ *
+ * @param action
+ * {@link Action} for which the artifact is being
+ * uploaded/updated/downloaded
+ * @param artifactName
+ * Artifact name
+ * @return Generated UUID string
+ */
+ private String generateActionArtifactUuId(Action action, String artifactName) {
+ int effectiveVersion = getEffectiveVersion(action.getVersion());
+ // Upper case for maintaining case-insensitive behavior for the artifact
+ // names
+ String artifactUuIdString = action.getName()
+ .toUpperCase() + effectiveVersion + artifactName.toUpperCase();
+ String generateArtifactUuId = UUID.nameUUIDFromBytes((artifactUuIdString).getBytes())
+ .toString();
+ String artifactUuId = generateArtifactUuId.replace("-", "");
+ return artifactUuId.toUpperCase();
+ }
+
+ /**
+ * Generate the effective action version for artifact operations.
+ *
+ * @param actionVersion
+ * Version of the action as a string
+ * @return Effective version to be used for artifact operations
+ */
+ private int getEffectiveVersion(String actionVersion) {
+ Version version = Version.valueOf(actionVersion);
+ return version.getMajor() * 10000 + version.getMinor();
+ }
+
+ /**
+ * Update the data field of the Action object with the modified/generated
+ * fields after an operation.
+ *
+ * @param action
+ * Action object whose data field has to be updated
+ * @return Updated {@link Action} object
+ */
+ private Action updateData(Action action) {
+ log.debug("entering updateData to update data json for action with actionuuid= " + action.getActionUuId());
+ Map<String, String> dataMap = new LinkedHashMap<>();
+ dataMap.put(ActionConstants.UNIQUE_ID, action.getActionUuId());
+ dataMap.put(ActionConstants.VERSION, action.getVersion());
+ dataMap.put(ActionConstants.INVARIANTUUID, action.getActionInvariantUuId());
+ dataMap.put(ActionConstants.STATUS, action.getStatus()
+ .name());
+
+ String data = action.getData();
+ Map<String, String> currentDataMap = JsonUtil.json2Object(data, LinkedHashMap.class);
+ dataMap.putAll(currentDataMap);
+ data = JsonUtil.object2Json(dataMap);
+ action.setData(data);
+ log.debug("exit updateData");
+ return action;
+ }
+
+ /**
+ * Method to add the artifact metadata in the data attribute of action
+ * table.
+ *
+ * @param action
+ * Action to which artifact is uploaded
+ * @param artifact
+ * Uploaded artifact object
+ */
+ private void addArtifactMetadataInActionData(Action action, ActionArtifact artifact) {
+
+ ActionArtifact artifactMetadata = new ActionArtifact();
+ artifactMetadata.setArtifactUuId(artifact.getArtifactUuId());
+ artifactMetadata.setArtifactName(artifact.getArtifactName());
+ artifactMetadata.setArtifactProtection(artifact.getArtifactProtection());
+ artifactMetadata.setArtifactLabel(artifact.getArtifactLabel());
+ artifactMetadata.setArtifactDescription(artifact.getArtifactDescription());
+ artifactMetadata.setArtifactCategory(artifact.getArtifactCategory());
+ artifactMetadata.setTimestamp(artifact.getTimestamp());
+
+ List<ActionArtifact> actionArtifacts = action.getArtifacts();
+ if (actionArtifacts == null) {
+ actionArtifacts = new ArrayList<>();
}
- //Update the action data field and timestamp
- artifactMetadataByUuId.setTimestamp(getCurrentTimeStampUtc());
- updateArtifactMetadataInActionData(action, artifactMetadataByUuId);
- }
- log.debug("exit updateArtifact with actionInvariantUuId= " + actionInvariantUuId
- + "artifactUUID= " + artifact.getArtifactUuId() + " and user = " + user);
- } catch (CoreException coreException) {
- formAndThrowException(coreException);
+ actionArtifacts.add(artifactMetadata);
+ action.setArtifacts(actionArtifacts);
+ String currentData = action.getData();
+ Map<String, Object> currentDataMap = JsonUtil.json2Object(currentData, LinkedHashMap.class);
+ currentDataMap.put(ActionConstants.ARTIFACTS, actionArtifacts);
+ String updatedActionData = JsonUtil.object2Json(currentDataMap);
+ action.setData(updatedActionData);
+ action.setTimestamp(artifact.getTimestamp());
+ actionDao.updateAction(action);
}
- }
-
- /**
- * Generate artifact UUID at runtime using action name and effective version.
- *
- * @param action {@link Action} for which the artifact is being uploaded/updated/downloaded
- * @param artifactName Artifact name
- * @return Generated UUID string
- */
- private String generateActionArtifactUuId(Action action, String artifactName) {
- int effectiveVersion = getEffectiveVersion(action.getVersion());
- //Upper case for maintaining case-insensitive behavior for the artifact names
- String artifactUuIdString =
- action.getName().toUpperCase() + effectiveVersion + artifactName.toUpperCase();
- String generateArtifactUuId =
- UUID.nameUUIDFromBytes((artifactUuIdString).getBytes()).toString();
- String artifactUuId = generateArtifactUuId.replace("-", "");
- return artifactUuId.toUpperCase();
- }
-
- /**
- * Generate the effective action version for artifact operations.
- *
- * @param actionVersion Version of the action as a string
- * @return Effective version to be used for artifact operations
- */
- private int getEffectiveVersion(String actionVersion) {
- Version version = Version.valueOf(actionVersion);
- return version.getMajor() * 10000 + version.getMinor();
- }
-
- /**
- * Update the data field of the Action object with the modified/generated fields after an
- * operation.
- *
- * @param action Action object whose data field has to be updated
- * @return Updated {@link Action} object
- */
- private Action updateData(Action action) {
- log.debug("entering updateData to update data json for action with actionuuid= "
- + action.getActionUuId());
- Map<String, String> dataMap = new LinkedHashMap<>();
- dataMap.put(ActionConstants.UNIQUE_ID, action.getActionUuId());
- dataMap.put(ActionConstants.VERSION, action.getVersion());
- dataMap.put(ActionConstants.INVARIANTUUID, action.getActionInvariantUuId());
- dataMap.put(ActionConstants.STATUS, action.getStatus().name());
-
- String data = action.getData();
- Map<String, String> currentDataMap = JsonUtil.json2Object(data, LinkedHashMap.class);
- dataMap.putAll(currentDataMap);
- data = JsonUtil.object2Json(dataMap);
- action.setData(data);
- log.debug("exit updateData");
- return action;
- }
-
- /**
- * Method to add the artifact metadata in the data attribute of action table.
- *
- * @param action Action to which artifact is uploaded
- * @param artifact Uploaded artifact object
- */
- private void addArtifactMetadataInActionData(Action action, ActionArtifact artifact) {
-
- ActionArtifact artifactMetadata = new ActionArtifact();
- artifactMetadata.setArtifactUuId(artifact.getArtifactUuId());
- artifactMetadata.setArtifactName(artifact.getArtifactName());
- artifactMetadata.setArtifactProtection(artifact.getArtifactProtection());
- artifactMetadata.setArtifactLabel(artifact.getArtifactLabel());
- artifactMetadata.setArtifactDescription(artifact.getArtifactDescription());
- artifactMetadata.setArtifactCategory(artifact.getArtifactCategory());
- artifactMetadata.setTimestamp(artifact.getTimestamp());
-
- List<ActionArtifact> actionArtifacts = action.getArtifacts();
- if (actionArtifacts == null) {
- actionArtifacts = new ArrayList<>();
+
+ /**
+ * Get a list of last major and last minor version (no candidate) of action
+ * from a list of actions.
+ *
+ * @param actions
+ * Exhaustive list of the action versions
+ * @return List {@link Action} of last major and last minor version (no
+ * candidate) of action from a list of actions
+ */
+ private List<Action> getMajorMinorVersionActions(List<Action> actions) {
+ log.debug(" entering getMajorMinorVersionActions for actions ");
+ List<Action> list = new LinkedList<>();
+ actionLogPreProcessor(ActionSubOperation.GET_VERSIONINFO_FOR_ALL_ACTIONS, TARGET_ENTITY_API);
+ Map<String, VersionInfo> actionVersionMap = versioningManager.listEntitiesVersionInfo(ACTION_VERSIONABLE_TYPE,
+ "", VersionableEntityAction.Read);
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+ for (Action action : actions) {
+ if (action.getStatus() == ActionStatus.Deleted) {
+ continue;
+ }
+ VersionInfo actionVersionInfo = actionVersionMap.get(action.getActionInvariantUuId());
+ if (actionVersionInfo.getActiveVersion() != null && actionVersionInfo.getActiveVersion()
+ .equals(Version.valueOf(action.getVersion()))) {
+ list.add(action);
+ } else if (actionVersionInfo.getLatestFinalVersion() != null && actionVersionInfo.getLatestFinalVersion()
+ .equals(Version.valueOf(action.getVersion()))
+ && !actionVersionInfo.getLatestFinalVersion()
+ .equals(actionVersionInfo.getActiveVersion())) {
+ list.add(action);
+ }
+ }
+ log.debug(" exit getMajorMinorVersionActions for actions ");
+ return list;
}
- actionArtifacts.add(artifactMetadata);
- action.setArtifacts(actionArtifacts);
- String currentData = action.getData();
- Map<String, Object> currentDataMap = JsonUtil.json2Object(currentData, LinkedHashMap.class);
- currentDataMap.put(ActionConstants.ARTIFACTS, actionArtifacts);
- String updatedActionData = JsonUtil.object2Json(currentDataMap);
- action.setData(updatedActionData);
- action.setTimestamp(artifact.getTimestamp());
- actionDao.updateAction(action);
- }
-
- /**
- * Get a list of last major and last minor version (no candidate) of action from a list of
- * actions.
- *
- * @param actions Exhaustive list of the action versions
- * @return List {@link Action} of last major and last minor version (no candidate) of action from
- * a list of actions
- */
- private List<Action> getMajorMinorVersionActions(List<Action> actions) {
- log.debug(" entering getMajorMinorVersionActions for actions ");
- List<Action> list = new LinkedList<>();
- actionLogPreProcessor(ActionSubOperation.GET_VERSIONINFO_FOR_ALL_ACTIONS, TARGET_ENTITY_API);
- Map<String, VersionInfo> actionVersionMap = versioningManager
- .listEntitiesVersionInfo(ACTION_VERSIONABLE_TYPE, "", VersionableEntityAction.Read);
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
- for (Action action : actions) {
- if (action.getStatus() == ActionStatus.Deleted) {
- continue;
- }
- VersionInfo actionVersionInfo = actionVersionMap.get(action.getActionInvariantUuId());
- if (actionVersionInfo.getActiveVersion() != null
- && actionVersionInfo.getActiveVersion().equals(Version.valueOf(action.getVersion()))) {
- list.add(action);
- } else if (actionVersionInfo.getLatestFinalVersion() != null
- && actionVersionInfo.getLatestFinalVersion().equals(Version.valueOf(action.getVersion()))
- &&
- !actionVersionInfo.getLatestFinalVersion().equals(actionVersionInfo.getActiveVersion())) {
- list.add(action);
- }
+
+ /**
+ * CoreException object wrapper from Version library to Action Library
+ * Exception.
+ *
+ * @param exception
+ * CoreException object from version library
+ */
+ private void formAndThrowException(CoreException exception) {
+ log.debug("entering formAndThrowException with input CoreException =" + exception.code()
+ .id() + " " + exception.getMessage());
+ String errorDescription = exception.getMessage();
+ String errorCode = exception.code()
+ .id();
+ ActionException actionException = new ActionException();
+ switch (errorCode) {
+ case VersioningErrorCodes.VERSIONABLE_ENTITY_NOT_EXIST:
+ actionException.setErrorCode(ACTION_ENTITY_NOT_EXIST_CODE);
+ actionException.setDescription(ACTION_ENTITY_NOT_EXIST);
+ break;
+ case VersioningErrorCodes.CHECKOT_ON_LOCKED_ENTITY:
+ actionException.setErrorCode(ACTION_CHECKOUT_ON_LOCKED_ENTITY);
+ actionException.setDescription(errorDescription);
+ break;
+ case VersioningErrorCodes.CHECKIN_ON_UNLOCKED_ENTITY:
+ actionException.setErrorCode(ACTION_CHECKIN_ON_UNLOCKED_ENTITY);
+ actionException.setDescription(errorDescription);
+ break;
+ case VersioningErrorCodes.SUBMIT_FINALIZED_ENTITY_NOT_ALLOWED:
+ actionException.setErrorCode(ACTION_SUBMIT_FINALIZED_ENTITY_NOT_ALLOWED);
+ actionException.setDescription(errorDescription);
+ break;
+ case VersioningErrorCodes.SUBMIT_LOCKED_ENTITY_NOT_ALLOWED:
+ actionException.setErrorCode(ACTION_SUBMIT_LOCKED_ENTITY_NOT_ALLOWED);
+ actionException.setDescription(errorDescription);
+ break;
+ case VersioningErrorCodes.UNDO_CHECKOUT_ON_UNLOCKED_ENTITY:
+ actionException.setErrorCode(ACTION_UNDO_CHECKOUT_ON_UNLOCKED_ENTITY);
+ actionException.setDescription(errorDescription);
+ break;
+ case VersioningErrorCodes.EDIT_ON_ENTITY_LOCKED_BY_OTHER_USER:
+ actionException.setErrorCode(ACTION_EDIT_ON_ENTITY_LOCKED_BY_OTHER_USER);
+ actionException.setDescription(errorDescription.replace("edit", "updat"));
+ break;
+ case VersioningErrorCodes.CHECKIN_ON_ENTITY_LOCKED_BY_OTHER_USER:
+ actionException.setErrorCode(ACTION_CHECKIN_ON_ENTITY_LOCKED_BY_OTHER_USER);
+ actionException.setDescription(errorDescription);
+ break;
+ case VersioningErrorCodes.UNDO_CHECKOUT_ON_ENTITY_LOCKED_BY_OTHER_USER:
+ actionException.setErrorCode(ACTION_UNDO_CHECKOUT_ON_ENTITY_LOCKED_BY_OTHER_USER);
+ actionException.setDescription(errorDescription);
+ break;
+ case VersioningErrorCodes.EDIT_ON_UNLOCKED_ENTITY:
+ actionException.setErrorCode(ACTION_UPDATE_ON_UNLOCKED_ENTITY);
+ actionException.setDescription(errorDescription.replace("edit", "update"));
+ break;
+ case VersioningErrorCodes.DELETE_ON_LOCKED_ENTITY:
+ actionException.setErrorCode(ACTION_DELETE_ON_LOCKED_ENTITY_CODE);
+ actionException.setDescription(errorDescription);
+ break;
+ default:
+ actionException.setErrorCode(ACTION_INTERNAL_SERVER_ERR_CODE);
+ actionException.setDescription(exception.getMessage());
+
+ }
+ // Todo - Uncomment only if class to be added in ERROR Log
+ /*
+ * actionErrorLogProcessor(CategoryLogLevel.ERROR,
+ * actionException.getErrorCode(), actionException.getDescription());
+ * log.error("");
+ */
+ log.debug("exit formAndThrowException with ActionException =" + actionException.getErrorCode() + " "
+ + actionException.getDescription());
+ throw actionException;
}
- log.debug(" exit getMajorMinorVersionActions for actions ");
- return list;
- }
-
- /**
- * CoreException object wrapper from Version library to Action Library Exception.
- *
- * @param exception CoreException object from version library
- */
- private void formAndThrowException(CoreException exception) {
- log.debug("entering formAndThrowException with input CoreException =" + exception.code().id()
- + " " + exception.getMessage());
- String errorDescription = exception.getMessage();
- String errorCode = exception.code().id();
- ActionException actionException = new ActionException();
- switch (errorCode) {
- case VersioningErrorCodes.VERSIONABLE_ENTITY_NOT_EXIST:
- actionException.setErrorCode(ACTION_ENTITY_NOT_EXIST_CODE);
- actionException.setDescription(ACTION_ENTITY_NOT_EXIST);
- break;
- case VersioningErrorCodes.CHECKOT_ON_LOCKED_ENTITY:
- actionException.setErrorCode(ACTION_CHECKOUT_ON_LOCKED_ENTITY);
- actionException.setDescription(errorDescription);
- break;
- case VersioningErrorCodes.CHECKIN_ON_UNLOCKED_ENTITY:
- actionException.setErrorCode(ACTION_CHECKIN_ON_UNLOCKED_ENTITY);
- actionException.setDescription(errorDescription);
- break;
- case VersioningErrorCodes.SUBMIT_FINALIZED_ENTITY_NOT_ALLOWED:
- actionException.setErrorCode(ACTION_SUBMIT_FINALIZED_ENTITY_NOT_ALLOWED);
- actionException.setDescription(errorDescription);
- break;
- case VersioningErrorCodes.SUBMIT_LOCKED_ENTITY_NOT_ALLOWED:
- actionException.setErrorCode(ACTION_SUBMIT_LOCKED_ENTITY_NOT_ALLOWED);
- actionException.setDescription(errorDescription);
- break;
- case VersioningErrorCodes.UNDO_CHECKOUT_ON_UNLOCKED_ENTITY:
- actionException.setErrorCode(ACTION_UNDO_CHECKOUT_ON_UNLOCKED_ENTITY);
- actionException.setDescription(errorDescription);
- break;
- case VersioningErrorCodes.EDIT_ON_ENTITY_LOCKED_BY_OTHER_USER:
- actionException.setErrorCode(ACTION_EDIT_ON_ENTITY_LOCKED_BY_OTHER_USER);
- actionException.setDescription(errorDescription.replace("edit", "updat"));
- break;
- case VersioningErrorCodes.CHECKIN_ON_ENTITY_LOCKED_BY_OTHER_USER:
- actionException.setErrorCode(ACTION_CHECKIN_ON_ENTITY_LOCKED_BY_OTHER_USER);
- actionException.setDescription(errorDescription);
- break;
- case VersioningErrorCodes.UNDO_CHECKOUT_ON_ENTITY_LOCKED_BY_OTHER_USER:
- actionException.setErrorCode(ACTION_UNDO_CHECKOUT_ON_ENTITY_LOCKED_BY_OTHER_USER);
- actionException.setDescription(errorDescription);
- break;
- case VersioningErrorCodes.EDIT_ON_UNLOCKED_ENTITY:
- actionException.setErrorCode(ACTION_UPDATE_ON_UNLOCKED_ENTITY);
- actionException.setDescription(errorDescription.replace("edit", "update"));
- break;
- case VersioningErrorCodes.DELETE_ON_LOCKED_ENTITY:
- actionException.setErrorCode(ACTION_DELETE_ON_LOCKED_ENTITY_CODE);
- actionException.setDescription(errorDescription);
- break;
- default:
- actionException.setErrorCode(ACTION_INTERNAL_SERVER_ERR_CODE);
- actionException.setDescription(exception.getMessage());
+ /**
+ * Validates an action object for business layer validations before an
+ * update operation.
+ *
+ * @param action
+ * Action object to be validated
+ * @param activeVersion
+ * Active version of the actoin object
+ */
+ private void validateActions(Action action, Version activeVersion) {
+ try {
+ // Set version if not already available in input request
+ // If version set in input compare it with version from DB
+ if (StringUtils.isEmpty(action.getVersion())) {
+ action.setVersion(activeVersion.toString());
+ } else {
+ if (!activeVersion.equals(Version.valueOf(action.getVersion()))) {
+ throw new ActionException(ACTION_UPDATE_INVALID_VERSION,
+ String.format(ACTION_REQUESTED_VERSION_INVALID, action.getVersion()));
+ }
+ }
+ String invariantUuId = action.getActionInvariantUuId();
+ Version version = Version.valueOf(action.getVersion());
+ Action existingAction = getActions(invariantUuId, version);
+ if (existingAction == null || existingAction.getActionInvariantUuId() == null) {
+ throw new ActionException(ACTION_ENTITY_NOT_EXIST_CODE, ACTION_ENTITY_NOT_EXIST);
+ }
+ List<String> invalidParameters = new LinkedList<>();
+ // Prevent update of name, version and id fields
+ if (!existingAction.getName()
+ .equals(action.getName())) {
+ throw new ActionException(ACTION_UPDATE_NOT_ALLOWED_CODE_NAME, ACTION_UPDATE_NOT_ALLOWED_FOR_NAME);
+ }
+ if (!StringUtils.isEmpty(action.getActionUuId()) && !existingAction.getActionUuId()
+ .equals(action.getActionUuId())) {
+ invalidParameters.add(UNIQUE_ID);
+ }
+ if (action.getStatus() != null && (existingAction.getStatus() != action.getStatus())) {
+ invalidParameters.add(STATUS);
+ }
+
+ if (!invalidParameters.isEmpty()) {
+ throw new ActionException(ACTION_UPDATE_NOT_ALLOWED_CODE,
+ String.format(ACTION_UPDATE_PARAM_INVALID, StringUtils.join(invalidParameters, ", ")));
+ }
+ action.setActionUuId(existingAction.getActionUuId());
+ } catch (IllegalArgumentException iae) {
+ String message = iae.getMessage();
+ if (message == VERSION_STRING_VIOLATION_MSG) {
+ throw new ActionException(ACTION_UPDATE_NOT_ALLOWED_CODE, message);
+ } else {
+ throw iae;
+ }
+ }
}
- //Todo - Uncomment only if class to be added in ERROR Log
- /*actionErrorLogProcessor(CategoryLogLevel.ERROR, actionException.getErrorCode(),
- actionException.getDescription());
- log.error("");*/
- log.debug(
- "exit formAndThrowException with ActionException =" + actionException.getErrorCode()
- + " " + actionException.getDescription());
- throw actionException;
- }
-
- /**
- * Validates an action object for business layer validations before an update operation.
- *
- * @param action Action object to be validated
- * @param activeVersion Active version of the actoin object
- */
- private void validateActions(Action action, Version activeVersion) {
- try {
- //Set version if not already available in input request
- //If version set in input compare it with version from DB
- if (StringUtils.isEmpty(action.getVersion())) {
- action.setVersion(activeVersion.toString());
- } else {
- if (!activeVersion.equals(Version.valueOf(action.getVersion()))) {
- throw new ActionException(ACTION_UPDATE_INVALID_VERSION,
- String.format(ACTION_REQUESTED_VERSION_INVALID, action.getVersion()));
+
+ /**
+ * Get an action version entity object.
+ *
+ * @param invariantUuId
+ * Invariant UUID of the action
+ * @param version
+ * Version of the action
+ * @return {@link ActionEntity} object of the action version
+ */
+ private ActionEntity getActionsEntityByVersion(String invariantUuId, Version version) {
+ log.debug("entering getActionsEntityByVersion with invariantUUID= " + invariantUuId + AND_VERSION + version);
+ ActionEntity entity = null;
+ if (version != null) {
+ actionLogPreProcessor(ActionSubOperation.GET_ACTIONENTITY_BY_VERSION, TARGET_ENTITY_DB);
+ entity = actionDao
+ .get(new ActionEntity(invariantUuId != null ? invariantUuId.toUpperCase() : null, version));
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
}
- }
- String invariantUuId = action.getActionInvariantUuId();
- Version version = Version.valueOf(action.getVersion());
- Action existingAction = getActions(invariantUuId, version);
- if (existingAction == null || existingAction.getActionInvariantUuId() == null) {
- throw new ActionException(ACTION_ENTITY_NOT_EXIST_CODE, ACTION_ENTITY_NOT_EXIST);
- }
- List<String> invalidParameters = new LinkedList<>();
- //Prevent update of name, version and id fields
- if (!existingAction.getName().equals(action.getName())) {
- throw new ActionException(ACTION_UPDATE_NOT_ALLOWED_CODE_NAME,
- ACTION_UPDATE_NOT_ALLOWED_FOR_NAME);
- }
- if (!StringUtils.isEmpty(action.getActionUuId())
- && !existingAction.getActionUuId().equals(action.getActionUuId())) {
- invalidParameters.add(UNIQUE_ID);
- }
- if (action.getStatus() != null && (existingAction.getStatus() != action.getStatus())) {
- invalidParameters.add(STATUS);
- }
-
- if (!invalidParameters.isEmpty()) {
- throw new ActionException(ACTION_UPDATE_NOT_ALLOWED_CODE,
- String.format(ACTION_UPDATE_PARAM_INVALID, StringUtils.join(invalidParameters, ", ")));
- }
- action.setActionUuId(existingAction.getActionUuId());
- } catch (IllegalArgumentException iae) {
- String message = iae.getMessage();
- if (message == VERSION_STRING_VIOLATION_MSG) {
- throw new ActionException(ACTION_UPDATE_NOT_ALLOWED_CODE, message);
- } else {
- throw iae;
- }
+ log.debug("exit getActionsEntityByVersion with invariantUuId= " + invariantUuId + AND_VERSION + version);
+ return entity;
}
- }
-
- /**
- * Get an action version entity object.
- *
- * @param invariantUuId Invariant UUID of the action
- * @param version Version of the action
- * @return {@link ActionEntity} object of the action version
- */
- private ActionEntity getActionsEntityByVersion(String invariantUuId, Version version) {
- log.debug(
- "entering getActionsEntityByVersion with invariantUUID= " + invariantUuId + " and version"
- + version);
- ActionEntity entity = null;
- if (version != null) {
- actionLogPreProcessor(ActionSubOperation.GET_ACTIONENTITY_BY_VERSION, TARGET_ENTITY_DB);
- entity = actionDao.get(
- new ActionEntity(invariantUuId != null ? invariantUuId.toUpperCase() : null, version));
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
+
+ /**
+ * Get an action version object.
+ *
+ * @param invariantUuId
+ * Invariant UUID of the action
+ * @param version
+ * Version of the action
+ * @return {@link Action} object of the action version
+ */
+ private Action getActions(String invariantUuId, Version version) {
+ ActionEntity actionEntity = getActionsEntityByVersion(
+ invariantUuId != null ? invariantUuId.toUpperCase() : null, version);
+ return actionEntity != null ? actionEntity.toDto() : new Action();
}
- log.debug(
- "exit getActionsEntityByVersion with invariantUuId= " + invariantUuId + " and version"
- + version);
- return entity;
- }
-
- /**
- * Get an action version object.
- *
- * @param invariantUuId Invariant UUID of the action
- * @param version Version of the action
- * @return {@link Action} object of the action version
- */
- private Action getActions(String invariantUuId, Version version) {
- ActionEntity actionEntity =
- getActionsEntityByVersion(invariantUuId != null ? invariantUuId.toUpperCase() : null,
- version);
- return actionEntity != null ? actionEntity.toDto() : new Action();
- }
-
- /**
- * Create and set the Unique ID in for an action version row.
- *
- * @param invariantUuId Invariant UUID of the action
- * @param version Version of the action
- * @param status Status of the action
- * @param user AT&T id of the user sending the request
- * @return {@link ActionEntity} object of the action version
- */
- private ActionEntity updateUniqueIdForVersion(String invariantUuId, Version version,
- String status, String user) {
- log.debug(
- "entering updateUniqueIdForVersion to update action with invariantUuId= " + invariantUuId
- + " with version,status and user as ::" + version + " " + status + " " + user);
- //generate UUID AND update for newly created entity row
- ActionEntity actionEntity = getActionsEntityByVersion(invariantUuId, version);
- if (actionEntity != null) {
- log.debug("Found action to be updated");
- String data = actionEntity.getData();
- String uniqueId = CommonMethods.nextUuId();
- Map<String, String> dataMap = JsonUtil.json2Object(data, LinkedHashMap.class);
- dataMap.put(ActionConstants.UNIQUE_ID, uniqueId);
- dataMap.put(ActionConstants.VERSION, version.toString());
- dataMap.put(ActionConstants.STATUS, status);
- data = JsonUtil.object2Json(dataMap);
-
- actionEntity.setData(data);
- actionEntity.setActionUuId(uniqueId);
- actionEntity.setStatus(status);
- actionEntity.setUser(user);
- actionEntity.setTimestamp(getCurrentTimeStampUtc());
- actionLogPreProcessor(ActionSubOperation.UPDATE_ACTION, TARGET_ENTITY_DB);
- actionDao.update(actionEntity);
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
+
+ /**
+ * Create and set the Unique ID in for an action version row.
+ *
+ * @param invariantUuId
+ * Invariant UUID of the action
+ * @param version
+ * Version of the action
+ * @param status
+ * Status of the action
+ * @param user
+ * AT&T id of the user sending the request
+ * @return {@link ActionEntity} object of the action version
+ */
+ private ActionEntity updateUniqueIdForVersion(String invariantUuId, Version version, String status, String user) {
+ log.debug("entering updateUniqueIdForVersion to update action with invariantUuId= " + invariantUuId
+ + " with version,status and user as ::" + version + " " + status + " " + user);
+ // generate UUID AND update for newly created entity row
+ ActionEntity actionEntity = getActionsEntityByVersion(invariantUuId, version);
+ if (actionEntity != null) {
+ log.debug("Found action to be updated");
+ String data = actionEntity.getData();
+ String uniqueId = CommonMethods.nextUuId();
+ Map<String, String> dataMap = JsonUtil.json2Object(data, LinkedHashMap.class);
+ dataMap.put(ActionConstants.UNIQUE_ID, uniqueId);
+ dataMap.put(ActionConstants.VERSION, version.toString());
+ dataMap.put(ActionConstants.STATUS, status);
+ data = JsonUtil.object2Json(dataMap);
+
+ actionEntity.setData(data);
+ actionEntity.setActionUuId(uniqueId);
+ actionEntity.setStatus(status);
+ actionEntity.setUser(user);
+ actionEntity.setTimestamp(getCurrentTimeStampUtc());
+ actionLogPreProcessor(ActionSubOperation.UPDATE_ACTION, TARGET_ENTITY_DB);
+ actionDao.update(actionEntity);
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+ }
+
+ log.debug("exit updateUniqueIdForVersion to update action with invariantUUID= " + invariantUuId);
+ return actionEntity;
}
- log.debug(
- "exit updateUniqueIdForVersion to update action with invariantUUID= " + invariantUuId);
- return actionEntity;
- }
-
- /**
- * Set the status for an action version row.
- *
- * @param invariantUuId Invariant UUID of the action
- * @param version Version of the action
- * @param status Status of the action
- * @param user AT&T id of the user sending the request
- * @return {@link ActionEntity} object of the action version
- */
- private ActionEntity updateStatusForVersion(String invariantUuId, Version version, String status,
- String user) {
- log.debug(
- "entering updateStatusForVersion with invariantUuId= " + invariantUuId + " and version"
- + version + " for updating status " + status + " by user " + user);
- ActionEntity actionEntity = getActionsEntityByVersion(invariantUuId, version);
- if (actionEntity != null) {
- String data = actionEntity.getData();
- Map<String, String> dataMap = JsonUtil.json2Object(data, LinkedHashMap.class);
- dataMap.put(ActionConstants.STATUS, status);
- data = JsonUtil.object2Json(dataMap);
- actionEntity.setData(data);
- actionEntity.setStatus(status);
- actionEntity.setUser(user);
- actionEntity.setTimestamp(getCurrentTimeStampUtc());
- actionLogPreProcessor(ActionSubOperation.UPDATE_ACTION, TARGET_ENTITY_DB);
- actionDao.update(actionEntity);
- actionLogPostProcessor(StatusCode.COMPLETE);
- log.metrics("");
+ /**
+ * Set the status for an action version row.
+ *
+ * @param invariantUuId
+ * Invariant UUID of the action
+ * @param version
+ * Version of the action
+ * @param status
+ * Status of the action
+ * @param user
+ * AT&T id of the user sending the request
+ * @return {@link ActionEntity} object of the action version
+ */
+ private ActionEntity updateStatusForVersion(String invariantUuId, Version version, String status, String user) {
+ log.debug("entering updateStatusForVersion with invariantUuId= " + invariantUuId + AND_VERSION + version
+ + " for updating status " + status + " by user " + user);
+ ActionEntity actionEntity = getActionsEntityByVersion(invariantUuId, version);
+ if (actionEntity != null) {
+ String data = actionEntity.getData();
+ Map<String, String> dataMap = JsonUtil.json2Object(data, LinkedHashMap.class);
+ dataMap.put(ActionConstants.STATUS, status);
+ data = JsonUtil.object2Json(dataMap);
+ actionEntity.setData(data);
+ actionEntity.setStatus(status);
+ actionEntity.setUser(user);
+ actionEntity.setTimestamp(getCurrentTimeStampUtc());
+ actionLogPreProcessor(ActionSubOperation.UPDATE_ACTION, TARGET_ENTITY_DB);
+ actionDao.update(actionEntity);
+ actionLogPostProcessor(StatusCode.COMPLETE);
+ log.metrics("");
+ }
+ log.debug("exit updateStatusForVersion with invariantUuId= " + invariantUuId + AND_VERSION + version
+ + " for updating status " + status + " by user " + user);
+ return actionEntity;
+
}
- log.debug("exit updateStatusForVersion with invariantUuId= " + invariantUuId + " and version"
- + version + " for updating status " + status + " by user " + user);
- return actionEntity;
-
- }
-
- /**
- * Gets an artifact from the action artifact metadata by artifact name.
- *
- * @param actionArtifactList Action's existing artifact list
- * @param artifactFilterType Search criteria for artifact in action artifact metadata
- * @param artifactFilterValue Value of Search parameter
- * @return Artifact metadata object if artifact is present in action and null otherwise
- */
- private ActionArtifact getArtifactMetadataFromAction(List<ActionArtifact> actionArtifactList,
- String artifactFilterType,
- String artifactFilterValue) {
- ActionArtifact artifact = null;
- if (actionArtifactList != null && !actionArtifactList.isEmpty()) {
- for (ActionArtifact entry : actionArtifactList) {
- switch (artifactFilterType) {
- case ARTIFACT_METADATA_ATTR_UUID:
- String artifactUuId = entry.getArtifactUuId();
- if (artifactUuId != null && artifactUuId.equals(artifactFilterValue)) {
- artifact = entry;
- break;
- }
- break;
- case ARTIFACT_METADATA_ATTR_NAME:
- String existingArtifactName = entry.getArtifactName().toLowerCase();
- if (existingArtifactName.equals(artifactFilterValue.toLowerCase())) {
- artifact = entry;
- break;
+
+ /**
+ * Gets an artifact from the action artifact metadata by artifact name.
+ *
+ * @param actionArtifactList
+ * Action's existing artifact list
+ * @param artifactFilterType
+ * Search criteria for artifact in action artifact metadata
+ * @param artifactFilterValue
+ * Value of Search parameter
+ * @return Artifact metadata object if artifact is present in action and
+ * null otherwise
+ */
+ private ActionArtifact getArtifactMetadataFromAction(List<ActionArtifact> actionArtifactList,
+ String artifactFilterType, String artifactFilterValue) {
+ ActionArtifact artifact = null;
+ if (actionArtifactList != null && !actionArtifactList.isEmpty()) {
+ for (ActionArtifact entry : actionArtifactList) {
+ switch (artifactFilterType) {
+ case ARTIFACT_METADATA_ATTR_UUID:
+ String artifactUuId = entry.getArtifactUuId();
+ if (artifactUuId != null && artifactUuId.equals(artifactFilterValue)) {
+ artifact = entry;
+ break;
+ }
+ break;
+ case ARTIFACT_METADATA_ATTR_NAME:
+ String existingArtifactName = entry.getArtifactName()
+ .toLowerCase();
+ if (existingArtifactName.equals(artifactFilterValue.toLowerCase())) {
+ artifact = entry;
+ break;
+ }
+ break;
+ default:
+ }
}
- break;
- default:
}
- }
+ return artifact;
}
- return artifact;
- }
-
- /**
- * Method to update the artifact metadata in the data attribute of action table.
- *
- * @param action Action to which artifact is uploaded
- * @param updatedArtifact updated artifact object
- */
- private void updateArtifactMetadataInActionData(Action action, ActionArtifact updatedArtifact) {
- for (ActionArtifact entry : action.getArtifacts()) {
- if (entry.getArtifactUuId().equals(updatedArtifact.getArtifactUuId())) {
- entry.setArtifactLabel(updatedArtifact.getArtifactLabel());
- entry.setArtifactCategory(updatedArtifact.getArtifactCategory());
- entry.setArtifactDescription(updatedArtifact.getArtifactDescription());
- entry.setArtifactProtection(updatedArtifact.getArtifactProtection());
- entry.setTimestamp(updatedArtifact.getTimestamp());
- break;
- }
+
+ /**
+ * Method to update the artifact metadata in the data attribute of action
+ * table.
+ *
+ * @param action
+ * Action to which artifact is uploaded
+ * @param updatedArtifact
+ * updated artifact object
+ */
+ private void updateArtifactMetadataInActionData(Action action, ActionArtifact updatedArtifact) {
+ for (ActionArtifact entry : action.getArtifacts()) {
+ if (entry.getArtifactUuId()
+ .equals(updatedArtifact.getArtifactUuId())) {
+ entry.setArtifactLabel(updatedArtifact.getArtifactLabel());
+ entry.setArtifactCategory(updatedArtifact.getArtifactCategory());
+ entry.setArtifactDescription(updatedArtifact.getArtifactDescription());
+ entry.setArtifactProtection(updatedArtifact.getArtifactProtection());
+ entry.setTimestamp(updatedArtifact.getTimestamp());
+ break;
+ }
+ }
+ String data = action.getData();
+ Map<String, Object> map = JsonUtil.json2Object(data, LinkedHashMap.class);
+ map.put(ActionConstants.ARTIFACTS, action.getArtifacts());
+ String updatedActionData = JsonUtil.object2Json(map);
+ action.setData(updatedActionData);
+ action.setTimestamp(updatedArtifact.getTimestamp());
+ actionDao.updateAction(action);
}
- String data = action.getData();
- Map<String, Object> map = JsonUtil.json2Object(data, LinkedHashMap.class);
- map.put(ActionConstants.ARTIFACTS, action.getArtifacts());
- String updatedActionData = JsonUtil.object2Json(map);
- action.setData(updatedActionData);
- action.setTimestamp(updatedArtifact.getTimestamp());
- actionDao.updateAction(action);
- }
}