1 package org.catacomb.druid.xtext.data;
2
3 import org.catacomb.druid.xtext.base.DocStore;
4
5 import java.util.ArrayList;
6 import java.util.Collection;
7 import java.util.HashMap;
8 import java.util.Set;
9
10 public class PageDataStore {
11
12
13 HashMap<XType, ArrayList<XItem>> itemHM;
14
15 ArrayList<XRelation> relations;
16 HashMap<XRelationType, ArrayList<XRelation>> relationHM;
17
18 DocStore docStore;
19
20 public PageDataStore(DocStore ds) {
21 docStore = ds;
22 itemHM = new HashMap<XType, ArrayList<XItem>>();
23 relationHM = new HashMap<XRelationType, ArrayList<XRelation>>();
24 relations = new ArrayList<XRelation>();
25 }
26
27
28
29 public void addItem(XType xt, String text) {
30 XItem xit = new XItem(xt, text);
31 addItem(xit);
32 }
33
34
35
36 public void addItem(XItem xit) {
37 if (itemHM.containsKey(xit.getType())) {
38 (itemHM.get(xit.getType())).add(xit);
39 } else {
40 ArrayList<XItem> al = new ArrayList<XItem>();
41 al.add(xit);
42 itemHM.put(xit.getType(), al);
43 }
44
45 reportChange();
46
47 }
48
49
50 public void reportChange() {
51 docStore.pageDataChanged();
52 }
53
54
55
56 public Set<XType> getTypes() {
57 return itemHM.keySet();
58 }
59
60 public ArrayList<XItem> getList(XType xt) {
61 return itemHM.get(xt);
62 }
63
64 public Collection<ArrayList<XItem>> getLists() {
65 return itemHM.values();
66 }
67
68
69 public void addRelation(XRelation xr) {
70 relations.add(xr);
71 if (relationHM.containsKey(xr.getRelationType())) {
72 (relationHM.get(xr.getRelationType())).add(xr);
73 } else {
74 ArrayList<XRelation> al = new ArrayList<XRelation>();
75 al.add(xr);
76 relationHM.put(xr.getRelationType(), al);
77 }
78 reportChange();
79
80 }
81
82
83 public ArrayList<XRelation> getRelations() {
84 return relations;
85 }
86
87
88 public boolean hasRelations() {
89 return (relations.size() > 0);
90 }
91
92 }