📄 iocontainer.java
字号:
/* * YALE - Yet Another Learning Environment * Copyright (C) 2002, 2003 * Simon Fischer, Ralf Klinkenberg, Ingo Mierswa, * Katharina Morik, Oliver Ritthoff * Artificial Intelligence Unit * Computer Science Department * University of Dortmund * 44221 Dortmund, Germany * email: yale@ls8.cs.uni-dortmund.de * web: http://yale.cs.uni-dortmund.de/ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA. */package edu.udo.cs.yale.operator;import java.util.Collection;import java.util.Iterator;import java.util.LinkedList;import java.util.List;/** Input for Operator.apply(). Instances of this class are containers for IOObjects. * They are available by calling one of the <tt>getInput</tt> methods. The operator can * choose between keeping the IOObject in the container or delete it using it.<br> * * @see edu.udo.cs.yale.operator.IOObject * * @author Simon, Ingo * @version $Id: IOContainer.java,v 2.2 2003/05/14 13:33:20 fischer Exp $ */public class IOContainer { private List ioObjects; /** Creates a new IOContainer containing the contents of the Collection which must * contain only IOObjects. */ public IOContainer(Collection obj) { ioObjects = new LinkedList(); ioObjects.addAll(obj); } public IOContainer(IOObject[] obj) { ioObjects = new LinkedList(); for (int i = 0; i < obj.length; i++) ioObjects.add(obj[i]); } public String toString() { String result = "IOContainer (" + ioObjects.size() + " objects):\n"; result += ioObjects.toString(); return result; } /** Returns all IOObjects. */ public IOObject[] getIOObjects() { return (IOObject[])ioObjects.toArray(new IOObject[ioObjects.size()]); } /** Gets the first IOObject which is of class cls. The returned object * is removed from this IOContainer. */ public IOObject getInput(Class cls) throws MissingIOObjectException { return getInput(cls, 0, true); } /** Gets the first IOObject which is of class cls. If remove is set to true, * the object is aftwerwards removed from this IOContainer. */ public IOObject getInput(Class cls, boolean remove) throws MissingIOObjectException { return getInput(cls, 0, remove); } /** Gets the nr-th IOObject which is of class cls. If remove is set to true, * the object is aftwerwards removed from this IOContainer. */ public IOObject getInput(Class cls, int nr, boolean remove) throws MissingIOObjectException { int n = 0; // Zaehler fuer n-te Vorkommen der Klasse cls Iterator i = ioObjects.listIterator(); while (i.hasNext()) { IOObject object = (IOObject)i.next(); if ((object != null) && (cls.isAssignableFrom(object.getClass()))) { if (n == nr) { if (remove) i.remove(); return object; } else { n++; } } } throw new MissingIOObjectException(cls, "No object of class "+cls+ " found in input"); } /** Creates a new IOContainer containing all IOObjects in output plus all * IOObjects in this container. */ public IOContainer append(IOObject[] output) { List newObjects = new LinkedList(); for (int i = 0; i < output.length; i++) newObjects.add(output[i]); newObjects.addAll(ioObjects); return new IOContainer(newObjects); } /** Creates a new IOContainer containing all IOObjects in output plus all * IOObjects in this container. */ public IOContainer prepend(IOObject[] output) { List newObjects = new LinkedList(); newObjects.addAll(ioObjects); for (int i = 0; i < output.length; i++) newObjects.add(output[i]); return new IOContainer(newObjects); } /** Appends this container's IOObjects to output. */ public IOContainer append(Collection output) { List newObjects = new LinkedList(); newObjects.addAll(output); newObjects.addAll(ioObjects); return new IOContainer(newObjects); } public IOContainer copy() { return new IOContainer(ioObjects); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -