/* * Copyright (c) 1998-2005, The University of Sheffield. * * This file is part of GATE (see http://gate.ac.uk/), and is free * software, licenced under the GNU Library General Public License, * Version 2, June 1991 (in the distribution as file licence.html, * and also available at http://gate.ac.uk/gate/licence.html). * * Valentin Tablan 19/11/2002 * * $Id: DatasetDefintion.java 6974 2005-10-18 11:52:16 +0000 (Tue, 18 Oct 2005) nirajaswani $ * */ package gate.creole.ml; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.jdom.Element; import gate.util.GateException; /** * Stores data describing a dataset. */ public class DatasetDefintion implements Serializable{ public DatasetDefintion(Element domElement) throws GateException{ if(!domElement.getName().equals("DATASET")) throw new GateException( "Dataset defintion element is \"" + domElement.getName() + "\" instead of \"DATASET\"!"); //find instance the type Element anElement = domElement.getChild("INSTANCE-TYPE"); if(anElement != null) instanceType = anElement.getTextTrim(); else throw new GateException( "Required element \"INSTANCE-TYPE\" not present!"); //find the attributes int attrIndex = 0; attributes = new ArrayList(); Iterator childrenIter = domElement.getChildren("ATTRIBUTE").iterator(); while(childrenIter.hasNext()){ Element child = (Element)childrenIter.next(); Attribute attribute = new Attribute(child); if(attribute.isClass()){ if(classAttribute != null) throw new GateException( "Attribute \""+ attribute.getName() + "\" marked as class attribute but the class is already known to be\""+ classAttribute.getName() + "\"!"); classAttribute = attribute; classIndex = attrIndex; } attributes.add(attribute); attrIndex ++; } // parsing ATTRIBUTELIST to support range List attributeList = domElement.getChildren("ATTRIBUTELIST"); if(attributeList != null) { Iterator childrenSerieIter = attributeList.iterator(); while(childrenSerieIter.hasNext()){ Element child = (Element)childrenSerieIter.next(); List attributelist = Attribute.parseSeries(child); attributes.addAll(attributelist); attrIndex += attributelist.size(); } } if(classAttribute == null) throw new GateException( "No class attribute defined!"); } public DatasetDefintion(){ attributes = new ArrayList(); classAttribute = null; classIndex = -1; instanceType = null; } public String toString(){ StringBuffer res = new StringBuffer(); res.append("Instance type: " + instanceType + "\n"); Iterator attrIter = attributes.iterator(); while(attrIter.hasNext()){ res.append("Attribute:" + attrIter.next().toString() + "\n"); } return res.toString(); } public java.util.List getAttributes() { return attributes; } public Attribute getClassAttribute(){ return classAttribute; } public String getInstanceType() { return instanceType; } public int getClassIndex() { return classIndex; } public void setClassAttribute(Attribute classAttribute) { this.classAttribute = classAttribute; } public void setClassIndex(int classIndex) { this.classIndex = classIndex; } public void setInstanceType(String instanceType) { this.instanceType = instanceType; } protected java.util.List attributes; protected Attribute classAttribute = null; protected String instanceType; protected int classIndex; }