Add another Child to a Fragment that has already at least one Child
[cps.git] / cps-ri / src / main / java / org / onap / cps / spi / repository / FragmentRepository.java
index 4d44943..6fc956c 100755 (executable)
 package org.onap.cps.spi.repository;\r
 \r
 import java.util.Collection;\r
+import java.util.Optional;\r
 import javax.validation.constraints.NotNull;\r
+import org.checkerframework.checker.nullness.qual.NonNull;\r
 import org.onap.cps.spi.entities.AnchorEntity;\r
+import org.onap.cps.spi.entities.DataspaceEntity;\r
 import org.onap.cps.spi.entities.FragmentEntity;\r
+import org.onap.cps.spi.exceptions.NotFoundInDataspaceException;\r
 import org.springframework.data.jpa.repository.JpaRepository;\r
 import org.springframework.data.jpa.repository.Modifying;\r
 import org.springframework.data.jpa.repository.Query;\r
@@ -34,6 +38,15 @@ import org.springframework.stereotype.Repository;
 @Repository\r
 public interface FragmentRepository extends JpaRepository<FragmentEntity, Long> {\r
 \r
+    Optional<FragmentEntity> findByDataspaceAndAnchorAndXpath(@NonNull DataspaceEntity dataspaceEntity,\r
+        @NonNull AnchorEntity anchorEntity, @NonNull String xpath);\r
+\r
+    default FragmentEntity getByDataspaceAndAnchorAndXpath(@NonNull DataspaceEntity dataspaceEntity,\r
+        @NonNull AnchorEntity anchorEntity, @NonNull String xpath) {\r
+        return findByDataspaceAndAnchorAndXpath(dataspaceEntity, anchorEntity, xpath)\r
+            .orElseThrow(() -> new NotFoundInDataspaceException(dataspaceEntity.getName(), xpath));\r
+    }\r
+\r
     @Modifying\r
     @Query("DELETE FROM FragmentEntity fe WHERE fe.anchor IN (:anchors)")\r
     void deleteByAnchorIn(@NotNull @Param("anchors") Collection<AnchorEntity> anchorEntities);\r