From 9039b516eaa55a08d2f97ef290c17de781e13ae2 Mon Sep 17 00:00:00 2001 From: Brinda Santh Date: Fri, 30 Aug 2019 13:57:57 -0400 Subject: Refactor handlers, services to designer api. Change-Id: I3bc56e14fca332c0c0b661bb7e8a501a2dadbe91 Issue-ID: CCSDK-1663 Signed-off-by: Brinda Santh --- .../service/AutoResourceMappingService.kt | 174 --------------------- .../service/BluePrintRepoServiceImpl.kt | 105 ------------- .../ControllerBlueprintExceptionHandler.kt | 57 ------- .../service/controller/ModelTypeController.kt | 58 ------- .../controller/ResourceDictionaryController.kt | 69 -------- .../service/handler/ModelTypeHandler.kt | 122 --------------- .../service/handler/ResourceDictionaryHandler.kt | 147 ----------------- .../repository/BluePrintsReactRepository.kt | 76 --------- .../service/repository/ModelTypeRepository.kt | 85 ---------- .../repository/ResourceDictionaryRepository.kt | 66 -------- .../service/utils/BluePrintEnhancerUtils.kt | 164 ------------------- .../service/validator/ModelTypeValidator.kt | 83 ---------- 12 files changed, 1206 deletions(-) delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/AutoResourceMappingService.kt delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/BluePrintRepoServiceImpl.kt delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/ControllerBlueprintExceptionHandler.kt delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/ModelTypeController.kt delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/ResourceDictionaryController.kt delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/handler/ModelTypeHandler.kt delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/handler/ResourceDictionaryHandler.kt delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/repository/BluePrintsReactRepository.kt delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/repository/ModelTypeRepository.kt delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/repository/ResourceDictionaryRepository.kt delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/utils/BluePrintEnhancerUtils.kt delete mode 100644 ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/validator/ModelTypeValidator.kt (limited to 'ms/controllerblueprints/modules/service/src/main') diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/AutoResourceMappingService.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/AutoResourceMappingService.kt deleted file mode 100644 index 3ab9fee58..000000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/AutoResourceMappingService.kt +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2019 Huawei. - * - * 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. - */ - -package org.onap.ccsdk.cds.controllerblueprints.service - -import com.google.common.base.Preconditions -import org.apache.commons.collections.CollectionUtils -import org.apache.commons.lang3.StringUtils -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException -import org.onap.ccsdk.cds.controllerblueprints.core.data.PropertyDefinition -import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceAssignment -import org.onap.ccsdk.cds.controllerblueprints.resource.dict.utils.ResourceDictionaryUtils -import org.onap.ccsdk.cds.controllerblueprints.service.domain.ResourceDictionary -import org.onap.ccsdk.cds.controllerblueprints.service.model.AutoMapResponse -import org.onap.ccsdk.cds.controllerblueprints.service.repository.ResourceDictionaryRepository -import org.slf4j.LoggerFactory -import org.springframework.stereotype.Service -import java.util.* - -@Service -open class AutoResourceMappingService(private val dataDictionaryRepository: ResourceDictionaryRepository) { - - private val log = LoggerFactory.getLogger(AutoResourceMappingService::class.java) - - @Throws(BluePrintException::class) - fun autoMap(resourceAssignments: MutableList): - AutoMapResponse { - val autoMapResponse = AutoMapResponse() - try { - if (CollectionUtils.isNotEmpty(resourceAssignments)) { - // Create the Dictionary definitions for the ResourceAssignment Names - val dictionaryMap = getDictionaryDefinitions(resourceAssignments) - - for (resourceAssignment in resourceAssignments) { - if (StringUtils.isNotBlank(resourceAssignment.name) - && StringUtils.isBlank(resourceAssignment.dictionaryName)) { - populateDictionaryMapping(dictionaryMap, resourceAssignment) - log.info("Mapped Resource : {}", resourceAssignment) - } - } - } - val dictionaries = getDictionaryDefinitionsList(resourceAssignments) - val resourceAssignmentsFinal = getAllAutoMapResourceAssignments(resourceAssignments) - autoMapResponse.dataDictionaries = dictionaries - autoMapResponse.resourceAssignments = resourceAssignmentsFinal - } catch (e: Exception) { - log.error(String.format("Failed in auto process %s", e.message)) - throw BluePrintException(e, e.message!!) - } - - return autoMapResponse - } - - private fun populateDictionaryMapping(dictionaryMap: Map, resourceAssignment: ResourceAssignment) { - val dbDataDictionary = dictionaryMap[resourceAssignment.name] - if (dbDataDictionary != null && dbDataDictionary.definition != null) { - - val dictionaryDefinition = dbDataDictionary.definition - - if (dictionaryDefinition != null && StringUtils.isNotBlank(dictionaryDefinition.name) - && StringUtils.isBlank(resourceAssignment.dictionaryName)) { - - resourceAssignment.dictionaryName = dbDataDictionary.name - ResourceDictionaryUtils.populateSourceMapping(resourceAssignment, dictionaryDefinition) - } - } - } - - private fun getDictionaryDefinitions(resourceAssignments: List): Map { - val dictionaryMap = HashMap() - val names = ArrayList() - for (resourceAssignment in resourceAssignments) { - if (StringUtils.isNotBlank(resourceAssignment.name)) { - names.add(resourceAssignment.name) - } - } - if (CollectionUtils.isNotEmpty(names)) { - - val dictionaries = dataDictionaryRepository.findByNameIn(names) - if (CollectionUtils.isNotEmpty(dictionaries)) { - for (dataDictionary in dictionaries) { - if (StringUtils.isNotBlank(dataDictionary.name)) { - dictionaryMap[dataDictionary.name] = dataDictionary - } - } - } - } - return dictionaryMap - - } - private fun getDictionaryDefinitionsList(resourceAssignments: List): List? { - var dictionaries: List? = null - val names = ArrayList() - for (resourceAssignment in resourceAssignments) { - if (StringUtils.isNotBlank(resourceAssignment.dictionaryName)) { - - if (!names.contains(resourceAssignment.dictionaryName)) { - names.add(resourceAssignment.dictionaryName!!) - } - - if (resourceAssignment.dependencies != null && !resourceAssignment.dependencies!!.isEmpty()) { - val dependencyNames = resourceAssignment.dependencies - for (dependencyName in dependencyNames!!) { - if (StringUtils.isNotBlank(dependencyName) && !names.contains(dependencyName)) { - names.add(dependencyName) - } - } - } - } - } - if (CollectionUtils.isNotEmpty(names)) { - dictionaries = dataDictionaryRepository.findByNameIn(names) - } - return dictionaries - - } - - private fun getAllAutoMapResourceAssignments(resourceAssignments: MutableList): List { - var dictionaries: List? = null - val names = ArrayList() - for (resourceAssignment in resourceAssignments) { - if (StringUtils.isNotBlank(resourceAssignment.dictionaryName)) { - if (resourceAssignment.dependencies != null && !resourceAssignment.dependencies!!.isEmpty()) { - val dependencyNames = resourceAssignment.dependencies - for (dependencyName in dependencyNames!!) { - if (StringUtils.isNotBlank(dependencyName) && !names.contains(dependencyName) - && !checkAssignmentsExists(resourceAssignments, dependencyName)) { - names.add(dependencyName) - } - } - } - } - } - - if (!names.isEmpty()) { - dictionaries = dataDictionaryRepository.findByNameIn(names) - } - if (dictionaries != null) { - for (rscDictionary in dictionaries) { - val dictionaryDefinition = rscDictionary.definition - Preconditions.checkNotNull(dictionaryDefinition, "failed to get Resource Definition from dictionary definition") - val property = PropertyDefinition() - property.required = true - val resourceAssignment = ResourceAssignment() - resourceAssignment.name = rscDictionary.name - resourceAssignment.dictionaryName = rscDictionary.name - resourceAssignment.version = 0 - resourceAssignment.property = property - ResourceDictionaryUtils.populateSourceMapping(resourceAssignment, dictionaryDefinition) - resourceAssignments.add(resourceAssignment) - } - } - return resourceAssignments - } - - - private fun checkAssignmentsExists(resourceAssignmentsWithDepencies: List, resourceName: String): Boolean { - return resourceAssignmentsWithDepencies.stream().anyMatch { names -> names.name.equals(resourceName, ignoreCase = true) } - } -} \ No newline at end of file diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/BluePrintRepoServiceImpl.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/BluePrintRepoServiceImpl.kt deleted file mode 100644 index e1fa1882d..000000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/BluePrintRepoServiceImpl.kt +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2019 IBM. - * - * 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. - */ - -package org.onap.ccsdk.cds.controllerblueprints.service - -import com.fasterxml.jackson.databind.JsonNode -import com.google.common.base.Preconditions -import org.apache.commons.lang3.StringUtils -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException -import org.onap.ccsdk.cds.controllerblueprints.core.data.* -import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintRepoService -import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils -import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceDefinition -import org.onap.ccsdk.cds.controllerblueprints.service.repository.ModelTypeRepository -import org.onap.ccsdk.cds.controllerblueprints.service.repository.ResourceDictionaryRepository -import org.springframework.stereotype.Service - -interface ResourceDefinitionRepoService : BluePrintRepoService { - - @Throws(BluePrintException::class) - fun getResourceDefinition(resourceDefinitionName: String): ResourceDefinition -} - -@Service -open class BluePrintRepoFileService(private val modelTypeRepository: ModelTypeRepository, - private val resourceDictionaryRepository: ResourceDictionaryRepository) : ResourceDefinitionRepoService { - - @Throws(BluePrintException::class) - override fun getNodeType(nodeTypeName: String): NodeType { - return getModelType(nodeTypeName, NodeType::class.java) - ?: throw BluePrintException("couldn't get NodeType($nodeTypeName)") - } - - @Throws(BluePrintException::class) - override fun getDataType(dataTypeName: String): DataType { - return getModelType(dataTypeName, DataType::class.java) - ?: throw BluePrintException("couldn't get DataType($dataTypeName)") - } - - @Throws(BluePrintException::class) - override fun getArtifactType(artifactTypeName: String): ArtifactType { - return getModelType(artifactTypeName, ArtifactType::class.java) - ?: throw BluePrintException("couldn't get ArtifactType($artifactTypeName)") - } - - @Throws(BluePrintException::class) - override fun getRelationshipType(relationshipTypeName: String): RelationshipType { - return getModelType(relationshipTypeName, RelationshipType::class.java) - ?: throw BluePrintException("couldn't get RelationshipType($relationshipTypeName)") - } - - @Throws(BluePrintException::class) - override fun getCapabilityDefinition(capabilityDefinitionName: String): CapabilityDefinition { - return getModelType(capabilityDefinitionName, CapabilityDefinition::class.java) - ?: throw BluePrintException("couldn't get CapabilityDefinition($capabilityDefinitionName)") - } - - @Throws(BluePrintException::class) - override fun getResourceDefinition(resourceDefinitionName: String): ResourceDefinition { - val dbResourceDictionary = resourceDictionaryRepository.findByName(resourceDefinitionName) - return if (dbResourceDictionary != null) { - dbResourceDictionary.definition - } else { - throw BluePrintException(String.format("failed to get resource dictionary (%s) from repo", resourceDefinitionName)) - } - } - - @Throws(BluePrintException::class) - private fun getModelType(modelName: String, valueClass: Class): T? { - Preconditions.checkArgument(StringUtils.isNotBlank(modelName), - "Failed to get model from repo, model name is missing") - - val modelDefinition = getModelDefinition(modelName) - Preconditions.checkNotNull(modelDefinition, - String.format("Failed to get model content for model name (%s)", modelName)) - - return JacksonUtils.readValue(modelDefinition, valueClass) - } - - @Throws(BluePrintException::class) - private fun getModelDefinition(modelName: String): JsonNode { - val modelDefinition: JsonNode - val modelTypeDb = modelTypeRepository.findByModelName(modelName) - if (modelTypeDb != null) { - modelDefinition = modelTypeDb.definition - } else { - throw BluePrintException(String.format("failed to get model definition (%s) from repo", modelName)) - } - return modelDefinition - } -} \ No newline at end of file diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/ControllerBlueprintExceptionHandler.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/ControllerBlueprintExceptionHandler.kt deleted file mode 100644 index 4537dbb9d..000000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/ControllerBlueprintExceptionHandler.kt +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright © 2018-2019 Bell Canada Intellectual Property. - * - * 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. - */ - -package org.onap.ccsdk.cds.controllerblueprints.service.controller - -import org.springframework.web.bind.annotation.RestControllerAdvice -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException -import org.onap.ccsdk.cds.controllerblueprints.core.data.ErrorCode -import org.onap.ccsdk.cds.controllerblueprints.service.common.ErrorMessage -import org.slf4j.LoggerFactory -import org.springframework.http.HttpStatus -import org.springframework.http.ResponseEntity -import org.springframework.web.bind.annotation.ExceptionHandler - -/** - * ControllerBlueprintExceptionHandler Purpose: Handle exceptions in controllerBlueprint API and provide the right - * HTTP code status - * - * @author Vinal Patel - * @version 1.0 - */ -@RestControllerAdvice("org.onap.ccsdk.cds.controllerblueprints") -open class ControllerBlueprintExceptionHandler { - - companion object ControllerBlueprintExceptionHandler { - val LOG = LoggerFactory.getLogger(ControllerBlueprintExceptionHandler::class.java) - } - - @ExceptionHandler - fun ControllerBlueprintExceptionHandler(e: BluePrintException): ResponseEntity { - var errorCode = ErrorCode.valueOf(e.code) - val errorMessage = ErrorMessage(errorCode?.message(e.message!!), errorCode?.value, "ControllerBluePrint_Error_Message") - LOG.error("Error: $errorCode ${e.message}") - return ResponseEntity(errorMessage, HttpStatus.resolve(errorCode!!.httpCode)) - } - - @ExceptionHandler - fun ControllerBlueprintExceptionHandler(e: Exception): ResponseEntity { - var errorCode = ErrorCode.GENERIC_FAILURE - val errorMessage = ErrorMessage(errorCode?.message(e.message!!), errorCode?.value, "ControllerBluePrint_Error_Message") - LOG.error("Error: $errorCode ${e.message}") - return ResponseEntity(errorMessage, HttpStatus.resolve(errorCode!!.httpCode)) - } -} diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/ModelTypeController.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/ModelTypeController.kt deleted file mode 100644 index 341d63bf0..000000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/ModelTypeController.kt +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2019 IBM. - * - * 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. - */ - -package org.onap.ccsdk.cds.controllerblueprints.service.controller - -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException -import org.onap.ccsdk.cds.controllerblueprints.service.domain.ModelType -import org.onap.ccsdk.cds.controllerblueprints.service.handler.ModelTypeHandler -import kotlinx.coroutines.runBlocking -import org.springframework.http.MediaType -import org.springframework.web.bind.annotation.* - -@RestController -@RequestMapping(value = arrayOf("/api/v1/model-type")) -open class ModelTypeController(private val modelTypeHandler: ModelTypeHandler) { - - @GetMapping(path = arrayOf("/{name}"), produces = arrayOf(MediaType.APPLICATION_JSON_VALUE)) - fun getModelTypeByName(@PathVariable(value = "name") name: String): ModelType? = runBlocking { - modelTypeHandler.getModelTypeByName(name) - } - - @GetMapping(path = arrayOf("/search/{tags}"), produces = arrayOf(MediaType.APPLICATION_JSON_VALUE)) - fun searchModelTypes(@PathVariable(value = "tags") tags: String): List = runBlocking { - modelTypeHandler.searchModelTypes(tags) - } - - @GetMapping(path = arrayOf("/by-definition/{definitionType}"), produces = arrayOf(MediaType.APPLICATION_JSON_VALUE)) - @ResponseBody - fun getModelTypeByDefinitionType(@PathVariable(value = "definitionType") definitionType: String): List = runBlocking { - modelTypeHandler.getModelTypeByDefinitionType(definitionType) - } - - @PostMapping(path = arrayOf(""), produces = arrayOf(MediaType.APPLICATION_JSON_VALUE), consumes = arrayOf(MediaType.APPLICATION_JSON_VALUE)) - @ResponseBody - @Throws(BluePrintException::class) - fun saveModelType(@RequestBody modelType: ModelType): ModelType = runBlocking { - modelTypeHandler.saveModel(modelType) - } - - @DeleteMapping(path = arrayOf("/{name}")) - fun deleteModelTypeByName(@PathVariable(value = "name") name: String) = runBlocking { - modelTypeHandler.deleteByModelName(name) - } -} \ No newline at end of file diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/ResourceDictionaryController.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/ResourceDictionaryController.kt deleted file mode 100644 index d728fc229..000000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/controller/ResourceDictionaryController.kt +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright © 2019 IBM. - * - * 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. - */ - -package org.onap.ccsdk.cds.controllerblueprints.service.controller - -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException -import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceSourceMapping -import org.onap.ccsdk.cds.controllerblueprints.service.domain.ResourceDictionary -import org.onap.ccsdk.cds.controllerblueprints.service.handler.ResourceDictionaryHandler -import kotlinx.coroutines.runBlocking -import org.springframework.http.MediaType -import org.springframework.web.bind.annotation.* - -@RestController -@RequestMapping(value = ["/api/v1/dictionary"]) -open class ResourceDictionaryController(private val resourceDictionaryHandler: ResourceDictionaryHandler) { - - @GetMapping(path = ["/{name}"], produces = [MediaType.APPLICATION_JSON_VALUE]) - @ResponseBody - @Throws(BluePrintException::class) - fun getResourceDictionaryByName(@PathVariable(value = "name") name: String): ResourceDictionary = runBlocking { - resourceDictionaryHandler.getResourceDictionaryByName(name) - } - - @PostMapping(path = [""], produces = [MediaType.APPLICATION_JSON_VALUE], consumes = [MediaType.APPLICATION_JSON_VALUE]) - @ResponseBody - @Throws(BluePrintException::class) - fun saveResourceDictionary(@RequestBody dataDictionary: ResourceDictionary): ResourceDictionary = runBlocking { - resourceDictionaryHandler.saveResourceDictionary(dataDictionary) - } - - @DeleteMapping(path = ["/{name}"]) - fun deleteResourceDictionaryByName(@PathVariable(value = "name") name: String) = runBlocking { - resourceDictionaryHandler.deleteResourceDictionary(name) - } - - @PostMapping(path = ["/by-names"], produces = [MediaType.APPLICATION_JSON_VALUE], consumes = [MediaType.APPLICATION_JSON_VALUE]) - @ResponseBody - fun searchResourceDictionaryByNames(@RequestBody names: List): List = runBlocking { - resourceDictionaryHandler.searchResourceDictionaryByNames(names) - } - - @GetMapping(path = ["/search/{tags}"], produces = [MediaType.APPLICATION_JSON_VALUE]) - @ResponseBody - fun searchResourceDictionaryByTags(@PathVariable(value = "tags") tags: String): List = runBlocking { - resourceDictionaryHandler.searchResourceDictionaryByTags(tags) - - } - - @GetMapping(path = ["/source-mapping"], produces = [MediaType.APPLICATION_JSON_VALUE]) - @ResponseBody - fun getResourceSourceMapping(): ResourceSourceMapping = runBlocking { - resourceDictionaryHandler.getResourceSourceMapping() - } - -} diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/handler/ModelTypeHandler.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/handler/ModelTypeHandler.kt deleted file mode 100644 index d68fdd025..000000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/handler/ModelTypeHandler.kt +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2019 IBM. - * - * 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. - */ - -package org.onap.ccsdk.cds.controllerblueprints.service.handler - -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException -import org.onap.ccsdk.cds.controllerblueprints.service.domain.ModelType -import org.onap.ccsdk.cds.controllerblueprints.service.repository.ModelTypeRepository -import org.onap.ccsdk.cds.controllerblueprints.service.validator.ModelTypeValidator -import org.slf4j.LoggerFactory -import org.springframework.stereotype.Service - -@Service -open class ModelTypeHandler(private val modelTypeRepository: ModelTypeRepository) { - - private val log = LoggerFactory.getLogger(ModelTypeHandler::class.java)!! - - /** - * This is a getModelTypeByName service - * - * @param modelTypeName modelTypeName - * @return ModelType - */ - suspend fun getModelTypeByName(modelTypeName: String): ModelType { - log.info("Searching : $modelTypeName") - check(modelTypeName.isNotBlank()) { "Model Name Information is missing." } - val modelType = modelTypeRepository.findByModelName(modelTypeName) - return if (modelType != null) { - modelType - } else { - throw BluePrintException("couldn't get modelType($modelTypeName)") - } - } - - - /** - * This is a searchModelTypes service - * - * @param tags tags - * @return List - */ - suspend fun searchModelTypes(tags: String): List { - check(tags.isNotBlank()) { "No Search Information provide" } - return modelTypeRepository.findByTagsContainingIgnoreCase(tags) - } - - /** - * This is a saveModel service - * - * @param modelType modelType - * @return ModelType - * @throws BluePrintException BluePrintException - */ - @Throws(BluePrintException::class) - suspend open fun saveModel(modelType: ModelType): ModelType { - lateinit var dbModel: ModelType - ModelTypeValidator.validateModelType(modelType) - val dbModelType: ModelType? = modelTypeRepository.findByModelName(modelType.modelName) - if (dbModelType != null) { - dbModel = dbModelType - dbModel.description = modelType.description - dbModel.definition = modelType.definition - dbModel.definitionType = modelType.definitionType - dbModel.derivedFrom = modelType.derivedFrom - dbModel.tags = modelType.tags - dbModel.version = modelType.version - dbModel.updatedBy = modelType.updatedBy - dbModel = modelTypeRepository.save(dbModel) - } else { - dbModel = modelTypeRepository.save(modelType) - } - return dbModel - } - - - /** - * This is a deleteByModelName service - * - * @param modelName modelName - */ - suspend open fun deleteByModelName(modelName: String) { - check(modelName.isNotBlank()) { "Model Name Information is missing." } - modelTypeRepository.deleteByModelName(modelName) - - } - - /** - * This is a getModelTypeByDefinitionType service - * - * @param definitionType definitionType - * @return List - */ - suspend fun getModelTypeByDefinitionType(definitionType: String): List { - check(definitionType.isNotBlank()) { "Model definitionType Information is missing." } - return modelTypeRepository.findByDefinitionType(definitionType) - } - - /** - * This is a getModelTypeByDerivedFrom service - * - * @param derivedFrom derivedFrom - * @return List - */ - suspend fun getModelTypeByDerivedFrom(derivedFrom: String): List { - check(derivedFrom.isNotBlank()) { "Model derivedFrom Information is missing." } - return modelTypeRepository.findByDerivedFrom(derivedFrom) - } -} \ No newline at end of file diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/handler/ResourceDictionaryHandler.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/handler/ResourceDictionaryHandler.kt deleted file mode 100644 index e339bcd68..000000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/handler/ResourceDictionaryHandler.kt +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2019 IBM. - * - * 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. - */ - -package org.onap.ccsdk.cds.controllerblueprints.service.handler - -import com.google.common.base.Preconditions -import org.apache.commons.collections.CollectionUtils -import org.apache.commons.lang3.StringUtils -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException -import org.onap.ccsdk.cds.controllerblueprints.core.checkNotEmpty -import org.onap.ccsdk.cds.controllerblueprints.resource.dict.ResourceSourceMapping -import org.onap.ccsdk.cds.controllerblueprints.resource.dict.factory.ResourceSourceMappingFactory -import org.onap.ccsdk.cds.controllerblueprints.service.domain.ResourceDictionary -import org.onap.ccsdk.cds.controllerblueprints.service.repository.ResourceDictionaryRepository -import org.springframework.stereotype.Service - -@Service -class ResourceDictionaryHandler(private val resourceDictionaryRepository: ResourceDictionaryRepository) { - - - /** - * This is a getDataDictionaryByName service - * - * @param name name - * @return DataDictionary - * @throws BluePrintException BluePrintException - */ - @Throws(BluePrintException::class) - suspend fun getResourceDictionaryByName(name: String): ResourceDictionary { - Preconditions.checkArgument(StringUtils.isNotBlank(name), "Resource dictionary Name Information is missing.") - val resourceDictionaryDb = resourceDictionaryRepository.findByName(name) - return if (resourceDictionaryDb != null) { - resourceDictionaryDb - } else { - throw BluePrintException(String.format("couldn't get resource dictionary for name (%s)", name)) - } - } - - /** - * This is a searchResourceDictionaryByNames service - * - * @param names names - * @return List - */ - suspend fun searchResourceDictionaryByNames(names: List): List { - Preconditions.checkArgument(CollectionUtils.isNotEmpty(names), "No Search Information provide") - return resourceDictionaryRepository.findByNameIn(names) - } - - /** - * This is a searchResourceDictionaryByTags service - * - * @param tags tags - * @return List - */ - suspend fun searchResourceDictionaryByTags(tags: String): List { - Preconditions.checkArgument(StringUtils.isNotBlank(tags), "No search tag information provide") - return resourceDictionaryRepository.findByTagsContainingIgnoreCase(tags) - } - - /** - * This is a saveDataDictionary service - * - * @param resourceDictionary resourceDictionary - * @return DataDictionary - */ - @Throws(BluePrintException::class) - suspend fun saveResourceDictionary(resourceDictionary: ResourceDictionary): ResourceDictionary { - var resourceDictionary = resourceDictionary - - val resourceDefinition = resourceDictionary.definition - Preconditions.checkNotNull(resourceDefinition, "failed to get resource definition from content") - // Validate the Resource Definitions - //TODO( Save Validator) - //validate(resourceDefinition) - - resourceDictionary.tags = resourceDefinition.tags - resourceDefinition.updatedBy = resourceDictionary.updatedBy - // Set the Property Definitions - val propertyDefinition = resourceDefinition.property - resourceDictionary.description = propertyDefinition.description - resourceDictionary.dataType = propertyDefinition.type - if (propertyDefinition.entrySchema != null) { - resourceDictionary.entrySchema = propertyDefinition.entrySchema!!.type - } - - validateResourceDictionary(resourceDictionary) - - val dbResourceDictionaryData = resourceDictionaryRepository.findByName(resourceDictionary.name) - if (dbResourceDictionaryData != null) { - val dbResourceDictionary = dbResourceDictionaryData - - dbResourceDictionary.name = resourceDictionary.name - dbResourceDictionary.definition = resourceDictionary.definition - dbResourceDictionary.description = resourceDictionary.description - dbResourceDictionary.tags = resourceDictionary.tags - dbResourceDictionary.updatedBy = resourceDictionary.updatedBy - dbResourceDictionary.dataType = resourceDictionary.dataType - dbResourceDictionary.entrySchema = resourceDictionary.entrySchema - resourceDictionary = resourceDictionaryRepository.save(dbResourceDictionary) - } else { - resourceDictionary = resourceDictionaryRepository.save(resourceDictionary) - } - - return resourceDictionary - } - - /** - * This is a deleteResourceDictionary service - * - * @param name name - */ - suspend fun deleteResourceDictionary(name: String) { - check(name.isNotBlank()) { "Resource dictionary name is missing." } - resourceDictionaryRepository.deleteByName(name) - } - - /** - * This is a getResourceSourceMapping service - */ - suspend fun getResourceSourceMapping(): ResourceSourceMapping { - return ResourceSourceMappingFactory.getRegisterSourceMapping() - } - - private fun validateResourceDictionary(resourceDictionary: ResourceDictionary): Boolean { - checkNotEmpty(resourceDictionary.name){ "DataDictionary Definition name is missing."} - checkNotNull(resourceDictionary.definition) { "DataDictionary Definition Information is missing." } - checkNotEmpty(resourceDictionary.description){ "DataDictionary Definition Information is missing."} - checkNotEmpty(resourceDictionary.tags){ "DataDictionary Definition tags is missing."} - checkNotEmpty(resourceDictionary.updatedBy){ "DataDictionary Definition updatedBy is missing."} - return true - } -} \ No newline at end of file diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/repository/BluePrintsReactRepository.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/repository/BluePrintsReactRepository.kt deleted file mode 100644 index 0041fa7c8..000000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/repository/BluePrintsReactRepository.kt +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright © 2018 IBM. - * - * 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. - */ - -package org.onap.ccsdk.cds.controllerblueprints.service.repository - -import org.onap.ccsdk.cds.controllerblueprints.service.domain.ModelType -import org.springframework.stereotype.Service -import reactor.core.publisher.Flux -import reactor.core.publisher.Mono -import reactor.core.scheduler.Schedulers - -/** - * ModelTypeReactRepository. - * - * @author Brinda Santh - */ -@Service -open class ModelTypeReactRepository(private val modelTypeRepository: ModelTypeRepository) { - - fun save(modelType: ModelType): Mono { - return Mono.justOrEmpty(modelTypeRepository.save(modelType)) - } - - fun findByModelName(modelName: String): Mono { - return Mono.justOrEmpty(modelTypeRepository.findByModelName(modelName)) - } - - fun findByModelNameIn(modelNames: List): Flux { - return Flux.fromIterable(modelTypeRepository.findByModelNameIn(modelNames)) - .subscribeOn(Schedulers.elastic()) - } - - fun findByDerivedFrom(derivedFrom: String): Flux { - return Flux.fromIterable(modelTypeRepository.findByDerivedFrom(derivedFrom)) - .subscribeOn(Schedulers.elastic()) - } - - fun findByDerivedFromIn(derivedFroms: List): Flux { - return Flux.fromIterable(modelTypeRepository.findByDerivedFromIn(derivedFroms)) - .subscribeOn(Schedulers.elastic()) - } - - fun findByDefinitionType(definitionType: String): Flux { - return Flux.fromIterable(modelTypeRepository.findByDefinitionType(definitionType)) - .subscribeOn(Schedulers.elastic()) - } - - fun findByDefinitionTypeIn(definitionTypes: List): Flux { - return Flux.fromIterable(modelTypeRepository.findByDefinitionTypeIn(definitionTypes)) - .subscribeOn(Schedulers.elastic()) - } - - fun findByTagsContainingIgnoreCase(tags: String): Flux { - return Flux.fromIterable(modelTypeRepository.findByTagsContainingIgnoreCase(tags)) - .subscribeOn(Schedulers.elastic()) - } - - fun deleteByModelName(modelName: String): Mono { - modelTypeRepository.deleteByModelName(modelName) - return Mono.empty() - } - -} \ No newline at end of file diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/repository/ModelTypeRepository.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/repository/ModelTypeRepository.kt deleted file mode 100644 index 4fefc8144..000000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/repository/ModelTypeRepository.kt +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright © 2017-2018 AT&T Intellectual Property. - * - * 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. - */ - -package org.onap.ccsdk.cds.controllerblueprints.service.repository - -import org.onap.ccsdk.cds.controllerblueprints.service.domain.ModelType -import org.springframework.data.jpa.repository.JpaRepository -import org.springframework.stereotype.Repository -import javax.transaction.Transactional - -@Repository -interface ModelTypeRepository : JpaRepository { - /** - * This is a findByModelName method - * - * @param modelName Model Name - * @return Optional - */ - fun findByModelName(modelName: String): ModelType? - /** - * This is a findByModelNameIn method - * - * @param modelNames Model Names - * @return List - */ - fun findByModelNameIn(modelNames: List): List - /** - * This is a findByDerivedFrom method - * - * @param derivedFrom Derived From - * @return List - */ - fun findByDerivedFrom(derivedFrom: String): List - /** - * This is a findByDerivedFromIn method - * - * @param derivedFroms Derived Froms - * @return List - */ - fun findByDerivedFromIn(derivedFroms: List): List - - /** - * This is a findByDefinitionType method - * - * @param definitionType Definition Type - * @return List - */ - fun findByDefinitionType(definitionType: String): List - /** - * This is a findByDefinitionTypeIn method - * - * @param definitionTypes Definition Types - * @return List - */ - fun findByDefinitionTypeIn(definitionTypes: List): List - - /** - * This is a findByTagsContainingIgnoreCase method - * - * @param tags Tags - * @return Optional - */ - fun findByTagsContainingIgnoreCase(tags: String): List - - /** - * This is a deleteByModelName method - * - * @param modelName ModelName - */ - @Transactional - fun deleteByModelName(modelName: String) -} diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/repository/ResourceDictionaryRepository.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/repository/ResourceDictionaryRepository.kt deleted file mode 100644 index b1b633a10..000000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/repository/ResourceDictionaryRepository.kt +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright © 2019 IBM. - * - * 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. - */ - -package org.onap.ccsdk.cds.controllerblueprints.service.repository - -import org.onap.ccsdk.cds.controllerblueprints.service.domain.ResourceDictionary -import org.springframework.data.jpa.repository.JpaRepository -import org.springframework.stereotype.Repository - - -/** - * ResourceMappingRepository.java Purpose: Provide Configuration Generator ResourceMappingRepository - * - * @author Brinda Santh - * @version 1.0 - */ -@Repository -interface ResourceDictionaryRepository : JpaRepository { - - - /** - * This is a findByName method - * - * @param name name - * @return Optional - */ - fun findByName(name: String): ResourceDictionary? - - /** - * This is a findByNameIn method - * - * @param names names - * @return Optional - */ - fun findByNameIn(names: List): List - - /** - * This is a findByTagsContainingIgnoreCase method - * - * @param tags tags - * @return Optional - */ - fun findByTagsContainingIgnoreCase(tags: String): List - - /** - * This is a deleteByName method - * - * @param name name - */ - fun deleteByName(name: String) - - -} diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/utils/BluePrintEnhancerUtils.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/utils/BluePrintEnhancerUtils.kt deleted file mode 100644 index 97b9a813a..000000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/utils/BluePrintEnhancerUtils.kt +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright © 2017-2018 AT&T Intellectual Property. - * Modifications Copyright © 2019 Bell Canada. - * Modifications Copyright © 2019 IBM. - * - * 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. - */ - -package org.onap.ccsdk.cds.controllerblueprints.service.utils - -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.reactive.awaitSingle -import kotlinx.coroutines.withContext -import org.onap.ccsdk.cds.controllerblueprints.core.* -import org.onap.ccsdk.cds.controllerblueprints.core.data.* -import org.onap.ccsdk.cds.controllerblueprints.core.interfaces.BluePrintRepoService -import org.onap.ccsdk.cds.controllerblueprints.core.service.BluePrintContext -import org.onap.ccsdk.cds.controllerblueprints.core.utils.BluePrintArchiveUtils -import org.springframework.core.io.ByteArrayResource -import org.springframework.core.io.Resource -import org.springframework.http.HttpHeaders -import org.springframework.http.MediaType -import org.springframework.http.ResponseEntity -import org.springframework.http.codec.multipart.FilePart -import org.springframework.util.StringUtils -import reactor.core.publisher.Mono -import java.io.File -import java.io.IOException -import java.nio.file.Path -import java.nio.file.Paths -import java.util.* - - -class BluePrintEnhancerUtils { - companion object { - - fun populateDataTypes(bluePrintContext: BluePrintContext, bluePrintRepoService: BluePrintRepoService, - dataTypeName: String): DataType { - val dataType = bluePrintContext.serviceTemplate.dataTypes?.get(dataTypeName) - ?: bluePrintRepoService.getDataType(dataTypeName) - ?: throw BluePrintException("couldn't get DataType($dataTypeName) from repo.") - bluePrintContext.serviceTemplate.dataTypes?.put(dataTypeName, dataType) - return dataType - } - - fun populateRelationshipType(bluePrintContext: BluePrintContext, bluePrintRepoService: BluePrintRepoService, - relationshipName: String): RelationshipType { - - val relationshipType = bluePrintContext.serviceTemplate.relationshipTypes?.get(relationshipName) - ?: bluePrintRepoService.getRelationshipType(relationshipName) - ?: throw BluePrintException("couldn't get RelationshipType($relationshipName) from repo.") - bluePrintContext.serviceTemplate.relationshipTypes?.put(relationshipName, relationshipType) - return relationshipType - } - - - fun populateNodeType(bluePrintContext: BluePrintContext, bluePrintRepoService: BluePrintRepoService, - nodeTypeName: String): NodeType { - - val nodeType = bluePrintContext.serviceTemplate.nodeTypes?.get(nodeTypeName) - ?: bluePrintRepoService.getNodeType(nodeTypeName) - ?: throw BluePrintException("couldn't get NodeType($nodeTypeName) from repo.") - bluePrintContext.serviceTemplate.nodeTypes?.put(nodeTypeName, nodeType) - return nodeType - } - - fun populateArtifactType(bluePrintContext: BluePrintContext, bluePrintRepoService: BluePrintRepoService, - artifactTypeName: String): ArtifactType { - - val artifactType = bluePrintContext.serviceTemplate.artifactTypes?.get(artifactTypeName) - ?: bluePrintRepoService.getArtifactType(artifactTypeName) - ?: throw BluePrintException("couldn't get ArtifactType($artifactTypeName) from repo.") - bluePrintContext.serviceTemplate.artifactTypes?.put(artifactTypeName, artifactType) - return artifactType - } - - suspend fun copyFromFilePart(filePart: FilePart, targetFile: File): File { - // Delete the Directory - targetFile.deleteRecursively() - return filePart.transferTo(targetFile) - .thenReturn(targetFile) - .awaitSingle() - } - - suspend fun extractCompressFilePart(filePart: FilePart, archiveDir: String, enhanceDir: String): File { - //Recreate the Base Directories - normalizedFile(archiveDir).reCreateDirs() - normalizedFile(enhanceDir).reCreateDirs() - val filePartFile = normalizedFile(archiveDir, "cba.zip") - // Copy the File Part to ZIP - return copyFromFilePart(filePart, filePartFile) - } - - suspend fun decompressFilePart(filePart: FilePart, archiveDir: String, enhanceDir: String): File { - val filePartFile = extractCompressFilePart(filePart, archiveDir, enhanceDir) - val deCompressFileName = normalizedPathName(enhanceDir) - return filePartFile.deCompress(deCompressFileName) - } - - suspend fun compressToFilePart(enhanceDir: String, archiveDir: String, - outputFileName:String="enhanced-cba.zip"): ResponseEntity { - val compressedFile = normalizedFile(archiveDir, outputFileName) - BluePrintArchiveUtils.compress(Paths.get(enhanceDir).toFile(), compressedFile) - return prepareResourceEntity(compressedFile.name, compressedFile.readBytes()) - } - - suspend fun prepareResourceEntity(fileName: String, file: ByteArray): ResponseEntity { - return ResponseEntity.ok() - .contentType(MediaType.parseMediaType("text/plain")) - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"$fileName\"") - .body(ByteArrayResource(file)) - } - - suspend fun cleanEnhancer(archiveLocation: String, enhancementLocation: String) = withContext(Dispatchers.Default) { - deleteDir(archiveLocation) - deleteDir(enhancementLocation) - } - - /** - * This is a saveCBAFile method - * take a [FilePart], transfer it to disk using a Flux of FilePart and return a [Mono] representing the CBA file name - * - * @param (filePart, targetDirectory) - the request part containing the file to be saved and the default directory where to save - * @return a [Mono] String representing the result of the operation - * @throws (BluePrintException, IOException) BluePrintException, IOException - */ - @Throws(BluePrintException::class, IOException::class) - fun saveCBAFile(filePart: FilePart, targetDirectory: Path): Mono { - - // Normalize file name - val fileName = StringUtils.cleanPath(filePart.filename()) - - // Check if the file's extension is "CBA" - if (StringUtils.getFilenameExtension(fileName) != "zip") { - throw BluePrintException(ErrorCode.INVALID_FILE_EXTENSION.value, "Invalid file extension required ZIP") - } - - // Change file name to match a pattern - val changedFileName = UUID.randomUUID().toString() + ".zip" - //String changedFileName = BluePrintFileUtils.Companion.getCBAGeneratedFileName(fileName, this.CBA_FILE_NAME_PATTERN); - - // Copy file to the target location (Replacing existing file with the same name) - val targetLocation = targetDirectory.resolve(changedFileName) - - // if a file with the same name already exists in a repository, delete and recreate it - val file = File(targetLocation.toString()) - if (file.exists()) - file.delete() - file.createNewFile() - - return filePart.transferTo(file).thenReturn(changedFileName) - } - } -} diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/validator/ModelTypeValidator.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/validator/ModelTypeValidator.kt deleted file mode 100644 index 9bfb29c23..000000000 --- a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/cds/controllerblueprints/service/validator/ModelTypeValidator.kt +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright © 2017-2018 AT&T Intellectual Property. - * - * 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. - */ - -package org.onap.ccsdk.cds.controllerblueprints.service.validator - -import com.fasterxml.jackson.databind.JsonNode -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException -import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes -import org.onap.ccsdk.cds.controllerblueprints.core.data.* -import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils -import org.onap.ccsdk.cds.controllerblueprints.service.domain.ModelType - -class ModelTypeValidator { - companion object { - /** - * This is a validateModelTypeDefinition - * - * @param definitionType definitionType - * @param definitionContent definitionContent - * @return boolean - */ - fun validateModelTypeDefinition(definitionType: String, definitionContent: JsonNode): Boolean { - - when (definitionType) { - BluePrintConstants.MODEL_DEFINITION_TYPE_DATA_TYPE -> { - JacksonUtils.readValue(definitionContent, DataType::class.java) - ?: throw BluePrintException("Model type definition is not DataType valid content $definitionContent") - } - BluePrintConstants.MODEL_DEFINITION_TYPE_NODE_TYPE -> { - JacksonUtils.readValue(definitionContent, NodeType::class.java) - ?: throw BluePrintException("Model type definition is not NodeType valid content $definitionContent") - } - BluePrintConstants.MODEL_DEFINITION_TYPE_ARTIFACT_TYPE -> { - JacksonUtils.readValue(definitionContent, ArtifactType::class.java) - ?: throw BluePrintException("Model type definition is not ArtifactType valid content $definitionContent") - } - BluePrintConstants.MODEL_DEFINITION_TYPE_CAPABILITY_TYPE -> { - JacksonUtils.readValue(definitionContent, CapabilityDefinition::class.java) - ?: throw BluePrintException("Model type definition is not CapabilityDefinition valid content $definitionContent") - } - BluePrintConstants.MODEL_DEFINITION_TYPE_RELATIONSHIP_TYPE -> { - JacksonUtils.readValue(definitionContent, RelationshipType::class.java) - ?: throw BluePrintException("Model type definition is not RelationshipType valid content $definitionContent") - } - } - return true - } - - /** - * This is a validateModelType method - * - * @param modelType modelType - * @return boolean - */ - fun validateModelType(modelType: ModelType?): Boolean { - checkNotNull(modelType) { "Model Type Information is missing." } - - val validRootTypes = BluePrintTypes.validModelTypes() - - check(validRootTypes.contains(modelType.definitionType)) { - "Not Valid Model Root Type(${modelType.definitionType}), It should be $validRootTypes" - } - - validateModelTypeDefinition(modelType.definitionType, modelType.definition) - return true - } - } - -} -- cgit 1.2.3-korg