X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Fproducer%2FEntityEnumeratingProducerNode.java;h=d387ffbe66bd8d3038842cd2b956fa2af3645c62;hb=fa2ae3a41572f5b762b761935fc712b59c2a6933;hp=1d352ef7bc1a3eaff02d234e639bea942e288a4d;hpb=e42ecea2db8ff123f268edf48190d6b9b28fcedb;p=mir.git diff --git a/source/mir/producer/EntityEnumeratingProducerNode.java b/source/mir/producer/EntityEnumeratingProducerNode.java index 1d352ef7..d387ffbe 100755 --- a/source/mir/producer/EntityEnumeratingProducerNode.java +++ b/source/mir/producer/EntityEnumeratingProducerNode.java @@ -1,105 +1,92 @@ +/* + * Copyright (C) 2001, 2002 The Mir-coders group + * + * This file is part of Mir. + * + * Mir 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. + * + * Mir 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 Mir; if not, write to the Free Software + * 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. + */ + package mir.producer; -import java.util.*; -import java.io.*; -import mir.entity.adapter.*; -import mir.entity.*; -import mir.storage.*; -import mir.util.*; +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; public class EntityEnumeratingProducerNode extends ProducerNodeDecorator { - private Map verbs; - private EntityEnumeratingProducerNodeVerb defaultVerb; private String key; private EntityAdapterModel model; private String definition; private String skip; private String limit; + private String whereClause; + private String orderByClause; public EntityEnumeratingProducerNode( - String aKey, - EntityAdapterModel aModel, String aDefinition, - ProducerNode aSubNode) { + String aKey, + EntityAdapterModel aModel, String aDefinition, + String aWhereClause, String anOrderByClause, + String aLimit, String aSkip, + ProducerNode aSubNode) { super(aSubNode); - defaultVerb = null; - verbs = new HashMap(); model = aModel; definition = aDefinition; key = aKey; - } - public EntityEnumeratingProducerNode( - String aKey, - EntityAdapterModel aModel, String aDefinition, - String aDefaultWhereClause, String aDefaultOrderByClause, - ProducerNode aSubNode) { - this(aKey, aModel, aDefinition, aDefaultWhereClause, aDefaultOrderByClause, "", "", aSubNode); - } - - public EntityEnumeratingProducerNode( - String aKey, - EntityAdapterModel aModel, String aDefinition, - String aDefaultWhereClause, String aDefaultOrderByClause, - String aLimit, String aSkip, - ProducerNode aSubNode) { - this(aKey, aModel, aDefinition, aSubNode); + whereClause = aWhereClause; + orderByClause = anOrderByClause; limit= aLimit; skip = aSkip; - defaultVerb = new EntityEnumeratingProducerNodeVerb(aDefaultWhereClause, aDefaultOrderByClause); } - public void produce(Map aValueMap, String aVerb, PrintWriter aLogger) throws ProducerFailure { - EntityEnumeratingProducerNodeVerb verb = (EntityEnumeratingProducerNodeVerb) verbs.get(aVerb); + public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure { Iterator browser; - if (verb==null) - verb = defaultVerb; - - if (verb==null) - throw new ProducerFailure("EntityEnumeratingProducerNode: unknown verb '"+aVerb+"'", null); - try { browser = new EntityIteratorAdapter( - ParameterExpander.expandExpression( aValueMap, verb.whereClause ), - ParameterExpander.expandExpression( aValueMap, verb.orderByClause ), + ParameterExpander.expandExpression( aValueMap, whereClause ), + ParameterExpander.expandExpression( aValueMap, orderByClause ), 100, model, definition, ParameterExpander.evaluateIntegerExpressionWithDefault( aValueMap, limit, -1), ParameterExpander.evaluateIntegerExpressionWithDefault( aValueMap, skip, 0)); - while (browser.hasNext()) { + while (browser.hasNext() && !isAborted(aValueMap)) { ParameterExpander.setValueForKey( aValueMap, key, browser.next()); super.produce(aValueMap, aVerb, aLogger); } } catch (Throwable t) { - throw new ProducerFailure(t.getMessage(), t); + aLogger.error("Exception occurred inside an EntityEnumeratingProducerNode: " + t.getMessage()); } }; - - public Set buildVerbSet() { - Set set; - - set = super.buildVerbSet(); - set.addAll(verbs.keySet()); - - return set; - }; - - public void addVerb(String aVerb, String aWhereClause, String anOrderByClause) { - verbs.put(aVerb, new EntityEnumeratingProducerNodeVerb(aWhereClause, anOrderByClause)); - } - - private class EntityEnumeratingProducerNodeVerb { - String whereClause; - String orderByClause; - - EntityEnumeratingProducerNodeVerb(String aWhereClause, String anOrderByClause) { - whereClause = aWhereClause; - orderByClause = anOrderByClause; - } - } } \ No newline at end of file