X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=common-be%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fsdc%2Fbe%2Fdatatypes%2Ftosca%2FToscaDataDefinition.java;h=95875d9bb7354e14db303f0f0f45eadcdb1b9055;hb=98826572a529d01250cf4925dc3f26ac8c35478a;hp=70eaa700aa25308e22c0d85a2889e0e7df9836bb;hpb=7d92498efd0ea61097b241287c004965d46b2c12;p=sdc.git diff --git a/common-be/src/main/java/org/openecomp/sdc/be/datatypes/tosca/ToscaDataDefinition.java b/common-be/src/main/java/org/openecomp/sdc/be/datatypes/tosca/ToscaDataDefinition.java index 70eaa700aa..95875d9bb7 100644 --- a/common-be/src/main/java/org/openecomp/sdc/be/datatypes/tosca/ToscaDataDefinition.java +++ b/common-be/src/main/java/org/openecomp/sdc/be/datatypes/tosca/ToscaDataDefinition.java @@ -1,83 +1,136 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ package org.openecomp.sdc.be.datatypes.tosca; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; +import fj.data.Either; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import java.util.stream.Collectors; - -import org.codehaus.jackson.annotate.JsonCreator; -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.annotate.JsonValue; -import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition; import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields; -import fj.data.Either; - public abstract class ToscaDataDefinition { - - protected Map toscaPresentation; - - - public ToscaDataDefinition(){ - toscaPresentation = new HashMap(); - } - @JsonCreator - public ToscaDataDefinition(Map art){ - toscaPresentation = art; - } - @JsonValue - public Object getToscaPresentationValue(JsonPresentationFields name) { - if (toscaPresentation != null && toscaPresentation.containsKey(name.getPresentation())) { - return toscaPresentation.get(name.getPresentation()); - } - return null; - } - - public void setToscaPresentationValue(JsonPresentationFields name, Object value) { - if (toscaPresentation == null && value !=null) { - toscaPresentation = new HashMap(); - } - toscaPresentation.put(name.getPresentation(), value); - - } - public void setOwnerIdIfEmpty(String ownerId){ - if ( getOwnerId() == null ){ - setOwnerId(ownerId); - } - } - public void setOwnerId(String ownerId){ - setToscaPresentationValue(JsonPresentationFields.OWNER_ID, ownerId); - } - - public String getOwnerId(){ - return (String) getToscaPresentationValue(JsonPresentationFields.OWNER_ID); - } - - - //default merge function for merging data maps - implement where needed and use mergeDataMaps method where applicable instead of map1.putAll(map2) - public T mergeFunction(T other, boolean allowDefaultValueOverride){ - other.setOwnerId(getOwnerId()); - return other; - } - - public static Either, String> mergeDataMaps(Map map1, Map map2){ - return mergeDataMaps(map1, map2, false); - } - - //return Either.right(item key) if an illegal merge was attempted (overriding data type is forbidden) - public static Either, String> mergeDataMaps(Map map1, Map map2, boolean allowDefaultValueOverride){ - for(Entry entry : map2.entrySet()){ - map1.merge(entry.getKey(), entry.getValue(), (item1, item2) -> item1.mergeFunction(item2, allowDefaultValueOverride)); - //validate merge success - if(!map1.containsKey(entry.getKey())) - return Either.right(entry.getKey()); - } - return Either.left(map1); - } - - public static Map listToMapByName(List dataList) { - return null == dataList? new HashMap<>() : dataList.stream() - .collect(Collectors.toMap(p -> (String)p.getToscaPresentationValue(JsonPresentationFields.NAME), p -> p)); - } + + protected Map toscaPresentation; + + protected ToscaDataDefinition() { + toscaPresentation = new HashMap<>(); + } + + @JsonCreator + protected ToscaDataDefinition(Map art) { + toscaPresentation = art; + } + + public static Either, String> mergeDataMaps(Map map1, Map map2) { + return mergeDataMaps(map1, map2, false); + } + + // return Either.right(item key) if an illegal merge was attempted (overriding data type is forbidden) + public static Either, String> mergeDataMaps(Map map1, Map map2, + boolean allowDefaultValueOverride) { + for (Entry entry : map2.entrySet()) { + map1.merge(entry.getKey(), entry.getValue(), (item1, item2) -> item1.mergeFunction(item2, allowDefaultValueOverride)); + // validate merge success + if (!map1.containsKey(entry.getKey())) { + return Either.right(entry.getKey()); + } + } + return Either.left(map1); + } + + public static Map listToMapByName(List dataList) { + return null == dataList ? new HashMap<>() + : dataList.stream().collect(Collectors.toMap(p -> (String) p.getToscaPresentationValue(JsonPresentationFields.NAME), p -> p)); + } + + public static T removeAndCollectByOwnerId(T complexStructure, Set ownerIdList) { + return complexStructure.removeByOwnerId(ownerIdList); + } + + @JsonValue + public Object getToscaPresentationValue(JsonPresentationFields name) { + if (toscaPresentation != null && toscaPresentation.containsKey(name.getPresentation())) { + return toscaPresentation.get(name.getPresentation()); + } + return null; + } + + public void setToscaPresentationValue(JsonPresentationFields name, Object value) { + if (name != null) { + if (toscaPresentation == null) { + toscaPresentation = new HashMap<>(); + } + toscaPresentation.put(name.getPresentation(), value); + } + } + + public void setOwnerIdIfEmpty(String ownerId) { + if (getOwnerId() == null) { + setOwnerId(ownerId); + } + } + + public String getType() { + return (String) getToscaPresentationValue(JsonPresentationFields.TYPE); + } + + public void setType(String type) { + setToscaPresentationValue(JsonPresentationFields.TYPE, type); + } + + public String getVersion() { + return (String) getToscaPresentationValue(JsonPresentationFields.VERSION); + } + + public String getOwnerId() { + return (String) getToscaPresentationValue(JsonPresentationFields.OWNER_ID); + } + + public void setOwnerId(String ownerId) { + setToscaPresentationValue(JsonPresentationFields.OWNER_ID, ownerId); + } + + // default merge function for merging data maps - implement where needed and use mergeDataMaps method where applicable instead of map1.putAll(map2) + public T mergeFunction(T other, boolean allowDefaultValueOverride) { + other.setOwnerId(getOwnerId()); + return other; + } + + public boolean findUidMatch(String uid) { + return uid.equals(getToscaPresentationValue(JsonPresentationFields.UNIQUE_ID)); + } + + public T removeByOwnerId(Set ownerIdList) { + return (T) this; + } + + public T updateIfExist(T other, boolean allowDefaultValueOverride) { + return other; + } + + public boolean isEmpty() { + return false; + } }