From 04c1754116920f5b43b20f449a39cbfa7a681102 Mon Sep 17 00:00:00 2001 From: sheetalm Date: Wed, 14 Feb 2018 09:39:22 +0530 Subject: Onboarding foundation changes for ItemManager Resolved conflicting changes 1. Split ItemManager to ASDCItemManager and ItemManager 2. ItemManager provides basic capability of item without collaboration 3. AsdcItemManager provides all capabilities of item including collaboration which are required by onboarding 4. ItemManager can be used by other services like activity spec to create a basic item without collaboration features. Change-Id: I6c6dc34a2b1a1745c796099b70e359432e90f85e Issue-ID: SDC-1039 Signed-off-by: sheetalm --- .../conflicts/ItemMergeHandlerFactoryImpl.java | 27 +- .../sdc/action/dao/impl/ActionDaoImpl.java | 93 ++- .../EnrichedServiceArtifactDaoCassandraImpl.java | 29 +- .../EnrichedServiceTemplateDaoCassandraImpl.java | 29 +- .../impl/ServiceArtifactDaoCassandraImpl.java | 27 +- .../impl/ServiceTemplateDaoCassandraImpl.java | 27 +- .../dao/impl/EntitlementPoolCassandraDaoImpl.java | 41 +- .../dao/impl/FeatureGroupCassandraDaoImpl.java | 61 +- .../dao/impl/LicenseAgreementCassandraDaoImpl.java | 43 +- .../dao/impl/LicenseKeyGroupCassandraDaoImpl.java | 35 +- .../impl/VendorLicenseModelCassandraDaoImpl.java | 23 +- .../VendorLicenseModelDaoZusammenImpl.java | 48 +- .../util/VendorLicenseArtifactsServiceUtils.java | 34 +- .../dao/impl/ComponentDaoCassandraImpl.java | 37 +- .../ComponentDependencyModelDaoCassandraImpl.java | 31 +- .../dao/impl/ComputeDaoCassandraImpl.java | 31 +- .../dao/impl/DeploymentFlavorDaoCassandraImpl.java | 162 +++--- .../dao/impl/ImageDaoImpl.java | 31 +- .../VendorSoftwareProductInfoDaoZusammenImpl.java | 17 +- .../sdc/versioning/ActionVersioningManager.java | 75 +++ .../versioning/ActionVersioningManagerFactory.java | 28 + .../openecomp/sdc/versioning/AsdcItemManager.java | 40 ++ .../sdc/versioning/AsdcItemManagerFactory.java | 27 + .../org/openecomp/sdc/versioning/ItemManager.java | 28 +- .../sdc/versioning/VersioningManager.java | 52 +- .../src/main/resources/factoryConfiguration.json | 2 + .../dao/impl/VersionInfoDaoFactoryImpl.java | 19 +- .../versioning/dao/impl/VersionInfoDaoImpl.java | 36 +- .../impl/ActionVersioningManagerFactoryImpl.java | 39 ++ .../impl/ActionVersioningManagerImpl.java | 630 +++++++++++++++++++++ .../impl/AsdcItemManagerFactoryImpl.java | 35 ++ .../sdc/versioning/impl/AsdcItemManagerImpl.java | 70 +++ .../versioning/impl/ItemManagerFactoryImpl.java | 22 +- .../sdc/versioning/impl/ItemManagerImpl.java | 59 +- .../impl/VersioningManagerFactoryImpl.java | 30 +- .../sdc/versioning/impl/VersioningManagerImpl.java | 479 +--------------- .../versioning/impl/AsdcItemManagerImplTest.java | 176 ++++++ .../sdc/versioning/impl/ItemManagerImplTest.java | 176 ------ .../versioning/impl/VersioningManagerImplTest.java | 11 +- 39 files changed, 1682 insertions(+), 1178 deletions(-) create mode 100644 openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/ActionVersioningManager.java create mode 100644 openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/ActionVersioningManagerFactory.java create mode 100644 openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/AsdcItemManager.java create mode 100644 openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/AsdcItemManagerFactory.java create mode 100644 openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ActionVersioningManagerFactoryImpl.java create mode 100644 openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ActionVersioningManagerImpl.java create mode 100644 openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/AsdcItemManagerFactoryImpl.java create mode 100644 openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/AsdcItemManagerImpl.java create mode 100644 openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/AsdcItemManagerImplTest.java delete mode 100644 openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/ItemManagerImplTest.java (limited to 'openecomp-be/lib') diff --git a/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/ItemMergeHandlerFactoryImpl.java b/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/ItemMergeHandlerFactoryImpl.java index 4c981acee4..1e3213a953 100644 --- a/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/ItemMergeHandlerFactoryImpl.java +++ b/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/ItemMergeHandlerFactoryImpl.java @@ -1,18 +1,33 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.openecomp.conflicts; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; import org.openecomp.conflicts.dao.ConflictsDaoFactory; import org.openecomp.conflicts.impl.VspMergeHandler; import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.datatypes.model.ItemType; import org.openecomp.sdc.vendorsoftwareproduct.dao.VspMergeDaoFactory; -import org.openecomp.sdc.versioning.ItemManagerFactory; +import org.openecomp.sdc.versioning.AsdcItemManagerFactory; import org.openecomp.sdc.versioning.errors.EntityNotExistErrorBuilder; import org.openecomp.sdc.versioning.types.Item; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - public class ItemMergeHandlerFactoryImpl extends ItemMergeHandlerFactory { // TODO: 11/1/2017 read this map from configuration, move Vsp merge handler to vsp lib, rearrange lib deps private static final Map MERGE_HANDLER_BY_ITEM_TYPE = @@ -26,7 +41,7 @@ public class ItemMergeHandlerFactoryImpl extends ItemMergeHandlerFactory { @Override public Optional createInterface(String itemId) { - Item item = ItemManagerFactory.getInstance().createInterface().get(itemId); + Item item = AsdcItemManagerFactory.getInstance().createInterface().get(itemId); if (item == null) { throw new CoreException(new EntityNotExistErrorBuilder("", itemId).build()); } diff --git a/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-core/src/main/java/org/openecomp/sdc/action/dao/impl/ActionDaoImpl.java b/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-core/src/main/java/org/openecomp/sdc/action/dao/impl/ActionDaoImpl.java index a79687f9a4..5b7e1b2c8e 100644 --- a/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-core/src/main/java/org/openecomp/sdc/action/dao/impl/ActionDaoImpl.java +++ b/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-core/src/main/java/org/openecomp/sdc/action/dao/impl/ActionDaoImpl.java @@ -1,25 +1,45 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.action.dao.impl; +import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; +import static com.datastax.driver.core.querybuilder.QueryBuilder.in; +import static com.datastax.driver.core.querybuilder.QueryBuilder.set; +import static org.openecomp.core.nosqldb.impl.cassandra.CassandraSessionFactory.getSession; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_CATEGORY; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_MODEL; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_NAME; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_NONE; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_OPEN_ECOMP_COMPONENT; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_VENDOR; +import static org.openecomp.sdc.action.ActionConstants.STATUS; +import static org.openecomp.sdc.action.ActionConstants.TARGET_ENTITY; +import static org.openecomp.sdc.action.ActionConstants.TARGET_ENTITY_DB; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_DEL_LOCKED_OTHER_USER; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_DEL_LOCKED_OTHER_USER_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ENTITY_INTERNAL_SERVER_ERROR_MSG; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ENTITY_NOT_EXIST; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ENTITY_NOT_EXIST_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_INTERNAL_SERVER_ERR_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_NOT_LOCKED_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_NOT_LOCKED_MSG; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_QUERY_FAILURE_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_QUERY_FAILURE_MSG; + import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Row; import com.datastax.driver.core.Statement; @@ -31,6 +51,14 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; @@ -49,7 +77,7 @@ import org.openecomp.sdc.action.types.OpenEcompComponent; import org.openecomp.sdc.action.util.ActionUtil; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.VersionInfoDao; import org.openecomp.sdc.versioning.dao.VersionInfoDaoFactory; import org.openecomp.sdc.versioning.dao.VersionInfoDeletedDao; @@ -60,39 +88,6 @@ import org.openecomp.sdc.versioning.dao.types.VersionInfoEntity; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; import org.slf4j.MDC; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; -import static com.datastax.driver.core.querybuilder.QueryBuilder.in; -import static com.datastax.driver.core.querybuilder.QueryBuilder.set; -import static org.openecomp.core.nosqldb.impl.cassandra.CassandraSessionFactory.getSession; -import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_CATEGORY; -import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_MODEL; -import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_NAME; -import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_NONE; -import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_OPEN_ECOMP_COMPONENT; -import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_VENDOR; -import static org.openecomp.sdc.action.ActionConstants.STATUS; -import static org.openecomp.sdc.action.ActionConstants.TARGET_ENTITY; -import static org.openecomp.sdc.action.ActionConstants.TARGET_ENTITY_DB; -import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_DEL_LOCKED_OTHER_USER; -import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_DEL_LOCKED_OTHER_USER_CODE; -import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ENTITY_INTERNAL_SERVER_ERROR_MSG; -import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ENTITY_NOT_EXIST; -import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ENTITY_NOT_EXIST_CODE; -import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_INTERNAL_SERVER_ERR_CODE; -import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_NOT_LOCKED_CODE; -import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_NOT_LOCKED_MSG; -import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_QUERY_FAILURE_CODE; -import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_QUERY_FAILURE_MSG; - public class ActionDaoImpl extends CassandraBaseDao implements ActionDao { private static NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); @@ -111,7 +106,7 @@ public class ActionDaoImpl extends CassandraBaseDao implements Act @Override public void registerVersioning(String versionableEntityType) { - VersioningManagerFactory.getInstance().createInterface() + ActionVersioningManagerFactory.getInstance().createInterface() .register(versionableEntityType, new VersionableEntityMetadata( mapper.getTableMetadata().getName(), mapper.getTableMetadata().getPartitionKey().get(0).getName(), @@ -292,13 +287,15 @@ public class ActionDaoImpl extends CassandraBaseDao implements Act try { log.debug(" entering getOpenEcompComponents "); ActionUtil - .actionLogPreProcessor(ActionSubOperation.GET_OPEN_ECOMP_COMPONENTS_ENTITY, TARGET_ENTITY_DB); + .actionLogPreProcessor(ActionSubOperation.GET_OPEN_ECOMP_COMPONENTS_ENTITY, + TARGET_ENTITY_DB); result = accessor.getOpenEcompComponents(); ActionUtil.actionLogPostProcessor(StatusCode.COMPLETE, null, "", false); log.metrics(""); if (result != null) { openEcompComponents.addAll( - result.all().stream().map(OpenEcompComponentEntity::toDto).collect(Collectors.toList())); + result.all().stream().map(OpenEcompComponentEntity::toDto) + .collect(Collectors.toList())); } } catch (NoHostAvailableException noHostAvailableException) { logGenericException(noHostAvailableException); @@ -479,7 +476,7 @@ public class ActionDaoImpl extends CassandraBaseDao implements Act private void updateStatusInActionData(String actionInvariantUuId, List versions, ActionStatus status) { log.debug("entering updateStatusInActionData for actionInvariantUuId = " + actionInvariantUuId - + " and status = " + status + " for versions " + versions); + + " and status = " + status + " for versions " + versions); for (Version v : versions) { ActionEntity entity = this.get(new ActionEntity(actionInvariantUuId, v)); String currentData = entity.getData(); diff --git a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/EnrichedServiceArtifactDaoCassandraImpl.java b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/EnrichedServiceArtifactDaoCassandraImpl.java index 2a0b964066..4962ae37a2 100644 --- a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/EnrichedServiceArtifactDaoCassandraImpl.java +++ b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/EnrichedServiceArtifactDaoCassandraImpl.java @@ -1,21 +1,17 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.model.impl; @@ -27,19 +23,18 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; import org.openecomp.core.model.dao.EnrichedServiceArtifactDao; import org.openecomp.core.model.types.EnrichedServiceArtifactEntity; import org.openecomp.core.model.types.ServiceArtifact; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - public class EnrichedServiceArtifactDaoCassandraImpl implements EnrichedServiceArtifactDao { private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); @@ -54,7 +49,7 @@ public class EnrichedServiceArtifactDaoCassandraImpl implements EnrichedServiceA @Override public void registerVersioning(String versionableEntityType) { - VersioningManagerFactory.getInstance().createInterface().register(versionableEntityType, + ActionVersioningManagerFactory.getInstance().createInterface().register(versionableEntityType, new VersionableEntityMetadata(mapper.getTableMetadata().getName(), mapper.getTableMetadata().getPartitionKey().get(0).getName(), mapper.getTableMetadata().getPartitionKey().get(1).getName())); @@ -133,7 +128,7 @@ public class EnrichedServiceArtifactDaoCassandraImpl implements EnrichedServiceA "SELECT vsp_id,version,name,content_data FROM " + "vsp_enriched_service_artifact where vsp_id=? and version=? and name=?") Result getArtifactInfo(String vspId, UDTValue version, - String name); + String name); @Query("DELETE from vsp_enriched_service_artifact where vsp_id=? and version=?") ResultSet delete(String vspId, UDTValue version); diff --git a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/EnrichedServiceTemplateDaoCassandraImpl.java b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/EnrichedServiceTemplateDaoCassandraImpl.java index ab13e6a9f0..2e28ac94f8 100644 --- a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/EnrichedServiceTemplateDaoCassandraImpl.java +++ b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/EnrichedServiceTemplateDaoCassandraImpl.java @@ -1,21 +1,17 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.model.impl; @@ -27,19 +23,18 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; import org.openecomp.core.model.dao.EnrichedServiceTemplateDao; import org.openecomp.core.model.types.EnrichedServiceTemplateEntity; import org.openecomp.core.model.types.ServiceTemplate; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - public class EnrichedServiceTemplateDaoCassandraImpl implements EnrichedServiceTemplateDao { private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); @@ -54,7 +49,7 @@ public class EnrichedServiceTemplateDaoCassandraImpl implements EnrichedServiceT @Override public void registerVersioning(String versionableEntityType) { - VersioningManagerFactory.getInstance().createInterface().register(versionableEntityType, + ActionVersioningManagerFactory.getInstance().createInterface().register(versionableEntityType, new VersionableEntityMetadata(mapper.getTableMetadata().getName(), mapper.getTableMetadata().getPartitionKey().get(0).getName(), mapper.getTableMetadata().getPartitionKey().get(1).getName())); @@ -141,7 +136,7 @@ public class EnrichedServiceTemplateDaoCassandraImpl implements EnrichedServiceT "SELECT vsp_id, version, name, base_name ,content_data FROM " + "vsp_enriched_service_template where vsp_id=? and version=? and name=?") Result getTemplateInfo(String vspId, UDTValue version, - String name); + String name); @Query( "SELECT vsp_id, version, name, base_name FROM " diff --git a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/ServiceArtifactDaoCassandraImpl.java b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/ServiceArtifactDaoCassandraImpl.java index 15aae0f710..84972342f8 100644 --- a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/ServiceArtifactDaoCassandraImpl.java +++ b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/ServiceArtifactDaoCassandraImpl.java @@ -1,21 +1,17 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.model.impl; @@ -27,19 +23,18 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; import org.openecomp.core.model.dao.ServiceArtifactDao; import org.openecomp.core.model.types.ServiceArtifact; import org.openecomp.core.model.types.ServiceArtifactEntity; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - public class ServiceArtifactDaoCassandraImpl implements ServiceArtifactDao { private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); @@ -53,7 +48,7 @@ public class ServiceArtifactDaoCassandraImpl implements ServiceArtifactDao { @Override public void registerVersioning(String versionableEntityType) { - VersioningManagerFactory.getInstance().createInterface().register(versionableEntityType, + ActionVersioningManagerFactory.getInstance().createInterface().register(versionableEntityType, new VersionableEntityMetadata(mapper.getTableMetadata().getName(), mapper.getTableMetadata().getPartitionKey().get(0).getName(), mapper.getTableMetadata().getPartitionKey().get(1).getName())); diff --git a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/ServiceTemplateDaoCassandraImpl.java b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/ServiceTemplateDaoCassandraImpl.java index 71334ce8d3..9db89414d2 100644 --- a/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/ServiceTemplateDaoCassandraImpl.java +++ b/openecomp-be/lib/openecomp-sdc-model-lib/openecomp-sdc-model-impl/src/main/java/org/openecomp/sdc/model/impl/ServiceTemplateDaoCassandraImpl.java @@ -1,21 +1,17 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.model.impl; @@ -27,19 +23,18 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; import org.openecomp.core.model.dao.ServiceTemplateDao; import org.openecomp.core.model.types.ServiceTemplate; import org.openecomp.core.model.types.ServiceTemplateEntity; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - public class ServiceTemplateDaoCassandraImpl implements ServiceTemplateDao { private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); @@ -53,7 +48,7 @@ public class ServiceTemplateDaoCassandraImpl implements ServiceTemplateDao { @Override public void registerVersioning(String versionableEntityType) { - VersioningManagerFactory.getInstance().createInterface().register(versionableEntityType, + ActionVersioningManagerFactory.getInstance().createInterface().register(versionableEntityType, new VersionableEntityMetadata(mapper.getTableMetadata().getName(), mapper.getTableMetadata().getPartitionKey().get(0).getName(), mapper.getTableMetadata().getPartitionKey().get(1).getName())); diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/EntitlementPoolCassandraDaoImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/EntitlementPoolCassandraDaoImpl.java index cc32d00906..ac43ed19fe 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/EntitlementPoolCassandraDaoImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/EntitlementPoolCassandraDaoImpl.java @@ -1,21 +1,17 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.vendorlicense.dao.impl; @@ -27,6 +23,10 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Set; import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; @@ -34,16 +34,11 @@ import org.openecomp.core.utilities.CommonMethods; import org.openecomp.sdc.vendorlicense.VendorLicenseConstants; import org.openecomp.sdc.vendorlicense.dao.EntitlementPoolDao; import org.openecomp.sdc.vendorlicense.dao.types.EntitlementPoolEntity; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.UniqueValueMetadata; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Set; - public class EntitlementPoolCassandraDaoImpl extends CassandraBaseDao implements EntitlementPoolDao { @@ -67,7 +62,7 @@ public class EntitlementPoolCassandraDaoImpl extends CassandraBaseDao listByVlmVersion(String vendorLicenseModelId, - UDTValue vendorLicenseModelVersion); + UDTValue vendorLicenseModelVersion); @Query("delete from entitlement_pool where vlm_id=? AND version=?") ResultSet deleteByVlmVersion(String vendorLicenseModelId, UDTValue vendorLicenseModelVersion); @@ -140,14 +135,14 @@ public class EntitlementPoolCassandraDaoImpl extends CassandraBaseDao referencingFeatureGroups, - String vendorLicenseModelId, - UDTValue vendorLicenseModelVersion, String id); + String vendorLicenseModelId, + UDTValue vendorLicenseModelVersion, String id); @Query( "UPDATE entitlement_pool SET ref_fg_ids = ref_fg_ids - ? WHERE vlm_id=? AND version=? " + "AND ep_id=?") ResultSet removeReferencingFeatureGroups(Set referencingFeatureGroups, - String vendorLicenseModelId, - UDTValue vendorLicenseModelVersion, String id); + String vendorLicenseModelId, + UDTValue vendorLicenseModelVersion, String id); } } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/FeatureGroupCassandraDaoImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/FeatureGroupCassandraDaoImpl.java index dd22397760..3c804f3bfe 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/FeatureGroupCassandraDaoImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/FeatureGroupCassandraDaoImpl.java @@ -1,25 +1,23 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.vendorlicense.dao.impl; +import static org.openecomp.core.utilities.CommonMethods.toSingleElementSet; + import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.UDTValue; import com.datastax.driver.mapping.Mapper; @@ -27,6 +25,11 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; @@ -34,19 +37,11 @@ import org.openecomp.core.utilities.CommonMethods; import org.openecomp.sdc.vendorlicense.VendorLicenseConstants; import org.openecomp.sdc.vendorlicense.dao.FeatureGroupDao; import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupEntity; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.UniqueValueMetadata; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -import static org.openecomp.core.utilities.CommonMethods.toSingleElementSet; - public class FeatureGroupCassandraDaoImpl extends CassandraBaseDao implements FeatureGroupDao { @@ -74,7 +69,7 @@ public class FeatureGroupCassandraDaoImpl extends CassandraBaseDao addedEntitlementPools, - Set removedEntitlementPools, - Set addedLicenseKeyGroups, - Set removedLicenseKeyGroups, - String vendorLicenseModelId, UDTValue version, - String id); + String partNumber, + Set addedEntitlementPools, + Set removedEntitlementPools, + Set addedLicenseKeyGroups, + Set removedLicenseKeyGroups, + String vendorLicenseModelId, UDTValue version, + String id); @Query( "UPDATE feature_group SET ref_la_ids = ref_la_ids + ? WHERE vlm_id=? AND version=? " + "AND fg_id=?") ResultSet addReferencingLicenseAgreements(Set licenseAgreementIds, - String vendorLicenseModelId, UDTValue version, - String id); + String vendorLicenseModelId, UDTValue version, + String id); @Query( "UPDATE feature_group SET ref_la_ids = ref_la_ids - ? WHERE vlm_id=? AND version=? AND " + "fg_id=?") ResultSet removeReferencingLicenseAgreements(Set licenseAgreementIds, - String vendorLicenseModelId, UDTValue version, - String id); + String vendorLicenseModelId, UDTValue version, + String id); @Query("UPDATE feature_group SET ep_ids = ep_ids - ? WHERE vlm_id=? AND version=? AND fg_id=?") ResultSet removeEntitlementPools(Set entitlementPoolIds, String vendorLicenseModelId, - UDTValue version, String id); + UDTValue version, String id); @Query( "UPDATE feature_group SET lkg_ids = lkg_ids - ? WHERE vlm_id=? AND version=? AND fg_id=?") ResultSet removeLicenseKeyGroup(Set licenseKeyGroupIds, String vendorLicenseModelId, - UDTValue version, String id); + UDTValue version, String id); } } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/LicenseAgreementCassandraDaoImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/LicenseAgreementCassandraDaoImpl.java index 3b5a3b3bb4..0ba9ca3899 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/LicenseAgreementCassandraDaoImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/LicenseAgreementCassandraDaoImpl.java @@ -1,21 +1,17 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.vendorlicense.dao.impl; @@ -27,6 +23,11 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; @@ -35,17 +36,11 @@ import org.openecomp.sdc.vendorlicense.VendorLicenseConstants; import org.openecomp.sdc.vendorlicense.dao.LicenseAgreementDao; import org.openecomp.sdc.vendorlicense.dao.types.ChoiceOrOther; import org.openecomp.sdc.vendorlicense.dao.types.LicenseAgreementEntity; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.UniqueValueMetadata; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - public class LicenseAgreementCassandraDaoImpl extends CassandraBaseDao implements LicenseAgreementDao { @@ -75,7 +70,7 @@ public class LicenseAgreementCassandraDaoImpl extends CassandraBaseDao addedFeatureGroupIds, - Set removedFeatureGroupIds, - String vendorLicenseModelId, UDTValue version, - String id); + UDTValue licenseTerm, String reqAndConst, + Set addedFeatureGroupIds, + Set removedFeatureGroupIds, + String vendorLicenseModelId, UDTValue version, + String id); @Query("UPDATE license_agreement SET fg_ids=fg_ids-? WHERE vlm_id=? AND version=? AND la_id=?") ResultSet removeFeatureGroup(Set featureGroupIds, String vendorLicenseModelId, - UDTValue version, String id); + UDTValue version, String id); } } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/LicenseKeyGroupCassandraDaoImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/LicenseKeyGroupCassandraDaoImpl.java index 96eecc9747..fdd5716472 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/LicenseKeyGroupCassandraDaoImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/LicenseKeyGroupCassandraDaoImpl.java @@ -1,21 +1,17 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.vendorlicense.dao.impl; @@ -27,6 +23,10 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Set; import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; @@ -34,16 +34,11 @@ import org.openecomp.core.utilities.CommonMethods; import org.openecomp.sdc.vendorlicense.VendorLicenseConstants; import org.openecomp.sdc.vendorlicense.dao.LicenseKeyGroupDao; import org.openecomp.sdc.vendorlicense.dao.types.LicenseKeyGroupEntity; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.UniqueValueMetadata; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Set; - public class LicenseKeyGroupCassandraDaoImpl extends CassandraBaseDao implements LicenseKeyGroupDao { @@ -67,7 +62,7 @@ public class LicenseKeyGroupCassandraDaoImpl extends CassandraBaseDao referencingFeatureGroups, - String vendorLicenseModelId, UDTValue version, String id); + String vendorLicenseModelId, UDTValue version, String id); @Query( "UPDATE license_key_group SET ref_fg_ids = ref_fg_ids - ? WHERE vlm_id=? AND version=? " + "AND lkg_id=?") ResultSet removeReferencingFeatureGroups(Set referencingFeatureGroups, - String vendorLicenseModelId, UDTValue version, - String id); + String vendorLicenseModelId, UDTValue version, + String id); } } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/VendorLicenseModelCassandraDaoImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/VendorLicenseModelCassandraDaoImpl.java index b52f4ba9dd..9574dac3d5 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/VendorLicenseModelCassandraDaoImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-license-lib/openecomp-sdc-vendor-license-core/src/main/java/org/openecomp/sdc/vendorlicense/dao/impl/VendorLicenseModelCassandraDaoImpl.java @@ -1,21 +1,17 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.vendorlicense.dao.impl; @@ -25,17 +21,16 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Collection; import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; import org.openecomp.sdc.vendorlicense.dao.VendorLicenseModelDao; import org.openecomp.sdc.vendorlicense.dao.types.VendorLicenseModelEntity; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Collection; - public class VendorLicenseModelCassandraDaoImpl extends CassandraBaseDao implements VendorLicenseModelDao { @@ -50,7 +45,7 @@ public class VendorLicenseModelCassandraDaoImpl extends CassandraBaseDao implements ComponentDao { @@ -66,7 +61,7 @@ public class ComponentDaoCassandraImpl extends CassandraBaseDao Arrays.asList(mapper.getTableMetadata().getPartitionKey().get(0).getName(), mapper.getTableMetadata().getPartitionKey().get(1).getName(), "name")))); - VersioningManagerFactory.getInstance().createInterface() + ActionVersioningManagerFactory.getInstance().createInterface() .register(versionableEntityType, metadata); } @@ -100,7 +95,8 @@ public class ComponentDaoCassandraImpl extends CassandraBaseDao @Override public void updateQuestionnaireData(String vspId, Version version, String componentId, String questionnaireData) { - accessor.updateQuestionnaireData(questionnaireData, vspId, versionMapper.toUDT(version), componentId); + accessor.updateQuestionnaireData(questionnaireData, vspId, versionMapper.toUDT(version), + componentId); } @Override @@ -109,7 +105,8 @@ public class ComponentDaoCassandraImpl extends CassandraBaseDao } @Override - public Collection listCompositionAndQuestionnaire(String vspId, Version version){ + public Collection listCompositionAndQuestionnaire(String vspId, + Version version) { return accessor.listCompositionAndQuestionnaire(vspId, versionMapper.toUDT(version)).all(); } @@ -145,13 +142,13 @@ public class ComponentDaoCassandraImpl extends CassandraBaseDao "insert into vsp_component (vsp_id, version, component_id, composition_data)" + " values (?,?,?,?)") ResultSet updateCompositionData(String vspId, UDTValue version, String id, - String compositionData); + String compositionData); @Query( "update vsp_component set questionnaire_data=? where vsp_id=? and version=?" + " and component_id=?") ResultSet updateQuestionnaireData(String questionnaireData, String vspId, UDTValue version, - String id); + String id); @Query("delete from vsp_component where vsp_id=? and version=?") ResultSet deleteAll(String vspId, Version version); diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComponentDependencyModelDaoCassandraImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComponentDependencyModelDaoCassandraImpl.java index 2fcbc1aae8..11524ed05f 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComponentDependencyModelDaoCassandraImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComponentDependencyModelDaoCassandraImpl.java @@ -1,3 +1,19 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.openecomp.sdc.vendorsoftwareproduct.dao.impl; import com.datastax.driver.core.ResultSet; @@ -7,23 +23,22 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDependencyModelDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentDependencyModelEntity; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.UniqueValueMetadata; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; - -public class ComponentDependencyModelDaoCassandraImpl extends CassandraBaseDao - implements ComponentDependencyModelDao { +public class ComponentDependencyModelDaoCassandraImpl extends + CassandraBaseDao implements ComponentDependencyModelDao { private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); private static final Mapper mapper = @@ -62,7 +77,7 @@ public class ComponentDependencyModelDaoCassandraImpl extends CassandraBaseDao VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME, Arrays.asList("vsp_id", "version", "component_id", "name")))); - VersioningManagerFactory.getInstance().createInterface() + ActionVersioningManagerFactory.getInstance().createInterface() .register(versionableEntityType, metadata); } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComputeDaoCassandraImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComputeDaoCassandraImpl.java index ba878c661e..4e85ff61c3 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComputeDaoCassandraImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ComputeDaoCassandraImpl.java @@ -1,3 +1,19 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.openecomp.sdc.vendorsoftwareproduct.dao.impl; import com.datastax.driver.core.ResultSet; @@ -7,21 +23,20 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComputeEntity; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.UniqueValueMetadata; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; - public class ComputeDaoCassandraImpl extends CassandraBaseDao implements ComputeDao { @@ -45,7 +60,7 @@ public class ComputeDaoCassandraImpl extends CassandraBaseDao imp VendorSoftwareProductConstants.UniqueValues.COMPUTE_NAME, Arrays.asList("vsp_id", "version", "component_id", "name")))); - VersioningManagerFactory.getInstance().createInterface() + ActionVersioningManagerFactory.getInstance().createInterface() .register(versionableEntityType, metadata); } @@ -107,12 +122,12 @@ public class ComputeDaoCassandraImpl extends CassandraBaseDao imp @Query("update vsp_component_compute set composition_data=? where vsp_id=? and version=?" + " and component_id=? and compute_id=?") ResultSet updateCompositionData(String compositionData, String vspId, UDTValue version, - String componentId, String computeId); + String componentId, String computeId); @Query("update vsp_component_compute set questionnaire_data=? where vsp_id=? and version=?" + " and component_id=? and compute_id=?") ResultSet updateQuestionnaireData(String questionnaireData, String vspId, UDTValue version, - String componentId, String computeId); + String componentId, String computeId); @Query("delete from vsp_component_compute where vsp_id=? and version=?") ResultSet deleteAll(String vspId, Version version); diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/DeploymentFlavorDaoCassandraImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/DeploymentFlavorDaoCassandraImpl.java index 5831b582fc..2a19082005 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/DeploymentFlavorDaoCassandraImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/DeploymentFlavorDaoCassandraImpl.java @@ -1,3 +1,19 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.openecomp.sdc.vendorsoftwareproduct.dao.impl; import com.datastax.driver.core.ResultSet; @@ -7,87 +23,89 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.UniqueValueMetadata; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; - -public class DeploymentFlavorDaoCassandraImpl extends CassandraBaseDao implements DeploymentFlavorDao { - private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); - private static final Mapper mapper = noSqlDb.getMappingManager().mapper(DeploymentFlavorEntity.class); - private static final DeploymentFlavorAccessor accessor = - noSqlDb.getMappingManager().createAccessor(DeploymentFlavorAccessor.class); - private static final UDTMapper versionMapper = - noSqlDb.getMappingManager().udtMapper(Version.class); - @Override - protected Mapper getMapper() { - return mapper; - } - - @Override - protected Object[] getKeys(DeploymentFlavorEntity entity) { - return new Object[]{entity.getVspId(), versionMapper.toUDT(entity.getVersion()), - entity.getId()}; - } - - @Override - public Collection list(DeploymentFlavorEntity entity) { - return accessor.list(entity.getVspId(), versionMapper.toUDT(entity.getVersion())).all(); - } - - @Override - public void update(DeploymentFlavorEntity entity) { - accessor.updateCompositionData(entity.getVspId(), versionMapper.toUDT(entity.getVersion()), - entity.getId(), entity.getCompositionData()); - } - - @Override - public void registerVersioning(String versionableEntityType) { - VersionableEntityMetadata metadata = new VersionableEntityMetadata( - mapper.getTableMetadata().getName(), - mapper.getTableMetadata().getPartitionKey().get(0).getName(), - mapper.getTableMetadata().getPartitionKey().get(1).getName()); - - - metadata.setUniqueValuesMetadata(Collections.singletonList(new UniqueValueMetadata( - VendorSoftwareProductConstants.UniqueValues.DEPLOYMENT_FLAVOR_NAME, - Arrays.asList(mapper.getTableMetadata().getPartitionKey().get(0).getName(), - mapper.getTableMetadata().getPartitionKey().get(1).getName(), "name")))); - - VersioningManagerFactory.getInstance().createInterface() - .register(versionableEntityType, metadata); - } - - @Override - public void deleteAll(String vspId, Version version) { - accessor.deleteAll(vspId, version); - } - - @Accessor - interface DeploymentFlavorAccessor { - @Query( - "select vsp_id, version, deployment_flavor_id, composition_data from vsp_deployment_flavor where vsp_id=?" - + " and version=?") - Result list(String vspId, UDTValue version); - - @Query( - "insert into vsp_deployment_flavor (vsp_id, version, deployment_flavor_id, composition_data) values (?,?,?,?)") - ResultSet updateCompositionData(String vspId, UDTValue version, String id, - String compositionData); - - @Query("delete from vsp_deployment_flavor where vsp_id=? and version=?") - ResultSet deleteAll(String vspId, Version version); - - } +public class DeploymentFlavorDaoCassandraImpl extends CassandraBaseDao + implements DeploymentFlavorDao { + private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); + private static final Mapper mapper = + noSqlDb.getMappingManager().mapper(DeploymentFlavorEntity.class); + private static final DeploymentFlavorAccessor accessor = + noSqlDb.getMappingManager().createAccessor(DeploymentFlavorAccessor.class); + private static final UDTMapper versionMapper = + noSqlDb.getMappingManager().udtMapper(Version.class); + + @Override + protected Mapper getMapper() { + return mapper; + } + + @Override + protected Object[] getKeys(DeploymentFlavorEntity entity) { + return new Object[]{entity.getVspId(), versionMapper.toUDT(entity.getVersion()), + entity.getId()}; + } + + @Override + public Collection list(DeploymentFlavorEntity entity) { + return accessor.list(entity.getVspId(), versionMapper.toUDT(entity.getVersion())).all(); + } + + @Override + public void update(DeploymentFlavorEntity entity) { + accessor.updateCompositionData(entity.getVspId(), versionMapper.toUDT(entity.getVersion()), + entity.getId(), entity.getCompositionData()); + } + + @Override + public void registerVersioning(String versionableEntityType) { + VersionableEntityMetadata metadata = new VersionableEntityMetadata( + mapper.getTableMetadata().getName(), + mapper.getTableMetadata().getPartitionKey().get(0).getName(), + mapper.getTableMetadata().getPartitionKey().get(1).getName()); + + + metadata.setUniqueValuesMetadata(Collections.singletonList(new UniqueValueMetadata( + VendorSoftwareProductConstants.UniqueValues.DEPLOYMENT_FLAVOR_NAME, + Arrays.asList(mapper.getTableMetadata().getPartitionKey().get(0).getName(), + mapper.getTableMetadata().getPartitionKey().get(1).getName(), "name")))); + + ActionVersioningManagerFactory.getInstance().createInterface() + .register(versionableEntityType, metadata); + } + + @Override + public void deleteAll(String vspId, Version version) { + accessor.deleteAll(vspId, version); + } + + @Accessor + interface DeploymentFlavorAccessor { + @Query( + "select vsp_id, version, deployment_flavor_id, composition_data from vsp_deployment_flavor where vsp_id=?" + + " and version=?") + Result list(String vspId, UDTValue version); + + @Query( + "insert into vsp_deployment_flavor (vsp_id, version, deployment_flavor_id, composition_data) values (?,?,?,?)") + ResultSet updateCompositionData(String vspId, UDTValue version, String id, + String compositionData); + + @Query("delete from vsp_deployment_flavor where vsp_id=? and version=?") + ResultSet deleteAll(String vspId, Version version); + + } } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ImageDaoImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ImageDaoImpl.java index 24217830e4..441f8fbbf9 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ImageDaoImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/ImageDaoImpl.java @@ -1,3 +1,19 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.openecomp.sdc.vendorsoftwareproduct.dao.impl; import com.datastax.driver.core.ResultSet; @@ -7,21 +23,20 @@ import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.UDTMapper; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.UniqueValueMetadata; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; - public class ImageDaoImpl extends CassandraBaseDao implements ImageDao { private static final NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); @@ -45,7 +60,7 @@ public class ImageDaoImpl extends CassandraBaseDao implements Image VendorSoftwareProductConstants.UniqueValues.IMAGE_NAME, Arrays.asList("vsp_id", "version", "component_id", "name")))); - VersioningManagerFactory.getInstance().createInterface() + ActionVersioningManagerFactory.getInstance().createInterface() .register(versionableEntityType, metadata); } @@ -111,12 +126,12 @@ public class ImageDaoImpl extends CassandraBaseDao implements Image "insert into vsp_component_image (vsp_id, version, component_id, image_id, " + "composition_data) values (?,?,?,?,?)") ResultSet updateCompositionData(String vspId, UDTValue version, String componentId, String id, - String compositionData); + String compositionData); @Query("update vsp_component_image set questionnaire_data=? where vsp_id=? and version=?" + " and component_id=? and image_id=?") ResultSet updateQuestionnaireData(String questionnaireData, String vspId, UDTValue version, - String componentId, String computeId); + String componentId, String computeId); @Query("delete from vsp_component_image where vsp_id=? and version=?") ResultSet deleteByVspId(String vspId, UDTValue version); diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java index 8d9a8eed93..482536342b 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/dao/impl/zusammen/VendorSoftwareProductInfoDaoZusammenImpl.java @@ -15,11 +15,17 @@ */ package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen; +import static org.openecomp.core.zusammen.api.ZusammenUtil.buildStructuralElement; +import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext; + import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement; import com.amdocs.zusammen.datatypes.SessionContext; import com.amdocs.zusammen.datatypes.item.Action; import com.amdocs.zusammen.datatypes.item.ElementContext; import com.amdocs.zusammen.datatypes.item.Info; +import java.io.ByteArrayInputStream; +import java.util.Collection; +import java.util.stream.Collectors; import org.openecomp.core.zusammen.api.ZusammenAdaptor; import org.openecomp.sdc.datatypes.model.ElementType; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; @@ -27,18 +33,11 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.Eleme import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToVSPQuestionnaireConvertor; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspQuestionnaireEntity; -import org.openecomp.sdc.versioning.VersioningManagerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; import org.openecomp.sdc.versioning.types.VersionableEntityStoreType; -import java.io.ByteArrayInputStream; -import java.util.Collection; -import java.util.stream.Collectors; - -import static org.openecomp.core.zusammen.api.ZusammenUtil.buildStructuralElement; -import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext; - public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareProductInfoDao { private static final String EMPTY_DATA = "{}"; @@ -54,7 +53,7 @@ public class VendorSoftwareProductInfoDaoZusammenImpl implements VendorSoftwareP new VersionableEntityMetadata(VersionableEntityStoreType.Zusammen, "VendorSoftwareProduct", null, null); - VersioningManagerFactory.getInstance().createInterface() + ActionVersioningManagerFactory.getInstance().createInterface() .register(versionableEntityType, metadata); } diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/ActionVersioningManager.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/ActionVersioningManager.java new file mode 100644 index 0000000000..3875e59f33 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/ActionVersioningManager.java @@ -0,0 +1,75 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.sdc.versioning; + +import java.util.List; +import java.util.Map; +import org.openecomp.sdc.versioning.dao.types.Revision; +import org.openecomp.sdc.versioning.dao.types.Version; +import org.openecomp.sdc.versioning.types.VersionCreationMethod; +import org.openecomp.sdc.versioning.types.VersionInfo; +import org.openecomp.sdc.versioning.types.VersionableEntityAction; +import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; + +public interface ActionVersioningManager { + + void register(String entityType, VersionableEntityMetadata entityMetadata); + + Version create(String entityType, String entityId, String user); + + void delete(String entityType, String entityId, String user); + + void undoDelete(String entityType, String entityId, String user); + + Version checkout(String entityType, String entityId, String user); + + Version undoCheckout(String entityType, String entityId, String user); + + Version checkin(String entityType, String entityId, String user, String checkinDescription); + + Version submit(String entityType, String entityId, String user, String submitDescription); + + VersionInfo getEntityVersionInfo(String entityType, String entityId, String user, + VersionableEntityAction action); + + Map listEntitiesVersionInfo(String entityType, String user, + VersionableEntityAction action); + + Map listDeletedEntitiesVersionInfo(String entityType, String user, + VersionableEntityAction action); + + + List list(String itemId); // TODO: 5/24/2017 filter (by status for example) + + Version get(String itemId, Version version); + + Version create(String itemId, Version version, + VersionCreationMethod creationMethod); + + void submit(String itemId, Version version, String submitDescription); + + void publish(String itemId, Version version, String message); + + void sync(String itemId, Version version); + + void forceSync(String itemId, Version version); + + void revert(String itemId, Version version, String revisionId); + + List listRevisions(String itemId, Version version); + +} diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/ActionVersioningManagerFactory.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/ActionVersioningManagerFactory.java new file mode 100644 index 0000000000..4ab659ac11 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/ActionVersioningManagerFactory.java @@ -0,0 +1,28 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.sdc.versioning; + +import org.openecomp.core.factory.api.AbstractComponentFactory; +import org.openecomp.core.factory.api.AbstractFactory; + +public abstract class ActionVersioningManagerFactory extends + AbstractComponentFactory { + + public static ActionVersioningManagerFactory getInstance() { + return AbstractFactory.getInstance(ActionVersioningManagerFactory.class); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/AsdcItemManager.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/AsdcItemManager.java new file mode 100644 index 0000000000..a4ea65fa08 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/AsdcItemManager.java @@ -0,0 +1,40 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.sdc.versioning; + +import java.util.Collection; +import java.util.function.Predicate; +import org.openecomp.sdc.versioning.dao.types.VersionStatus; +import org.openecomp.sdc.versioning.types.Item; + +public interface AsdcItemManager { + + Collection list(Predicate predicate); + + Item get(String itemId); + + Item create(Item item); + + void updateVersionStatus(String itemId, VersionStatus addedVersionStatus, + VersionStatus removedVersionStatus); + + void updateOwner(String itemId, String owner); + + void updateName(String itemId, String name); + + void delete(Item item); +} diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/AsdcItemManagerFactory.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/AsdcItemManagerFactory.java new file mode 100644 index 0000000000..a2095b8663 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/AsdcItemManagerFactory.java @@ -0,0 +1,27 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.sdc.versioning; + +import org.openecomp.core.factory.api.AbstractComponentFactory; +import org.openecomp.core.factory.api.AbstractFactory; + +public abstract class AsdcItemManagerFactory extends AbstractComponentFactory { + + public static AsdcItemManagerFactory getInstance() { + return AbstractFactory.getInstance(AsdcItemManagerFactory.class); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/ItemManager.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/ItemManager.java index 885d96a132..41a2c12058 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/ItemManager.java +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/ItemManager.java @@ -1,10 +1,25 @@ -package org.openecomp.sdc.versioning; +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ -import org.openecomp.sdc.versioning.dao.types.VersionStatus; -import org.openecomp.sdc.versioning.types.Item; +package org.openecomp.sdc.versioning; import java.util.Collection; import java.util.function.Predicate; +import org.openecomp.sdc.versioning.dao.types.VersionStatus; +import org.openecomp.sdc.versioning.types.Item; public interface ItemManager { @@ -15,10 +30,11 @@ public interface ItemManager { Item create(Item item); void updateVersionStatus(String itemId, VersionStatus addedVersionStatus, - VersionStatus removedVersionStatus); - - void updateOwner(String itemId, String owner); + VersionStatus removedVersionStatus); void delete(Item item); + void updateName(String itemId, String name); + + void update(Item item); } diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/VersioningManager.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/VersioningManager.java index c03769462b..cbb234e3e2 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/VersioningManager.java +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/java/org/openecomp/sdc/versioning/VersioningManager.java @@ -1,69 +1,34 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.versioning; +import java.util.List; import org.openecomp.sdc.versioning.dao.types.Revision; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdc.versioning.types.VersionCreationMethod; -import org.openecomp.sdc.versioning.types.VersionInfo; -import org.openecomp.sdc.versioning.types.VersionableEntityAction; -import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; - -import java.util.List; -import java.util.Map; public interface VersioningManager { - void register(String entityType, VersionableEntityMetadata entityMetadata); - - Version create(String entityType, String entityId, String user); - - void delete(String entityType, String entityId, String user); - - void undoDelete(String entityType, String entityId, String user); - - Version checkout(String entityType, String entityId, String user); - - Version undoCheckout(String entityType, String entityId, String user); - - Version checkin(String entityType, String entityId, String user, String checkinDescription); - - Version submit(String entityType, String entityId, String user, String submitDescription); - - VersionInfo getEntityVersionInfo(String entityType, String entityId, String user, - VersionableEntityAction action); - - Map listEntitiesVersionInfo(String entityType, String user, - VersionableEntityAction action); - - Map listDeletedEntitiesVersionInfo(String entityType, String user, - VersionableEntityAction action); - - List list(String itemId); // TODO: 5/24/2017 filter (by status for example) Version get(String itemId, Version version); Version create(String itemId, Version version, - VersionCreationMethod creationMethod); + VersionCreationMethod creationMethod); void submit(String itemId, Version version, String submitDescription); @@ -77,4 +42,5 @@ public interface VersioningManager { List listRevisions(String itemId, Version version); + void updateVersion(String itemId, Version version); } diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/resources/factoryConfiguration.json b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/resources/factoryConfiguration.json index 90d11f1700..579f107178 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/resources/factoryConfiguration.json +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/src/main/resources/factoryConfiguration.json @@ -1,6 +1,8 @@ { "org.openecomp.sdc.versioning.ItemManagerFactory": "org.openecomp.sdc.versioning.impl.ItemManagerFactoryImpl", + "org.openecomp.sdc.versioning.AsdcItemManagerFactory": "org.openecomp.sdc.versioning.impl.AsdcItemManagerFactoryImpl", "org.openecomp.sdc.versioning.VersioningManagerFactory": "org.openecomp.sdc.versioning.impl.VersioningManagerFactoryImpl", + "org.openecomp.sdc.versioning.ActionVersioningManagerFactory": "org.openecomp.sdc.versioning.impl.ActionVersioningManagerFactoryImpl", "org.openecomp.sdc.versioning.dao.VersionableEntityDaoFactory": "org.openecomp.sdc.versioning.dao.impl.VersionableEntityDaoFactoryImpl", "org.openecomp.sdc.versioning.dao.VersionInfoDaoFactory": "org.openecomp.sdc.versioning.dao.impl.VersionInfoDaoFactoryImpl", "org.openecomp.sdc.versioning.dao.VersionInfoDeletedDaoFactory": "org.openecomp.sdc.versioning.dao.impl.VersionInfoDeletedDaoFactoryImpl", diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/dao/impl/VersionInfoDaoFactoryImpl.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/dao/impl/VersionInfoDaoFactoryImpl.java index 46c6a9d795..f26164a9d3 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/dao/impl/VersionInfoDaoFactoryImpl.java +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/dao/impl/VersionInfoDaoFactoryImpl.java @@ -1,30 +1,27 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.versioning.dao.impl; +import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; import org.openecomp.sdc.versioning.dao.VersionInfoDao; import org.openecomp.sdc.versioning.dao.VersionInfoDaoFactory; public class VersionInfoDaoFactoryImpl extends VersionInfoDaoFactory { - private static VersionInfoDao INSTANCE = new VersionInfoDaoImpl(); + private static VersionInfoDao INSTANCE = new VersionInfoDaoImpl(NoSqlDbFactory.getInstance().createInterface()); @Override public VersionInfoDao createInterface() { diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/dao/impl/VersionInfoDaoImpl.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/dao/impl/VersionInfoDaoImpl.java index 7bc73ce3d5..1afc4202f5 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/dao/impl/VersionInfoDaoImpl.java +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/dao/impl/VersionInfoDaoImpl.java @@ -1,21 +1,17 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.versioning.dao.impl; @@ -24,22 +20,26 @@ import com.datastax.driver.mapping.Mapper; import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; +import java.util.Collection; import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; -import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; import org.openecomp.sdc.versioning.dao.VersionInfoDao; import org.openecomp.sdc.versioning.dao.types.VersionInfoEntity; -import java.util.Collection; - public class VersionInfoDaoImpl extends CassandraBaseDao implements VersionInfoDao { - private static NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); - private static Mapper mapper = - noSqlDb.getMappingManager().mapper(VersionInfoEntity.class); - private static VersionInfoAccessor accessor = - noSqlDb.getMappingManager().createAccessor(VersionInfoAccessor.class); + + private final NoSqlDb noSqlDb; + private final Mapper mapper; + private final VersionInfoAccessor accessor; + + + public VersionInfoDaoImpl(NoSqlDb noSqlDb) { + this.noSqlDb = noSqlDb; + this.mapper = this.noSqlDb.getMappingManager().mapper(VersionInfoEntity.class); + this.accessor = this.noSqlDb.getMappingManager().createAccessor(VersionInfoAccessor.class); + } @Override protected Mapper getMapper() { diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ActionVersioningManagerFactoryImpl.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ActionVersioningManagerFactoryImpl.java new file mode 100644 index 0000000000..054a569958 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ActionVersioningManagerFactoryImpl.java @@ -0,0 +1,39 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.sdc.versioning.impl; + +import org.openecomp.sdc.versioning.ActionVersioningManager; +import org.openecomp.sdc.versioning.ActionVersioningManagerFactory; +import org.openecomp.sdc.versioning.AsdcItemManagerFactory; +import org.openecomp.sdc.versioning.VersionCalculatorFactory; +import org.openecomp.sdc.versioning.dao.VersionDaoFactory; +import org.openecomp.sdc.versioning.dao.VersionInfoDaoFactory; +import org.openecomp.sdc.versioning.dao.VersionInfoDeletedDaoFactory; + +public class ActionVersioningManagerFactoryImpl extends ActionVersioningManagerFactory { + + + @Override + public ActionVersioningManager createInterface() { + return new ActionVersioningManagerImpl( + VersionInfoDaoFactory.getInstance().createInterface(), + VersionInfoDeletedDaoFactory.getInstance().createInterface(), + VersionDaoFactory.getInstance().createInterface(), + VersionCalculatorFactory.getInstance().createInterface(), + AsdcItemManagerFactory.getInstance().createInterface()); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ActionVersioningManagerImpl.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ActionVersioningManagerImpl.java new file mode 100644 index 0000000000..0763ad970b --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ActionVersioningManagerImpl.java @@ -0,0 +1,630 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.sdc.versioning.impl; + +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +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; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.logging.api.Logger; +import org.openecomp.sdc.logging.api.LoggerFactory; +import org.openecomp.sdc.versioning.ActionVersioningManager; +import org.openecomp.sdc.versioning.AsdcItemManager; +import org.openecomp.sdc.versioning.VersionCalculator; +import org.openecomp.sdc.versioning.dao.VersionDao; +import org.openecomp.sdc.versioning.dao.VersionInfoDao; +import org.openecomp.sdc.versioning.dao.VersionInfoDeletedDao; +import org.openecomp.sdc.versioning.dao.VersionableEntityDaoFactory; +import org.openecomp.sdc.versioning.dao.types.Revision; +import org.openecomp.sdc.versioning.dao.types.SynchronizationState; +import org.openecomp.sdc.versioning.dao.types.UserCandidateVersion; +import org.openecomp.sdc.versioning.dao.types.Version; +import org.openecomp.sdc.versioning.dao.types.VersionInfoDeletedEntity; +import org.openecomp.sdc.versioning.dao.types.VersionInfoEntity; +import org.openecomp.sdc.versioning.dao.types.VersionStatus; +import org.openecomp.sdc.versioning.errors.CheckinOnEntityLockedByOtherErrorBuilder; +import org.openecomp.sdc.versioning.errors.CheckinOnUnlockedEntityErrorBuilder; +import org.openecomp.sdc.versioning.errors.CheckoutOnLockedEntityErrorBuilder; +import org.openecomp.sdc.versioning.errors.DeleteOnLockedEntityErrorBuilder; +import org.openecomp.sdc.versioning.errors.EditOnEntityLockedByOtherErrorBuilder; +import org.openecomp.sdc.versioning.errors.EditOnUnlockedEntityErrorBuilder; +import org.openecomp.sdc.versioning.errors.EntityAlreadyExistErrorBuilder; +import org.openecomp.sdc.versioning.errors.EntityAlreadyFinalizedErrorBuilder; +import org.openecomp.sdc.versioning.errors.EntityNotExistErrorBuilder; +import org.openecomp.sdc.versioning.errors.SubmitLockedEntityNotAllowedErrorBuilder; +import org.openecomp.sdc.versioning.errors.UndoCheckoutOnEntityLockedByOtherErrorBuilder; +import org.openecomp.sdc.versioning.errors.UndoCheckoutOnUnlockedEntityErrorBuilder; +import org.openecomp.sdc.versioning.types.VersionCreationMethod; +import org.openecomp.sdc.versioning.types.VersionInfo; +import org.openecomp.sdc.versioning.types.VersionableEntityAction; +import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; +import org.slf4j.MDC; + +public class ActionVersioningManagerImpl implements ActionVersioningManager { + private static final Logger LOGGER = LoggerFactory.getLogger(ActionVersioningManagerImpl.class); + private static final Version INITIAL_ACTIVE_VERSION = new Version(0, 0); + private static final Map> VERSIONABLE_ENTITIES = + new HashMap<>(); + + private final VersionInfoDao versionInfoDao; + private final VersionInfoDeletedDao versionInfoDeletedDao; + private VersionDao versionDao; + private VersionCalculator versionCalculator; + private AsdcItemManager asdcItemManager; + + public ActionVersioningManagerImpl(VersionInfoDao versionInfoDao, + VersionInfoDeletedDao versionInfoDeletedDao, + VersionDao versionDao, + VersionCalculator versionCalculator, + AsdcItemManager asdcItemManager) { + this.versionInfoDao = versionInfoDao; + this.versionInfoDeletedDao = versionInfoDeletedDao; + this.versionDao = versionDao; + this.versionCalculator = versionCalculator; + this.asdcItemManager = asdcItemManager; + } + + private static VersionInfo getVersionInfo(VersionInfoEntity versionInfoEntity, String user, + VersionableEntityAction action) { + return getVersionInfo(versionInfoEntity.getEntityId(), + versionInfoEntity.getEntityType(), + versionInfoEntity.getActiveVersion(), + versionInfoEntity.getCandidate(), + versionInfoEntity.getStatus(), + versionInfoEntity.getLatestFinalVersion(), + versionInfoEntity.getViewableVersions(), + action, + user); + } + + private static VersionInfo getVersionInfo(VersionInfoDeletedEntity versionInfoEntity, String user, + VersionableEntityAction action) { + return getVersionInfo(versionInfoEntity.getEntityId(), + versionInfoEntity.getEntityType(), + versionInfoEntity.getActiveVersion(), + versionInfoEntity.getCandidate(), + versionInfoEntity.getStatus(), + versionInfoEntity.getLatestFinalVersion(), + versionInfoEntity.getViewableVersions(), + action, + user); + } + + private static VersionInfo getVersionInfo(String entityId, String entityType, Version activeVer, + UserCandidateVersion candidate, VersionStatus status, + Version latestFinalVersion, + Set viewableVersions, + VersionableEntityAction action, String user) { + Version activeVersion; + + if (action == VersionableEntityAction.Write) { + if (candidate != null) { + if (user.equals(candidate.getUser())) { + activeVersion = candidate.getVersion(); + } else { + throw new CoreException( + new EditOnEntityLockedByOtherErrorBuilder(entityType, entityId, candidate.getUser()) + .build()); + } + } else { + throw new CoreException(new EditOnUnlockedEntityErrorBuilder(entityType, entityId).build()); + } + } else { + if (candidate != null && user.equals(candidate.getUser())) { + activeVersion = candidate.getVersion(); + } else { + activeVersion = activeVer; + } + } + + VersionInfo versionInfo = new VersionInfo(); + versionInfo.setStatus(status); + activeVersion.setStatus(status); + if (latestFinalVersion != null) { + latestFinalVersion.setStatus(status); + } + if (viewableVersions != null) { + viewableVersions.forEach(version -> version.setStatus(status)); + } + versionInfo.setActiveVersion(activeVersion); + versionInfo.setLatestFinalVersion(latestFinalVersion); + versionInfo.setViewableVersions(toSortedList(viewableVersions)); + versionInfo.setFinalVersions(getFinalVersions(viewableVersions)); + if (candidate != null) { + candidate.getVersion().setStatus(status); + versionInfo.setLockingUser(candidate.getUser()); + if (user.equals(candidate.getUser())) { + versionInfo.getViewableVersions().add(candidate.getVersion()); + } + } + return versionInfo; + } + + private static List toSortedList( + Set versions) { // changing the Set to List in DB will require migration... + return versions.stream().sorted((o1, o2) -> o1.getMajor() > o2.getMajor() ? 1 + : o1.getMajor() == o2.getMajor() ? (o1.getMinor() > o2.getMinor() ? 1 + : o1.getMinor() == o2.getMinor() ? 0 : -1) : -1).collect(Collectors.toList()); + } + + private static List getFinalVersions(Set versions) { + return versions.stream().filter(Version::isFinal).collect(Collectors.toList()); + } + + @Override + public void register(String entityType, VersionableEntityMetadata entityMetadata) { + Set entitiesMetadata = + VERSIONABLE_ENTITIES.computeIfAbsent(entityType, k -> new HashSet<>()); + entitiesMetadata.add(entityMetadata); + } + + @Override + public Version create(String entityType, String entityId, String user) { + VersionInfoEntity + versionInfoEntity = versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); + if (versionInfoEntity != null) { + throw new CoreException(new EntityAlreadyExistErrorBuilder(entityType, entityId).build()); + } + + versionInfoEntity = new VersionInfoEntity(entityType, entityId); + versionInfoEntity.setActiveVersion(INITIAL_ACTIVE_VERSION); + markAsCheckedOut(versionInfoEntity, user); + versionInfoDao.create(versionInfoEntity); + + return versionInfoEntity.getCandidate().getVersion(); + } + + @Override + public void delete(String entityType, String entityId, String user) { + VersionInfoEntity versionInfoEntity = + versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); + if (versionInfoEntity == null) { + throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); + } + + switch (versionInfoEntity.getStatus()) { + case Locked: + throw new CoreException(new DeleteOnLockedEntityErrorBuilder(entityType, entityId, + versionInfoEntity.getCandidate().getUser()).build()); + default: + //do nothing + break; + } + + doDelete(versionInfoEntity); + } + + @Override + public void undoDelete(String entityType, String entityId, String user) { + VersionInfoDeletedEntity versionInfoDeletedEntity = + versionInfoDeletedDao.get(new VersionInfoDeletedEntity(entityType, entityId)); + if (versionInfoDeletedEntity == null) { + throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); + } + + doUndoDelete(versionInfoDeletedEntity); +} + + @Override + public Version checkout(String entityType, String entityId, String user) { + VersionInfoEntity versionInfoEntity = + versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); + if (versionInfoEntity == null) { + throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); + } + + Version checkoutVersion = null; + switch (versionInfoEntity.getStatus()) { + case Locked: + throw new CoreException(new CheckoutOnLockedEntityErrorBuilder(entityType, entityId, + versionInfoEntity.getCandidate().getUser()).build()); + case Certified: + case Draft: + checkoutVersion = doCheckout(versionInfoEntity, user); + break; + default: + //do nothing + break; + } + + return checkoutVersion; + } + + @Override + public Version undoCheckout(String entityType, String entityId, String user) { + VersionInfoEntity versionInfoEntity = + versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); + if (versionInfoEntity == null) { + throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); + } + + Version activeVersion = null; + switch (versionInfoEntity.getStatus()) { + case Locked: + if (!user.equals(versionInfoEntity.getCandidate().getUser())) { + throw new CoreException( + new UndoCheckoutOnEntityLockedByOtherErrorBuilder(entityType, entityId, + versionInfoEntity.getCandidate().getUser()).build()); + } + activeVersion = undoCheckout(versionInfoEntity); + break; + case Certified: + case Draft: + throw new CoreException( + new UndoCheckoutOnUnlockedEntityErrorBuilder(entityType, entityId).build()); + default: + //do nothing + break; + } + + return activeVersion; + } + + private Version undoCheckout(VersionInfoEntity versionInfoEntity) { + deleteVersionFromEntity(versionInfoEntity.getEntityType(), versionInfoEntity.getEntityId(), + versionInfoEntity.getCandidate().getVersion(), versionInfoEntity.getActiveVersion()); + + versionInfoEntity + .setStatus(versionInfoEntity.getActiveVersion().isFinal() ? VersionStatus.Certified + : VersionStatus.Draft); + versionInfoEntity.setCandidate(null); + versionInfoDao.update(versionInfoEntity); + return versionInfoEntity.getActiveVersion(); + } + + @Override + public Version checkin(String entityType, String entityId, String user, + String checkinDescription) { + VersionInfoEntity versionInfoEntity = + versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); + if (versionInfoEntity == null) { + throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); + } + + Version checkedInVersion = null; + switch (versionInfoEntity.getStatus()) { + case Draft: + case Certified: + throw new CoreException( + new CheckinOnUnlockedEntityErrorBuilder(entityType, entityId).build()); + case Locked: + if (!user.equals(versionInfoEntity.getCandidate().getUser())) { + throw new CoreException(new CheckinOnEntityLockedByOtherErrorBuilder(entityType, entityId, + versionInfoEntity.getCandidate().getUser()).build()); + } + checkedInVersion = doCheckin(versionInfoEntity, checkinDescription); + break; + default: + //do nothing + break; + } + + return checkedInVersion; + } + + @Override + public Version submit(String entityType, String entityId, String user, String submitDescription) { + VersionInfoEntity versionInfoEntity = + versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); + if (versionInfoEntity == null) { + throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); + } + + Version submitVersion = null; + switch (versionInfoEntity.getStatus()) { + case Certified: + throw new CoreException( + new EntityAlreadyFinalizedErrorBuilder(entityType, entityId).build()); + case Locked: + throw new CoreException(new SubmitLockedEntityNotAllowedErrorBuilder(entityType, entityId, + versionInfoEntity.getCandidate().getUser()).build()); + case Draft: + submitVersion = doSubmit(versionInfoEntity, user, submitDescription); + break; + default: + //do nothing + break; + } + + return submitVersion; + } + + @Override + public VersionInfo getEntityVersionInfo(String entityType, String entityId, String user, + VersionableEntityAction action) { + VersionInfoEntity versionInfoEntity = + versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); + if (versionInfoEntity == null) { + throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); + } + return getVersionInfo(versionInfoEntity, user, action); + } + + @Override + public Map listEntitiesVersionInfo(String entityType, String user, + VersionableEntityAction action) { + Collection versionInfoEntities = + versionInfoDao.list(new VersionInfoEntity(entityType, null)); + Map activeVersions = new HashMap<>(); + for (VersionInfoEntity versionInfoEntity : versionInfoEntities) { + activeVersions + .put(versionInfoEntity.getEntityId(), getVersionInfo(versionInfoEntity, user, action)); + } + return activeVersions; + } + + @Override + public Map listDeletedEntitiesVersionInfo(String entityType, String user, + VersionableEntityAction action) { + Collection versionInfoDeletedEntities = + versionInfoDeletedDao.list(new VersionInfoDeletedEntity(entityType, null)); + Map activeVersions = new HashMap<>(); + + + for (VersionInfoDeletedEntity versionInfoDeletedEntity : versionInfoDeletedEntities) { + activeVersions.put(versionInfoDeletedEntity.getEntityId(), + getVersionInfo(versionInfoDeletedEntity, user, action)); + } + return activeVersions; + } + + @Override + public List list(String itemId) { + + List versions = versionDao.list(itemId); + Set 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() == VersionStatus.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); + asdcItemManager.updateVersionStatus(itemId, VersionStatus.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() + .withCategory(ErrorCategory.APPLICATION) + .withId("VERSION_NAME_ALREADY_EXIST") + .withMessage(errorDescription) + .build()); + } + } + + @Override + public void submit(String itemId, Version version, String submitDescription) { + version = get(itemId, version); + + validateSubmit(itemId, version); + + version.setStatus(VersionStatus.Certified); + versionDao.update(itemId, version); + + publish(itemId, version, submitDescription); + + asdcItemManager.updateVersionStatus(itemId, VersionStatus.Certified, VersionStatus.Draft); + } + + private void validateSubmit(String itemId, Version version) { + if (version.getStatus() == VersionStatus.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 listRevisions(String itemId, Version version) { + return versionDao.listRevisions(itemId, version); + } + + private void markAsCheckedOut(VersionInfoEntity versionInfoEntity, String checkingOutUser) { + versionInfoEntity.setStatus(VersionStatus.Locked); + versionInfoEntity.setCandidate(new UserCandidateVersion(checkingOutUser, + versionInfoEntity.getActiveVersion().calculateNextCandidate())); + } + + private Version doCheckout(VersionInfoEntity versionInfoEntity, String user) { + markAsCheckedOut(versionInfoEntity, user); + versionInfoDao.update(versionInfoEntity); + + initVersionOnEntity(versionInfoEntity.getEntityType(), versionInfoEntity.getEntityId(), + versionInfoEntity.getActiveVersion(), versionInfoEntity.getCandidate().getVersion()); + + return versionInfoEntity.getCandidate().getVersion(); + } + + private void doDelete(VersionInfoEntity versionInfoEntity) { + VersionInfoDeletedEntity versionInfoDeletedEntity = new VersionInfoDeletedEntity(); + versionInfoDeletedEntity.setStatus(versionInfoEntity.getStatus()); + versionInfoDeletedEntity.setViewableVersions(versionInfoEntity.getViewableVersions()); + versionInfoDeletedEntity.setActiveVersion(versionInfoEntity.getActiveVersion()); + versionInfoDeletedEntity.setCandidate(versionInfoEntity.getCandidate()); + versionInfoDeletedEntity.setEntityId(versionInfoEntity.getEntityId()); + versionInfoDeletedEntity.setEntityType(versionInfoEntity.getEntityType()); + versionInfoDeletedEntity.setLatestFinalVersion(versionInfoEntity.getLatestFinalVersion()); + versionInfoDeletedDao.create(versionInfoDeletedEntity); + versionInfoDao.delete(versionInfoEntity); + } + + private void doUndoDelete(VersionInfoDeletedEntity versionInfoDeletedEntity) { + VersionInfoEntity versionInfoEntity = new VersionInfoEntity(); + versionInfoEntity.setStatus(versionInfoDeletedEntity.getStatus()); + versionInfoEntity.setViewableVersions(versionInfoDeletedEntity.getViewableVersions()); + versionInfoEntity.setActiveVersion(versionInfoDeletedEntity.getActiveVersion()); + versionInfoEntity.setCandidate(versionInfoDeletedEntity.getCandidate()); + versionInfoEntity.setEntityId(versionInfoDeletedEntity.getEntityId()); + versionInfoEntity.setEntityType(versionInfoDeletedEntity.getEntityType()); + versionInfoEntity.setLatestFinalVersion(versionInfoDeletedEntity.getLatestFinalVersion()); + versionInfoDao.create(versionInfoEntity); + versionInfoDeletedDao.delete(versionInfoDeletedEntity); + } + + private Version doCheckin(VersionInfoEntity versionInfoEntity, String checkinDescription) { + UserCandidateVersion userCandidateVersion = versionInfoEntity.getCandidate(); + versionInfoEntity.setCandidate(null); + versionInfoEntity.setActiveVersion(userCandidateVersion.getVersion()); + versionInfoEntity.getViewableVersions().add(versionInfoEntity.getActiveVersion()); + versionInfoEntity.setStatus(VersionStatus.Draft); + + closeVersionOnEntity(versionInfoEntity.getEntityType(), versionInfoEntity.getEntityId(), + versionInfoEntity.getActiveVersion()); + + versionInfoDao.update(versionInfoEntity); + + return versionInfoEntity.getActiveVersion(); + } + + private Version doSubmit(VersionInfoEntity versionInfoEntity, String submittingUser, + String submitDescription) { + Version finalVersion = versionInfoEntity.getActiveVersion().calculateNextFinal(); + initVersionOnEntity(versionInfoEntity.getEntityType(), versionInfoEntity.getEntityId(), + versionInfoEntity.getActiveVersion(), finalVersion); + closeVersionOnEntity(versionInfoEntity.getEntityType(), versionInfoEntity.getEntityId(), + finalVersion); + + Set viewableVersions = new HashSet<>(); + for (Version version : versionInfoEntity.getViewableVersions()) { + if (version.isFinal()) { + viewableVersions.add(version); + } + } + viewableVersions.add(finalVersion); + versionInfoEntity.setViewableVersions(viewableVersions); + versionInfoEntity.setActiveVersion(finalVersion); + versionInfoEntity.setLatestFinalVersion(finalVersion); + versionInfoEntity.setStatus(VersionStatus.Certified); + versionInfoDao.update(versionInfoEntity); + + return finalVersion; + } + + private void initVersionOnEntity(String entityType, String entityId, Version baseVersion, + Version newVersion) { + Set entityMetadatas = VERSIONABLE_ENTITIES.get(entityType); + if (entityMetadatas != null) { + for (VersionableEntityMetadata entityMetadata : entityMetadatas) { + VersionableEntityDaoFactory.getInstance().createInterface(entityMetadata.getStoreType()) + .initVersion(entityMetadata, entityId, baseVersion, newVersion); + } + } + } + + private void deleteVersionFromEntity(String entityType, String entityId, + Version versionToDelete, Version backToVersion) { + Set entityMetadatas = VERSIONABLE_ENTITIES.get(entityType); + if (entityMetadatas != null) { + for (VersionableEntityMetadata entityMetadata : entityMetadatas) { + VersionableEntityDaoFactory.getInstance().createInterface(entityMetadata.getStoreType()) + .deleteVersion(entityMetadata, entityId, versionToDelete, backToVersion); + } + } + } + + private void closeVersionOnEntity(String entityType, String entityId, Version versionToClose) { + Set entityMetadatas = VERSIONABLE_ENTITIES.get(entityType); + if (entityMetadatas != null) { + for (VersionableEntityMetadata entityMetadata : entityMetadatas) { + VersionableEntityDaoFactory.getInstance().createInterface(entityMetadata.getStoreType()) + .closeVersion(entityMetadata, entityId, versionToClose); + } + } + } +} diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/AsdcItemManagerFactoryImpl.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/AsdcItemManagerFactoryImpl.java new file mode 100644 index 0000000000..090f042027 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/AsdcItemManagerFactoryImpl.java @@ -0,0 +1,35 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.sdc.versioning.impl; + +import org.openecomp.sdc.itempermissions.PermissionsServicesFactory; +import org.openecomp.sdc.notification.factories.SubscriptionServiceFactory; +import org.openecomp.sdc.versioning.AsdcItemManager; +import org.openecomp.sdc.versioning.AsdcItemManagerFactory; +import org.openecomp.sdc.versioning.dao.ItemDaoFactory; + +public class AsdcItemManagerFactoryImpl extends AsdcItemManagerFactory { + private static final AsdcItemManager INSTANCE = + new AsdcItemManagerImpl(ItemDaoFactory.getInstance().createInterface(), + PermissionsServicesFactory.getInstance().createInterface(), + SubscriptionServiceFactory.getInstance().createInterface()); + + @Override + public AsdcItemManager createInterface() { + return INSTANCE; + } +} diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/AsdcItemManagerImpl.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/AsdcItemManagerImpl.java new file mode 100644 index 0000000000..82d3ae5a61 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/AsdcItemManagerImpl.java @@ -0,0 +1,70 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.sdc.versioning.impl; + +import org.openecomp.sdc.common.session.SessionContextProviderFactory; +import org.openecomp.sdc.itempermissions.PermissionsServices; +import org.openecomp.sdc.notification.services.SubscriptionService; +import org.openecomp.sdc.versioning.AsdcItemManager; +import org.openecomp.sdc.versioning.dao.ItemDao; +import org.openecomp.sdc.versioning.types.Item; + +public class AsdcItemManagerImpl extends ItemManagerImpl implements AsdcItemManager { + private static final String CREATE_ITEM = "Create_Item"; + + private PermissionsServices permissionsServices; + private SubscriptionService subscriptionService; + + public AsdcItemManagerImpl(ItemDao itemDao, PermissionsServices permissionsServices, + SubscriptionService subscriptionService) { + super(itemDao); + + this.permissionsServices = permissionsServices; + this.subscriptionService = subscriptionService; + } + + @Override + public Item create(Item item) { + Item createdItem = super.create(item); + + String userId = SessionContextProviderFactory.getInstance() + .createInterface().get().getUser().getUserId(); + String itemId = createdItem.getId(); + permissionsServices.execute(itemId, userId, CREATE_ITEM); + subscriptionService.subscribe(userId, itemId); + + return createdItem; + } + + + @Override + public void updateOwner(String itemId, String owner) { + Item item = get(itemId); + if (item == null) { + return; + } + item.setOwner(owner); + super.update(item); + } + + @Override + public void delete(Item item) { + super.delete(item); + } + + +} diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ItemManagerFactoryImpl.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ItemManagerFactoryImpl.java index ba5bd07d42..fbbc32e58e 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ItemManagerFactoryImpl.java +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ItemManagerFactoryImpl.java @@ -1,39 +1,31 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.versioning.impl; -import org.openecomp.sdc.itempermissions.PermissionsServicesFactory; -import org.openecomp.sdc.notification.factories.SubscriptionServiceFactory; import org.openecomp.sdc.versioning.ItemManager; import org.openecomp.sdc.versioning.ItemManagerFactory; import org.openecomp.sdc.versioning.dao.ItemDaoFactory; public class ItemManagerFactoryImpl extends ItemManagerFactory { - private static final ItemManager INSTANCE = - new ItemManagerImpl(ItemDaoFactory.getInstance().createInterface(), - PermissionsServicesFactory.getInstance().createInterface(), - SubscriptionServiceFactory.getInstance().createInterface()); + private static final ItemManager instance = + new ItemManagerImpl(ItemDaoFactory.getInstance().createInterface()); @Override public ItemManager createInterface() { - return INSTANCE; + return instance; } } diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ItemManagerImpl.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ItemManagerImpl.java index ba51b17575..dadf456ad4 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ItemManagerImpl.java +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/ItemManagerImpl.java @@ -1,29 +1,37 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.openecomp.sdc.versioning.impl; -import org.openecomp.sdc.common.session.SessionContextProviderFactory; -import org.openecomp.sdc.itempermissions.PermissionsServices; -import org.openecomp.sdc.notification.services.SubscriptionService; +import java.util.Collection; +import java.util.function.Predicate; +import java.util.stream.Collectors; import org.openecomp.sdc.versioning.ItemManager; import org.openecomp.sdc.versioning.dao.ItemDao; import org.openecomp.sdc.versioning.dao.types.VersionStatus; import org.openecomp.sdc.versioning.types.Item; -import java.util.Collection; -import java.util.function.Predicate; -import java.util.stream.Collectors; - public class ItemManagerImpl implements ItemManager { - private static final String CREATE_ITEM = "Create_Item"; private ItemDao itemDao; - private PermissionsServices permissionsServices; - private SubscriptionService subscriptionService; - public ItemManagerImpl(ItemDao itemDao, PermissionsServices permissionsServices, - SubscriptionService subscriptionService) { + + public ItemManagerImpl(ItemDao itemDao) { this.itemDao = itemDao; - this.permissionsServices = permissionsServices; - this.subscriptionService = subscriptionService; + } @Override @@ -40,15 +48,7 @@ public class ItemManagerImpl implements ItemManager { @Override public Item create(Item item) { - Item createdItem = itemDao.create(item); - - String userId = SessionContextProviderFactory.getInstance() - .createInterface().get().getUser().getUserId(); - String itemId = createdItem.getId(); - permissionsServices.execute(itemId, userId, CREATE_ITEM); - subscriptionService.subscribe(userId, itemId); - - return createdItem; + return itemDao.create(item); } @Override @@ -67,18 +67,23 @@ public class ItemManagerImpl implements ItemManager { } @Override - public void updateOwner(String itemId, String owner){ + public void delete(Item item) { + itemDao.delete(item); + } + + @Override + public void updateName(String itemId, String name) { Item item = get(itemId); if (item == null) { return; } - item.setOwner(owner); + item.setName(name); itemDao.update(item); } @Override - public void delete(Item item) { - itemDao.delete(item); + public void update(Item item) { + itemDao.update(item); } } diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/VersioningManagerFactoryImpl.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/VersioningManagerFactoryImpl.java index b4dbcf3a08..83f3d77ae3 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/VersioningManagerFactoryImpl.java +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/impl/VersioningManagerFactoryImpl.java @@ -1,21 +1,17 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2016-2018 European Support Limited + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= */ package org.openecomp.sdc.versioning.impl; @@ -25,19 +21,15 @@ import org.openecomp.sdc.versioning.VersionCalculatorFactory; import org.openecomp.sdc.versioning.VersioningManager; import org.openecomp.sdc.versioning.VersioningManagerFactory; import org.openecomp.sdc.versioning.dao.VersionDaoFactory; -import org.openecomp.sdc.versioning.dao.VersionInfoDaoFactory; -import org.openecomp.sdc.versioning.dao.VersionInfoDeletedDaoFactory; public class VersioningManagerFactoryImpl extends VersioningManagerFactory { - private static final VersioningManager INSTANCE = new VersioningManagerImpl( - VersionInfoDaoFactory.getInstance().createInterface(), - VersionInfoDeletedDaoFactory.getInstance().createInterface(), - VersionDaoFactory.getInstance().createInterface(), - VersionCalculatorFactory.getInstance().createInterface(), - ItemManagerFactory.getInstance().createInterface()); + @Override public VersioningManager createInterface() { - return INSTANCE; + return new VersioningManagerImpl( + VersionDaoFactory.getInstance().createInterface(), + VersionCalculatorFactory.getInstance().createInterface(), + ItemManagerFactory.getInstance().createInterface()); } } 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 af63d86b69..091def645d 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 @@ -1,11 +1,11 @@ /* - * Copyright © 2016-2017 European Support Limited + * Copyright © 2016-2018 European Support Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -16,7 +16,15 @@ 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; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; @@ -24,364 +32,26 @@ import org.openecomp.sdc.versioning.ItemManager; import org.openecomp.sdc.versioning.VersionCalculator; import org.openecomp.sdc.versioning.VersioningManager; import org.openecomp.sdc.versioning.dao.VersionDao; -import org.openecomp.sdc.versioning.dao.VersionInfoDao; -import org.openecomp.sdc.versioning.dao.VersionInfoDeletedDao; -import org.openecomp.sdc.versioning.dao.VersionableEntityDaoFactory; import org.openecomp.sdc.versioning.dao.types.Revision; import org.openecomp.sdc.versioning.dao.types.SynchronizationState; -import org.openecomp.sdc.versioning.dao.types.UserCandidateVersion; import org.openecomp.sdc.versioning.dao.types.Version; -import org.openecomp.sdc.versioning.dao.types.VersionInfoDeletedEntity; -import org.openecomp.sdc.versioning.dao.types.VersionInfoEntity; -import org.openecomp.sdc.versioning.dao.types.VersionStatus; -import org.openecomp.sdc.versioning.errors.CheckinOnEntityLockedByOtherErrorBuilder; -import org.openecomp.sdc.versioning.errors.CheckinOnUnlockedEntityErrorBuilder; -import org.openecomp.sdc.versioning.errors.CheckoutOnLockedEntityErrorBuilder; -import org.openecomp.sdc.versioning.errors.DeleteOnLockedEntityErrorBuilder; -import org.openecomp.sdc.versioning.errors.EditOnEntityLockedByOtherErrorBuilder; -import org.openecomp.sdc.versioning.errors.EditOnUnlockedEntityErrorBuilder; -import org.openecomp.sdc.versioning.errors.EntityAlreadyExistErrorBuilder; -import org.openecomp.sdc.versioning.errors.EntityAlreadyFinalizedErrorBuilder; -import org.openecomp.sdc.versioning.errors.EntityNotExistErrorBuilder; -import org.openecomp.sdc.versioning.errors.SubmitLockedEntityNotAllowedErrorBuilder; -import org.openecomp.sdc.versioning.errors.UndoCheckoutOnEntityLockedByOtherErrorBuilder; -import org.openecomp.sdc.versioning.errors.UndoCheckoutOnUnlockedEntityErrorBuilder; import org.openecomp.sdc.versioning.types.VersionCreationMethod; -import org.openecomp.sdc.versioning.types.VersionInfo; -import org.openecomp.sdc.versioning.types.VersionableEntityAction; -import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; - -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; public class VersioningManagerImpl implements VersioningManager { private static final Logger LOGGER = LoggerFactory.getLogger(VersioningManagerImpl.class); - private static final Version INITIAL_ACTIVE_VERSION = new Version(0, 0); - private static final Map> VERSIONABLE_ENTITIES = - new HashMap<>(); - private final VersionInfoDao versionInfoDao; - private final VersionInfoDeletedDao versionInfoDeletedDao; private VersionDao versionDao; private VersionCalculator versionCalculator; private ItemManager itemManager; - public VersioningManagerImpl(VersionInfoDao versionInfoDao, - VersionInfoDeletedDao versionInfoDeletedDao, - VersionDao versionDao, + public VersioningManagerImpl(VersionDao versionDao, VersionCalculator versionCalculator, - ItemManager itemManager) { - this.versionInfoDao = versionInfoDao; - this.versionInfoDeletedDao = versionInfoDeletedDao; + ItemManager itemManager) { this.versionDao = versionDao; this.versionCalculator = versionCalculator; this.itemManager = itemManager; } - private static VersionInfo getVersionInfo(VersionInfoEntity versionInfoEntity, String user, - VersionableEntityAction action) { - return getVersionInfo(versionInfoEntity.getEntityId(), - versionInfoEntity.getEntityType(), - versionInfoEntity.getActiveVersion(), - versionInfoEntity.getCandidate(), - versionInfoEntity.getStatus(), - versionInfoEntity.getLatestFinalVersion(), - versionInfoEntity.getViewableVersions(), - action, - user); - } - - private static VersionInfo getVersionInfo(VersionInfoDeletedEntity versionInfoEntity, String user, - VersionableEntityAction action) { - return getVersionInfo(versionInfoEntity.getEntityId(), - versionInfoEntity.getEntityType(), - versionInfoEntity.getActiveVersion(), - versionInfoEntity.getCandidate(), - versionInfoEntity.getStatus(), - versionInfoEntity.getLatestFinalVersion(), - versionInfoEntity.getViewableVersions(), - action, - user); - } - - private static VersionInfo getVersionInfo(String entityId, String entityType, Version activeVer, - UserCandidateVersion candidate, VersionStatus status, - Version latestFinalVersion, - Set viewableVersions, - VersionableEntityAction action, String user) { - Version activeVersion; - - if (action == VersionableEntityAction.Write) { - if (candidate != null) { - if (user.equals(candidate.getUser())) { - activeVersion = candidate.getVersion(); - } else { - throw new CoreException( - new EditOnEntityLockedByOtherErrorBuilder(entityType, entityId, candidate.getUser()) - .build()); - } - } else { - throw new CoreException(new EditOnUnlockedEntityErrorBuilder(entityType, entityId).build()); - } - } else { - if (candidate != null && user.equals(candidate.getUser())) { - activeVersion = candidate.getVersion(); - } else { - activeVersion = activeVer; - } - } - - VersionInfo versionInfo = new VersionInfo(); - versionInfo.setStatus(status); - activeVersion.setStatus(status); - if (latestFinalVersion != null) { - latestFinalVersion.setStatus(status); - } - if (viewableVersions != null) { - viewableVersions.forEach(version -> version.setStatus(status)); - } - versionInfo.setActiveVersion(activeVersion); - versionInfo.setLatestFinalVersion(latestFinalVersion); - versionInfo.setViewableVersions(toSortedList(viewableVersions)); - versionInfo.setFinalVersions(getFinalVersions(viewableVersions)); - if (candidate != null) { - candidate.getVersion().setStatus(status); - versionInfo.setLockingUser(candidate.getUser()); - if (user.equals(candidate.getUser())) { - versionInfo.getViewableVersions().add(candidate.getVersion()); - } - } - return versionInfo; - } - - private static List toSortedList( - Set versions) { // changing the Set to List in DB will require migration... - return versions.stream().sorted((o1, o2) -> o1.getMajor() > o2.getMajor() ? 1 - : o1.getMajor() == o2.getMajor() ? (Integer.compare(o1.getMinor(), o2.getMinor())) : -1) - .collect(Collectors.toList()); - } - - private static List getFinalVersions(Set versions) { - return versions.stream().filter(Version::isFinal).collect(Collectors.toList()); - } - - @Override - public void register(String entityType, VersionableEntityMetadata entityMetadata) { - Set entitiesMetadata = - VERSIONABLE_ENTITIES.computeIfAbsent(entityType, k -> new HashSet<>()); - entitiesMetadata.add(entityMetadata); - } - - @Override - public Version create(String entityType, String entityId, String user) { - VersionInfoEntity - versionInfoEntity = versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); - if (versionInfoEntity != null) { - throw new CoreException(new EntityAlreadyExistErrorBuilder(entityType, entityId).build()); - } - - versionInfoEntity = new VersionInfoEntity(entityType, entityId); - versionInfoEntity.setActiveVersion(INITIAL_ACTIVE_VERSION); - markAsCheckedOut(versionInfoEntity, user); - versionInfoDao.create(versionInfoEntity); - - return versionInfoEntity.getCandidate().getVersion(); - } - - @Override - public void delete(String entityType, String entityId, String user) { - VersionInfoEntity versionInfoEntity = - versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); - if (versionInfoEntity == null) { - throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); - } - - if (versionInfoEntity.getStatus() == VersionStatus.Locked) { - throw new CoreException(new DeleteOnLockedEntityErrorBuilder(entityType, entityId, - versionInfoEntity.getCandidate().getUser()).build()); - } - - doDelete(versionInfoEntity); - } - - @Override - public void undoDelete(String entityType, String entityId, String user) { - VersionInfoDeletedEntity versionInfoDeletedEntity = - versionInfoDeletedDao.get(new VersionInfoDeletedEntity(entityType, entityId)); - if (versionInfoDeletedEntity == null) { - throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); - } - - doUndoDelete(versionInfoDeletedEntity); - } - - @Override - public Version checkout(String entityType, String entityId, String user) { - VersionInfoEntity versionInfoEntity = - versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); - if (versionInfoEntity == null) { - throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); - } - - Version checkoutVersion = null; - switch (versionInfoEntity.getStatus()) { - case Locked: - throw new CoreException(new CheckoutOnLockedEntityErrorBuilder(entityType, entityId, - versionInfoEntity.getCandidate().getUser()).build()); - case Certified: - case Draft: - checkoutVersion = doCheckout(versionInfoEntity, user); - break; - default: - //do nothing - break; - } - - return checkoutVersion; - } - - @Override - public Version undoCheckout(String entityType, String entityId, String user) { - VersionInfoEntity versionInfoEntity = - versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); - if (versionInfoEntity == null) { - throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); - } - - Version activeVersion = null; - switch (versionInfoEntity.getStatus()) { - case Locked: - if (!user.equals(versionInfoEntity.getCandidate().getUser())) { - throw new CoreException( - new UndoCheckoutOnEntityLockedByOtherErrorBuilder(entityType, entityId, - versionInfoEntity.getCandidate().getUser()).build()); - } - activeVersion = undoCheckout(versionInfoEntity); - break; - case Certified: - case Draft: - throw new CoreException( - new UndoCheckoutOnUnlockedEntityErrorBuilder(entityType, entityId).build()); - default: - //do nothing - break; - } - - return activeVersion; - } - - private Version undoCheckout(VersionInfoEntity versionInfoEntity) { - deleteVersionFromEntity(versionInfoEntity.getEntityType(), versionInfoEntity.getEntityId(), - versionInfoEntity.getCandidate().getVersion(), versionInfoEntity.getActiveVersion()); - - versionInfoEntity - .setStatus(versionInfoEntity.getActiveVersion().isFinal() ? VersionStatus.Certified - : VersionStatus.Draft); - versionInfoEntity.setCandidate(null); - versionInfoDao.update(versionInfoEntity); - return versionInfoEntity.getActiveVersion(); - } - - @Override - public Version checkin(String entityType, String entityId, String user, - String checkinDescription) { - VersionInfoEntity versionInfoEntity = - versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); - if (versionInfoEntity == null) { - throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); - } - - Version checkedInVersion = null; - switch (versionInfoEntity.getStatus()) { - case Draft: - case Certified: - throw new CoreException( - new CheckinOnUnlockedEntityErrorBuilder(entityType, entityId).build()); - case Locked: - if (!user.equals(versionInfoEntity.getCandidate().getUser())) { - throw new CoreException(new CheckinOnEntityLockedByOtherErrorBuilder(entityType, entityId, - versionInfoEntity.getCandidate().getUser()).build()); - } - checkedInVersion = doCheckin(versionInfoEntity); - break; - default: - //do nothing - break; - } - - return checkedInVersion; - } - - @Override - public Version submit(String entityType, String entityId, String user, String submitDescription) { - VersionInfoEntity versionInfoEntity = - versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); - if (versionInfoEntity == null) { - throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); - } - - Version submitVersion = null; - switch (versionInfoEntity.getStatus()) { - case Certified: - throw new CoreException( - new EntityAlreadyFinalizedErrorBuilder(entityType, entityId).build()); - case Locked: - throw new CoreException(new SubmitLockedEntityNotAllowedErrorBuilder(entityType, entityId, - versionInfoEntity.getCandidate().getUser()).build()); - case Draft: - submitVersion = doSubmit(versionInfoEntity); - break; - default: - //do nothing - break; - } - - return submitVersion; - } - - @Override - public VersionInfo getEntityVersionInfo(String entityType, String entityId, String user, - VersionableEntityAction action) { - VersionInfoEntity versionInfoEntity = - versionInfoDao.get(new VersionInfoEntity(entityType, entityId)); - if (versionInfoEntity == null) { - throw new CoreException(new EntityNotExistErrorBuilder(entityType, entityId).build()); - } - return getVersionInfo(versionInfoEntity, user, action); - } - - @Override - public Map listEntitiesVersionInfo(String entityType, String user, - VersionableEntityAction action) { - Collection versionInfoEntities = - versionInfoDao.list(new VersionInfoEntity(entityType, null)); - Map activeVersions = new HashMap<>(); - for (VersionInfoEntity versionInfoEntity : versionInfoEntities) { - activeVersions - .put(versionInfoEntity.getEntityId(), getVersionInfo(versionInfoEntity, user, action)); - } - return activeVersions; - } - - @Override - public Map listDeletedEntitiesVersionInfo(String entityType, String user, - VersionableEntityAction action) { - Collection versionInfoDeletedEntities = - versionInfoDeletedDao.list(new VersionInfoDeletedEntity(entityType, null)); - Map activeVersions = new HashMap<>(); - - - for (VersionInfoDeletedEntity versionInfoDeletedEntity : versionInfoDeletedEntities) { - activeVersions.put(versionInfoDeletedEntity.getEntityId(), - getVersionInfo(versionInfoDeletedEntity, user, action)); - } - return activeVersions; - } @Override public List list(String itemId) { @@ -403,7 +73,7 @@ public class VersioningManagerImpl implements VersioningManager { } private Version getUpdateRetrievedVersion(String itemId, Version version) { - if (version.getStatus() == VersionStatus.Certified && + if (version.getStatus() == Certified && (version.getState().getSynchronizationState() == SynchronizationState.OutOfSync || version.getState().isDirty())) { forceSync(itemId, version); @@ -436,7 +106,7 @@ public class VersioningManagerImpl implements VersioningManager { version.setName(versionName); versionDao.create(itemId, version); - itemManager.updateVersionStatus(itemId, VersionStatus.Draft, null); + itemManager.updateVersionStatus(itemId, Draft, null); publish(itemId, version, String.format("Create version: %s", version.getName())); return version; @@ -448,6 +118,7 @@ public class VersioningManagerImpl implements VersioningManager { 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()); @@ -460,20 +131,22 @@ public class VersioningManagerImpl implements VersioningManager { validateSubmit(itemId, version); - version.setStatus(VersionStatus.Certified); + version.setStatus(Certified); versionDao.update(itemId, version); publish(itemId, version, submitDescription); - itemManager.updateVersionStatus(itemId, VersionStatus.Certified, VersionStatus.Draft); + itemManager.updateVersionStatus(itemId, Certified, Draft); } private void validateSubmit(String itemId, Version version) { - if (version.getStatus() == VersionStatus.Certified) { + 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()); } @@ -505,115 +178,9 @@ public class VersioningManagerImpl implements VersioningManager { return versionDao.listRevisions(itemId, version); } - private void markAsCheckedOut(VersionInfoEntity versionInfoEntity, String checkingOutUser) { - versionInfoEntity.setStatus(VersionStatus.Locked); - versionInfoEntity.setCandidate(new UserCandidateVersion(checkingOutUser, - versionInfoEntity.getActiveVersion().calculateNextCandidate())); - } - - private Version doCheckout(VersionInfoEntity versionInfoEntity, String user) { - markAsCheckedOut(versionInfoEntity, user); - versionInfoDao.update(versionInfoEntity); - - initVersionOnEntity(versionInfoEntity.getEntityType(), versionInfoEntity.getEntityId(), - versionInfoEntity.getActiveVersion(), versionInfoEntity.getCandidate().getVersion()); - - return versionInfoEntity.getCandidate().getVersion(); - } - - private void doDelete(VersionInfoEntity versionInfoEntity) { - VersionInfoDeletedEntity versionInfoDeletedEntity = new VersionInfoDeletedEntity(); - versionInfoDeletedEntity.setStatus(versionInfoEntity.getStatus()); - versionInfoDeletedEntity.setViewableVersions(versionInfoEntity.getViewableVersions()); - versionInfoDeletedEntity.setActiveVersion(versionInfoEntity.getActiveVersion()); - versionInfoDeletedEntity.setCandidate(versionInfoEntity.getCandidate()); - versionInfoDeletedEntity.setEntityId(versionInfoEntity.getEntityId()); - versionInfoDeletedEntity.setEntityType(versionInfoEntity.getEntityType()); - versionInfoDeletedEntity.setLatestFinalVersion(versionInfoEntity.getLatestFinalVersion()); - versionInfoDeletedDao.create(versionInfoDeletedEntity); - versionInfoDao.delete(versionInfoEntity); - } - - private void doUndoDelete(VersionInfoDeletedEntity versionInfoDeletedEntity) { - VersionInfoEntity versionInfoEntity = new VersionInfoEntity(); - versionInfoEntity.setStatus(versionInfoDeletedEntity.getStatus()); - versionInfoEntity.setViewableVersions(versionInfoDeletedEntity.getViewableVersions()); - versionInfoEntity.setActiveVersion(versionInfoDeletedEntity.getActiveVersion()); - versionInfoEntity.setCandidate(versionInfoDeletedEntity.getCandidate()); - versionInfoEntity.setEntityId(versionInfoDeletedEntity.getEntityId()); - versionInfoEntity.setEntityType(versionInfoDeletedEntity.getEntityType()); - versionInfoEntity.setLatestFinalVersion(versionInfoDeletedEntity.getLatestFinalVersion()); - versionInfoDao.create(versionInfoEntity); - versionInfoDeletedDao.delete(versionInfoDeletedEntity); - } - - private Version doCheckin(VersionInfoEntity versionInfoEntity) { - UserCandidateVersion userCandidateVersion = versionInfoEntity.getCandidate(); - versionInfoEntity.setCandidate(null); - versionInfoEntity.setActiveVersion(userCandidateVersion.getVersion()); - versionInfoEntity.getViewableVersions().add(versionInfoEntity.getActiveVersion()); - versionInfoEntity.setStatus(VersionStatus.Draft); - - closeVersionOnEntity(versionInfoEntity.getEntityType(), versionInfoEntity.getEntityId(), - versionInfoEntity.getActiveVersion()); - - versionInfoDao.update(versionInfoEntity); - - return versionInfoEntity.getActiveVersion(); - } - - private Version doSubmit(VersionInfoEntity versionInfoEntity) { - Version finalVersion = versionInfoEntity.getActiveVersion().calculateNextFinal(); - initVersionOnEntity(versionInfoEntity.getEntityType(), versionInfoEntity.getEntityId(), - versionInfoEntity.getActiveVersion(), finalVersion); - closeVersionOnEntity(versionInfoEntity.getEntityType(), versionInfoEntity.getEntityId(), - finalVersion); - - Set viewableVersions = new HashSet<>(); - for (Version version : versionInfoEntity.getViewableVersions()) { - if (version.isFinal()) { - viewableVersions.add(version); - } - } - viewableVersions.add(finalVersion); - versionInfoEntity.setViewableVersions(viewableVersions); - versionInfoEntity.setActiveVersion(finalVersion); - versionInfoEntity.setLatestFinalVersion(finalVersion); - versionInfoEntity.setStatus(VersionStatus.Certified); - versionInfoDao.update(versionInfoEntity); - - return finalVersion; - } - - private void initVersionOnEntity(String entityType, String entityId, Version baseVersion, - Version newVersion) { - Set entityMetadatas = VERSIONABLE_ENTITIES.get(entityType); - if (entityMetadatas != null) { - for (VersionableEntityMetadata entityMetadata : entityMetadatas) { - VersionableEntityDaoFactory.getInstance().createInterface(entityMetadata.getStoreType()) - .initVersion(entityMetadata, entityId, baseVersion, newVersion); - } - } - } - - private void deleteVersionFromEntity(String entityType, String entityId, - Version versionToDelete, Version backToVersion) { - Set entityMetadatas = VERSIONABLE_ENTITIES.get(entityType); - if (entityMetadatas != null) { - for (VersionableEntityMetadata entityMetadata : entityMetadatas) { - VersionableEntityDaoFactory.getInstance().createInterface(entityMetadata.getStoreType()) - .deleteVersion(entityMetadata, entityId, versionToDelete, backToVersion); - } - } + @Override + public void updateVersion(String itemId, Version version) { + versionDao.update(itemId, version); } - private void closeVersionOnEntity(String entityType, String entityId, Version versionToClose) { - Set entityMetadatas = VERSIONABLE_ENTITIES.get(entityType); - if (entityMetadatas != null) { - for (VersionableEntityMetadata entityMetadata : entityMetadatas) { - VersionableEntityDaoFactory.getInstance().createInterface(entityMetadata.getStoreType()) - .closeVersion(entityMetadata, entityId, versionToClose); - } - } - } } diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/AsdcItemManagerImplTest.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/AsdcItemManagerImplTest.java new file mode 100644 index 0000000000..92d1e7f719 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/AsdcItemManagerImplTest.java @@ -0,0 +1,176 @@ +package org.openecomp.sdc.versioning.impl; + +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.openecomp.sdc.common.session.SessionContextProviderFactory; +import org.openecomp.sdc.itempermissions.PermissionsServices; +import org.openecomp.sdc.notification.services.SubscriptionService; +import org.openecomp.sdc.versioning.dao.ItemDao; +import org.openecomp.sdc.versioning.dao.types.VersionStatus; +import org.openecomp.sdc.versioning.types.Item; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNull; +import static org.testng.Assert.assertTrue; + +public class AsdcItemManagerImplTest { + + private static final String USER = "user1"; + private static final String ITEM_ID = "item1"; + private static final String ITEM_NAME = "item 1 name"; + private static final String ITEM_TYPE_A = "A"; + private static final String ITEM_TYPE_B = "B"; + private static final String tenant = "dox"; + @Mock + private ItemDao itemDao; + @Mock + private PermissionsServices permissionsServices; + @Mock + private SubscriptionService subscriptionService; + @InjectMocks + private AsdcItemManagerImpl itemManager; + + @BeforeMethod + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + } + + @Test + public void testList() throws Exception { + List returnedItems = Stream.of(createItem(ITEM_ID, ITEM_NAME, ITEM_TYPE_A), + createItem("item2", "item2 name", ITEM_TYPE_B), + createItem("item3", "item3 name", ITEM_TYPE_B), + createItem("item4", "item4 name", ITEM_TYPE_A)).collect(Collectors.toList()); + doReturn(returnedItems).when(itemDao).list(); + + Collection items = itemManager.list(item -> ITEM_TYPE_B.equals(item.getType())); + + assertEquals(items.size(), 2); + assertTrue( + items.stream().anyMatch(item -> returnedItems.get(1).getName().equals(item.getName()))); + assertTrue( + items.stream().anyMatch(item -> returnedItems.get(2).getName().equals(item.getName()))); + } + + @Test + public void testGetNotExisting() throws Exception { + Item item = itemManager.get(ITEM_ID); + assertNull(item); + } + + @Test + public void testGet() throws Exception { + Item toBeReturned = createItem(ITEM_ID, ITEM_NAME, ITEM_TYPE_A); + doReturn(toBeReturned).when(itemDao).get(any(Item.class)); + + Item item = itemManager.get(ITEM_ID); + + assertItemEquals(item, toBeReturned); + } + + @Test + public void testCreate() throws Exception { + SessionContextProviderFactory.getInstance().createInterface().create(USER, tenant); + + Item returnedItem = createItem(ITEM_ID, ITEM_NAME, ITEM_TYPE_A); + doReturn(returnedItem).when(itemDao).create(any(Item.class)); + + Item inputItem = createItem(null, returnedItem.getName(), returnedItem.getType()); + Item item = itemManager.create(inputItem); + + assertItemEquals(item, returnedItem); + verify(permissionsServices).execute(ITEM_ID, USER, "Create_Item"); + verify(subscriptionService).subscribe(USER, ITEM_ID); + } + + @Test + public void testUpdateNotExistingVersionStatus() throws Exception { + itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft); + + verify(itemDao, never()).update(any(Item.class)); + } + + @Test + public void testUpdateVersionStatusWhenNone() throws Exception { + Item item = new Item(); + item.setId(ITEM_ID); + doReturn(item).when(itemDao).get(any(Item.class)); + + itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft); + + verify(itemDao).update(item); + assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 1); + assertNull(item.getVersionStatusCounters().get(VersionStatus.Draft)); + } + + @Test + public void testUpdateVersionStatusAddFirst() throws Exception { + Item item = new Item(); + item.setId(ITEM_ID); + doReturn(item).when(itemDao).get(any(Item.class)); + + itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Draft, null); + + verify(itemDao).update(item); + assertEquals(item.getVersionStatusCounters().size(), 1); + assertEquals(item.getVersionStatusCounters().get(VersionStatus.Draft).intValue(), 1); + } + + @Test + public void testUpdateVersionStatus() throws Exception { + Item item = new Item(); + item.setId(ITEM_ID); + item.getVersionStatusCounters().put(VersionStatus.Certified, 2); + item.getVersionStatusCounters().put(VersionStatus.Draft, 3); + doReturn(item).when(itemDao).get(any(Item.class)); + + itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft); + + verify(itemDao).update(item); + assertEquals(item.getVersionStatusCounters().size(), 2); + assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 3); + assertEquals(item.getVersionStatusCounters().get(VersionStatus.Draft).intValue(), 2); + } + + @Test + public void testUpdateVersionStatusRemoveLast() throws Exception { + Item item = new Item(); + item.setId(ITEM_ID); + item.getVersionStatusCounters().put(VersionStatus.Certified, 2); + item.getVersionStatusCounters().put(VersionStatus.Draft, 1); + doReturn(item).when(itemDao).get(any(Item.class)); + + itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft); + + verify(itemDao).update(item); + assertEquals(item.getVersionStatusCounters().size(), 1); + assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 3); + assertNull(item.getVersionStatusCounters().get(VersionStatus.Draft)); + } + + private Item createItem(String id, String name, String type) { + Item item = new Item(); + item.setId(id); + item.setName(name); + item.setType(type); + return item; + } + + private void assertItemEquals(Item actual, Item expected) { + assertEquals(actual.getId(), expected.getId()); + assertEquals(actual.getName(), expected.getName()); + assertEquals(actual.getType(), expected.getType()); + } +} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/ItemManagerImplTest.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/ItemManagerImplTest.java deleted file mode 100644 index 95c38e46e4..0000000000 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/ItemManagerImplTest.java +++ /dev/null @@ -1,176 +0,0 @@ -package org.openecomp.sdc.versioning.impl; - -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.openecomp.sdc.common.session.SessionContextProviderFactory; -import org.openecomp.sdc.itempermissions.PermissionsServices; -import org.openecomp.sdc.notification.services.SubscriptionService; -import org.openecomp.sdc.versioning.dao.ItemDao; -import org.openecomp.sdc.versioning.dao.types.VersionStatus; -import org.openecomp.sdc.versioning.types.Item; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.assertTrue; - -public class ItemManagerImplTest { - - private static final String USER = "user1"; - private static final String ITEM_ID = "item1"; - private static final String ITEM_NAME = "item 1 name"; - private static final String ITEM_TYPE_A = "A"; - private static final String ITEM_TYPE_B = "B"; - private static final String tenant = "dox"; - @Mock - private ItemDao itemDao; - @Mock - private PermissionsServices permissionsServices; - @Mock - private SubscriptionService subscriptionService; - @InjectMocks - private ItemManagerImpl itemManager; - - @BeforeMethod - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - } - - @Test - public void testList() throws Exception { - List returnedItems = Stream.of(createItem(ITEM_ID, ITEM_NAME, ITEM_TYPE_A), - createItem("item2", "item2 name", ITEM_TYPE_B), - createItem("item3", "item3 name", ITEM_TYPE_B), - createItem("item4", "item4 name", ITEM_TYPE_A)).collect(Collectors.toList()); - doReturn(returnedItems).when(itemDao).list(); - - Collection items = itemManager.list(item -> ITEM_TYPE_B.equals(item.getType())); - - assertEquals(items.size(), 2); - assertTrue( - items.stream().anyMatch(item -> returnedItems.get(1).getName().equals(item.getName()))); - assertTrue( - items.stream().anyMatch(item -> returnedItems.get(2).getName().equals(item.getName()))); - } - - @Test - public void testGetNotExisting() throws Exception { - Item item = itemManager.get(ITEM_ID); - assertNull(item); - } - - @Test - public void testGet() throws Exception { - Item toBeReturned = createItem(ITEM_ID, ITEM_NAME, ITEM_TYPE_A); - doReturn(toBeReturned).when(itemDao).get(any(Item.class)); - - Item item = itemManager.get(ITEM_ID); - - assertItemEquals(item, toBeReturned); - } - - @Test - public void testCreate() throws Exception { - SessionContextProviderFactory.getInstance().createInterface().create(USER, tenant); - - Item returnedItem = createItem(ITEM_ID, ITEM_NAME, ITEM_TYPE_A); - doReturn(returnedItem).when(itemDao).create(any(Item.class)); - - Item inputItem = createItem(null, returnedItem.getName(), returnedItem.getType()); - Item item = itemManager.create(inputItem); - - assertItemEquals(item, returnedItem); - verify(permissionsServices).execute(ITEM_ID, USER, "Create_Item"); - verify(subscriptionService).subscribe(USER, ITEM_ID); - } - - @Test - public void testUpdateNotExistingVersionStatus() throws Exception { - itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft); - - verify(itemDao, never()).update(any(Item.class)); - } - - @Test - public void testUpdateVersionStatusWhenNone() throws Exception { - Item item = new Item(); - item.setId(ITEM_ID); - doReturn(item).when(itemDao).get(any(Item.class)); - - itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft); - - verify(itemDao).update(item); - assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 1); - assertNull(item.getVersionStatusCounters().get(VersionStatus.Draft)); - } - - @Test - public void testUpdateVersionStatusAddFirst() throws Exception { - Item item = new Item(); - item.setId(ITEM_ID); - doReturn(item).when(itemDao).get(any(Item.class)); - - itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Draft, null); - - verify(itemDao).update(item); - assertEquals(item.getVersionStatusCounters().size(), 1); - assertEquals(item.getVersionStatusCounters().get(VersionStatus.Draft).intValue(), 1); - } - - @Test - public void testUpdateVersionStatus() throws Exception { - Item item = new Item(); - item.setId(ITEM_ID); - item.getVersionStatusCounters().put(VersionStatus.Certified, 2); - item.getVersionStatusCounters().put(VersionStatus.Draft, 3); - doReturn(item).when(itemDao).get(any(Item.class)); - - itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft); - - verify(itemDao).update(item); - assertEquals(item.getVersionStatusCounters().size(), 2); - assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 3); - assertEquals(item.getVersionStatusCounters().get(VersionStatus.Draft).intValue(), 2); - } - - @Test - public void testUpdateVersionStatusRemoveLast() throws Exception { - Item item = new Item(); - item.setId(ITEM_ID); - item.getVersionStatusCounters().put(VersionStatus.Certified, 2); - item.getVersionStatusCounters().put(VersionStatus.Draft, 1); - doReturn(item).when(itemDao).get(any(Item.class)); - - itemManager.updateVersionStatus(ITEM_ID, VersionStatus.Certified, VersionStatus.Draft); - - verify(itemDao).update(item); - assertEquals(item.getVersionStatusCounters().size(), 1); - assertEquals(item.getVersionStatusCounters().get(VersionStatus.Certified).intValue(), 3); - assertNull(item.getVersionStatusCounters().get(VersionStatus.Draft)); - } - - private Item createItem(String id, String name, String type) { - Item item = new Item(); - item.setId(id); - item.setName(name); - item.setType(type); - return item; - } - - private void assertItemEquals(Item actual, Item expected) { - assertEquals(actual.getId(), expected.getId()); - assertEquals(actual.getName(), expected.getName()); - assertEquals(actual.getType(), expected.getType()); - } -} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/VersioningManagerImplTest.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/VersioningManagerImplTest.java index 4f8c682c5e..5225f0e644 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/VersioningManagerImplTest.java +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/test/java/org/openecomp/sdc/versioning/impl/VersioningManagerImplTest.java @@ -20,12 +20,13 @@ package org.openecomp.sdc.versioning.impl; - import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.versioning.ActionVersioningManager; +import org.openecomp.sdc.versioning.AsdcItemManager; import org.openecomp.sdc.versioning.ItemManager; import org.openecomp.sdc.versioning.VersionCalculator; import org.openecomp.sdc.versioning.dao.VersionDao; @@ -66,7 +67,7 @@ public class VersioningManagerImplTest { @Mock private VersionCalculator versionCalculatorMock; @Mock - private ItemManager itemManagerMock; + private ItemManager asdcItemManager; @InjectMocks private VersioningManagerImpl versioningManager; @@ -169,7 +170,7 @@ public class VersioningManagerImplTest { Assert.assertEquals(version.getName(), versionName); verify(versionDaoMock).create(ITEM_ID, requestedVersion); - verify(itemManagerMock).updateVersionStatus(ITEM_ID, Draft, null); + verify(asdcItemManager).updateVersionStatus(ITEM_ID, Draft, null); verify(versionDaoMock) .publish(eq(ITEM_ID), eq(requestedVersion), eq("Create version: versionName")); } @@ -198,7 +199,7 @@ public class VersioningManagerImplTest { Assert.assertEquals(version.getName(), versionName); verify(versionDaoMock).create(ITEM_ID, requestedVersion); - verify(itemManagerMock).updateVersionStatus(ITEM_ID, Draft, null); + verify(asdcItemManager).updateVersionStatus(ITEM_ID, Draft, null); verify(versionDaoMock).publish(eq(ITEM_ID), eq(requestedVersion), eq("Create version: 4.0")); } @@ -250,7 +251,7 @@ public class VersioningManagerImplTest { verify(versionDaoMock).update(eq(ITEM_ID), versionArgumentCaptor.capture()); Assert.assertEquals(Certified, versionArgumentCaptor.getValue().getStatus()); verify(versionDaoMock).publish(ITEM_ID, version, submitDescription); - verify(itemManagerMock).updateVersionStatus(ITEM_ID, Certified, Draft); + verify(asdcItemManager).updateVersionStatus(ITEM_ID, Certified, Draft); } @Test -- cgit 1.2.3-korg