diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/VersioningManagerImpl.java')
-rw-r--r-- | openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/VersioningManagerImpl.java | 285 |
1 files changed, 128 insertions, 157 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/VersioningManagerImpl.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/VersioningManagerImpl.java index 95779c232c..6f1a7c4e13 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/VersioningManagerImpl.java +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/VersioningManagerImpl.java @@ -13,9 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.openecomp.sdc.versioning.impl; +import static org.openecomp.sdc.versioning.dao.types.VersionStatus.Certified; +import static org.openecomp.sdc.versioning.dao.types.VersionStatus.Draft; + +import java.util.HashMap; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.common.errors.ErrorCategory; import org.openecomp.sdc.common.errors.ErrorCode; @@ -30,163 +36,128 @@ import org.openecomp.sdc.versioning.dao.types.SynchronizationState; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.VersionCreationMethod; -import java.util.HashMap; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; +public class VersioningManagerImpl implements VersioningManager { -import static org.openecomp.sdc.versioning.dao.types.VersionStatus.Certified; -import static org.openecomp.sdc.versioning.dao.types.VersionStatus.Draft; + private static final Logger LOGGER = LoggerFactory.getLogger(VersioningManagerImpl.class); + private VersionDao versionDao; + private VersionCalculator versionCalculator; + private ItemManager itemManager; -public class VersioningManagerImpl implements VersioningManager { - private static final Logger LOGGER = LoggerFactory.getLogger(VersioningManagerImpl.class); - - private VersionDao versionDao; - private VersionCalculator versionCalculator; - private ItemManager itemManager; - - public VersioningManagerImpl(VersionDao versionDao, - VersionCalculator versionCalculator, - ItemManager itemManager) { - this.versionDao = versionDao; - this.versionCalculator = versionCalculator; - this.itemManager = itemManager; - } - - - @Override - public List<Version> list(String itemId) { - - List<Version> versions = versionDao.list(itemId); - Set<String> versionsNames = versions.stream().map(Version::getName).collect(Collectors.toSet()); - versions.forEach(version -> { - version.setAdditionalInfo(new HashMap<>()); - versionCalculator.injectAdditionalInfo(version, versionsNames); - }); - return versions; - } - - @Override - public Version get(String itemId, Version version) { - return versionDao.get(itemId, version) - .map(retrievedVersion -> getUpdateRetrievedVersion(itemId, retrievedVersion)) - .orElseGet(() -> getSyncedVersion(itemId, version)); - } - - private Version getUpdateRetrievedVersion(String itemId, Version version) { - if (version.getStatus() == Certified && - (version.getState().getSynchronizationState() == SynchronizationState.OutOfSync || - version.getState().isDirty())) { - forceSync(itemId, version); - LOGGER.info("Item Id {}, version Id {}: Force sync is done", itemId, version.getId()); - version = versionDao.get(itemId, version) - .orElseThrow(() -> new IllegalStateException( - "Get version after a successful force sync must return the version")); - } - return version; - } - - private Version getSyncedVersion(String itemId, Version version) { - sync(itemId, version); - LOGGER.info("Item Id {}, version Id {}: First time sync is done", itemId, version.getId()); - return versionDao.get(itemId, version) - .orElseThrow(() -> new IllegalStateException( - "Get version after a successful sync must return the version")); - } - - @Override - public Version create(String itemId, Version version, VersionCreationMethod creationMethod) { - String baseVersionName = null; - if (version.getBaseId() == null) { - version.setDescription("Initial version"); - } else { - baseVersionName = get(itemId, new Version(version.getBaseId())).getName(); - } - String versionName = versionCalculator.calculate(baseVersionName, creationMethod); - validateVersionName(itemId, versionName); - version.setName(versionName); - - versionDao.create(itemId, version); - itemManager.updateVersionStatus(itemId, Draft, null); - - publish(itemId, version, String.format("Create version: %s", version.getName())); - return version; - } - - private void validateVersionName(String itemId, String versionName) { - if (versionDao.list(itemId).stream() - .anyMatch(version -> versionName.equals(version.getName()))) { - String errorDescription = String - .format("Item %s: create version failed, a version with the name %s already exist", - itemId, versionName); - - throw new CoreException(new ErrorCode.ErrorCodeBuilder() - .withMessage(errorDescription) - .build()); - } - } - - @Override - public void submit(String itemId, Version version, String submitDescription) { - version = get(itemId, version); - - validateSubmit(itemId, version); - - version.setStatus(Certified); - versionDao.update(itemId, version); - - publish(itemId, version, submitDescription); - - itemManager.updateVersionStatus(itemId, Certified, Draft); - } - - private void validateSubmit(String itemId, Version version) { - if (version.getStatus() == Certified) { - String errorDescription = String - .format("Item %s: submit version failed, version %s is already Certified", itemId, - version.getId()); - throw new CoreException(new ErrorCode.ErrorCodeBuilder() - .withCategory(ErrorCategory.APPLICATION) - .withId("VERSION_ALREADY_CERTIFIED") - .withMessage(errorDescription) - .build()); - } - } - - @Override - public void publish(String itemId, Version version, String message) { - versionDao.publish(itemId, version, message); - } - - - @Override - public void sync(String itemId, Version version) { - versionDao.sync(itemId, version); - } - - @Override - public void forceSync(String itemId, Version version) { - versionDao.forceSync(itemId, version); - } - - @Override - public void revert(String itemId, Version version, String revisionId) { - versionDao.revert(itemId, version, revisionId); - } - - @Override - public List<Revision> listRevisions(String itemId, Version version) { - return versionDao.listRevisions(itemId, version); - } - - @Override - public void updateVersion(String itemId, Version version) { - versionDao.update(itemId, version); - } - - @Override - public void clean(String itemId, Version version) { - versionDao.clean(itemId, version); - } + public VersioningManagerImpl(VersionDao versionDao, VersionCalculator versionCalculator, ItemManager itemManager) { + this.versionDao = versionDao; + this.versionCalculator = versionCalculator; + this.itemManager = itemManager; + } + + @Override + public List<Version> list(String itemId) { + List<Version> versions = versionDao.list(itemId); + Set<String> versionsNames = versions.stream().map(Version::getName).collect(Collectors.toSet()); + versions.forEach(version -> { + version.setAdditionalInfo(new HashMap<>()); + versionCalculator.injectAdditionalInfo(version, versionsNames); + }); + return versions; + } + + @Override + public Version get(String itemId, Version version) { + return versionDao.get(itemId, version).map(retrievedVersion -> getUpdateRetrievedVersion(itemId, retrievedVersion)) + .orElseGet(() -> getSyncedVersion(itemId, version)); + } + + private Version getUpdateRetrievedVersion(String itemId, Version version) { + if (version.getStatus() == Certified && (version.getState().getSynchronizationState() == SynchronizationState.OutOfSync || version.getState() + .isDirty())) { + forceSync(itemId, version); + LOGGER.info("Item Id {}, version Id {}: Force sync is done", itemId, version.getId()); + version = versionDao.get(itemId, version) + .orElseThrow(() -> new IllegalStateException("Get version after a successful force sync must return the version")); + } + return version; + } + private Version getSyncedVersion(String itemId, Version version) { + sync(itemId, version); + LOGGER.info("Item Id {}, version Id {}: First time sync is done", itemId, version.getId()); + return versionDao.get(itemId, version) + .orElseThrow(() -> new IllegalStateException("Get version after a successful sync must return the version")); + } + + @Override + public Version create(String itemId, Version version, VersionCreationMethod creationMethod) { + String baseVersionName = null; + if (version.getBaseId() == null) { + version.setDescription("Initial version"); + } else { + baseVersionName = get(itemId, new Version(version.getBaseId())).getName(); + } + String versionName = versionCalculator.calculate(baseVersionName, creationMethod); + validateVersionName(itemId, versionName); + version.setName(versionName); + versionDao.create(itemId, version); + itemManager.updateVersionStatus(itemId, Draft, null); + publish(itemId, version, String.format("Create version: %s", version.getName())); + return version; + } + + private void validateVersionName(String itemId, String versionName) { + if (versionDao.list(itemId).stream().anyMatch(version -> versionName.equals(version.getName()))) { + String errorDescription = String.format("Item %s: create version failed, a version with the name %s already exist", itemId, versionName); + throw new CoreException(new ErrorCode.ErrorCodeBuilder().withMessage(errorDescription).build()); + } + } + + @Override + public void submit(String itemId, Version version, String submitDescription) { + version = get(itemId, version); + validateSubmit(itemId, version); + version.setStatus(Certified); + versionDao.update(itemId, version); + publish(itemId, version, submitDescription); + itemManager.updateVersionStatus(itemId, Certified, Draft); + } + + private void validateSubmit(String itemId, Version version) { + if (version.getStatus() == Certified) { + String errorDescription = String.format("Item %s: submit version failed, version %s is already Certified", itemId, version.getId()); + throw new CoreException(new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).withId("VERSION_ALREADY_CERTIFIED") + .withMessage(errorDescription).build()); + } + } + + @Override + public void publish(String itemId, Version version, String message) { + versionDao.publish(itemId, version, message); + } + + @Override + public void sync(String itemId, Version version) { + versionDao.sync(itemId, version); + } + + @Override + public void forceSync(String itemId, Version version) { + versionDao.forceSync(itemId, version); + } + + @Override + public void revert(String itemId, Version version, String revisionId) { + versionDao.revert(itemId, version, revisionId); + } + + @Override + public List<Revision> listRevisions(String itemId, Version version) { + return versionDao.listRevisions(itemId, version); + } + + @Override + public void updateVersion(String itemId, Version version) { + versionDao.update(itemId, version); + } + + @Override + public void clean(String itemId, Version version) { + versionDao.clean(itemId, version); + } } |