Update of
/var/cvs/applications/editwizard/src/org/mmbase/applications/editwizard
In directory
james.mmbase.org:/tmp/cvs-serv31291/src/org/mmbase/applications/editwizard
Modified Files:
Tag: MMBase-1_8
Wizard.java
Log Message:
also execute a query if a optionlist is included directly in a field
See also:
http://cvs.mmbase.org/viewcvs/applications/editwizard/src/org/mmbase/applications/editwizard
Index: Wizard.java
===================================================================
RCS file:
/var/cvs/applications/editwizard/src/org/mmbase/applications/editwizard/Wizard.java,v
retrieving revision 1.149.2.3
retrieving revision 1.149.2.4
diff -u -b -r1.149.2.3 -r1.149.2.4
--- Wizard.java 14 Feb 2008 17:16:11 -0000 1.149.2.3
+++ Wizard.java 15 Feb 2008 13:25:35 -0000 1.149.2.4
@@ -45,7 +45,7 @@
* @author Pierre van Rooden
* @author Hillebrand Gelderblom
* @since MMBase-1.6
- * @version $Id: Wizard.java,v 1.149.2.3 2008/02/14 17:16:11 nklasens Exp $
+ * @version $Id: Wizard.java,v 1.149.2.4 2008/02/15 13:25:35 pierre Exp $
*
*/
public class Wizard implements org.mmbase.util.SizeMeasurable {
@@ -883,11 +883,48 @@
// Test if this list has a query and get the time-out related
values.
Node query = Utils.selectSingleNode(list, "query");
+ if (query != null) {
+ if (!runQuery(list, query)) continue;
+ }
+
+ // Now copy the items of the list definition to the preHTML
list.
+ NodeList items = Utils.selectNodeList(list, "option");
+ Utils.appendNodeList(items, optionlist);
+
+ } else {
+ // test if query occurs inline and get the time-out related
values.
+ Node query = Utils.selectSingleNode(optionlist, "query");
+ if (query != null) {
+ if (!runQuery(optionlist, query)) continue;
+ }
+ }
+
+ // set selected=true for option which is currently selected
+ String selectedValue = Utils.selectSingleNodeText(optionlist,
"../value/text()", ""); //.getNodeValue();
+ log.debug("Trying to preselect the list at value: " +
selectedValue);
+
+ Node selectedoption = Utils.selectSingleNode(optionlist, "[EMAIL
PROTECTED]'" + selectedValue + "']");
+
+ if (selectedoption != null) {
+ // found! Let's set it selected.
+ Utils.setAttribute(selectedoption, "selected", "true");
+ }
+ }
+
+ // Okee, we are ready. Let's return what we've been working on so hard.
+ return preHtml;
+ }
+
+ /**
+ * This method tests if a query in a nodelist needs to be run, and runs it
if needed, adding the resulting options to the optionlist.
+ *
+ * @param list the node of the optionlist in which the query is defined
+ * @param query the node of the query definition
+ */
+ boolean runQuery(Node list, Node query) {
long currentTime = new Date().getTime();
- long queryTimeOut = 1000 *
Long.parseLong(Utils.getAttribute(list,
-
"query-timeout", String.valueOf(this.listQueryTimeOut)));
+ long queryTimeOut = 1000 * Long.parseLong(Utils.getAttribute(list,
"query-timeout", String.valueOf(this.listQueryTimeOut)));
long lastExecuted = currentTime - queryTimeOut - 1;
-
if (query != null) {
String lastExecutedString = Utils.getAttribute(query,
"last-executed", "never");
@@ -895,13 +932,13 @@
lastExecuted = Long.parseLong(lastExecutedString);
}
}
-
// Execute the query if it's there and only if it has timed
out.
if ((query != null) && ((currentTime - lastExecuted) >
queryTimeOut)) {
- log.debug("Performing query for optionlist '" + listname +
+ if (log.isDebugEnabled()) {
+ log.debug("Performing query for optionlist '" +
Utils.getAttribute(list, "select") +
"'. Cur time " + currentTime + " last executed "
+ lastExecuted +
" timeout " + queryTimeOut + " > " +
(currentTime - lastExecuted));
-
+ }
Node queryresult = null;
try {
@@ -914,12 +951,12 @@
// Bad luck, tell the user and try the next list.
log.debug("Error during query, proceeding with next
list: " + e.toString());
- Element option =
optionlist.getOwnerDocument().createElement("option");
+ Element option =
list.getOwnerDocument().createElement("option");
option.setAttribute("id", "-");
- Utils.storeText(option, "Error: query for '" +
listname + "' failed");
- optionlist.appendChild(option);
+ Utils.storeText(option, "Error: query for '" +
Utils.getAttribute(list, "select") + "' failed");
+ list.appendChild(option);
- continue;
+ return false;
}
// Remind the current time.
@@ -953,29 +990,7 @@
list.appendChild(option);
}
}
-
- // Now copy the items of the list definition to the preHTML
list.
- NodeList items = Utils.selectNodeList(list, "option");
- Utils.appendNodeList(items, optionlist);
-
- }
-
- // set selected=true for option which is currently selected
- String selectedValue = Utils.selectSingleNodeText(optionlist,
-
"../value/text()", ""); //.getNodeValue();
- log.debug("Trying to preselect the list at value: " +
selectedValue);
-
- Node selectedoption = Utils.selectSingleNode(optionlist,
- "[EMAIL PROTECTED]'"
+ selectedValue + "']");
-
- if (selectedoption != null) {
- // found! Let's set it selected.
- Utils.setAttribute(selectedoption, "selected", "true");
- }
- }
-
- // Okee, we are ready. Let's return what we've been working on so hard.
- return preHtml;
+ return true;
}
/**
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs