Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java @ 81:9b41f3688610
Added Support for TimeSeriesMesh
gnv-artifacts/trunk@106 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Mon, 21 Sep 2009 11:50:47 +0000 |
parents | e33c61735a4e |
children | 5eb62df21f9a |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java Thu Sep 17 14:25:24 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java Mon Sep 21 11:50:47 2009 +0000 @@ -10,6 +10,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Set; @@ -31,6 +32,7 @@ import de.intevation.gnv.transition.describedata.MinMaxDescribeData; import de.intevation.gnv.transition.describedata.NamedArrayList; import de.intevation.gnv.transition.describedata.NamedCollection; +import de.intevation.gnv.transition.describedata.SingleValueDescribeData; import de.intevation.gnv.transition.exception.TransitionException; import de.intevation.gnv.utils.ArtifactXMLUtilities; @@ -54,7 +56,7 @@ private String description = null; - private String dataName = null; + protected String dataName = null; private boolean dataMultiSelect = false; @@ -130,7 +132,20 @@ this.inputValueNames = new ArrayList<String>(inputValuesNodes.getLength()); for (int i = 0 ; i < inputValuesNodes.getLength(); i++){ Node inputValueNode = inputValuesNodes.item(i); - InputValue inputValue = new DefaultInputValue(Config.getStringXPath(inputValueNode,"@name"), Config.getStringXPath(inputValueNode,"@type"), Boolean.parseBoolean(Config.getStringXPath(inputValueNode,"@multiselect"))); + String usedinQueryValue = Config.getStringXPath(inputValueNode,"@usedinquery"); + int usedinQuery = 1; + if (usedinQueryValue != null){ + try { + usedinQuery = Integer.parseInt(usedinQueryValue); + } catch (NumberFormatException e) { + log.warn("Used in Query Value cannot be transformed into a Number"); + } + } + InputValue inputValue = new DefaultInputValue( + Config.getStringXPath(inputValueNode,"@name"), + Config.getStringXPath(inputValueNode,"@type"), + Boolean.parseBoolean(Config.getStringXPath(inputValueNode,"@multiselect")), + usedinQuery); log.debug(inputValue.toString()); this.inputValues.put(inputValue.getName(),inputValue); this.inputValueNames.add(inputValue.getName()); @@ -272,17 +287,30 @@ public void advance() throws TransitionException { log.debug("TransitionBase.advance"); try { - String[] filterValues = new String[this.inputValueNames.size()]; + List<String> list = new ArrayList<String>(); + + Iterator<String> it = this.inputValueNames.iterator(); int i = 0; while (it.hasNext()){ String value = it.next(); InputData data = this.inputData.get(value); - filterValues[i++] = data.getValue(); + int size = this.inputValues.get(data.getName()).usedInQueries(); + for (int j = 0; j < size; j++){ + list.add(data.getValue()); + } } - QueryExecutor queryExecutor = QueryExecutorFactory.getInstance().getQueryExecutor(); - Collection<Result> result = queryExecutor.executeQuery(this.queryID, filterValues); - this.purifyResult(result); + String[] filterValues = list.toArray(new String[0]); + Collection<Result> result = null; + try { + if (this.queryID != null){ + QueryExecutor queryExecutor = QueryExecutorFactory.getInstance().getQueryExecutor(); + result = queryExecutor.executeQuery(this.queryID, filterValues); + } + this.purifyResult(result); + } catch (RuntimeException e) { + log.error(e,e); + } } catch (QueryException e) { log.error(e,e); throw new TransitionException(e); @@ -414,7 +442,29 @@ staticNode.appendChild(inputMinNode); staticNode.appendChild(inputMaxNode); } + }else if (o instanceof SingleValueDescribeData){ + + SingleValueDescribeData svdb = (SingleValueDescribeData)o; + + Element inputNode = xmlutilities.createXFormElement(document, "input"); + inputNode.setAttribute("ref", svdb.getName()); + + Element inputLableNode = xmlutilities.createXFormElement(document, "label"); + inputLableNode.setTextContent(svdb.getName()); + inputNode.appendChild(inputLableNode); + + Element inputValueNode = xmlutilities.createXFormElement(document, "value"); + inputValueNode.setTextContent(svdb.getValue()); + inputNode.appendChild(inputValueNode); + + + if (!it.hasNext()){ + dynamic.appendChild(inputNode); + }else{ + staticNode.appendChild(inputNode); + } } + } } } @@ -438,6 +488,6 @@ * @see de.intevation.gnv.transition.Transition#getInputData() */ public Collection<InputData> getInputData() throws TransitionException { - return this.inputData.values(); + return this.inputData != null ? this.inputData.values() : null; } }