1 salcianu 1.1.2.1 // LightRelation.java, created Fri Jun 30 11:11:17 2000 by salcianu
 2 cananian 1.1.2.4 // Copyright (C) 2000 Alexandru SALCIANU <salcianu@retezat.lcs.mit.edu>
 3 salcianu 1.1.2.1 // Licensed under the terms of the GNU GPL; see COPYING for details.
 4 salcianu 1.1.2.1 package harpoon.Util.DataStructs;
 5 salcianu 1.1.2.1 
 6 salcianu 1.1.2.1 import java.util.Collection;
 7 salcianu 1.1.2.1 import java.util.Set;
 8 salcianu 1.1.2.1 import java.util.Iterator;
 9 salcianu 1.1.2.1 import java.util.Map;
10 salcianu 1.1.2.1 
11 salcianu 1.1.2.1 import java.io.Serializable;
12 salcianu 1.1.2.1 
13 cananian 1.3     import net.cscott.jutil.LinearSet;
14 salcianu 1.1.2.1 
15 salcianu 1.1.2.1 /**
16 salcianu 1.1.2.1  * <code>LightRelation</code>
17 salcianu 1.1.2.1  * 
18 cananian 1.1.2.4  * @author  Alexandru SALCIANU <salcianu@retezat.lcs.mit.edu>
19 cananian 1.4      * @version $Id: LightRelation.java,v 1.4 2004/02/08 03:21:50 cananian Exp $
20 salcianu 1.1.2.1  */
21 salcianu 1.1.2.1 public class LightRelation extends AbstrRelationMapBased
22 salcianu 1.1.2.1     implements Serializable {
23 salcianu 1.1.2.1 
24 salcianu 1.1.2.1     /** Creates a <code>RelationLight</code>. */
25 salcianu 1.1.2.1     public LightRelation() {
26 salcianu 1.1.2.1         map = new LightMap();
27 salcianu 1.1.2.1     }
28 salcianu 1.1.2.1 
29 salcianu 1.1.2.1 
30 salcianu 1.1.2.1     protected Relation getEmptyRelation() {
31 salcianu 1.1.2.1         return new LightRelation();
32 salcianu 1.1.2.1     }
33 salcianu 1.1.2.1     
34 salcianu 1.1.2.1 
35 salcianu 1.1.2.1     public boolean add(Object key, Object value) {
36 salcianu 1.1.2.1         hashCode = 0;
37 salcianu 1.1.2.2         Collection vals = getValues2(key);
38 salcianu 1.1.2.1         if(vals == null)
39 salcianu 1.1.2.1             map.put(key, vals = new LinearSet());
40 salcianu 1.1.2.1         return vals.add(value);
41 salcianu 1.1.2.1     }
42 salcianu 1.1.2.1 
43 salcianu 1.1.2.1 
44 salcianu 1.1.2.1     public boolean addAll(Object key, Collection values) {
45 salcianu 1.1.2.1         hashCode = 0;
46 salcianu 1.1.2.2         if((values == null) || values.isEmpty())
47 salcianu 1.1.2.1             return false;
48 salcianu 1.1.2.2         Collection vals = getValues2(key);
49 salcianu 1.1.2.1         if(vals == null)
50 salcianu 1.1.2.1             map.put(key, vals = new LinearSet());
51 salcianu 1.1.2.1         return vals.addAll(values);
52 salcianu 1.1.2.1     }
53 salcianu 1.1.2.1 
54 salcianu 1.1.2.1 
55 salcianu 1.1.2.1     public void removeAll(Object key, Collection values) {
56 salcianu 1.1.2.1         hashCode = 0;
57 salcianu 1.1.2.2         Collection vals = getValues2(key);
58 salcianu 1.1.2.1         if((vals == null) || vals.isEmpty()) return;
59 salcianu 1.1.2.1 
60 salcianu 1.1.2.1         for(Iterator it = values.iterator(); it.hasNext(); )
61 salcianu 1.1.2.1             vals.remove(it.next());
62 salcianu 1.1.2.1     }
63 salcianu 1.1.2.1 
64 salcianu 1.1.2.1 
65 salcianu 1.1.2.1     public Object clone() {
66 salcianu 1.1.2.1         LightRelation newrel = (LightRelation) super.clone();
67 cananian 1.1.2.3         newrel.map = (Map) ((LightMap) map).clone();
68 cananian 1.4             for(Object entryO : newrel.map.entrySet()) {
69 cananian 1.4                 Map.Entry entry = (Map.Entry) entryO;
70 salcianu 1.1.2.1             LinearSet newvals = 
71 salcianu 1.1.2.1                 (LinearSet) ((LinearSet) entry.getValue()).clone();
72 salcianu 1.1.2.1             entry.setValue(newvals);
73 salcianu 1.1.2.1         }
74 salcianu 1.1.2.1         return newrel;
75 salcianu 1.1.2.1     }
76 salcianu 1.1.2.1 
77 cananian 1.2     }