use of org.opentosca.toscana.model.operation.OperationVariable in project TOSCAna by StuPro-TOSCAna.
the class NodeVisitor method handleStandardLifecycle.
private void handleStandardLifecycle(RootNode node, boolean isTopNode, Application application) {
// get node artifacts
node.getArtifacts().stream().forEach(artifact -> {
String filePath = artifact.getFilePath();
application.setPathToApplication(filePath);
application.addFilePath(filePath);
});
// get StandardLifecycle inputs
for (OperationVariable lifecycleInput : node.getStandardLifecycle().getInputs()) {
addEnvironmentVariable(lifecycleInput);
}
// get operation inputs
for (Operation operation : node.getStandardLifecycle().getOperations()) {
// artifact path
if (operation.getArtifact().isPresent()) {
String path = operation.getArtifact().get().getFilePath();
setPathToApplication(path, isTopNode);
}
// add dependencies paths
for (String dependency : operation.getDependencies()) {
application.addFilePath(dependency);
setPathToApplication(dependency, isTopNode);
}
// add inputs to environment list
for (OperationVariable input : operation.getInputs()) {
addEnvironmentVariable(input);
}
// TODO: investigate what to do with outputs?
}
}
use of org.opentosca.toscana.model.operation.OperationVariable in project TOSCAna by StuPro-TOSCAna.
the class ScalarTypeConverter method convertScalarEntity.
/**
* Converts the value attached to given {@code scalarEntity } to an instance of a type which is specified by given {@code key}.
*/
static <T> T convertScalarEntity(ScalarEntity scalarEntity, ToscaKey<T> key, Entity parent) {
String value = scalarEntity.getValue();
Class targetType = key.getType();
if (String.class.isAssignableFrom(targetType)) {
return (T) value;
} else if (Integer.class.isAssignableFrom(targetType)) {
Integer number;
if (UNBOUNDED.equals(value)) {
number = Integer.MAX_VALUE;
} else {
number = Integer.valueOf(value);
}
return (T) number;
} else if (Boolean.class.isAssignableFrom(targetType)) {
return (T) Boolean.valueOf(value);
} else if (targetType.isEnum()) {
Map<String, T> enumMap = EnumUtils.getEnumMap(targetType);
Optional<T> result = enumMap.entrySet().stream().filter(entry -> value.equalsIgnoreCase(entry.getKey())).map(Map.Entry::getValue).findAny();
return result.orElseThrow(() -> new NoSuchElementException(String.format("No value with name '%s' in enum '%s'", value, targetType.getSimpleName())));
} else if (OperationVariable.class.isAssignableFrom(targetType)) {
Connection c = scalarEntity.getGraph().getEdge(parent, scalarEntity);
String name = null;
OperationVariable var;
if (c != null) {
name = c.getKey();
var = new OperationVariable(scalarEntity, name);
} else {
var = new OperationVariable(scalarEntity);
}
return (T) var;
} else if (SizeUnit.class.isAssignableFrom(targetType)) {
SizeUnit.Unit fromDefaultUnit = (SizeUnit.Unit) key.getDirectives().get(SizeUnit.FROM);
SizeUnit.Unit toUnit = (SizeUnit.Unit) key.getDirectives().get(SizeUnit.TO);
if (fromDefaultUnit == null || toUnit == null) {
throw new IllegalStateException("ToscaKey defining a SizeUnit is illegal: No directive set for source and target units");
}
return (T) SizeUnit.convert(value, fromDefaultUnit, toUnit);
} else if (Port.class.isAssignableFrom(targetType)) {
return (T) new Port(Integer.valueOf(value));
} else {
throw new UnsupportedOperationException(String.format("Cannot convert value of type %s: currently unsupported", targetType.getSimpleName()));
}
}
Aggregations