package org.openecomp.sdc.be.datatypes.elements;
+import com.fasterxml.jackson.annotation.JsonIgnore;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import org.openecomp.sdc.be.datatypes.enums.PropertySource;
import org.openecomp.sdc.be.datatypes.tosca.ToscaGetFunctionType;
private String sourceName;
private ToscaGetFunctionType functionType;
private List<String> propertyPathFromSource = new ArrayList<>();
+ private List<Object> toscaIndexList;
public ToscaGetFunctionDataDefinition() {
//necessary for JSON conversions
}
+ @JsonIgnore
public boolean isSubProperty() {
return propertyPathFromSource != null && propertyPathFromSource.size() > 1;
}
return new Gson().toJson(getJsonObjectValue());
}
+ @JsonIgnore
@Override
public Object getJsonObjectValue() {
if (functionType == null) {
);
}
if (propertySource == PropertySource.SELF) {
+ if (CollectionUtils.isNotEmpty(toscaIndexList)) {
+ List<Object> parsedIndexList = new ArrayList<Object>();
+ toscaIndexList.forEach((obj) -> {
+ parsedIndexList.add(StringUtils.isNumeric(obj.toString()) ? Integer.parseInt(obj.toString()) : obj);
+ });
+ return Map.of(functionType.getFunctionName(),
+ Stream.concat(Stream.of(PropertySource.SELF.getName()), Stream.concat(propertyPathFromSource.stream(),parsedIndexList.stream())).collect(Collectors.toList())
+ );
+ }
return Map.of(functionType.getFunctionName(),
Stream.concat(Stream.of(PropertySource.SELF.getName()), propertyPathFromSource.stream()).collect(Collectors.toList())
);
String.format("sourceName is required in order to generate the %s from INSTANCE value", functionType.getFunctionName())
);
}
+ if (CollectionUtils.isNotEmpty(toscaIndexList)) {
+ List<Object> parsedIndexList = new ArrayList<Object>();
+ toscaIndexList.forEach((obj) -> {
+ parsedIndexList.add(StringUtils.isNumeric(obj.toString()) ? Integer.parseInt(obj.toString()) : obj);
+ });
+ return Map.of(functionType.getFunctionName(),
+ Stream.concat(Stream.of(sourceName), Stream.concat(propertyPathFromSource.stream(),parsedIndexList.stream())).collect(Collectors.toList())
+ );
+ }
return Map.of(functionType.getFunctionName(),
Stream.concat(Stream.of(sourceName), propertyPathFromSource.stream()).collect(Collectors.toList())
);
}
private Map<String, Object> buildGetInputFunctionValue() {
+ List<Object> propertySourceCopy = new ArrayList<Object>(this.propertyPathFromSource);
+ List<Object> propertySourceOneCopy = new ArrayList<>();
+ propertySourceOneCopy.add(this.propertyPathFromSource.get(0));
+ if (CollectionUtils.isNotEmpty(toscaIndexList)) {
+ propertySourceCopy.addAll(toscaIndexList);
+ propertySourceOneCopy.addAll(toscaIndexList);
+ }
if (this.propertyPathFromSource.size() == 1) {
- return Map.of(this.functionType.getFunctionName(), this.propertyPathFromSource.get(0));
+ return Map.of(this.functionType.getFunctionName(), propertySourceOneCopy);
}
- return Map.of(this.functionType.getFunctionName(), this.propertyPathFromSource);
+ return Map.of(this.functionType.getFunctionName(), propertySourceCopy);
}
@Override
}
}
+ @JsonIgnore
@Override
public String getValue() {
return this.generatePropertyValue();