Skip to content

Commit 317d140

Browse files
Merge remote-tracking branch 'origin/model_update_updateTracker' into model_update_updateTracker
2 parents 22a024e + 829d77d commit 317d140

File tree

9 files changed

+239
-28
lines changed

9 files changed

+239
-28
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package org.reactome.server.graph.repository;
2+
3+
import org.reactome.server.graph.domain.model.DeletedInstance;
4+
import org.springframework.data.neo4j.repository.Neo4jRepository;
5+
import org.springframework.data.neo4j.repository.query.Query;
6+
import org.springframework.data.repository.query.Param;
7+
import org.springframework.stereotype.Repository;
8+
9+
import java.util.List;
10+
import java.util.Optional;
11+
12+
@Repository
13+
public interface DeletedInstanceRepository extends Neo4jRepository<DeletedInstance, Long> {
14+
//language=cypher
15+
@Query(" MATCH (d:DeletedInstance{dbId:$dbId}) " +
16+
"OPTIONAL MATCH (d)-[r]-(m) " +
17+
"RETURN d, collect(r), collect(m)")
18+
Optional<DeletedInstance> getDeletedInstanceByDbId(@Param("dbId") Long dbId);
19+
20+
21+
@Query("MATCH (d:DeletedInstance)<-[:deletedInstance]-(de:Deleted) " +
22+
"where de.dbId = $dbId " +
23+
"return d ")
24+
List<DeletedInstance> getByDeletedDbId(@Param("dbId") Long dbId);
25+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.reactome.server.graph.repository;
2+
3+
import org.reactome.server.graph.domain.model.Deleted;
4+
import org.springframework.data.neo4j.core.Neo4jClient;
5+
import org.springframework.data.neo4j.core.Neo4jTemplate;
6+
import org.springframework.stereotype.Repository;
7+
8+
import java.util.List;
9+
import java.util.Map;
10+
import java.util.Optional;
11+
12+
@Repository
13+
public class DeletedRepository {
14+
15+
16+
private final Neo4jTemplate neo4jTemplate;
17+
18+
public DeletedRepository(Neo4jTemplate neo4jTemplate, Neo4jClient neo4jClient) {
19+
this.neo4jTemplate = neo4jTemplate;
20+
21+
}
22+
23+
public Optional<Deleted> getDeletedByDbId(Long dbId) {
24+
String query = "MATCH (d:Deleted{dbId:$dbId}) OPTIONAL MATCH (d)-[r]-(m) RETURN d, COLLECT(r), COLLECT(m)";
25+
return neo4jTemplate.findOne(query, Map.of("dbId", dbId), Deleted.class);
26+
}
27+
28+
29+
public List<Deleted> getByDeletedInstanceDbId(Long dbId) {
30+
String query = "MATCH (p:Deleted)-[r:deletedInstance*]->(d:DeletedInstance) WHERE d.dbId = $dbId RETURN COLLECT(p)";
31+
return neo4jTemplate.findAll(query, Map.of("dbId", dbId), Deleted.class);
32+
}
33+
34+
35+
public List<Deleted> getByReplacementStId(String stId) {
36+
String query = "MATCH (p:Deleted)-[r:replacementInstances*]->(d:Deletable) WHERE d.stId = $stId RETURN COLLECT(p)";
37+
return neo4jTemplate.findAll(query, Map.of("stId", stId), Deleted.class);
38+
}
39+
40+
}

src/main/java/org/reactome/server/graph/repository/UpdateTrackerRepository.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.reactome.server.graph.domain.model.UpdateTracker;
44
import org.springframework.data.neo4j.repository.Neo4jRepository;
5+
import org.springframework.data.neo4j.repository.query.Query;
56
import org.springframework.data.repository.query.Param;
67
import org.springframework.stereotype.Repository;
78

@@ -11,13 +12,23 @@
1112
@Repository
1213
public interface UpdateTrackerRepository extends Neo4jRepository<UpdateTracker, Long> {
1314

14-
@Override
15-
Optional<UpdateTracker> findById(Long dbId);
15+
//language=cypher
16+
@Query(" MATCH (d:UpdateTracker{dbId:$dbId}) " +
17+
"OPTIONAL MATCH (d)-[r]-(m) " +
18+
"RETURN d, collect(r), collect(m)")
19+
Optional<UpdateTracker> findUpdateTrackerByDbId(@Param("dbId") Long dbId);
1620

17-
List<UpdateTracker> findByReleaseReleaseNumber(@Param("releaseNumber") int releaseNumber);
1821

19-
List<UpdateTracker> findByUpdatedInstanceStId(@Param("stId") String stId);
22+
//language=cypher
23+
@Query(" MATCH(u:UpdateTracker)-[:updatedInstance]->(t:Trackable) " +
24+
"WHERE t.dbId = $dbId " +
25+
"RETURN u")
26+
List<UpdateTracker> findByUpdatedInstanceDbId(Long dbId);
2027

21-
List<UpdateTracker> findByUpdatedInstanceDbId(@Param("dbId") Long dbId);
28+
//language=cypher
29+
@Query(" MATCH(d:UpdateTracker)-[:updatedInstance]->(t:Trackable) " +
30+
"WHERE t.stId = $stId " +
31+
"RETURN d ")
32+
List<UpdateTracker> findByUpdatedInstanceStId(@Param("stId") String stId);
2233

2334
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.reactome.server.graph.service;
2+
3+
import org.reactome.server.graph.domain.model.DeletedInstance;
4+
import org.reactome.server.graph.repository.DeletedInstanceRepository;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.stereotype.Service;
7+
8+
import java.util.List;
9+
import java.util.Optional;
10+
11+
@Service
12+
public class DeletedInstanceService {
13+
14+
private DeletedInstanceRepository repository;
15+
16+
@Autowired
17+
public DeletedInstanceService(DeletedInstanceRepository repository) {
18+
this.repository = repository;
19+
}
20+
21+
public Optional<DeletedInstance> getDeletedInstanceByDbId(Long dbId) {
22+
return this.repository.getDeletedInstanceByDbId(dbId);
23+
}
24+
25+
public List<DeletedInstance> getBYDeletedDbId(Long dbId) {
26+
return this.repository.getByDeletedDbId(dbId);
27+
}
28+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package org.reactome.server.graph.service;
2+
3+
4+
import org.reactome.server.graph.domain.model.*;
5+
import org.reactome.server.graph.repository.DeletedRepository;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Service;
8+
9+
import java.util.List;
10+
import java.util.Optional;
11+
12+
@Service
13+
public class DeletedService {
14+
15+
private DeletedRepository repository;
16+
17+
@Autowired
18+
public DeletedService(DeletedRepository repository) {
19+
this.repository = repository;
20+
}
21+
22+
public Optional<Deleted> getDeletedByDbId(Long dbId) {
23+
return this.repository.getDeletedByDbId(dbId);
24+
}
25+
26+
public List<Deleted> getByDeletedInstanceDbId(Long dbId) {
27+
return this.repository.getByDeletedInstanceDbId(dbId);
28+
}
29+
30+
public List<Deleted> getByReplacementStId(String stId) {
31+
return this.repository.getByReplacementStId(stId);
32+
}
33+
34+
}

src/main/java/org/reactome/server/graph/service/UpdateTrackerService.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,17 @@
1010

1111
@Service
1212
public class UpdateTrackerService {
13+
1314
private UpdateTrackerRepository repository;
1415

1516
@Autowired
1617
public UpdateTrackerService(UpdateTrackerRepository repository) {
1718
this.repository = repository;
1819
}
1920

20-
public Optional<UpdateTracker> findById(Long id) {
21-
return this.repository.findById(id);
22-
}
2321

24-
public List<UpdateTracker> findByReleaseNumber(int releaseNumber) {
25-
return this.repository.findByReleaseReleaseNumber(releaseNumber);
22+
public Optional<UpdateTracker> findUpdateTrackerByDbId(Long dbId) {
23+
return this.repository.findUpdateTrackerByDbId(dbId);
2624
}
2725

2826
public List<UpdateTracker> findByUpdatedInstanceDbId(Long dbId) {
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package org.reactome.server.graph.service;
2+
3+
import org.junit.jupiter.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
import org.reactome.server.graph.domain.model.DeletedInstance;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
8+
import java.util.List;
9+
import java.util.Optional;
10+
11+
public class DeletedInstanceServiceTest extends BaseTest {
12+
13+
@Autowired
14+
private DeletedInstanceService deletedInstanceService;
15+
16+
17+
@Test
18+
public void getDeletedInstanceByDbId() {
19+
Optional<DeletedInstance> deletedInstance = this.deletedInstanceService.getDeletedInstanceByDbId(9745160L);
20+
Assertions.assertTrue(deletedInstance.isPresent());
21+
22+
int deletedInstanceDbId = deletedInstance.get().getDeletedInstanceDbId();
23+
Assertions.assertNotNull(deletedInstanceDbId);
24+
25+
String deletedStId = deletedInstance.get().getDeletedStId();
26+
Assertions.assertNotNull(deletedStId);
27+
}
28+
29+
@Test
30+
public void getByDeletedDbId() {
31+
List<DeletedInstance> deletedInstances = this.deletedInstanceService.getBYDeletedDbId(5655667L);
32+
Assertions.assertTrue(!deletedInstances.isEmpty());
33+
}
34+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package org.reactome.server.graph.service;
2+
3+
import org.junit.jupiter.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
import org.reactome.server.graph.domain.model.*;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
8+
import java.util.List;
9+
import java.util.Optional;
10+
11+
public class DeletedServiceTest extends BaseTest {
12+
13+
@Autowired
14+
DeletedService service;
15+
16+
@Test
17+
public void testFindDeletedByDbId() {
18+
19+
Optional<Deleted> deleted = service.getDeletedByDbId(8869329L);
20+
Assertions.assertTrue(deleted.isPresent());
21+
22+
List<DeletedInstance> deletedInstances = deleted.get().getDeletedInstance();
23+
Assertions.assertTrue(!deletedInstances.isEmpty());
24+
25+
List<Deletable> deletables = deleted.get().getReplacementInstances();
26+
Assertions.assertTrue(!deletables.isEmpty());
27+
28+
DeletedControlledVocabulary dcv = deleted.get().getReason();
29+
Assertions.assertNotNull(dcv);
30+
31+
Assertions.assertTrue(deletables.stream().anyMatch(deletable -> deletable instanceof NegativeRegulation));
32+
}
33+
34+
@Test
35+
public void testGetByDeletedInstanceDbId() {
36+
List<Deleted> deleteds = this.service.getByDeletedInstanceDbId(9745855L);
37+
Assertions.assertTrue(!deleteds.isEmpty());
38+
}
39+
40+
@Test
41+
public void testGetDeletedByReplacementInstancesStId() {
42+
List<Deleted> deleteds = this.service.getByReplacementStId("R-RNO-164402");
43+
Assertions.assertTrue(!deleteds.isEmpty());
44+
}
45+
}
Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package org.reactome.server.graph.service;
22

3+
import org.junit.jupiter.api.Assertions;
34
import org.junit.jupiter.api.BeforeEach;
45
import org.junit.jupiter.api.Test;
5-
import org.reactome.server.graph.domain.model.Complex;
6-
import org.reactome.server.graph.domain.model.Reaction;
6+
import org.reactome.server.graph.domain.model.Pathway;
77
import org.reactome.server.graph.domain.model.Trackable;
88
import org.reactome.server.graph.domain.model.UpdateTracker;
99
import org.reactome.server.graph.util.DatabaseObjectFactory;
@@ -12,7 +12,6 @@
1212
import java.util.List;
1313
import java.util.Optional;
1414

15-
import static org.junit.jupiter.api.Assertions.assertEquals;
1615
import static org.junit.jupiter.api.Assertions.assertTrue;
1716

1817
public class UpdateTrackerServiceTest extends BaseTest {
@@ -36,32 +35,29 @@ public void setUp() throws Exception {
3635
UpdateTrackerService service;
3736

3837
@Test
39-
void testFindById() {
40-
Optional<UpdateTracker> updateTracker = this.service.findById(999999999999999L);
41-
assertTrue(updateTracker.isPresent());
38+
void testFindUpdateTrackerByDbId() {
39+
40+
Optional<UpdateTracker> updateTracker = this.service.findUpdateTrackerByDbId(9776257L);
41+
Assertions.assertNotNull(updateTracker);
42+
43+
Assertions.assertEquals(77, updateTracker.get().getRelease().getReleaseNumber());
44+
4245
List<Trackable> updatedInstances = updateTracker.get().getUpdatedInstance();
43-
assertEquals(2, updatedInstances.size());
44-
assertEquals(77, updateTracker.get().getRelease().getReleaseNumber());
45-
assertTrue(updatedInstances.stream().anyMatch(trackable -> trackable instanceof Reaction));
46-
assertTrue(updatedInstances.stream().anyMatch(trackable -> trackable instanceof Complex));
47-
}
4846

49-
@Test
50-
void testFindByReleaseNumber() {
51-
List<UpdateTracker> updateTracker = this.service.findByReleaseNumber(77);
52-
assertTrue(updateTracker.size() >= 1);
47+
Assertions.assertTrue(!updatedInstances.isEmpty());
48+
Assertions.assertTrue(updatedInstances.stream().anyMatch(trackable -> trackable instanceof Pathway));
5349
}
5450

51+
5552
@Test
5653
void testFindByUpdatedInstanceDbId() {
57-
List<UpdateTracker> updateTracker = this.service.findByUpdatedInstanceDbId(6793661L);
54+
List<UpdateTracker> updateTracker = this.service.findByUpdatedInstanceDbId(3299685L);
5855
assertTrue(updateTracker.size() >= 1);
5956
}
6057

6158
@Test
6259
void testFindByUpdatedInstanceStId() {
63-
List<UpdateTracker> updateTracker = this.service.findByUpdatedInstanceStId("R-HSA-8944365");
60+
List<UpdateTracker> updateTracker = this.service.findByUpdatedInstanceStId("R-HSA-3299685");
6461
assertTrue(updateTracker.size() >= 1);
6562
}
66-
6763
}

0 commit comments

Comments
 (0)