/[fenfire]/fenfire/org/fenfire/swamp/impl/HashGraph.java
ViewVC logotype

Diff of /fenfire/org/fenfire/swamp/impl/HashGraph.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by tjl, Sun Apr 13 07:49:05 2003 UTC revision 1.5 by tjl, Mon Apr 14 12:21:20 2003 UTC
# Line 1  Line 1 
1  // (c) Tuomas J. Lukka  // AUTOGENERATED By makeswamp.py - DO NOT EDIT.
2    
3  package org.fenfire.swamp.impl;      package org.fenfire.swamp.impl;
4  import org.fenfire.Obs;      import org.fenfire.Obs;
5  import org.fenfire.swamp.*;      import org.fenfire.swamp.*;
6    
7  import java.util.HashMap;      import java.util.HashMap;
8  import java.util.HashSet;      import java.util.Set;
9  import java.util.ArrayList;      import java.util.HashSet;
10  import java.util.Iterator;      import java.util.ArrayList;
11        import java.util.Iterator;
12  /** An RDF Graph implemented by HashMaps.  
13   * Relatively inefficient but a basic implementation      /** An RDF Graph implemented by HashMaps.
14   * that can be used as a reference.       * Relatively inefficient but a basic implementation
15   */       * that can be used as a reference.
 public class HashGraph extends AbstractGraph {  
   
     /** Map: key = subject, value = (Map: key=predicate, value =  
      * (Set: r/l)).  
16       */       */
17      private HashMap spo = new HashMap();      public class HashGraph extends AbstractGraph {
   
   
     private HashSet emptySet = new HashSet();  
18    
19      private StdObserver observer = new StdObserver();          private HashMap ind_012 = new HashMap();
20    private HashMap ind_021 = new HashMap();
21    private HashMap ind_120 = new HashMap();
22    
23    
24            private HashSet emptySet = new HashSet();
25            private StdObserver observer = new StdObserver();
26    
27            private final void rm_ind(HashMap ind, Object o1, Object o2, Object o3) {
28                HashMap m2 = (HashMap)ind.get(o1);
29                if(m2 == null) return;
30                HashSet m3 = (HashSet)m2.get(o2);
31                if(m3 == null) return;
32                m3.remove(o3);
33            }
34    
35      private HashSet get_HHS(boolean create, HashMap m,          private final void add_ind(HashMap ind, Object o1, Object o2, Object o3) {
36                      Object o1, Object o2) {              HashMap m2 = (HashMap)ind.get(o1);
37          HashMap m2 = (HashMap)m.get(o1);              if(m2 == null) {
         if(m2 == null) {  
             if(create) {  
38                  m2 = new HashMap();                  m2 = new HashMap();
39                  m.put(o1, m2);                  ind.put(o1, m2);
             } else {  
                 return null;  
40              }              }
41          }              HashSet s = (HashSet)m2.get(o2);
42          HashSet s = (HashSet)m2.get(o2);              if(s == null) {
         if(s == null) {  
             if(create) {  
43                  s = new HashSet();                  s = new HashSet();
44                  m2.put(o2, s);                  m2.put(o2, s);
             } else {  
                 return null;  
45              }              }
46                s.add(o3);
47          }          }
         return s;  
     }  
48    
49      public Object find1_11X(Object subject, Object predicate, Obs obs) {          public void set1_11X(Object subject, Object predicate, Object object) {
50          observer.addObs(subject, predicate, observer.WILDCARD, obs);              rm_11A(subject, predicate);
         HashSet s = get_HHS(false, spo, subject, predicate);  
         if(s == null) return null;  
         int size = s.size();  
         if(size == 0) return null;  
         if(size != 1) throw new  NotUniqueError(subject, predicate, null);  
         // urgh...  
         return s.iterator().next();  
     }  
51    
52                add(subject, predicate, object);
53            }
54    
     public Iterator findN_11X_Iter(Object subject, Object predicate, Obs obs) {  
         observer.addObs(subject, predicate, observer.WILDCARD, obs);  
         HashSet s = get_HHS(false, spo, subject, predicate);  
         if(s == null)  
             return emptySet.iterator();  
         int size = s.size();  
         return s.iterator();  
     }  
55    
56            //////////////////
57            // Finds
58    
59            public Object find1_11X(Object e0,Object e1,Obs obs) {
60    if(obs != null) observer.addObs(e0, e1, observer.WILDCARD, obs);
61    
62                        HashMap hash1 = (HashMap) ind_012.get(e0);
63                        if(hash1 == null) return null;
64                    
65                        HashSet hash2 = (HashSet) hash1.get(e1);
66                        if(hash2 == null) return null;
67                    
68                            HashSet resSet = hash2;
69                        
70                    if(resSet.size() == 0) return null;
71                    if(resSet.size() == 1) return resSet.iterator().next();
72                    throw new NotUniqueError(e0,e1,null);
73                }
74    
75    public Object find1_1X1(Object e0,Object e2,Obs obs) {
76    if(obs != null) observer.addObs(e0, observer.WILDCARD, e2, obs);
77    
78      // --------------------------------                      HashMap hash1 = (HashMap) ind_021.get(e0);
79      // Methods which modify the structure by calling the single-triple                      if(hash1 == null) return null;
80      // methods below.                  
81      //                      HashSet hash2 = (HashSet) hash1.get(e2);
82                        if(hash2 == null) return null;
83                    
84                            HashSet resSet = hash2;
85                        
86                    if(resSet.size() == 0) return null;
87                    if(resSet.size() == 1) return resSet.iterator().next();
88                    throw new NotUniqueError(e0,null,e2);
89                }
90    
91    public Object find1_X11(Object e1,Object e2,Obs obs) {
92    if(obs != null) observer.addObs(observer.WILDCARD, e1, e2, obs);
93    
94      public void set1_11X(Object subject, Object predicate, Object object) {                      HashMap hash1 = (HashMap) ind_120.get(e1);
95          rm_11X(subject, predicate);                      if(hash1 == null) return null;
96                    
97                        HashSet hash2 = (HashSet) hash1.get(e2);
98                        if(hash2 == null) return null;
99                    
100                            HashSet resSet = hash2;
101                        
102                    if(resSet.size() == 0) return null;
103                    if(resSet.size() == 1) return resSet.iterator().next();
104                    throw new NotUniqueError(null,e1,e2);
105                }
106    
107          add(subject, predicate, object);  public Object find1_1XA(Object e0,Obs obs) {
108      }  if(obs != null) observer.addObs(e0, observer.WILDCARD, observer.WILDCARD, obs);
109    
110      public void rm_11X(Object subject, Object predicate) {                      HashMap hash1 = (HashMap) ind_012.get(e0);
111          HashSet s = get_HHS(false, spo, subject, predicate);                      if(hash1 == null) return null;
112          if(s == null) return;                  
113          ArrayList l = new ArrayList(s);                          Set resSet = hash1.keySet();
114          for(Iterator i = l.iterator(); i.hasNext(); )                      
115              rm_111(subject, predicate, i.next());                  if(resSet.size() == 0) return null;
116      }                  if(resSet.size() == 1) return resSet.iterator().next();
117                    throw new NotUniqueError(e0,null,null);
118                }
119    
120    public Object find1_XAA(Obs obs) {
121    if(obs != null) observer.addObs(observer.WILDCARD, observer.WILDCARD, observer.WILDCARD, obs);
122    
123      // --------------------------------                          Set resSet = ind_012.keySet();
124      // Methods which actually modify the structure                      
125      //                  if(resSet.size() == 0) return null;
126                    if(resSet.size() == 1) return resSet.iterator().next();
127      public void rm_111(Object subject, Object predicate, Object object) {                  throw new NotUniqueError(null,null,null);
128          HashSet s = get_HHS(false, spo, subject, predicate);              }
         if(s == null) return;  
         s.remove(object);  
         observer.triggerObs(subject, predicate, object);  
     }  
129    
130      public void add(Object subject, Object predicate, Object object) {  public Iterator findN_11X_Iter(Object e0,Object e1,Obs obs) {
131          get_HHS(true, spo, subject, predicate).add(object);  if(obs != null) observer.addObs(e0, e1, observer.WILDCARD, obs);
132          observer.triggerObs(subject, predicate, object);  
133      }                      HashMap hash1 = (HashMap) ind_012.get(e0);
134                        if(hash1 == null) return emptySet.iterator();
135                    
136                        HashSet hash2 = (HashSet) hash1.get(e1);
137                        if(hash2 == null) return emptySet.iterator();
138                    
139                            HashSet resSet = hash2;
140                        return resSet.iterator();
141    }
142    
143    public Iterator findN_1X1_Iter(Object e0,Object e2,Obs obs) {
144    if(obs != null) observer.addObs(e0, observer.WILDCARD, e2, obs);
145    
146                        HashMap hash1 = (HashMap) ind_021.get(e0);
147                        if(hash1 == null) return emptySet.iterator();
148                    
149                        HashSet hash2 = (HashSet) hash1.get(e2);
150                        if(hash2 == null) return emptySet.iterator();
151                    
152                            HashSet resSet = hash2;
153                        return resSet.iterator();
154    }
155    
156    public Iterator findN_X11_Iter(Object e1,Object e2,Obs obs) {
157    if(obs != null) observer.addObs(observer.WILDCARD, e1, e2, obs);
158    
159                        HashMap hash1 = (HashMap) ind_120.get(e1);
160                        if(hash1 == null) return emptySet.iterator();
161                    
162                        HashSet hash2 = (HashSet) hash1.get(e2);
163                        if(hash2 == null) return emptySet.iterator();
164                    
165                            HashSet resSet = hash2;
166                        return resSet.iterator();
167  }  }
168    
169    public Iterator findN_1XA_Iter(Object e0,Obs obs) {
170    if(obs != null) observer.addObs(e0, observer.WILDCARD, observer.WILDCARD, obs);
171    
172                        HashMap hash1 = (HashMap) ind_012.get(e0);
173                        if(hash1 == null) return emptySet.iterator();
174                    
175                            Set resSet = hash1.keySet();
176                        return resSet.iterator();
177    }
178    
179    public Iterator findN_XAA_Iter(Obs obs) {
180    if(obs != null) observer.addObs(observer.WILDCARD, observer.WILDCARD, observer.WILDCARD, obs);
181    
182                            Set resSet = ind_012.keySet();
183                        return resSet.iterator();
184    }
185    
186    
187    
188    
189            // --------------------------------
190            // Methods which modify the structure by calling the single-triple
191            // methods below.
192            //
193    
194    
195            // --------------------------------
196            // Methods which actually modify the structure
197            //
198    
199            public void rm_111(Object e0, Object e1, Object e2) {
200                
201                rm_ind(ind_012, e0, e1, e2);
202            
203                rm_ind(ind_021, e0, e2, e1);
204            
205                rm_ind(ind_120, e1, e2, e0);
206            
207    
208                observer.triggerObs(e0, e1, e2);
209            }
210    
211            public void add(Object e0, Object e1, Object e2) {
212                
213                add_ind(ind_012, e0, e1, e2);
214            
215                add_ind(ind_021, e0, e2, e1);
216            
217                add_ind(ind_120, e1, e2, e0);
218            
219    
220                observer.triggerObs(e0, e1, e2);
221            }
222    
223        }
224    
225    
226    
227    
228        

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26