+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * Copyright (C) 2020 Nordix Foundation. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ * SPDX-License-Identifier: Apache-2.0\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package org.onap.cps.spi.impl;\r
+\r
+import org.onap.cps.api.model.AnchorDetails;\r
+import org.onap.cps.exceptions.CpsNotFoundException;\r
+import org.onap.cps.exceptions.CpsValidationException;\r
+import org.onap.cps.spi.FragmentPersistenceService;\r
+import org.onap.cps.spi.entities.Dataspace;\r
+import org.onap.cps.spi.entities.Fragment;\r
+import org.onap.cps.spi.entities.ModuleEntity;\r
+import org.onap.cps.spi.repository.DataspaceRepository;\r
+import org.onap.cps.spi.repository.FragmentRepository;\r
+import org.onap.cps.spi.repository.ModuleRepository;\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.dao.DataIntegrityViolationException;\r
+import org.springframework.stereotype.Component;\r
+\r
+@Component\r
+public class FragmentPersistenceServiceImpl implements FragmentPersistenceService {\r
+\r
+ @Autowired\r
+ private DataspaceRepository dataspaceRepository;\r
+\r
+ @Autowired\r
+ private FragmentRepository fragmentRepository;\r
+\r
+ @Autowired\r
+ private ModuleRepository moduleRepository;\r
+\r
+ @Override\r
+ public String createAnchor(final AnchorDetails anchorDetails) {\r
+ try {\r
+ final Dataspace dataspace = dataspaceRepository.getByName(anchorDetails.getDataspace());\r
+ final ModuleEntity moduleEntity =\r
+ moduleRepository.getByDataspaceAndNamespaceAndRevision(dataspace,\r
+ anchorDetails.getNamespace(), anchorDetails.getRevision());\r
+\r
+ final Fragment fragment = Fragment.builder().xpath(anchorDetails.getAnchorName())\r
+ .anchorName(anchorDetails.getAnchorName())\r
+ .dataspace(dataspace).module(moduleEntity).build();\r
+\r
+ fragmentRepository.save(fragment);\r
+ return anchorDetails.getAnchorName();\r
+ } catch (final CpsNotFoundException ex) {\r
+ throw new CpsValidationException("Validation Error",\r
+ String.format("Dataspace and/or Module do not exist."));\r
+ } catch (final DataIntegrityViolationException ex) {\r
+ throw new CpsValidationException("Duplication Error",\r
+ String.format("Anchor with name %s already exist in dataspace %s.",\r
+ anchorDetails.getAnchorName(), anchorDetails.getDataspace()));\r
+ }\r
+ }\r
+}
\ No newline at end of file