+ private static Logger log = LogHelper.INSTANCE;
+
+ private static Map<String, Class<? extends Model>> typeToModel = new HashMap<>();
+ static {
+ typeToModel.put("org.openecomp.resource.vf.allottedResource", AllotedResource.class);
+ typeToModel.put("org.openecomp.resource.vfc.AllottedResource", ProvidingService.class);
+ typeToModel.put("org.openecomp.resource.vfc", VServerWidget.class);
+ typeToModel.put("org.openecomp.resource.cp", LIntfWidget.class);
+ typeToModel.put("org.openecomp.cp", LIntfWidget.class);
+ typeToModel.put("org.openecomp.resource.vl", L3Network.class);
+ typeToModel.put("org.openecomp.resource.vf", VirtualFunction.class);
+ typeToModel.put("org.openecomp.groups.vfmodule", VfModule.class);
+ typeToModel.put("org.openecomp.groups.VfModule", VfModule.class);
+ typeToModel.put("org.openecomp.resource.vfc.nodes.heat.cinder", VolumeWidget.class);
+ typeToModel.put("org.openecomp.nodes.PortMirroringConfiguration", Configuration.class);
+ }
+
+ private enum ModelIdentification {
+ ID("vfModuleModelInvariantUUID", "serviceInvariantUUID", "resourceInvariantUUID", "invariantUUID",
+ "providing_service_invariant_uuid") {
+ @Override
+ public void populate(Model model, String value) {
+ model.modelId = value;
+ }
+ },
+ NAME_VERSION_ID("vfModuleModelUUID", "resourceUUID", "serviceUUID", "UUID", "providing_service_uuid") {
+ @Override
+ public void populate(Model model, String value) {
+ model.modelNameVersionId = value;
+ }
+ },
+ VERSION("vfModuleModelVersion", "serviceVersion", "resourceversion", "version") {
+ @Override
+ public void populate(Model model, String value) {
+ model.modelVersion = value;
+ }
+ },
+ NAME("vfModuleModelName", "serviceName", "resourceName", "name") {
+ @Override
+ public void populate(Model model, String value) {
+ model.modelName = value;
+ }
+ },
+ DESCRIPTION("serviceDescription", "resourceDescription", "vf_module_description", "description") {
+ @Override
+ public void populate(Model model, String value) {
+ model.modelDescription = value;
+ }
+ },
+ NAME_AND_DESCRIPTION("providing_service_name") {
+ @Override
+ public void populate(Model model, String value) {
+ model.modelName = model.modelDescription = value;
+ }
+ };
+
+ private static final Map<String, ModelIdentification> propertyToModelIdent;
+ private String[] keys;
+
+ ModelIdentification(String... keys) {
+ this.keys = keys;
+ }
+
+ static {
+ Map<String, ModelIdentification> mappings = new HashMap<>();
+ for (ModelIdentification ident : ModelIdentification.values()) {
+ for (String key : ident.keys) {
+ mappings.put(key, ident);
+ }
+ }
+ propertyToModelIdent = Collections.unmodifiableMap(mappings);
+ }
+
+ private static Optional<ModelIdentification> getModelIdentFromProperty(String property) {
+ return Optional.ofNullable(propertyToModelIdent.get(property));
+ }
+
+ public abstract void populate(Model model, String value);
+ }
+