public ExampleIterator(OperatorDescription description) { super(description, "Example Process"); outExtender.start(); getTransformer().addPassThroughRule(exampleSetInput, exampleSetInnerSource); getTransformer().addRule(new SubprocessTransformRule(getSubprocess(0))); getTransformer() .addRule( new PassThroughRule(exampleSetInput, exampleSetOutput, false) { @Override public MetaData modifyMetaData(MetaData unmodifiedMetaData) { if (exampleSetInnerSink.isConnected()) { return exampleSetInnerSink.getMetaData(); } else { // due to side effects, we cannot make any guarantee about the output. return new ExampleSetMetaData(); } } }); getTransformer().addRule(outExtender.makePassThroughRule()); addValue( new ValueDouble("iteration", "The number of the current iteration / loop / example.") { @Override public double getDoubleValue() { return iteration; } }); }
public MultipleLabelIterator(OperatorDescription description) { super(description, "Iteration"); outExtender.start(); getTransformer() .addRule( new ExampleSetPassThroughRule(exampleSetInput, exampleInnerSource, SetRelation.EQUAL) { @Override public ExampleSetMetaData modifyExampleSet(ExampleSetMetaData metaData) throws UndefinedParameterError { AttributeMetaData myLabel = metaData.getLabelMetaData(); if (myLabel != null) metaData.removeAttribute(myLabel); for (AttributeMetaData amd : metaData.getAllAttributes()) { if (amd.getName().startsWith(Attributes.LABEL_NAME)) { amd.setRole(Attributes.LABEL_NAME); break; } } return metaData; } }); getTransformer().addRule(new SubprocessTransformRule(getSubprocess(0))); getTransformer().addRule(outExtender.makePassThroughRule()); }