X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Fproducer%2Freader%2FDefaultProducerNodeBuilders.java;h=b458fed14815e49544b462a0d51f874ffe9f63a1;hb=ca12a9f67370f53d6ba44ea6ee68eb67bd168c54;hp=fcfc3b3a5a64c3a9015e453e2975bde44133ea05;hpb=1ba06c565ec314b8e189a25e7aead8b3a4ce3ad5;p=mir.git diff --git a/source/mir/producer/reader/DefaultProducerNodeBuilders.java b/source/mir/producer/reader/DefaultProducerNodeBuilders.java index fcfc3b3a..b458fed1 100755 --- a/source/mir/producer/reader/DefaultProducerNodeBuilders.java +++ b/source/mir/producer/reader/DefaultProducerNodeBuilders.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,17 +18,15 @@ * 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.reader; import java.util.Arrays; @@ -55,6 +53,7 @@ import mir.producer.GeneratingProducerNode; import mir.producer.LoggingProducerNode; import mir.producer.LoopProducerNode; import mir.producer.ProducerNode; +import mir.producer.*; import mir.producer.ResourceBundleProducerNode; import mir.producer.ScriptCallingProducerNode; import mir.util.XMLReader; @@ -78,6 +77,11 @@ public class DefaultProducerNodeBuilders { aBuilderLibrary.registerBuilder("If", ConditionalProducerNodeBuilder.class); aBuilderLibrary.registerBuilder("While", LoopProducerNodeBuilder.class); + aBuilderLibrary.registerBuilder("RSS", RSSProducerNodeBuilder.class); + aBuilderLibrary.registerBuilder("RDFAggregate", RDFAggregatorProducerNodeBuilder.class); + + aBuilderLibrary.registerBuilder("FreeQuery", FreeQueryProducerNodeBuilder.class); + aBuilderLibrary.registerFactory("Enumerate", new EnumeratingProducerNodeBuilder.factory(aModel)); aBuilderLibrary.registerFactory("List", new ListProducerNodeBuilder.factory(aModel)); aBuilderLibrary.registerFactory("Batch", new BatchingProducerNodeBuilder.factory(aModel)); @@ -121,6 +125,7 @@ public class DefaultProducerNodeBuilders { public final static String SKIP_ATTRIBUTE = "skip"; public final static String KEY_ATTRIBUTE = "key"; public final static String LIMIT_ATTRIBUTE = "limit"; + public final static String URL_ATTRIBUTE = "url"; //////////////////////////////////////////////////////////////////////////////// @@ -364,6 +369,56 @@ public class DefaultProducerNodeBuilders { //////////////////////////////////////////////////////////////////////////////// + public static class FreeQueryProducerNodeBuilder extends AbstractProducerNodeBuilder { + private final static String FREEQUERY_KEY_ATTRIBUTE = KEY_ATTRIBUTE; + private final static String FREEQUERY_LIMIT_ATTRIBUTE = LIMIT_ATTRIBUTE; + private final static String FREEQUERY_QUERY_ATTRIBUTE = "query"; + private final static String FREEQUERY_TYPE_ATTRIBUTE = "type"; + private final static String[] FREEQUERY_REQUIRED_ATTRIBUTES = { KEY_ATTRIBUTE, FREEQUERY_QUERY_ATTRIBUTE }; + private final static String[] FREEQUERY_OPTIONAL_ATTRIBUTES = { LIMIT_ATTRIBUTE, FREEQUERY_TYPE_ATTRIBUTE }; + private final static String[] FREEQUERY_SUBNODES = {}; + + private String key; + private String query; + private String limit; + private int type; + + public FreeQueryProducerNodeBuilder() { + super(FREEQUERY_SUBNODES); + } + + public void setAttributes(Map anAttributes) throws ProducerConfigExc, XMLReader.XMLReaderExc { + String typeString; + + XMLReaderTool.checkAttributes(anAttributes, FREEQUERY_REQUIRED_ATTRIBUTES, FREEQUERY_OPTIONAL_ATTRIBUTES); + + key = (String) anAttributes.get(FREEQUERY_KEY_ATTRIBUTE); + query = (String) anAttributes.get(FREEQUERY_QUERY_ATTRIBUTE); + limit = (String) anAttributes.get(FREEQUERY_LIMIT_ATTRIBUTE); + + if (anAttributes.containsKey(FREEQUERY_TYPE_ATTRIBUTE)) { + typeString = ((String) anAttributes.get( FREEQUERY_TYPE_ATTRIBUTE )); + + if (typeString.toLowerCase().equals("set")) + type = FreeQueryProducerNode.QUERY_TYPE_SET; + else if (typeString.toLowerCase().equals("row")) + type = FreeQueryProducerNode.QUERY_TYPE_ROW; + else if (typeString.toLowerCase().equals("value")) + type = FreeQueryProducerNode.QUERY_TYPE_VALUE; + else + throw new ProducerConfigExc("unknown query type: " + typeString + " (allowed are set, row and value)"); + } + else + type = FreeQueryProducerNode.QUERY_TYPE_SET; + }; + + public ProducerNode constructNode() { + return new FreeQueryProducerNode(key, query, limit, type); + }; + } + +//////////////////////////////////////////////////////////////////////////////// + public static class ResourceBundleProducerNodeBuilder extends AbstractProducerNodeBuilder { private final static String RESOURCEBUNDLE_KEY_ATTRIBUTE = KEY_ATTRIBUTE; private final static String RESOURCEBUNDLE_BUNDLE_ATTRIBUTE = "bundle"; @@ -690,6 +745,70 @@ public class DefaultProducerNodeBuilders { //////////////////////////////////////////////////////////////////////////////// + public static class RSSProducerNodeBuilder extends AbstractProducerNodeBuilder { + private final static String RSS_KEY_ATTRIBUTE = KEY_ATTRIBUTE; + private final static String RSS_URL_ATTRIBUTE = URL_ATTRIBUTE; + + private final static String[] RSS_REQUIRED_ATTRIBUTES = { RSS_KEY_ATTRIBUTE, RSS_URL_ATTRIBUTE }; + private final static String[] RSS_OPTIONAL_ATTRIBUTES = { }; + private final static String[] RSS_SUBNODES = { }; + + private String key; + private String url; + + public RSSProducerNodeBuilder() { + super(RSS_SUBNODES); + } + + public void setAttributes(Map anAttributes) throws ProducerConfigExc, XMLReader.XMLReaderExc { + XMLReaderTool.checkAttributes(anAttributes, RSS_REQUIRED_ATTRIBUTES, RSS_OPTIONAL_ATTRIBUTES); + + key = (String) anAttributes.get( RSS_KEY_ATTRIBUTE ); + url = (String) anAttributes.get( RSS_URL_ATTRIBUTE ); + }; + + public ProducerNode constructNode() { + return new RSSProducerNode(key, url); + }; + } + +//////////////////////////////////////////////////////////////////////////////// + + public static class RDFAggregatorProducerNodeBuilder extends AbstractProducerNodeBuilder { + private final static String RDF_AGGREGATOR_KEY_ATTRIBUTE = KEY_ATTRIBUTE; + private final static String RDF_AGGREGATOR_SOURCE_ATTRIBUTE = "source"; + private final static String RDF_AGGREGATOR_ORDER_ATTRIBUTE = ORDER_ATTRIBUTE; + private final static String RDF_AGGREGATOR_FILTER_ATTRIBUTE = "filter"; + + private final static String[] RDF_AGGREGATOR_REQUIRED_ATTRIBUTES = { RDF_AGGREGATOR_KEY_ATTRIBUTE, RDF_AGGREGATOR_SOURCE_ATTRIBUTE }; + private final static String[] RDF_AGGREGATOR_OPTIONAL_ATTRIBUTES = { RDF_AGGREGATOR_ORDER_ATTRIBUTE, RDF_AGGREGATOR_FILTER_ATTRIBUTE }; + private final static String[] RDF_AGGREGATOR_SUBNODES = { }; + + private String key; + private String source; + private String order; + private String filter; + + public RDFAggregatorProducerNodeBuilder() { + super(RDF_AGGREGATOR_SUBNODES); + } + + public void setAttributes(Map anAttributes) throws ProducerConfigExc, XMLReader.XMLReaderExc { + XMLReaderTool.checkAttributes(anAttributes, RDF_AGGREGATOR_REQUIRED_ATTRIBUTES, RDF_AGGREGATOR_OPTIONAL_ATTRIBUTES); + + key = (String) anAttributes.get( RDF_AGGREGATOR_KEY_ATTRIBUTE ); + source = (String) anAttributes.get( RDF_AGGREGATOR_SOURCE_ATTRIBUTE ); + order = XMLReaderTool.getStringAttributeWithDefault(anAttributes, RDF_AGGREGATOR_SOURCE_ATTRIBUTE, ""); + filter = XMLReaderTool.getStringAttributeWithDefault(anAttributes, RDF_AGGREGATOR_FILTER_ATTRIBUTE, ""); + }; + + public ProducerNode constructNode() { + return new RDFAggregatorProducerNode(key, source, order, filter); + }; + } + +//////////////////////////////////////////////////////////////////////////////// + public static class ScriptedProducerParameterNodeBuilder implements ProducerNodeBuilder { private String parameterName; private String scriptedNodeName;