X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fbabel%2Fxml%2Fgenerator%2Fmodel%2FModel.java;h=c33127eabeb19a6db1cf43c9ae84baf56753aeeb;hb=447fa891f14d0c6e379ca4d5bf326802aa91bb62;hp=0e2b8d57790c2c4f9007e6fbd7fdd9e25183c917;hpb=7fcc74469c941c1834cd02b54ff5ca88a53bf83b;p=aai%2Fbabel.git diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/Model.java b/src/main/java/org/onap/aai/babel/xml/generator/model/Model.java index 0e2b8d5..c33127e 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/Model.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/model/Model.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2019 European Software Marketing Ltd. + * Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.babel.xml.generator.model; import java.util.Collections; @@ -27,20 +28,13 @@ import java.util.Iterator; import java.util.Map; import java.util.Optional; import java.util.Set; -import org.onap.aai.babel.logging.ApplicationMsgs; -import org.onap.aai.babel.logging.LogHelper; +import org.onap.aai.babel.xml.generator.XmlArtifactGenerationException; import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; -import org.onap.aai.babel.xml.generator.error.IllegalAccessException; -import org.onap.aai.babel.xml.generator.types.Cardinality; -import org.onap.aai.babel.xml.generator.types.ModelType; -import org.onap.aai.cl.api.Logger; public abstract class Model { public static final String GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION = "Operation Not Supported for Widgets"; - private static Logger log = LogHelper.INSTANCE; - private enum ModelIdentification { ID("vfModuleModelInvariantUUID", "serviceInvariantUUID", "resourceInvariantUUID", "invariantUUID", "providing_service_invariant_uuid") { @@ -73,6 +67,12 @@ public abstract class Model { model.modelDescription = value; } }, + ORCHESTRATION_TYPE("instantiationType"){ + @Override + public void populate(Model model, String value) { + model.instantiationType = value; + } + }, NAME_AND_DESCRIPTION("providing_service_name") { @Override public void populate(Model model, String value) { @@ -104,50 +104,41 @@ public abstract class Model { public abstract void populate(Model model, String value); } - private String modelId; + private String modelId; // model-invariant-id private String modelName; - private String modelNameVersionId; + private String modelNameVersionId; // model-version-id private String modelVersion; private String modelDescription; - + private String instantiationType; protected Set resources = new HashSet<>(); protected Set widgets = new HashSet<>(); /** - * Gets the object (model) corresponding to the supplied TOSCA type. + * Gets the Resource Model corresponding to the supplied TOSCA type. * * @param toscaType * the tosca type * @return the model for the type, or null */ - public static Model getModelFor(String toscaType) { - Model model = null; + public static Resource getModelFor(String toscaType) { + Resource resource = null; if (toscaType != null && !toscaType.isEmpty()) { - model = getModelFromType(toscaType).orElseGet(() -> Model.getModelFromPrefix(toscaType)); + resource = getModelFromType(toscaType).orElseGet(() -> Model.getModelFromPrefix(toscaType)); } - return model; + return resource; } - private static Model getModelFromPrefix(String toscaType) { - Model model = null; + private static Resource getModelFromPrefix(String toscaType) { + Resource resource = null; int lastSeparator = toscaType.lastIndexOf('.'); if (lastSeparator != -1) { - model = getModelFor(toscaType.substring(0, lastSeparator)); + resource = getModelFor(toscaType.substring(0, lastSeparator)); } - return model; + return resource; } - private static Optional getModelFromType(String typePrefix) { - Optional modelToBeReturned = Optional.empty(); - Class clazz = WidgetConfigurationUtil.getModelFromType(typePrefix); - if (clazz != null) { - try { - modelToBeReturned = Optional.ofNullable(clazz.getConstructor().newInstance()); - } catch (Exception e) { - log.error(ApplicationMsgs.INVALID_CSAR_FILE, e); - } - } - return modelToBeReturned; + private static Optional getModelFromType(String typePrefix) { + return WidgetConfigurationUtil.createModelFromType(typePrefix); } /** @@ -160,31 +151,38 @@ public abstract class Model { * the type from the TOSCA metadata * @return the model for the type, or null */ - public static Model getModelFor(String toscaType, String metaDataType) { + public static Resource getModelFor(String toscaType, String metaDataType) { if ("Configuration".equals(metaDataType)) { - return new Configuration(); + return new Resource(WidgetType.valueOf("CONFIGURATION"), true); } else if ("CR".equals(metaDataType)) { - return new CR(); + return new Resource(WidgetType.valueOf("CR"), true); } else { return getModelFor(toscaType); } } - public abstract boolean addResource(Resource resource); + public abstract boolean addWidget(Widget resource) throws XmlArtifactGenerationException; - public abstract boolean addWidget(Widget resource); + /** + * @return the Widget Type of this model. + */ + public abstract WidgetType getWidgetType(); - public abstract Widget.Type getWidgetType(); + public abstract String getModelTypeName(); /** - * Gets cardinality. + * Check whether the model's Widget Type matches the supplied type. * - * @return the cardinality + * @param type + * the Widget Type to compare + * @return true if the Widget Type of this model matches the supplied type */ - public Cardinality getCardinality() { - org.onap.aai.babel.xml.generator.types.Model model = - this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); - return model.cardinality(); + public boolean hasWidgetType(String type) { + return getWidgetType() == WidgetType.valueOf(type); + } + + public boolean addResource(Resource resource) { + return resources.add(resource); } /** @@ -193,9 +191,7 @@ public abstract class Model { * @return the delete flag */ public boolean getDeleteFlag() { - org.onap.aai.babel.xml.generator.types.Model model = - this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); - return model.dataDeleteFlag(); + return true; } public String getModelDescription() { @@ -203,7 +199,6 @@ public abstract class Model { } public String getModelId() { - checkSupported(); return modelId; } @@ -216,47 +211,31 @@ public abstract class Model { } public String getModelNameVersionId() { - checkSupported(); return modelNameVersionId; } - /** - * Gets model type. - * - * @return the model type - */ - public ModelType getModelType() { - if (this instanceof Service) { - return ModelType.SERVICE; - } else if (this instanceof Resource) { - return ModelType.RESOURCE; - } else if (this instanceof Widget) { - return ModelType.WIDGET; - } else { - return null; - } + public String getInstantiationType() { + return instantiationType; } /** * Gets widget version id. * * @return the widget version id + * @throws XmlArtifactGenerationException */ - public String getWidgetId() { - org.onap.aai.babel.xml.generator.types.Model model = - this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); - return Widget.getWidget(model.widget()).getId(); + public String getWidgetId() throws XmlArtifactGenerationException { + return Widget.createWidget(getWidgetType()).getId(); } /** * Gets invariant id. * * @return the invariant id + * @throws XmlArtifactGenerationException */ - public String getWidgetInvariantId() { - org.onap.aai.babel.xml.generator.types.Model model = - this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); - return Widget.getWidget(model.widget()).getWidgetId(); + public String getWidgetInvariantId() throws XmlArtifactGenerationException { + return Widget.createWidget(getWidgetType()).getWidgetId(); } /** @@ -266,6 +245,9 @@ public abstract class Model { * the model ident info */ public void populateModelIdentificationInformation(Map modelIdentInfo) { + if (modelIdentInfo == null) { + return; + } Iterator iter = modelIdentInfo.keySet().iterator(); String property; while (iter.hasNext()) { @@ -289,10 +271,9 @@ public abstract class Model { return widgets; } - private void checkSupported() { - if (this instanceof Widget) { - throw new IllegalAccessException(GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION); - } + @Override + public String toString() { + return "Model [type=" + getModelTypeName() + ", name=" + getModelName() + "]"; } }