1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
package com.c2kernel.collection;
import com.c2kernel.collection.gui.model.AggregationVertexOutlineCreator;
import com.c2kernel.graph.model.GraphModel;
import com.c2kernel.graph.model.GraphPoint;
import com.c2kernel.graph.model.TypeNameAndConstructionInfo;
import com.c2kernel.utils.CastorHashMap;
import com.c2kernel.utils.Language;
import com.c2kernel.utils.Logger;
/**
* @version $Revision: 1.59 $ $Date: 2004/08/10 07:56:08 $
* @author $Author: abranson $
*/
abstract public class Aggregation extends Parent2ChildCollection<AggregationMember>
{
protected GraphModel mLayout = new GraphModel(new AggregationVertexOutlineCreator());
private final TypeNameAndConstructionInfo[] mVertexTypeNameAndConstructionInfo = {
new TypeNameAndConstructionInfo(Language.translate("Slot"), "AggregationMember")
};
public Aggregation()
{
setName("Aggregation");
}
public GraphModel getLayout()
{
return mLayout;
}
public void setLayout(GraphModel layout)
{
mLayout = layout;
}
public TypeNameAndConstructionInfo[] getVertexTypeNameAndConstructionInfo()
{
return mVertexTypeNameAndConstructionInfo;
}
public boolean exists(int entityKey)
{
for (int i=0; i<size(); i++)
{
AggregationMember element = mMembers.list.get(i);
if (element.getEntityKey() == entityKey)
return true;
}
return false;
}
public AggregationMember getMemberPair(int vertexID)
{
for (int i=0; i<size(); i++)
{
AggregationMember element = mMembers.list.get(i);
if (element.getID() == vertexID)
return element;
}
return null;
}
public AggregationMember addMember(int entityKey, CastorHashMap props, String classProps, GraphPoint location, int w, int h)
throws MembershipException
{
// Create new member object
AggregationMember aggMem = new AggregationMember();
aggMem.setProperties(props);
aggMem.setClassProps(classProps);
aggMem.assignEntity(entityKey);
// create vertex
com.c2kernel.graph.model.Vertex vertex = new com.c2kernel.graph.model.Vertex();
vertex.setHeight(h); vertex.setWidth(w);
mLayout.addVertexAndCreateId(vertex,location);
aggMem.setCollection(this);
aggMem.setID(vertex.getID());
aggMem.setIsLayoutable(true);
aggMem.setIsComposite( RelationshipUtils.getIsComposite(entityKey) );
mMembers.list.add(aggMem);
Logger.msg(8, "AggregationDescription::addMember(" + entityKey + ") added to children linked to vertexid " + vertex.getID());
return aggMem;
}
@Override
public AggregationMember addMember(int entityKey, CastorHashMap props, String classProps) throws MembershipException
{
return addMember(entityKey, props, classProps, new GraphPoint(100,100*getCounter()), 20, 20);
}
@Override
public AggregationMember addMember(int entityKey) throws MembershipException {
throw new MembershipException("Aggregations cannot accept arbitrary members without type info");
}
@Override
public void removeMember(int memberId) throws MembershipException {
for (AggregationMember element : mMembers.list) {
if (element.getID() == memberId) {
element.clearEntity();
mLayout.removeVertex(getLayout().getVertexById(memberId));
return;
}
}
throw new MembershipException("Member "+memberId+" not found");
}
}
|