package tr.gov.ulakbim.jDenetX.streams.net; import weka.core.AbstractInstance; import weka.core.Attribute; import weka.core.DenseInstance; import weka.core.Instances; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.Queue; /** * @author caglar */ public class UDPInstanceQueue implements Queue { private Queue<AbstractInstance> InstQueue; private Instances Structure; private boolean m_isClassMissing; public UDPInstanceQueue(boolean isClassMissing) { InstQueue = new LinkedList<AbstractInstance>(); m_isClassMissing = isClassMissing; } public UDPInstanceQueue() { InstQueue = new LinkedList<AbstractInstance>(); m_isClassMissing = false; } public UDPInstanceQueue (Instances structure) { InstQueue = new LinkedList<AbstractInstance>(); Structure = structure; m_isClassMissing = false; } public void setStructure (Instances structure) { Structure = structure; m_isClassMissing = false; } @Override public boolean add (Object inst) { InstQueue.add((AbstractInstance) inst); return (inst != null); } public boolean addLine (String line) { int noOfAtts = Structure.numAttributes(); DenseInstance inst = new DenseInstance(noOfAtts); inst.setDataset(Structure); String attrs[] = line.split(","); for (int i = 0; i < Structure.numAttributes(); i++) { if (i == (attrs.length - 1)) { if (!inst.classIsMissing()) { inst.setClassValue(attrs[i]); } } else if (Structure.attribute(i).isNumeric()) { inst.setValue(Structure.attribute(i), Double.parseDouble(attrs[i])); } else if (Structure.attribute(i).isNominal()) { inst.setValue(i, Double.parseDouble(attrs[i])); } } if (m_isClassMissing) { inst.setClassMissing(); } InstQueue.add(inst); return ((line.length() > 1) && (Structure != null)); } @Override public boolean offer (Object inst) { InstQueue.add((AbstractInstance) inst); return (inst != null); } public boolean offerLine (String line) { int noOfAtts = Structure.numAttributes(); DenseInstance inst = new DenseInstance(noOfAtts); inst.setDataset(Structure); String attrs[] = line.split(","); for (int i = 0; i < Structure.numAttributes(); i++) { if (attrs[i].equals("?")) { inst.setMissing(i);//Add the missing attribute } else { inst.setValue(i, attrs[i]); } } inst.setClassMissing(); InstQueue.add(inst); return ((line.length() > 1) && (Structure != null)); } @Override public Object remove() { return InstQueue.remove(); } @Override public Object poll() { return InstQueue.poll(); } @Override public Object element() { return InstQueue.element(); } @Override public Object peek() { return InstQueue.peek(); } @Override public int size() { return InstQueue.size(); } @Override public boolean isEmpty() { return InstQueue.isEmpty(); } @Override public boolean contains(Object o) { return InstQueue.contains(o); } @Override public Iterator iterator() { return InstQueue.iterator(); } @Override public Object[] toArray() { return InstQueue.toArray(); } @Override public Object[] toArray(Object[] a) { return InstQueue.toArray(a); } @Override public boolean remove(Object o) { return InstQueue.remove(o); } @Override public boolean containsAll(Collection c) { return InstQueue.containsAll(c); } @Override public boolean addAll(Collection c) { return InstQueue.addAll(c); } @Override public boolean removeAll(Collection c) { return InstQueue.removeAll(c); } @Override public boolean retainAll(Collection c) { return InstQueue.retainAll(c); } @Override public void clear() { InstQueue.clear(); Structure.clear(); } public void setIsClassMissing (boolean isClassMissing) { this.m_isClassMissing = isClassMissing; } public boolean isClassMissing () { return m_isClassMissing; } }