summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CategoriesImportManager.java36
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/ElementOperationMock.java24
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IElementOperation.java8
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java78
4 files changed, 121 insertions, 25 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CategoriesImportManager.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CategoriesImportManager.java
index d49284eab0..84b23fe3c7 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CategoriesImportManager.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CategoriesImportManager.java
@@ -154,19 +154,14 @@ public class CategoriesImportManager {
private Either<SubCategoryDefinition, ResponseFormat> createSubCategorieDeo(Map.Entry<String, List<CategoryDefinition>> entry, CategoryDefinition newcategory, SubCategoryDefinition subcategory, NodeTypeEnum nodeTypeSubCategory) {
log.debug("createSubCategorieDeo: creating subcategory {}", subcategory);
Either<SubCategoryDefinition, ActionStatus> createdSubCategory = elementOperation.createSubCategory(newcategory.getUniqueId(), subcategory, nodeTypeSubCategory);
+ if (createdSubCategory.isRight() && ActionStatus.COMPONENT_SUB_CATEGORY_EXISTS_FOR_CATEGORY == createdSubCategory.right().value()) {
+ log.debug(" create subcategory for {} category {} subcategory {} already exists, updating", entry.getKey(), newcategory.getName(), subcategory.getName());
+ String subCategoryId = UniqueIdBuilder.buildSubCategoryUid(newcategory.getUniqueId(), subcategory.getNormalizedName());
+ createdSubCategory = elementOperation.updateSubCategory(subCategoryId, subcategory, nodeTypeSubCategory);
+ }
if (createdSubCategory.isRight()) {
- if (ActionStatus.COMPONENT_SUB_CATEGORY_EXISTS_FOR_CATEGORY == createdSubCategory.right().value()) {
- log.debug(" create subcategory for {} category {} subcategory {} already exists retrieving", entry.getKey(), newcategory.getName(), subcategory.getName());
- String subCategoryId = UniqueIdBuilder.buildSubCategoryUid(newcategory.getUniqueId(), subcategory.getNormalizedName());
- createdSubCategory = elementOperation.getSubCategory(nodeTypeSubCategory, subCategoryId);
- if (createdSubCategory.isRight()) {
- log.debug("failed to get sub category that exists subCategoryId: {} type: {}", subCategoryId, nodeTypeSubCategory);
- return Either.right(componentsUtils.getResponseFormat(createdSubCategory.right().value()));
- }
- } else {
- log.debug("Failed to create subcategory for {} category: {} subcategory: {} error {}", entry.getKey(), newcategory.getName(), subcategory.getName(), createdSubCategory.right().value());
- return Either.right(componentsUtils.getResponseFormat(createdSubCategory.right().value()));
- }
+ log.debug("Failed to create subcategory for {} category: {} subcategory: {} error {}", entry.getKey(), newcategory.getName(), subcategory.getName(), createdSubCategory.right().value());
+ return Either.right(componentsUtils.getResponseFormat(createdSubCategory.right().value()));
} else {
log.debug("createSubCategorieDeo: create subcategory was successful {}", createdSubCategory.left().value());
}
@@ -176,19 +171,14 @@ public class CategoriesImportManager {
private Either<CategoryDefinition, ResponseFormat> createCategorieDeo(Map.Entry<String, List<CategoryDefinition>> entry, CategoryDefinition category, NodeTypeEnum nodeTypeCategory) {
log.debug("createCategorieDeo: creating category {}", category);
Either<CategoryDefinition, ActionStatus> createdCategory = elementOperation.createCategory(category, nodeTypeCategory);
+ if (createdCategory.isRight() && ActionStatus.COMPONENT_CATEGORY_ALREADY_EXISTS == createdCategory.right().value()) {
+ log.debug("createCategorieDeo: already exists, updating {}", category);
+ createdCategory = elementOperation.updateCategory(category, nodeTypeCategory);
+ }
+
if (createdCategory.isRight()) {
log.debug("Failed to create category for {} {} error {}", entry.getKey(), category.getName(), createdCategory.right().value());
- if (ActionStatus.COMPONENT_CATEGORY_ALREADY_EXISTS != createdCategory.right().value()) {
- return Either.right(componentsUtils.getResponseFormat(createdCategory.right().value()));
- } else {
- log.debug("createCategorieDeo: category exists {} retriving.", category);
- String categoryId = UniqueIdBuilder.buildCategoryUid(category.getNormalizedName(), nodeTypeCategory);
- createdCategory = elementOperation.getCategory(nodeTypeCategory, categoryId);
- if (createdCategory.isRight()) {
- log.debug("failed to get category that exists categoryId: {} type: {}", categoryId, nodeTypeCategory);
- return Either.right(componentsUtils.getResponseFormat(createdCategory.right().value()));
- }
- }
+ return Either.right(componentsUtils.getResponseFormat(createdCategory.right().value()));
} else {
log.debug("createCategorieDeo: create category was successful {}", createdCategory.left().value());
}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/ElementOperationMock.java b/catalog-be/src/test/java/org/openecomp/sdc/ElementOperationMock.java
index 48a317bcf0..f9605c1aed 100644
--- a/catalog-be/src/test/java/org/openecomp/sdc/ElementOperationMock.java
+++ b/catalog-be/src/test/java/org/openecomp/sdc/ElementOperationMock.java
@@ -132,6 +132,12 @@ public class ElementOperationMock implements IElementOperation {
// TODO Auto-generated method stub
return null;
}
+
+ @Override
+ public Either<CategoryDefinition, ActionStatus> updateCategory(CategoryDefinition category, NodeTypeEnum nodeType) {
+ // TODO Auto-generated method stub
+ return null;
+ }
@Override
public Either<CategoryDefinition, ActionStatus> deleteCategory(NodeTypeEnum nodeType, String categoryId) {
@@ -150,6 +156,12 @@ public class ElementOperationMock implements IElementOperation {
// TODO Auto-generated method stub
return null;
}
+
+ @Override
+ public Either<SubCategoryDefinition, ActionStatus> updateSubCategory(String subCategoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType) {
+ // TODO Auto-generated method stub
+ return null;
+ }
@Override
public Either<List<CategoryDefinition>, ActionStatus> getAllCategories(NodeTypeEnum nodeType, boolean inTransaction) {
@@ -249,11 +261,23 @@ public class ElementOperationMock implements IElementOperation {
// TODO Auto-generated method stub
return null;
}
+
+ @Override
+ public Either<CategoryDefinition, ActionStatus> updateCategory(CategoryDefinition category, NodeTypeEnum nodeType, boolean inTransaction) {
+ // TODO Auto-generated method stub
+ return null;
+ }
@Override
public Either<SubCategoryDefinition, ActionStatus> createSubCategory(String categoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType, boolean inTransaction) {
// TODO Auto-generated method stub
return null;
}
+
+ @Override
+ public Either<SubCategoryDefinition, ActionStatus> updateSubCategory(String subCategoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType, boolean inTransaction) {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IElementOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IElementOperation.java
index 33877add47..38d5fcf6c8 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IElementOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IElementOperation.java
@@ -60,6 +60,10 @@ public interface IElementOperation {
Either<CategoryDefinition, ActionStatus> createCategory(CategoryDefinition category, NodeTypeEnum nodeType);
Either<CategoryDefinition, ActionStatus> createCategory(CategoryDefinition category, NodeTypeEnum nodeType, boolean inTransaction);
+
+ Either<CategoryDefinition, ActionStatus> updateCategory(CategoryDefinition category, NodeTypeEnum nodeType);
+
+ Either<CategoryDefinition, ActionStatus> updateCategory(CategoryDefinition category, NodeTypeEnum nodeType, boolean inTransaction);
Either<CategoryDefinition, ActionStatus> deleteCategory(NodeTypeEnum nodeType, String categoryId);
@@ -70,6 +74,10 @@ public interface IElementOperation {
Either<SubCategoryDefinition, ActionStatus> createSubCategory(String categoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType);
Either<SubCategoryDefinition, ActionStatus> createSubCategory(String categoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType, boolean inTransaction);
+
+ Either<SubCategoryDefinition, ActionStatus> updateSubCategory(String subCategoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType);
+
+ Either<SubCategoryDefinition, ActionStatus> updateSubCategory(String subCategoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType, boolean inTransaction);
Either<List<CategoryDefinition>, ActionStatus> getAllCategories(NodeTypeEnum nodeType, boolean inTransaction);
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java
index 9d0c7b1075..b536f166c3 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java
@@ -141,6 +141,41 @@ public class ElementOperation implements IElementOperation {
}
}
}
+
+ @Override
+ public Either<CategoryDefinition, ActionStatus> updateCategory(CategoryDefinition category, NodeTypeEnum nodeType) {
+ return updateCategory(category, nodeType, false);
+ }
+
+ @Override
+ public Either<CategoryDefinition, ActionStatus> updateCategory(CategoryDefinition category, NodeTypeEnum nodeType, boolean inTransaction) {
+ Either<CategoryDefinition, ActionStatus> result = null;
+ category.setUniqueId(UniqueIdBuilder.buildCategoryUid(category.getNormalizedName(), nodeType));
+ CategoryData categoryData = new CategoryData(nodeType, category);
+
+ try {
+ Either<CategoryData, JanusGraphOperationStatus> updatedNode = janusGraphGenericDao
+ .updateNode(categoryData, CategoryData.class);
+ if (updatedNode.isRight()) {
+ JanusGraphOperationStatus value = updatedNode.right().value();
+ ActionStatus actionStatus = ActionStatus.GENERAL_ERROR;
+ log.debug("Problem while creating category, reason {}", value);
+ result = Either.right(actionStatus);
+ return result;
+ }
+ CategoryDefinition created = new CategoryDefinition(updatedNode.left().value().getCategoryDataDefinition());
+ result = Either.left(created);
+ return result;
+ } finally {
+ if (!inTransaction) {
+ if (result != null && result.isLeft()) {
+ janusGraphGenericDao.commit();
+ } else {
+ janusGraphGenericDao.rollback();
+ }
+ }
+ }
+ }
@Override
public Either<SubCategoryDefinition, ActionStatus> createSubCategory(String categoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType) {
@@ -170,9 +205,10 @@ public class ElementOperation implements IElementOperation {
CategoryDataDefinition categoryDataDefinition = categoryNode.left().value().getCategoryDataDefinition();
subCategory.setUniqueId(UniqueIdBuilder.buildSubCategoryUid(categoryDataDefinition.getUniqueId(), subCategory.getNormalizedName()));
SubCategoryData subCategoryData = new SubCategoryData(nodeType, subCategory);
-
+
Either<SubCategoryData, JanusGraphOperationStatus> subCategoryNode = janusGraphGenericDao
.createNode(subCategoryData, SubCategoryData.class);
+
if (subCategoryNode.isRight()) {
JanusGraphOperationStatus janusGraphOperationStatus = subCategoryNode.right().value();
log.debug("Problem while creating category, reason {}", janusGraphOperationStatus);
@@ -182,7 +218,7 @@ public class ElementOperation implements IElementOperation {
result = Either.right(actionStatus);
return result;
}
-
+
Either<GraphRelation, JanusGraphOperationStatus> relation = janusGraphGenericDao
.createRelation(categoryNode.left().value(), subCategoryNode.left().value(), GraphEdgeLabels.SUB_CATEGORY, null);
if (relation.isRight()) {
@@ -190,6 +226,7 @@ public class ElementOperation implements IElementOperation {
result = Either.right(actionStatus);
return result;
}
+
SubCategoryDefinition subCategoryCreated = new SubCategoryDefinition(subCategoryNode.left().value().getSubCategoryDataDefinition());
result = Either.left(subCategoryCreated);
return result;
@@ -203,6 +240,43 @@ public class ElementOperation implements IElementOperation {
}
}
}
+
+ @Override
+ public Either<SubCategoryDefinition, ActionStatus> updateSubCategory(String subCategoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType) {
+ return updateSubCategory(subCategoryId, subCategory, nodeType, false);
+ }
+
+ @Override
+ public Either<SubCategoryDefinition, ActionStatus> updateSubCategory(String subCategoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType, boolean inTransaction) {
+
+ Either<SubCategoryDefinition, ActionStatus> result = null;
+ try {
+ subCategory.setUniqueId(subCategoryId);
+ SubCategoryData subCategoryData = new SubCategoryData(nodeType, subCategory);
+
+ Either<SubCategoryData, JanusGraphOperationStatus> subCategoryNode = janusGraphGenericDao
+ .updateNode(subCategoryData, SubCategoryData.class);
+
+ if (subCategoryNode.isRight()) {
+ JanusGraphOperationStatus janusGraphOperationStatus = subCategoryNode.right().value();
+ log.debug("Problem while updating sub category, reason {}", janusGraphOperationStatus);
+ result = Either.right(ActionStatus.GENERAL_ERROR);
+ return result;
+ }
+
+ SubCategoryDefinition subCategoryUpdated = new SubCategoryDefinition(subCategoryNode.left().value().getSubCategoryDataDefinition());
+ result = Either.left(subCategoryUpdated);
+ return result;
+ } finally {
+ if (!inTransaction) {
+ if (result != null && result.isLeft()) {
+ janusGraphGenericDao.commit();
+ } else {
+ janusGraphGenericDao.rollback();
+ }
+ }
+ }
+ }
@Override
public Either<GroupingDefinition, ActionStatus> createGrouping(String subCategoryId, GroupingDefinition grouping, NodeTypeEnum nodeType) {