001: package com.xoetrope.carousel.testpilot;
002:
003: import java.io.BufferedOutputStream;
004: import java.io.BufferedReader;
005: import java.io.FileInputStream;
006: import java.io.FileOutputStream;
007: import java.io.InputStreamReader;
008: import java.io.Reader;
009:
010: import net.n3.nanoxml.IXMLElement;
011: import net.n3.nanoxml.XMLElement;
012: import net.n3.nanoxml.XMLWriter;
013: import net.xoetrope.builder.helper.XTableModelHelper;
014: import net.xoetrope.xml.XmlElement;
015: import net.xoetrope.xml.XmlSource;
016: import net.xoetrope.xui.XProject;
017: import net.xoetrope.xui.data.XBaseModel;
018: import net.xoetrope.xui.data.XModel;
019:
020: /**
021: * Support for ???
022: * <p> Copyright (c) Xoetrope Ltd., 2001-2006, This software is licensed under
023: * the GNU Public License (GPL), please see license.txt for more details. If
024: * you make commercial use of this software you must purchase a commercial
025: * license from Xoetrope.</p>
026: * <p> $Revision: 1.2 $</p>
027: */
028: public class ScriptConverter {
029: public static final int EVENT_NODE = 0;
030: public static final int CONTROL_NODE = 1;
031: public static final int VALUE_NODE = 2;
032: public static final int COMMAND_NODE = 3;
033: public static final int HASH_NODE = 4;
034: public static final int TAG_NODE = 5;
035: public static final int FRAME_NODE = 6;
036:
037: public void ScriptConverter() {
038:
039: }
040:
041: public static void convertTableForSave(XProject currentProject,
042: String filename) {
043: XModel model = (XModel) currentProject.getModel().get(
044: "events/items");
045: XMLElement eleRoot = new XMLElement("script");
046: IXMLElement eleSection = eleRoot.createElement("section");
047: eleRoot.addChild(eleSection);
048: for (int i = 1; i < model.getNumChildren(); i++) {
049: IXMLElement eleEvent = eleRoot.createElement("evt");
050:
051: XBaseModel row = (XBaseModel) model.get(i);
052: String event = row.get(EVENT_NODE).get().toString();
053: String control = row.get(CONTROL_NODE).get().toString();
054: String value = row.get(VALUE_NODE).get().toString();
055: String cmd = row.get(COMMAND_NODE).get().toString();
056: String hash = row.get(HASH_NODE).get().toString();
057: String tag = row.get(TAG_NODE).get().toString();
058: String frame = row.get(FRAME_NODE).get().toString();
059: eleEvent.setAttribute("event", event);
060: if (control.compareTo("") != 0)
061: eleEvent.setAttribute("control", control);
062: if (value.compareTo("") != 0)
063: eleEvent.setAttribute("value", value);
064: if (cmd.compareTo("") != 0)
065: eleEvent.setAttribute("cmd", cmd);
066: if (hash.compareTo("") != 0)
067: eleEvent.setAttribute("hash", hash);
068: if (tag.compareTo("") != 0)
069: eleEvent.setAttribute("tag", tag);
070: if (frame.compareTo("") != 0)
071: eleEvent.setAttribute("frame", frame);
072: eleSection.addChild(eleEvent);
073: }
074:
075: XModel settings = (XModel) currentProject.getModel().get(
076: "settings");
077: IXMLElement eleSettings = eleRoot.createElement("settings");
078: eleRoot.addChild(eleSettings);
079: for (int i = 0; i < settings.getNumChildren(); i++) {
080: IXMLElement eleSetting = eleRoot.createElement("setting");
081: XBaseModel settingModel = (XBaseModel) settings.get(i);
082: String name = settingModel.getId();
083: String value = settingModel.get().toString();
084: eleSetting.setAttribute("name", name);
085: eleSetting.setAttribute("value", value);
086: eleSettings.addChild(eleSetting);
087: }
088:
089: try {
090: FileOutputStream fos = new FileOutputStream(filename);
091: BufferedOutputStream bos = new BufferedOutputStream(fos);
092: XMLWriter writer = new XMLWriter(bos);
093: writer.write(eleRoot);
094: bos.close();
095: fos.close();
096: } catch (Exception ex) {
097: ex.printStackTrace();
098: }
099: }
100:
101: public static void convertTableForOpen(XProject currentProject,
102: FileInputStream fis) {
103: XBaseModel dset = (XBaseModel) XTableModelHelper
104: .createDataSet("events");
105: XBaseModel tableModel = (XBaseModel) XTableModelHelper
106: .createTable(dset, "items");
107: XBaseModel header = (XBaseModel) XTableModelHelper
108: .addHeader(tableModel);
109: XTableModelHelper.addData(header, "event", "event");
110: XTableModelHelper.addData(header, "control", "control");
111: XTableModelHelper.addData(header, "value", "value");
112:
113: XModel baseModel = (XModel) currentProject.getModel();
114: XBaseModel settings = new XBaseModel();
115: settings.setAttribValue(settings.VALUE_ATTRIBUTE, "dataset");
116: settings.setAttribValue(settings.ID_ATTRIBUTE, "settings");
117: baseModel.append(settings);
118:
119: XmlSource source = new XmlSource();
120: XmlElement eleRoot = null;
121: Reader r = null;
122: try {
123: InputStreamReader isr = new InputStreamReader(fis, "UTF8");
124: BufferedReader reader = new BufferedReader(isr);
125: eleRoot = source.read(reader);
126: } catch (Exception ex) {
127: ex.printStackTrace();
128: }
129: for (int i = 0; i < eleRoot.getChildren().size(); i++) {
130: XmlElement eleDataset = (XmlElement) eleRoot.getChildren()
131: .elementAt(i);
132: if (eleDataset.getName().compareTo("section") == 0) {
133: populateEvents(eleDataset, tableModel);
134: } else if (eleDataset.getName().compareTo("settings") == 0) {
135: populateSettings(eleDataset, settings);
136: }
137: }
138: }
139:
140: private static void populateEvents(XmlElement ele,
141: XBaseModel tableModel) {
142: for (int i = 0; i < ele.getChildren().size(); i++) {
143: XmlElement eleEvent = (XmlElement) ele.getChildren()
144: .elementAt(i);
145: XBaseModel currentModel = (XBaseModel) XTableModelHelper
146: .addRow(tableModel);
147: String control = eleEvent.getAttribute("control");
148: String value = eleEvent.getAttribute("value");
149: String cmd = eleEvent.getAttribute("cmd");
150: String hash = eleEvent.getAttribute("hash");
151: String tag = eleEvent.getAttribute("tag");
152: String frame = eleEvent.getAttribute("frame");
153: XTableModelHelper.addData(currentModel, "event", eleEvent
154: .getAttribute("event"));
155: XTableModelHelper.addData(currentModel, "Control",
156: control == null ? "" : control);
157: XTableModelHelper.addData(currentModel, "Value",
158: value == null ? "" : value);
159: XTableModelHelper.addData(currentModel, "cmd",
160: cmd == null ? "" : cmd);
161: XTableModelHelper.addData(currentModel, "hash",
162: hash == null ? "" : hash);
163: XTableModelHelper.addData(currentModel, "tag",
164: tag == null ? "" : tag);
165: XTableModelHelper.addData(currentModel, "frame",
166: frame == null ? "" : frame);
167: }
168: }
169:
170: private static void populateSettings(XmlElement ele,
171: XBaseModel settings) {
172: for (int i = 0; i < ele.getChildren().size(); i++) {
173: XmlElement eleSetting = (XmlElement) ele.getChildren()
174: .elementAt(i);
175: String value = eleSetting.getAttribute("event");
176:
177: XBaseModel dataModel = new XBaseModel();
178: dataModel.setAttribValue(settings.ID_ATTRIBUTE, "data");
179: dataModel.setAttribValue(settings.VALUE_ATTRIBUTE,
180: eleSetting.getAttribute("name"));
181: dataModel.set(eleSetting.getAttribute("value"));
182: settings.append(dataModel);
183: }
184: }
185:
186: }
|