summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java
diff options
context:
space:
mode:
Diffstat (limited to 'source/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java')
-rwxr-xr-xsource/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java149
1 files changed, 149 insertions, 0 deletions
diff --git a/source/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java b/source/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java
new file mode 100755
index 0000000..8d95438
--- /dev/null
+++ b/source/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java
@@ -0,0 +1,149 @@
+package com.c2kernel.lifecycle.instance.predefined;
+import java.io.StringReader;
+import java.io.StringWriter;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.apache.xml.serialize.Method;
+import org.apache.xml.serialize.OutputFormat;
+import org.apache.xml.serialize.XMLSerializer;
+import org.w3c.dom.CDATASection;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+import org.xml.sax.InputSource;
+import com.c2kernel.lifecycle.instance.Activity;
+import com.c2kernel.utils.Logger;
+/***********************************************************************************************************************************************************************************************************************************************************************************************************
+ * @author $Author: sgaspard $ $Date: 2004/09/21 10:32:17 $
+ * @version $Revision: 1.14 $
+ **********************************************************************************************************************************************************************************************************************************************************************************************************/
+public class PredefinedStep extends Activity
+{
+ /*******************************************************************************************************************************************************************************************************************************************************************************************************
+ * predefined Steps are always Active, and have only one transition subclasses could override this method (if necessary)
+ ******************************************************************************************************************************************************************************************************************************************************************************************************/
+ private boolean isPredefined = false;
+ public boolean getActive()
+ {
+ if (isPredefined)
+ return true;
+ else
+ return super.getActive();
+ }
+ public String getTransitions()
+ {
+ if (isPredefined)
+ return "<PossibleTransitions>done</PossibleTransitions>";
+ else
+ return super.getTransitions();
+ }
+ public String getErrors()
+ {
+ if (isPredefined)
+ return getName();
+ else
+ return super.getErrors();
+ }
+ public boolean verify()
+ {
+ if (isPredefined)
+ return true;
+ else
+ return super.verify();
+ }
+ /**
+ * Returns the isPredefined.
+ *
+ * @return boolean
+ */
+ public boolean getIsPredefined()
+ {
+ return isPredefined;
+ }
+ /**
+ * Sets the isPredefined.
+ *
+ * @param isPredefined
+ * The isPredefined to set
+ */
+ public void setIsPredefined(boolean isPredefined)
+ {
+ this.isPredefined = isPredefined;
+ }
+ public String getType()
+ {
+ return getName();
+ }
+ // generic bundling of parameters
+ static public String bundleData(String[] data)
+ {
+ try
+ {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ Document dom = builder.newDocument();
+ Element root = dom.createElement("PredefinedStepOutcome");
+ dom.appendChild(root);
+ for (int i = 0; i < data.length; i++)
+ {
+ Element param = dom.createElement("param");
+ Text t = dom.createTextNode(data[i]);
+ param.appendChild(t);
+ root.appendChild(param);
+ }
+ // xalan method - use internal xerces one instead
+// TransformerFactory transFactory = TransformerFactory.newInstance();
+// Transformer transformer = transFactory.newTransformer();
+// StringWriter stringOut = new StringWriter();
+// transformer.transform(new DOMSource(dom), new StreamResult(stringOut));
+// return stringOut.toString();
+
+ OutputFormat format = new OutputFormat(Method.XML, null, false);
+ StringWriter stringOut = new StringWriter();
+ XMLSerializer serial = new XMLSerializer(stringOut, format);
+ serial.asDOMSerializer();
+ serial.serialize(dom);
+ return stringOut.toString();
+ }
+ catch (Exception e)
+ {
+ Logger.error(e);
+ StringBuffer xmlData = new StringBuffer().append("<PredefinedStepOutcome>");
+ for (int i = 0; i < data.length; i++)
+ xmlData.append("<param><![CDATA[").append(data[i]).append("]]></param>");
+ xmlData.append("</PredefinedStepOutcome>");
+ return xmlData.toString();
+ }
+ }
+ // generic bundling of single parameter
+ static public String bundleData(String data)
+ {
+ return "<PredefinedStepOutcome><param><![CDATA[" + data + "]]></param></PredefinedStepOutcome>";
+ }
+ static public String[] getDataList(String xmlData)
+ {
+ try
+ {
+ Document scriptDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(xmlData)));
+ NodeList nodeList = scriptDoc.getElementsByTagName("param");
+ String[] result = new String[nodeList.getLength()];
+ for (int i = 0; i < nodeList.getLength(); i++)
+ {
+ Node n = nodeList.item(i).getFirstChild();
+ if (n instanceof CDATASection)
+ result[i] = ((CDATASection) n).getData();
+ else if (n instanceof Text)
+ result[i] = ((Text) n).getData();
+ }
+ return result;
+ }
+ catch (Exception ex)
+ {
+ Logger.error("Exception::PredefinedStep::getDataList()");
+ Logger.error(ex);
+ }
+ return null;
+ }
+}