ModelSerializer was applied on Snippet. It is used when a Snippet is converted from Model to String and from String to Model.
Change-Id: If4e0e37e8dfd2c9dae39832e7780fdbe05a84a86
Signed-off-by: youngduk.hwang <youngduk.hwang@samsung.com>
package org.tizen.webuibuilder.gef.dnd.model;
import org.eclipse.gef.requests.CreationFactory;
-import org.tizen.webuibuilder.snippet.converter.Converter;
+import org.tizen.webuibuilder.model.app.AppManager;
+import org.tizen.webuibuilder.model.snippet.io.SnippetReader;
import org.tizen.webuibuilder.snippet.model.ISnippet;
public class SnippetTemplate extends AbstractTemplate {
private ISnippet snippet = null;
+ private AppManager appManager = null;
public SnippetTemplate(ISnippet snippet) {
this.snippet = snippet;
SnippetCreationFactory factory = new SnippetCreationFactory();
setFactory(factory);
}
+
+ public SnippetTemplate(ISnippet snippet, AppManager appManager) {
+ this.snippet = snippet;
+ this.appManager = appManager;
+ setType(SNIPPET);
+ SnippetCreationFactory factory = new SnippetCreationFactory();
+ setFactory(factory);
+ }
public ISnippet getSnippet() {
return snippet;
}
+
+ public AppManager appManager() {
+ return appManager;
+ }
private class SnippetCreationFactory implements CreationFactory {
/*
@Override
public Object getNewObject() {
String text = snippet.getDescriptor().getText();
- Converter converter = new Converter();
- return converter.convert(text);
+ return SnippetReader.readSnippet(text, appManager.getPartFactory());
+// Converter converter = new Converter();
+// return converter.convert(text);
}
/*
--- /dev/null
+/*
+ * UI Builder
+ *
+ * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+
+package org.tizen.webuibuilder.model.snippet.io;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.tizen.webuibuilder.BuilderConstants;
+import org.tizen.webuibuilder.model.Part;
+import org.tizen.webuibuilder.model.PartFactory;
+import org.tizen.webuibuilder.model.io.ModelReader;
+import org.tizen.webuibuilder.model.io.file.TizenFileFormatter;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+
+public class SnippetReader {
+
+ /**
+ * Reads a snippet model.
+ *
+ * @param data
+ * a String Data
+ * @param partFactory
+ * a {@link PartFactory}
+ * @return {@link Part}
+ */
+ public static Part readSnippet(String data, PartFactory partFactory) {
+
+ Element partElement = null;
+ Document doc = read(data);
+
+ if(doc == null) {
+ return null;
+ }
+
+ Element documentElement = doc.getDocumentElement();
+
+ TizenFileFormatter fileReader = new TizenFileFormatter(documentElement);
+ if (!fileReader.isValidate()) {
+ return null;
+ }
+ if (!fileReader.getType().equals("tizen-snippet")) {
+ return null;
+ }
+ if (!fileReader.getVersion().equals("1") && !fileReader.getVersion().equals("0.0.1")) {
+ return null;
+ }
+
+ NodeList elementList = documentElement.getElementsByTagName("tizen.snippet");
+ if(elementList.getLength() > 0) {
+ Node snippetNode = elementList.item(0);
+ if(snippetNode.getFirstChild() != null) {
+ partElement = (Element)snippetNode.getFirstChild().getNextSibling();
+ }
+ }
+ return ModelReader.read(partElement, partFactory);
+ }
+
+ private static Document read(String data) {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = null;
+ Document doc = null;
+
+ try {
+ builder = factory.newDocumentBuilder();
+ doc = builder.parse(new ByteArrayInputStream(data.getBytes("UTF-8")));
+ } catch (ParserConfigurationException e) {
+ e.printStackTrace();
+ } catch (SAXException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ Logger logger = LoggerFactory.getLogger(PartFactory.class);
+ logger.error(BuilderConstants.LOG_READ_PAGE_ERROR);
+ }
+
+ return doc;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * UI Builder
+ *
+ * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * - S-Core Co., Ltd
+ *
+ */
+
+
+package org.tizen.webuibuilder.model.snippet.io;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.tizen.webuibuilder.BuilderConstants;
+import org.tizen.webuibuilder.model.Part;
+import org.tizen.webuibuilder.model.io.ModelSerializer;
+import org.tizen.webuibuilder.model.io.file.TizenFileFormatter;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+public class SnippetWriter {
+
+ /**
+ * Writes a Part.
+ *
+ * @param part
+ * a {@link Part}
+ * @param writer
+ * a writer
+ * @throws IOException
+ */
+ public static void writeTo(Part part, Writer writer) throws IOException {
+
+ Document doc = makeSnippetTizenFileFormatDocument(part);
+
+ DOMSource source = new DOMSource(doc);
+ StreamResult result = new StreamResult(writer);
+
+ TransformerFactory factory = TransformerFactory.newInstance();
+ Transformer transformer = null;
+ try {
+ transformer = factory.newTransformer();
+// transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, BuilderConstants.YES);
+ transformer.setOutputProperty(OutputKeys.ENCODING, BuilderConstants.ENCODING);
+ transformer.setOutputProperty(OutputKeys.METHOD, BuilderConstants.XML);
+ transformer.setOutputProperty(OutputKeys.INDENT, BuilderConstants.YES);
+
+ transformer.transform(source, result);
+ } catch (TransformerConfigurationException e) {
+ e.printStackTrace();
+ } catch (TransformerException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ private static Document makeSnippetTizenFileFormatDocument(Part part) {
+ TizenFileFormatter fmt =
+ new TizenFileFormatter("tizen-snippet", "1", "Tizen Web UI Builder Project Snippet");
+
+ Document doc = fmt.GenerateFileFormat();
+
+ Element documentElement = doc.createElement("document");
+ doc.getDocumentElement().appendChild(documentElement);
+
+ Element documentInfoElement = doc.createElement("documentInfo");
+ documentElement.appendChild(makeDocumentInfo(doc, documentInfoElement));
+
+ // set document data
+ Element documentDataElement = doc.createElement("documentData");
+ documentElement.appendChild(documentDataElement);
+
+ Element snippetElement = doc.createElement("tizen.snippet");
+ documentDataElement.appendChild(snippetElement);
+
+ Element partElement = ModelSerializer.writePart(doc, part, false);
+ snippetElement.appendChild(partElement);
+
+ return doc;
+ }
+
+ private static Element makeDocumentInfo(Document doc, Element documentInfoElement) {
+
+ Element tempElement = null;
+
+ tempElement = doc.createElement("title");
+ tempElement.setTextContent("test");
+ documentInfoElement.appendChild(tempElement);
+
+ tempElement = doc.createElement("author");
+ tempElement.setTextContent("noname");
+ documentInfoElement.appendChild(tempElement);
+
+ tempElement = doc.createElement("version");
+ tempElement.setTextContent("0.1.1");
+ documentInfoElement.appendChild(tempElement);
+
+ return documentInfoElement;
+ }
+
+ /**
+ * Writes a page string.
+ *
+ * @param part
+ * a {@link Part}
+ * @return page string
+ */
+ public static String writeToString(Part part) {
+ StringWriter writer = new StringWriter();
+ try {
+ writeTo(part, writer);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ return writer.getBuffer().toString();
+ }
+
+}
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.ImageLoader;
import org.tizen.webuibuilder.model.ISerializer;
+import org.tizen.webuibuilder.model.Part;
+import org.tizen.webuibuilder.model.snippet.io.SnippetWriter;
import org.tizen.webuibuilder.snippet.manager.ISnippetManager;
import org.tizen.webuibuilder.snippet.manager.SnippetManager;
import org.tizen.webuibuilder.snippet.model.Descriptor;
public class CreatePolicy implements IWizardPolicy {
+ private Part part = null;
private ISerializer model = null;
private String name = null;
private String description = null;
snippet.setImageDescriptor(imageDescriptor);
// Create Descriptor
IDescriptor descriptor = new Descriptor();
- String text = model.serialize();
+ if(model instanceof Part) {
+ part = (Part) model;
+ }
+// String text = model.serialize();
+ String text = SnippetWriter.writeToString(part);
descriptor.setText(text);
snippet.setDescriptor(descriptor);
for (ISnippet snippet : snippets) {
String name = snippet.getName();
String description = snippet.getDescription();
- SnippetTemplate template = new SnippetTemplate(snippet);
+ SnippetTemplate template = new SnippetTemplate(snippet, appManager);
ImageDescriptor smallIcon = snippet.getImageDescriptor();
CombinedTemplateCreationEntry entry =
new CombinedTemplateCreationEntry(name, description, template,
for (ISnippet snippet : snippets) {
String name = snippet.getName();
String description = snippet.getDescription();
- SnippetTemplate template = new SnippetTemplate(snippet);
+ SnippetTemplate template = new SnippetTemplate(snippet, appManager);
ImageDescriptor smallIcon = snippet.getImageDescriptor();
CombinedTemplateCreationEntry entry =
new CombinedTemplateCreationEntry(name, description, template,