-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Feature: VSDSPUB-349: Add reference from member to fragment
- Loading branch information
1 parent
24fffa7
commit 41d43b9
Showing
16 changed files
with
264 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11 changes: 11 additions & 0 deletions
11
...anderen/ldes/server/domain/tree/memberreferences/entities/MemberReferencesRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package be.vlaanderen.informatievlaanderen.ldes.server.domain.tree.memberreferences.entities; | ||
|
||
public interface MemberReferencesRepository { | ||
|
||
void saveMemberReference(final String memberId, final String treeNodeId); | ||
|
||
void removeMemberReference(final String memberId, final String treeNodeId); | ||
|
||
boolean hasMemberReferences(final String memberId); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
70 changes: 70 additions & 0 deletions
70
...e/vlaanderen/informatievlaanderen/ldes/server/domain/tree/member/entities/MemberTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
package be.vlaanderen.informatievlaanderen.ldes.server.domain.tree.member.entities; | ||
|
||
import org.apache.commons.io.FileUtils; | ||
import org.apache.jena.rdf.model.Model; | ||
import org.apache.jena.rdf.model.Resource; | ||
import org.apache.jena.rdf.model.Statement; | ||
import org.apache.jena.riot.Lang; | ||
import org.apache.jena.riot.RDFParserBuilder; | ||
import org.junit.jupiter.api.DisplayName; | ||
import org.junit.jupiter.api.Test; | ||
import org.springframework.util.ResourceUtils; | ||
|
||
import java.io.IOException; | ||
import java.nio.charset.StandardCharsets; | ||
|
||
import static be.vlaanderen.informatievlaanderen.ldes.server.domain.constants.RdfConstants.TREE_MEMBER; | ||
import static org.junit.jupiter.api.Assertions.assertEquals; | ||
import static org.junit.jupiter.api.Assertions.assertNull; | ||
|
||
class MemberTest { | ||
|
||
@Test | ||
@DisplayName("Test correct replacing of TreeMember statement") | ||
void when_TreeMemberStatementIsReplaced_TreeMemberStatementHasADifferentSubject() throws IOException { | ||
String ldesMemberString = FileUtils.readFileToString(ResourceUtils.getFile("classpath:example-ldes-member.nq"), | ||
StandardCharsets.UTF_8); | ||
Member member = new Member( | ||
"https://private-api.gipod.beta-vlaanderen.be/api/v1/mobility-hindrances/10810464/1", | ||
createModel(ldesMemberString, Lang.NQUADS)); | ||
|
||
member.removeTreeMember(); | ||
Statement statement = member.getModel().listStatements(null, TREE_MEMBER, (Resource) null).nextOptional() | ||
.orElse(null); | ||
|
||
assertNull(statement); | ||
} | ||
|
||
@Test | ||
@DisplayName("Verify retrieving of member id from LdesMember") | ||
void when_TreeMemberStatementIsAvailableInModel_LdesMemberId() throws IOException { | ||
String ldesMemberString = FileUtils.readFileToString(ResourceUtils.getFile("classpath:example-ldes-member.nq"), | ||
StandardCharsets.UTF_8); | ||
Member member = new Member( | ||
"https://private-api.gipod.beta-vlaanderen.be/api/v1/mobility-hindrances/10810464/1", | ||
createModel(ldesMemberString, Lang.NQUADS)); | ||
assertEquals("https://private-api.gipod.beta-vlaanderen.be/api/v1/mobility-hindrances/10810464/1", | ||
member.getLdesMemberId()); | ||
} | ||
|
||
@Test | ||
void when_getFragmentationObjects_returnCorrespondingStatements() throws IOException { | ||
String ldesMemberString = FileUtils.readFileToString( | ||
ResourceUtils.getFile("classpath:example-ldes-member-multiple-properties-same-predicate.nq"), | ||
StandardCharsets.UTF_8); | ||
|
||
Member member = new Member( | ||
"http://localhost:8080/member/1", | ||
createModel(ldesMemberString, Lang.NQUADS)); | ||
|
||
assertEquals(4, member.getFragmentationObjects(".*", | ||
"http://www.w3.org/2004/02/skos/core#prefLabel").size()); | ||
assertEquals(1, member.getFragmentationObjects(".*/member/.*", | ||
"http://www.w3.org/2004/02/skos/core#prefLabel").size()); | ||
} | ||
|
||
private Model createModel(final String ldesMember, final Lang lang) { | ||
return RDFParserBuilder.create().fromString(ldesMember).lang(lang).toModel(); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 42 additions & 0 deletions
42
...anderen/informatievlaanderen/ldes/server/infra/mongo/MemberReferencesMongoRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package be.vlaanderen.informatievlaanderen.ldes.server.infra.mongo; | ||
|
||
import be.vlaanderen.informatievlaanderen.ldes.server.domain.exceptions.MemberNotFoundException; | ||
import be.vlaanderen.informatievlaanderen.ldes.server.domain.tree.memberreferences.entities.MemberReferencesRepository; | ||
import be.vlaanderen.informatievlaanderen.ldes.server.infra.mongo.entities.MemberReferencesEntity; | ||
import be.vlaanderen.informatievlaanderen.ldes.server.infra.mongo.repositories.MemberReferencesEntityRepository; | ||
|
||
import java.util.ArrayList; | ||
|
||
public class MemberReferencesMongoRepository implements MemberReferencesRepository { | ||
|
||
private final MemberReferencesEntityRepository repository; | ||
|
||
public MemberReferencesMongoRepository(MemberReferencesEntityRepository repository) { | ||
this.repository = repository; | ||
} | ||
|
||
@Override | ||
public synchronized void saveMemberReference(String memberId, String treeNodeId) { | ||
MemberReferencesEntity memberReferencesEntity = repository.findById(memberId) | ||
.orElseGet(() -> new MemberReferencesEntity(memberId, new ArrayList<>())); | ||
memberReferencesEntity.addMemberReference(treeNodeId); | ||
repository.save(memberReferencesEntity); | ||
} | ||
|
||
@Override | ||
public synchronized void removeMemberReference(String memberId, String treeNodeId) { | ||
MemberReferencesEntity memberReferencesEntity = repository | ||
.findById(memberId) | ||
.orElseThrow(() -> new MemberNotFoundException(memberId)); | ||
memberReferencesEntity.removeMemberReference(treeNodeId); | ||
repository.save(memberReferencesEntity); | ||
} | ||
|
||
@Override | ||
public synchronized boolean hasMemberReferences(String memberId) { | ||
return repository | ||
.findById(memberId) | ||
.map(MemberReferencesEntity::hasMemberReferences) | ||
.orElseThrow(() -> new MemberNotFoundException(memberId)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
30 changes: 30 additions & 0 deletions
30
...anderen/informatievlaanderen/ldes/server/infra/mongo/entities/MemberReferencesEntity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package be.vlaanderen.informatievlaanderen.ldes.server.infra.mongo.entities; | ||
|
||
import org.springframework.data.annotation.Id; | ||
import org.springframework.data.mongodb.core.mapping.Document; | ||
|
||
import java.util.List; | ||
|
||
@Document("memberreferences") | ||
public class MemberReferencesEntity { | ||
@Id | ||
private final String id; | ||
private final List<String> treeNodesRefences; | ||
|
||
public MemberReferencesEntity(String id, List<String> treeNodesRefences) { | ||
this.id = id; | ||
this.treeNodesRefences = treeNodesRefences; | ||
} | ||
|
||
public void addMemberReference(String treeNodeId) { | ||
treeNodesRefences.add(treeNodeId); | ||
} | ||
|
||
public boolean hasMemberReferences() { | ||
return !treeNodesRefences.isEmpty(); | ||
} | ||
|
||
public void removeMemberReference(String treeNodeId) { | ||
treeNodesRefences.remove(treeNodeId); | ||
} | ||
} |
8 changes: 8 additions & 0 deletions
8
...atievlaanderen/ldes/server/infra/mongo/repositories/MemberReferencesEntityRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package be.vlaanderen.informatievlaanderen.ldes.server.infra.mongo.repositories; | ||
|
||
import be.vlaanderen.informatievlaanderen.ldes.server.infra.mongo.entities.MemberReferencesEntity; | ||
import org.springframework.data.mongodb.repository.MongoRepository; | ||
|
||
public interface MemberReferencesEntityRepository extends MongoRepository<MemberReferencesEntity, String> { | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.