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 }