001: /*
002: * $Id: GenericXMLCommand.java,v 1.3 2002/02/24 02:10:19 skavish Exp $
003: *
004: * ===========================================================================
005: *
006: * The JGenerator Software License, Version 1.0
007: *
008: * Copyright (c) 2000 Dmitry Skavish (skavish@usa.net). All rights reserved.
009: *
010: * Redistribution and use in source and binary forms, with or without
011: * modification, are permitted provided that the following conditions are met:
012: *
013: * 1. Redistributions of source code must retain the above copyright
014: * notice, this list of conditions and the following disclaimer.
015: *
016: * 2. Redistributions in binary form must reproduce the above copyright
017: * notice, this list of conditions and the following disclaimer in
018: * the documentation and/or other materials provided with the
019: * distribution.
020: *
021: * 3. The end-user documentation included with the redistribution, if
022: * any, must include the following acknowlegement:
023: * "This product includes software developed by Dmitry Skavish
024: * (skavish@usa.net, http://www.flashgap.com/)."
025: * Alternately, this acknowlegement may appear in the software itself,
026: * if and wherever such third-party acknowlegements normally appear.
027: *
028: * 4. The name "The JGenerator" must not be used to endorse or promote
029: * products derived from this software without prior written permission.
030: * For written permission, please contact skavish@usa.net.
031: *
032: * 5. Products derived from this software may not be called "The JGenerator"
033: * nor may "The JGenerator" appear in their names without prior written
034: * permission of Dmitry Skavish.
035: *
036: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
037: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
038: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
039: * DISCLAIMED. IN NO EVENT SHALL DMITRY SKAVISH OR THE OTHER
040: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047: * SUCH DAMAGE.
048: *
049: */
050:
051: package org.openlaszlo.iv.flash.commands;
052:
053: import org.openlaszlo.iv.flash.parser.*;
054: import org.openlaszlo.iv.flash.api.*;
055: import org.openlaszlo.iv.flash.util.*;
056:
057: import org.openlaszlo.iv.flash.context.*;
058:
059: import java.io.*;
060: import java.util.*;
061:
062: /**
063: * Base class for most XML commands
064: */
065:
066: public class GenericXMLCommand extends GenericCommand {
067:
068: protected String datasource;
069: protected String select;
070:
071: /**
072: * Init common parameters of xml based commands
073: */
074: protected void initParms(Context context) throws IVException {
075: datasource = getParameter(context, "datasource");
076: select = getParameter(context, "select");
077: }
078:
079: /**
080: * Retrieve nearest parent GraphContext from contexts' stack
081: *
082: * @param context context to start searching from
083: * @return found GraphContext or null
084: */
085:
086: protected GraphContext retrieveGraphContext(Context context) {
087: while (context != null && !(context instanceof GraphContext)) {
088: context = context.getParent();
089: }
090:
091: return (GraphContext) context;
092: }
093:
094: /**
095: * Return GraphContext for this command, either by creating one from datasource parameter
096: * or returning nearest parent GraphContext or null
097: *
098: *
099: *
100: * @param file current FlashFile
101: * @param context current context for this command
102: * @return GraphContext for the command or null
103: */
104:
105: protected GraphContext getGraphContext(FlashFile file,
106: Context context) throws IVException {
107: if (datasource != null) {
108: try {
109: return (GraphContext) ContextFactory.createContext(
110: context, datasource, file, false);
111: } catch (Exception e) {
112: throw new IVException(Resource.ERRDATAREAD,
113: new Object[] { datasource, getCommandName() },
114: e);
115: }
116: } else {
117: return retrieveGraphContext(context);
118: }
119: }
120:
121: /**
122: * Evaluate given Path in given Context and return the result as a String
123: *
124: * @param context Context to evaluate Path in
125: * @param path String which will be executed
126: * @param def default value returned in case of any errors
127: * @return result as a string
128: */
129:
130: protected String evalStringParameter(Context context, String path,
131: String def) {
132: String rval = context.getValue(path);
133:
134: if (rval == null) {
135: return def;
136: } else {
137: return rval;
138: }
139: }
140:
141: /**
142: * Evaluate given Path in given Context and return the result as a boolean
143: *
144: * @param context Context to evaluate Path in
145: * @param path Path which will be executed
146: * @param def default value returned in case of any errors
147: * @return result as boolean
148: */
149:
150: protected boolean evalBoolParameter(Context context, String path,
151: boolean def) {
152: return Util.toBool(context.getValue(path), def);
153: }
154:
155: /**
156: * Evaluate given Path in given Context and return the result as a int
157: *
158: * @param context Context to evaluate Path in
159: * @param path Path which will be executed
160: * @param def default value returned in case of any errors
161: * @return result as a int
162: */
163:
164: protected int evalIntParameter(Context context, String path, int def) {
165: return Util.toInt(context.getValue(path), def);
166: }
167:
168: /**
169: * Evaluate given Path in given Context and return the result as a double
170: *
171: * @param context Context to evaluate Path in
172: * @param path Path which will be executed
173: * @param def default value returned in case of any errors
174: * @return result as a double
175: */
176: protected double evalDoubleParameter(Context context, String path,
177: double def) {
178: return Util.toDouble(context.getValue(path), def);
179: }
180: }
|