import org.apache.commons.collections.collection.*;
import org.apache.commons.collections.set.*;
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Collection;
public class SetExampleV2 {
public static void main(String args[]) {
// create two sets
Set set1 = new HashSet();
set1.add("Red");
set1.add("Green");
Set set2 = new HashSet();
set2.add("Yellow");
set2.add("Red");
// create a composite set out of these two
CompositeSet composite = new CompositeSet();
// set the class that handles additions, conflicts etc
// composite.setMutator(new CompositeMutator());
// initialize the composite with the sets
// Cannot be used if set1 and set2 intersect is not null and
// a strategy to deal with it has not been set
composite.addComposited(new Set[] {set1, set2});
// do some addition/deletions
// composite.add("Pink");
// composite.remove("Green");
// whats left in the composite?
Iterator itr = composite.iterator();
while(itr.hasNext()) {
System.err.println(itr.next());
}
}
}
class CompositeMutator implements CompositeSet.SetMutator {
public void resolveCollision(
CompositeSet comp,
Set existing,
Set added,
Collection intersection) {
added.removeAll(intersection);
}
public boolean add(
CompositeCollection collection,
Collection[] collections,
Object obj) {
return collections[0].add(obj);
}
public boolean remove(
CompositeCollection collection,
Collection[] collections,
Object obj) {
return collections[0].remove(obj);
}
public boolean addAll(
CompositeCollection collection,
Collection[] collections,
Collection coll) {
return collections[0].addAll(coll);
}
}
|