aboutsummaryrefslogtreecommitdiffstats
path: root/ms/blueprintsprocessor/modules/inbounds/designer-api/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/designer/api/handler/ModelTypeHandler.kt
blob: 0d94aab271602af2da57a0c05c21514685dfc924 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/*
 * 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.blueprintsprocessor.designer.api.handler

import org.onap.ccsdk.cds.blueprintsprocessor.designer.api.DesignerApiDomains
import org.onap.ccsdk.cds.blueprintsprocessor.designer.api.domain.ModelType
import org.onap.ccsdk.cds.blueprintsprocessor.designer.api.repository.ModelTypeRepository
import org.onap.ccsdk.cds.blueprintsprocessor.designer.api.utils.ModelTypeValidator
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintException
import org.onap.ccsdk.cds.controllerblueprints.core.httpProcessorException
import org.onap.ccsdk.cds.error.catalog.core.ErrorCatalogCodes
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 httpProcessorException(
                ErrorCatalogCodes.RESOURCE_NOT_FOUND, DesignerApiDomains.DESIGNER_API,
                "couldn't get modelType($modelTypeName)"
            )
        }
    }

    /**
     * This is a searchModelTypes service
     *
     * @param tags tags
     * @return List<ModelType>
     </ModelType> */
    suspend fun searchModelTypes(tags: String): List<ModelType> {
        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)
    open suspend 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
     */
    open suspend 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<ModelType>
     */
    suspend fun getModelTypeByDefinitionType(definitionType: String): List<ModelType> {
        check(definitionType.isNotBlank()) { "Model definitionType Information is missing." }
        return modelTypeRepository.findByDefinitionType(definitionType)
    }

    /**
     * This is a getModelTypeByDerivedFrom service
     *
     * @param derivedFrom derivedFrom
     * @return List<ModelType>
     */
    suspend fun getModelTypeByDerivedFrom(derivedFrom: String): List<ModelType> {
        check(derivedFrom.isNotBlank()) { "Model derivedFrom Information is missing." }
        return modelTypeRepository.findByDerivedFrom(derivedFrom)
    }
}