summaryrefslogtreecommitdiffstats
path: root/ms/controllerblueprints/modules/db-resources/src/main
diff options
context:
space:
mode:
authorJessica Wagantall <jwagantall@linuxfoundation.org>2019-03-22 11:09:33 -0700
committerJessica Wagantall <jwagantall@linuxfoundation.org>2019-03-22 11:09:51 -0700
commitffb6bdfd6de2afa23d95d0884c9db4059982deed (patch)
treec528a1106245ee1b4ad77cd7586d6452d6e34d40 /ms/controllerblueprints/modules/db-resources/src/main
parent1a47dc3ce480c4735cbf019918372a0e1ff367bc (diff)
parent1d32aa56013891203fafb2f32d2dc5b9ada0a384 (diff)
Migrate "ms/controllerblueprints" from ccsdk/apps
Migrate code from ccsdk/apps ms/controllerblueprints subfolder into ccsdk/cds Issue-ID: CIMAN-245 Signed-off-by: Jessica Wagantall <jwagantall@linuxfoundation.org>
Diffstat (limited to 'ms/controllerblueprints/modules/db-resources/src/main')
-rw-r--r--ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/BlueprintCatalogServiceImpl.kt86
-rw-r--r--ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelContentRepository.kt91
-rw-r--r--ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelRepository.kt90
3 files changed, 267 insertions, 0 deletions
diff --git a/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/BlueprintCatalogServiceImpl.kt b/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/BlueprintCatalogServiceImpl.kt
new file mode 100644
index 000000000..e43231527
--- /dev/null
+++ b/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/BlueprintCatalogServiceImpl.kt
@@ -0,0 +1,86 @@
+/*
+ * 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.apps.controllerblueprints.db.resources
+
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException
+import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintCatalogService
+import org.onap.ccsdk.apps.controllerblueprints.core.interfaces.BluePrintValidatorService
+import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintArchiveUtils
+import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintFileUtils
+import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintMetadataUtils
+import java.io.File
+import java.nio.file.Path
+import java.util.*
+import javax.persistence.MappedSuperclass
+
+@MappedSuperclass
+abstract class BlueprintCatalogServiceImpl(private val blueprintValidator: BluePrintValidatorService)
+ : BluePrintCatalogService {
+
+ override fun saveToDatabase(blueprintFile: File, validate: Boolean): String {
+ val extractedDirectory: File
+ val archivedDirectory: File
+ val toDeleteDirectory: File
+ val blueprintId = UUID.randomUUID().toString()
+
+ if (blueprintFile.isDirectory) {
+ extractedDirectory = blueprintFile
+ archivedDirectory = File("$blueprintFile.zip")
+ toDeleteDirectory = archivedDirectory
+
+ if (!BluePrintArchiveUtils.compress(blueprintFile, archivedDirectory, true)) {
+ throw BluePrintException("Fail to compress blueprint")
+ }
+ } else {
+ val targetDir = "${blueprintFile.parent}/${BluePrintFileUtils.stripFileExtension(blueprintFile.name)}"
+
+ extractedDirectory = BluePrintArchiveUtils.deCompress(blueprintFile, targetDir)
+ archivedDirectory = blueprintFile
+ toDeleteDirectory = extractedDirectory
+ }
+
+ var valid = BluePrintConstants.FLAG_N
+ if (validate) {
+ blueprintValidator.validateBluePrints(extractedDirectory.path)
+ valid = BluePrintConstants.FLAG_Y
+ }
+
+ val bluePrintRuntimeService = BluePrintMetadataUtils.getBluePrintRuntime(blueprintId, extractedDirectory.path)
+ val metadata = bluePrintRuntimeService.bluePrintContext().metadata!!
+ metadata[BluePrintConstants.PROPERTY_BLUEPRINT_PROCESS_ID] = blueprintId
+ metadata[BluePrintConstants.PROPERTY_BLUEPRINT_VALID] = valid
+
+ save(metadata, archivedDirectory)
+
+ toDeleteDirectory.deleteRecursively()
+
+ return blueprintId
+ }
+
+ override fun getFromDatabase(name: String, version: String, extract: Boolean): Path = get(name, version, extract)
+ ?: throw BluePrintException("Could not find blueprint $name:$version from database")
+
+ override fun deleteFromDatabase(name: String, version: String) = delete(name, version)
+
+ abstract fun save(metadata: MutableMap<String, String>, archiveFile: File)
+ abstract fun get(name: String, version: String, extract: Boolean): Path?
+ abstract fun delete(name: String, version: String)
+
+} \ No newline at end of file
diff --git a/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelContentRepository.kt b/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelContentRepository.kt
new file mode 100644
index 000000000..680f1b2ce
--- /dev/null
+++ b/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelContentRepository.kt
@@ -0,0 +1,91 @@
+/*
+ * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2019 Bell Canada.
+ *
+ * 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.apps.controllerblueprints.db.resources.repository
+
+import org.jetbrains.annotations.NotNull
+import java.util.Optional
+import org.springframework.data.jpa.repository.JpaRepository
+import org.springframework.data.repository.NoRepositoryBean
+
+/**
+ * @param <T> Model
+ * @param <B> ModelContent
+ */
+@NoRepositoryBean
+interface ModelContentRepository<T, B> : JpaRepository<B, String> {
+
+ /**
+ * This is a findById method
+ *
+ * @param id id
+ * @return Optional<T>
+ */
+ @NotNull
+ override fun findById(@NotNull id: String): Optional<B>
+
+ /**
+ * This is a findTopByBlueprintModelAndContentType method
+ *
+ * @param blueprintModel blueprintModel
+ * @param contentType contentType
+ * @return B?
+ */
+ fun findTopByBlueprintModelAndContentType(blueprintModel: T, contentType: String): B?
+
+ /**
+ * This is a findByBlueprintModelAndContentType method
+ *
+ * @param blueprintModel blueprintModel
+ * @param contentType contentType
+ * @return List<B>
+ */
+ fun findByBlueprintModelAndContentType(blueprintModel: T, contentType: String): List<B>
+
+ /**
+ * This is a findByBlueprintModel method
+ *
+ * @param blueprintModel T
+ * @return List<B>
+ */
+ fun findByBlueprintModel(blueprintModel: T): List<B>
+
+ /**
+ * This is a findByBlueprintModelAndContentTypeAndName method
+ *
+ * @param blueprintModel blueprintModel
+ * @param contentType contentType
+ * @param name name
+ * @return B?
+ */
+ fun findByBlueprintModelAndContentTypeAndName(blueprintModel: T, contentType: String, name: String): B?
+
+ /**
+ * This is a deleteByMdeleteByBlueprintModelodelName method
+ *
+ * @param blueprintModel T
+ */
+ fun deleteByBlueprintModel(blueprintModel: T)
+
+ /**
+ * This is a deleteById method
+ *
+ * @param id id
+ */
+ override fun deleteById(@NotNull id: String)
+
+}
diff --git a/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelRepository.kt b/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelRepository.kt
new file mode 100644
index 000000000..e796c3665
--- /dev/null
+++ b/ms/controllerblueprints/modules/db-resources/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/db/resources/repository/ModelRepository.kt
@@ -0,0 +1,90 @@
+/*
+ * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Modifications Copyright © 2019 Bell Canada.
+ *
+ * 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.apps.controllerblueprints.db.resources.repository
+
+import org.jetbrains.annotations.NotNull
+import org.springframework.data.jpa.repository.JpaRepository
+import org.springframework.data.repository.NoRepositoryBean
+import java.util.*
+import javax.transaction.Transactional
+
+/**
+ * @param <T> Model
+ */
+@NoRepositoryBean
+interface ModelRepository<T> : JpaRepository<T, String> {
+
+ /**
+ * This is a findById method
+ *
+ * @param id id
+ * @return Optional<T>
+ */
+ @NotNull
+ override fun findById(@NotNull id: String): Optional<T>
+
+ /**
+ * This is a findByArtifactNameAndArtifactVersion method
+ *
+ * @param artifactName artifactName
+ * @param artifactVersion artifactVersion
+ * @return T?
+ */
+ fun findByArtifactNameAndArtifactVersion(artifactName: String, artifactVersion: String): T?
+
+ /**
+ * This is a findTopByArtifactNameOrderByArtifactIdDesc method
+ *
+ * @param artifactName artifactName
+ * @return T?
+ */
+ fun findTopByArtifactNameOrderByArtifactVersionDesc(artifactName: String): T?
+
+ /**
+ * This is a findTopByArtifactName method
+ *
+ * @param artifactName artifactName
+ * @return List<T>
+ */
+ fun findTopByArtifactName(artifactName: String): List<T>
+
+ /**
+ * This is a findByTagsContainingIgnoreCase method
+ *
+ * @param tags tags
+ * @return List<T>
+ */
+ fun findByTagsContainingIgnoreCase(tags: String): List<T>
+
+ /**
+ * This is a deleteByArtifactNameAndArtifactVersion method
+ *
+ * @param artifactName artifactName
+ * @param artifactVersion artifactVersion
+ */
+ @Transactional
+ fun deleteByArtifactNameAndArtifactVersion(artifactName: String, artifactVersion: String)
+
+ /**
+ * This is a deleteById method
+ *
+ * @param id id
+ */
+ override fun deleteById(@NotNull id: String)
+
+} \ No newline at end of file