+ if (anAttributes.containsKey(LOG_TYPE_ATTRIBUTE)) {
+ typeString = ((String) anAttributes.get( LOG_TYPE_ATTRIBUTE ));
+
+ if (typeString.toLowerCase().equals("debug"))
+ type = LoggerWrapper.DEBUG_MESSAGE;
+ else if (typeString.toLowerCase().equals("info"))
+ type = LoggerWrapper.INFO_MESSAGE;
+ else if (typeString.toLowerCase().equals("error"))
+ type = LoggerWrapper.ERROR_MESSAGE;
+ else if (typeString.toLowerCase().equals("warning"))
+ type = LoggerWrapper.WARN_MESSAGE;
+ else if (typeString.toLowerCase().equals("fatal"))
+ type = LoggerWrapper.FATAL_MESSAGE;
+ else
+ throw new ProducerConfigExc("unknown log type: " + typeString + " (allowed are debug, info, warning, error, fatal)");
+ }
+ else
+ type = LoggerWrapper.INFO_MESSAGE;
+ };
+
+ public ProducerNode constructNode() {
+ return new LoggingProducerNode(message, type);
+ };
+ }
+
+////////////////////////////////////////////////////////////////////////////////
+
+ 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;