📄 conditionexamplereader.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.example;/** This ExampleReader skips all examples that do not fulfil a * specified {@link Condition}. * * @version $Id: ConditionExampleReader.java,v 2.5 2003/07/03 16:01:30 fischer Exp $ */public class ConditionExampleReader implements ExampleReader { /** Array of fully qualified classnames of implementations of * {@link Condition} that are useful independently * of special applications. */ public static final String[] KNOWN_CONDITION_IMPLEMENTATIONS = { AttributeValueFilter.class.getName(), LegalNumberCondition.class.getName() }; /** The example reader that provides a complete example set * which must have a cluster attribute set. */ private ExampleReader parent; private Condition condition; /** The example that will be returned by the next invocation of next(). */ private Example currentExample; /** Constructs a new ConditionExampleReader the next() method of which * returns only examples that fulfil a specified condition. */ public ConditionExampleReader(ExampleReader parent, Condition condition) { this.parent = parent; this.currentExample = null; this.condition = condition; } public boolean hasNext() { while (currentExample == null) { if (!parent.hasNext()) return false; Example e = parent.next(); if (condition.conditionOk(e)) currentExample = e; } return true; } public Example next() { hasNext(); Example dummy = currentExample; currentExample = null; return dummy; } /** Creates a new instance of className which must be an implementation * of {@link Condition} by calling its two argument constructor passing * it the example set and the parameter string */ public static Condition createCondition(String className, ExampleSet exampleSet, String parameterString) { try { Class clazz = Class.forName(className); if (!Condition.class.isAssignableFrom(clazz)) throw new ClassCastException("'"+className+"' does not implement Condition!"); java.lang.reflect.Constructor constructor = clazz.getConstructor(new Class[] { ExampleSet.class, String.class }); return (Condition)constructor.newInstance(new Object[] { exampleSet, parameterString } ); } catch (ClassNotFoundException e) { throw new RuntimeException("Cannot find class '"+className+"'. Check your classpath."); } catch (NoSuchMethodException e) { throw new RuntimeException("'"+className+"' must implement two argument constructor "+ className+"(ExampleSet,String) !"); } catch (java.lang.reflect.InvocationTargetException e) { throw new RuntimeException("Cannot create "+className+": "+e+ ". Target: "+e.getCause()+". Cause: "+e.getTargetException()+"."); } catch (Throwable throwable) { throw new RuntimeException("While creating condition '"+className+"': "+throwable); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -