2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen;
23 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
24 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
25 import com.amdocs.zusammen.datatypes.Id;
26 import com.amdocs.zusammen.datatypes.SessionContext;
27 import com.amdocs.zusammen.datatypes.item.Action;
28 import com.amdocs.zusammen.datatypes.item.ElementContext;
29 import com.amdocs.zusammen.datatypes.item.Info;
30 import org.openecomp.core.utilities.file.FileUtils;
31 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
32 import org.openecomp.sdc.datatypes.model.ElementType;
33 import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao;
34 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToDeploymentFlavorConvertor;
35 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity;
36 import org.openecomp.sdc.versioning.dao.types.Version;
37 import org.openecomp.types.ElementPropertyName;
39 import java.io.ByteArrayInputStream;
40 import java.util.Collection;
41 import java.util.Optional;
42 import java.util.stream.Collectors;
44 import static org.openecomp.core.zusammen.api.ZusammenUtil.*;
46 public class DeploymentFlavorDaoZusammenImpl implements DeploymentFlavorDao {
48 private ZusammenAdaptor zusammenAdaptor;
50 public DeploymentFlavorDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
51 this.zusammenAdaptor = zusammenAdaptor;
55 public void registerVersioning(String versionableEntityType) {
56 // registerVersioning not implemented for DeploymentFlavorDaoZusammenImpl
60 public Collection<DeploymentFlavorEntity> list(DeploymentFlavorEntity deploymentFlavor) {
61 SessionContext context = createSessionContext();
62 ElementContext elementContext =
63 new ElementContext(deploymentFlavor.getVspId(), deploymentFlavor.getVersion().getId());
65 return listDeploymentFlavor(zusammenAdaptor, context, elementContext,
66 deploymentFlavor.getVspId(),
67 deploymentFlavor.getVersion());
70 private static Collection<DeploymentFlavorEntity> listDeploymentFlavor(
71 ZusammenAdaptor zusammenAdaptor,
72 SessionContext context,
73 ElementContext elementContext,
74 String vspId, Version version) {
75 ElementToDeploymentFlavorConvertor convertor = new ElementToDeploymentFlavorConvertor();
76 return zusammenAdaptor
77 .listElementsByName(context, elementContext, null,
78 ElementType.DeploymentFlavors.name())
79 .stream().map(elementInfo -> {
80 DeploymentFlavorEntity entity = convertor.convert(
82 entity.setVspId(vspId);
83 entity.setVersion(version);
86 .collect(Collectors.toList());
91 public void create(DeploymentFlavorEntity deploymentFlavor) {
92 ZusammenElement deploymentFlavorElement = deploymentFlavorToZusammen(deploymentFlavor,
94 ZusammenElement deploymentFlavorElements =
95 buildStructuralElement(ElementType.DeploymentFlavors, Action.IGNORE);
96 deploymentFlavorElements.getSubElements().add(deploymentFlavorElement);
98 SessionContext context = createSessionContext();
99 Element savedElement = zusammenAdaptor.saveElement(context,
100 new ElementContext(deploymentFlavor.getVspId(), deploymentFlavor.getVersion().getId()),
101 deploymentFlavorElements, "Create deloymentFlavor");
102 deploymentFlavor.setId(savedElement.getSubElements().iterator().next().getElementId()
107 public void update(DeploymentFlavorEntity deploymentFlavor) {
108 ZusammenElement deploymentFlavorElement = deploymentFlavorToZusammen(deploymentFlavor,
111 SessionContext context = createSessionContext();
112 zusammenAdaptor.saveElement(context,
113 new ElementContext(deploymentFlavor.getVspId(), deploymentFlavor.getVersion().getId()),
114 deploymentFlavorElement, String.format("Update deloymentFlavor with id %s",
115 deploymentFlavor.getId()));
119 public DeploymentFlavorEntity get(DeploymentFlavorEntity deploymentFlavor) {
120 SessionContext context = createSessionContext();
121 ElementContext elementContext =
122 new ElementContext(deploymentFlavor.getVspId(), deploymentFlavor.getVersion().getId());
124 Optional<Element> element =
125 zusammenAdaptor.getElement(context, elementContext, deploymentFlavor.getId());
127 if (element.isPresent()) {
128 ElementToDeploymentFlavorConvertor convertor = new ElementToDeploymentFlavorConvertor();
129 DeploymentFlavorEntity entity = convertor.convert(element.get());
130 deploymentFlavor.setCompositionData(new String(FileUtils.toByteArray(element.get()
132 entity.setVspId(deploymentFlavor.getVspId());
133 entity.setVersion(deploymentFlavor.getVersion());
140 public void delete(DeploymentFlavorEntity deploymentFlavor) {
141 ZusammenElement componentElement =
142 buildElement(new Id(deploymentFlavor.getId()), Action.DELETE);
144 SessionContext context = createSessionContext();
145 zusammenAdaptor.saveElement(context,
146 new ElementContext(deploymentFlavor.getVspId(), deploymentFlavor.getVersion().getId()),
147 componentElement, String.format("Delete deloymentFlavor with id %s",
148 deploymentFlavor.getId()));
152 public void deleteAll(String vspId, Version version) {
153 SessionContext context = createSessionContext();
154 ElementContext elementContext = new ElementContext(vspId, version.getId());
156 Optional<Element> optionalElement = zusammenAdaptor.getElementByName(context,
157 elementContext, null, ElementType.DeploymentFlavors.name());
159 if (optionalElement.isPresent()) {
160 Element deploymentFlavorsElement = optionalElement.get();
161 Collection<Element> deploymentFlavors = deploymentFlavorsElement.getSubElements();
163 deploymentFlavors.forEach(deplymentFlavor -> {
164 ZusammenElement deplymentFlavorZusammenElement =
165 buildElement(deplymentFlavor.getElementId(), Action.DELETE);
166 zusammenAdaptor.saveElement(context,
167 elementContext, deplymentFlavorZusammenElement, " Delete Deplyment Flavor with id "
168 + deplymentFlavor.getElementId());
173 private ZusammenElement deploymentFlavorToZusammen(DeploymentFlavorEntity deploymentFlavor,
175 ZusammenElement deploymentFlavorElement =
176 buildElement(deploymentFlavor.getId() == null ? null : new Id(deploymentFlavor.getId()),
178 Info info = new Info();
179 info.addProperty(ElementPropertyName.elementType.name(), ElementType.DeploymentFlavor);
180 info.addProperty(ElementPropertyName.compositionData.name(), deploymentFlavor
181 .getCompositionData());
182 deploymentFlavorElement.setInfo(info);
183 deploymentFlavorElement.setData(new ByteArrayInputStream(deploymentFlavor.getCompositionData()
185 return deploymentFlavorElement;