X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Fproducer%2FEntityEnumeratingProducerNode.java;h=7c87a16521342d4f538ecd23a8283d65189961fe;hb=b1e3d8e04d556e10831192d6dfed20e5cd871fd4;hp=d387ffbe66bd8d3038842cd2b956fa2af3645c62;hpb=fa2ae3a41572f5b762b761935fc712b59c2a6933;p=mir.git diff --git a/source/mir/producer/EntityEnumeratingProducerNode.java b/source/mir/producer/EntityEnumeratingProducerNode.java index d387ffbe..7c87a165 100755 --- a/source/mir/producer/EntityEnumeratingProducerNode.java +++ b/source/mir/producer/EntityEnumeratingProducerNode.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001, 2002 The Mir-coders group + * Copyright (C) 2001, 2002 The Mir-coders group * * This file is part of Mir. * @@ -18,31 +18,30 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, The Mir-coders gives permission to link - * the code of this program with the com.oreilly.servlet library, any library - * licensed under the Apache Software License, The Sun (tm) Java Advanced - * Imaging library (JAI), The Sun JIMI library (or with modified versions of - * the above that use the same license as the above), and distribute linked - * combinations including the two. You must obey the GNU General Public - * License in all respects for all of the code used other than the above - * mentioned libraries. If you modify this file, you may extend this exception - * to your version of the file, but you are not obligated to do so. If you do - * not wish to do so, delete this exception statement from your version. + * the code of this program with any library licensed under the Apache Software License, + * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library + * (or with modified versions of the above that use the same license as the above), + * and distribute linked combinations including the two. You must obey the + * GNU General Public License in all respects for all of the code used other than + * the above mentioned libraries. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. + * If you do not wish to do so, delete this exception statement from your version. */ - package mir.producer; -import java.util.Iterator; -import java.util.Map; - import mir.entity.adapter.EntityAdapterModel; import mir.entity.adapter.EntityIteratorAdapter; -import mir.log.LoggerWrapper; import mir.util.ParameterExpander; +import mir.util.StringRoutines; + +import java.util.Iterator; public class EntityEnumeratingProducerNode extends ProducerNodeDecorator { private String key; private EntityAdapterModel model; private String definition; + private String mainTablePrefix; + private String extraTables; private String skip; private String limit; private String whereClause; @@ -50,7 +49,8 @@ public class EntityEnumeratingProducerNode extends ProducerNodeDecorator { public EntityEnumeratingProducerNode( String aKey, - EntityAdapterModel aModel, String aDefinition, + EntityAdapterModel aModel, String aMainTablePrefix, + String anExtraTables, String aDefinition, String aWhereClause, String anOrderByClause, String aLimit, String aSkip, ProducerNode aSubNode) { @@ -59,7 +59,8 @@ public class EntityEnumeratingProducerNode extends ProducerNodeDecorator { model = aModel; definition = aDefinition; key = aKey; - + mainTablePrefix=aMainTablePrefix; + extraTables = anExtraTables; whereClause = aWhereClause; orderByClause = anOrderByClause; @@ -67,26 +68,31 @@ public class EntityEnumeratingProducerNode extends ProducerNodeDecorator { skip = aSkip; } - public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { + public void produce(ProductionContext aProductionContext) throws ProducerFailure { Iterator browser; try { browser = new EntityIteratorAdapter( - ParameterExpander.expandExpression( aValueMap, whereClause ), - ParameterExpander.expandExpression( aValueMap, orderByClause ), + mainTablePrefix, + StringRoutines.splitString(ParameterExpander.expandExpression(aProductionContext.getValueSet(), + extraTables).trim(), ","), + ParameterExpander.expandExpression(aProductionContext.getValueSet(), whereClause), + ParameterExpander.expandExpression(aProductionContext.getValueSet(), orderByClause), 100, model, definition, - ParameterExpander.evaluateIntegerExpressionWithDefault( aValueMap, limit, -1), - ParameterExpander.evaluateIntegerExpressionWithDefault( aValueMap, skip, 0)); + ParameterExpander.evaluateIntegerExpressionWithDefault(aProductionContext.getValueSet(), limit, -1), + ParameterExpander.evaluateIntegerExpressionWithDefault(aProductionContext.getValueSet(), skip, 0)); - while (browser.hasNext() && !isAborted(aValueMap)) { - ParameterExpander.setValueForKey( aValueMap, key, browser.next()); - super.produce(aValueMap, aVerb, aLogger); + while (browser.hasNext() && !isAborted(aProductionContext)) { + ParameterExpander.setValueForKey(aProductionContext.getValueSet(), key, browser.next()); + + super.produce(aProductionContext); } } catch (Throwable t) { - aLogger.error("Exception occurred inside an EntityEnumeratingProducerNode: " + t.getMessage()); + aProductionContext.getLogger().warn("Exception occurred inside an EntityEnumeratingProducerNode: " + + t.getMessage()); } - }; + } } \ No newline at end of file