package org.genedb.query; import org.genedb.query.compatability.NullResultCompatibility; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * A simple implementation of Result, using an ArrayList internally. * * @author art */ public class SimpleListResult implements Result { private String name; private boolean edited; private String type; private List<Object> list = new ArrayList<Object>(); private String query; private ResultCompatibility resultCompatability; /** * Get the <code>ResultCompatability</code> which this result is * using for comparing * * @return the compatability check, or NullResultCompatability */ public ResultCompatibility getResultCompatability() { if (this.resultCompatability == null) { return NullResultCompatibility.INSTANCE; } return this.resultCompatability; } /** * Set the ResultCompatability to use for this Result * * @param resultCompatability */ public void setResultCompatability(ResultCompatibility resultCompatability) { this.resultCompatability = resultCompatability; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isEdited() { return edited; } public String getQueryAsString() { return query; } public String getType() { return type; } public boolean isEmpty() { return list.isEmpty(); } public int size() { return list.size(); } public void add(Object o) { list.add(o); } public boolean remove(Object o) { return list.remove(o); } public Iterator iterator() { return list.iterator(); } public Result union(Result result) { Result ret = new SimpleListResult(); for (Object o : list) { ret.add(o); } for (Object o : result) { ret.add(o); } return ret; } /** * @see org.genedb.zoe.query.Result#except(org.genedb.zoe.query.Result) */ public Result except(Result except) { Result ret = new SimpleListResult(); for (Object o : list) { ret.add(o); } for (Object o : except) { ret.remove(o); } return ret; } /** * @see org.genedb.zoe.query.Result#intersect(org.genedb.zoe.query.Result) */ public Result intersect(Result intersect) { Result ret = new SimpleListResult(); for (Object o : intersect) { if (list.contains(o)) { ret.add(o); } } return ret; } /** * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder ret = new StringBuilder("SimpleListResult name='"); ret.append(name); ret.append("' size="); ret.append(size()); return ret.toString(); } }