Migrate ccsdk/apps to ccsdk/cds
[ccsdk/cds.git] / ms / controllerblueprints / modules / service / src / main / kotlin / org / onap / ccsdk / cds / controllerblueprints / service / handler / ModelTypeHandler.kt
1 /*
2  * Copyright © 2017-2018 AT&T Intellectual Property.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.onap.ccsdk.cds.controllerblueprints.service.handler
18
19 import com.att.eelf.configuration.EELFManager
20 import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException
21 import org.onap.ccsdk.cds.controllerblueprints.service.domain.ModelType
22 import org.onap.ccsdk.cds.controllerblueprints.service.repository.ModelTypeRepository
23 import org.onap.ccsdk.cds.controllerblueprints.service.validator.ModelTypeValidator
24 import org.springframework.stereotype.Service
25
26 @Service
27 open class ModelTypeHandler(private val modelTypeRepository: ModelTypeRepository) {
28
29     private val log = EELFManager.getInstance().getLogger(ModelTypeHandler::class.java)!!
30
31     /**
32      * This is a getModelTypeByName service
33      *
34      * @param modelTypeName modelTypeName
35      * @return ModelType
36      */
37     fun getModelTypeByName(modelTypeName: String): ModelType? {
38         log.info("Searching : $modelTypeName")
39         check(modelTypeName.isNotBlank()) { "Model Name Information is missing." }
40         return modelTypeRepository.findByModelName(modelTypeName)
41     }
42
43
44     /**
45      * This is a searchModelTypes service
46      *
47      * @param tags tags
48      * @return List<ModelType>
49     </ModelType> */
50     fun searchModelTypes(tags: String): List<ModelType> {
51         check(tags.isNotBlank()) { "No Search Information provide" }
52         return modelTypeRepository.findByTagsContainingIgnoreCase(tags)
53     }
54
55     /**
56      * This is a saveModel service
57      *
58      * @param modelType modelType
59      * @return ModelType
60      * @throws BluePrintException BluePrintException
61      */
62     @Throws(BluePrintException::class)
63     open fun saveModel(modelType: ModelType): ModelType {
64         lateinit var dbModel: ModelType
65         ModelTypeValidator.validateModelType(modelType)
66         val dbModelType: ModelType? = modelTypeRepository.findByModelName(modelType.modelName)
67         if (dbModelType != null) {
68             dbModel = dbModelType
69             dbModel.description = modelType.description
70             dbModel.definition = modelType.definition
71             dbModel.definitionType = modelType.definitionType
72             dbModel.derivedFrom = modelType.derivedFrom
73             dbModel.tags = modelType.tags
74             dbModel.version = modelType.version
75             dbModel.updatedBy = modelType.updatedBy
76             dbModel = modelTypeRepository.save(dbModel)
77         } else {
78             dbModel = modelTypeRepository.save(modelType)
79         }
80         return dbModel
81     }
82
83
84     /**
85      * This is a deleteByModelName service
86      *
87      * @param modelName modelName
88      */
89     open fun deleteByModelName(modelName: String) {
90         check(modelName.isNotBlank()) { "Model Name Information is missing." }
91         modelTypeRepository.deleteByModelName(modelName)
92
93     }
94
95     /**
96      * This is a getModelTypeByDefinitionType service
97      *
98      * @param definitionType definitionType
99      * @return List<ModelType>
100     */
101     fun getModelTypeByDefinitionType(definitionType: String): List<ModelType> {
102         check(definitionType.isNotBlank()) { "Model definitionType Information is missing." }
103         return modelTypeRepository.findByDefinitionType(definitionType)
104     }
105
106     /**
107      * This is a getModelTypeByDerivedFrom service
108      *
109      * @param derivedFrom derivedFrom
110      * @return List<ModelType>
111     */
112     fun getModelTypeByDerivedFrom(derivedFrom: String): List<ModelType> {
113         check(derivedFrom.isNotBlank()) { "Model derivedFrom Information is missing." }
114         return modelTypeRepository.findByDerivedFrom(derivedFrom)
115     }
116 }