|
5 | 5 | import com.datastax.driver.core.utils.UUIDs; |
6 | 6 | import dao.CassandraSessionBuilder; |
7 | 7 |
|
| 8 | +import models.EndType; |
8 | 9 | import models.Relationship; |
9 | 10 | import play.Logger; |
10 | | -import play.Logger.*; |
11 | 11 |
|
12 | 12 | import javax.inject.Inject; |
| 13 | +import javax.inject.Singleton; |
| 14 | + |
13 | 15 | import java.util.HashSet; |
14 | 16 | import java.util.Set; |
15 | 17 | import java.util.UUID; |
|
20 | 22 | * Main service that provides CRUD operations for all SysML v2 elements |
21 | 23 | */ |
22 | 24 |
|
| 25 | +@Singleton |
23 | 26 | public class RelationshipService { |
| 27 | + |
24 | 28 | @Inject private CassandraSessionBuilder sessionBuilder; |
25 | 29 |
|
26 | 30 | final Logger.ALogger logger = Logger.of(this.getClass()); |
@@ -48,6 +52,36 @@ public Relationship getById(UUID identifier) { |
48 | 52 | return null; |
49 | 53 | } |
50 | 54 |
|
| 55 | + public Set<Relationship> getByElementId(UUID elementIdentifier) { |
| 56 | + Set<Relationship> relations = getByEndTypeId(elementIdentifier, EndType.source); |
| 57 | + relations.addAll(getByEndTypeId(elementIdentifier, EndType.target)); |
| 58 | + return relations; |
| 59 | + } |
| 60 | + |
| 61 | + public Set<Relationship> getBySourceElementId(UUID elementIdentifier) { |
| 62 | + return getByEndTypeId(elementIdentifier, EndType.source); |
| 63 | + } |
| 64 | + |
| 65 | + public Set<Relationship> getByTargetElementId(UUID elementIdentifier) { |
| 66 | + return getByEndTypeId(elementIdentifier, EndType.target); |
| 67 | + } |
| 68 | + |
| 69 | + private Set<Relationship> getByEndTypeId(UUID elementIdentifier, EndType endType) { |
| 70 | + Set<Relationship> relations = new HashSet<>(); |
| 71 | + |
| 72 | + String end = endType.toString(); |
| 73 | + |
| 74 | + ResultSet resultSet = sessionBuilder.getSession().execute("select identifier, name, description, parent_model, " + |
| 75 | + "type, source_element_role, source_element, target_element_role, target_element from sysml2.relationships where " + end + "_element = " + elementIdentifier + " allow filtering;"); |
| 76 | + |
| 77 | + for(Row r: resultSet) |
| 78 | + relations.add(new Relationship(r.getUUID(0), r.getString(1), r.getString(2), r.getUUID(3), r.getString(4), |
| 79 | + r.getString(5), r.getUUID(6), r.getString(7), r.getUUID(8))); |
| 80 | + |
| 81 | + return relations; |
| 82 | + |
| 83 | + } |
| 84 | + |
51 | 85 | public Relationship create(Relationship relation) { |
52 | 86 | if(relation!=null) { |
53 | 87 | UUID identifier = relation.identifier; |
|
0 commit comments