[SDC-29] rebase continue work to align source
[sdc.git] / asdctool / src / main / java / org / openecomp / sdc / asdctool / impl / migration / v1707 / jsonmodel / ServiceCategoriesMigration.java
1 package org.openecomp.sdc.asdctool.impl.migration.v1707.jsonmodel;
2
3 import fj.data.Either;
4 import org.openecomp.sdc.be.dao.api.ActionStatus;
5 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
6 import org.openecomp.sdc.be.model.category.CategoryDefinition;
7 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
8 import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
9
10 import javax.annotation.Resource;
11 import java.util.List;
12
13 import static org.openecomp.sdc.asdctool.impl.migration.v1707.MigrationUtils.handleError;
14
15 public class ServiceCategoriesMigration extends JsonModelMigration<CategoryDefinition> {
16
17     @Resource(name = "element-operation")
18     private IElementOperation elementOperation;
19
20     @Resource(name = "element-operation-migration")
21     private IElementOperation elementOperationMigration;
22
23
24     @Override
25     public String description() {
26         return "migrate services categories";
27     }
28
29     @Override
30     Either<List<CategoryDefinition>, ?> getElementsToMigrate() {
31         return elementOperation.getAllCategories(NodeTypeEnum.ServiceNewCategory, false).left().map(CategoriesUtils::filterOldCategories);
32     }
33
34     @Override
35     Either<CategoryDefinition, ?> getElementFromNewGraph(CategoryDefinition node) {
36         String categoryUid = UniqueIdBuilder.buildCategoryUid(node.getNormalizedName(), NodeTypeEnum.ServiceNewCategory);//in malformed graph there are some categories with different id but same normalized name. so in new graph they same id
37         return elementOperationMigration.getCategory(NodeTypeEnum.ServiceNewCategory, categoryUid);
38     }
39
40     @Override
41     boolean save(CategoryDefinition graphNode) {
42         return elementOperationMigration.createCategory(graphNode, NodeTypeEnum.ServiceNewCategory)
43                 .either(savedCategory -> true,
44                         err -> handleError(String.format("failed to save category %s. error: %s", graphNode.getName(), err.name())));
45     }
46
47     @Override
48     ActionStatus getNotFoundErrorStatus() {
49         return ActionStatus.COMPONENT_CATEGORY_NOT_FOUND;
50     }
51 }