From 836328ea2ca7c6780307abf258503201c91e5a96 Mon Sep 17 00:00:00 2001 From: lresende Date: Tue, 10 Nov 2009 19:20:03 +0000 Subject: moving SDO branches git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@834615 13f79535-47bb-0310-9956-ffa450edef68 --- .../samples/sdo/basic/CreatePurchaseOrder.java | 159 +++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 sdo-java/branches/sdo-1.1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreatePurchaseOrder.java (limited to 'sdo-java/branches/sdo-1.1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreatePurchaseOrder.java') diff --git a/sdo-java/branches/sdo-1.1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreatePurchaseOrder.java b/sdo-java/branches/sdo-1.1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreatePurchaseOrder.java new file mode 100644 index 0000000000..c41aa37397 --- /dev/null +++ b/sdo-java/branches/sdo-1.1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreatePurchaseOrder.java @@ -0,0 +1,159 @@ +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +package org.apache.tuscany.samples.sdo.basic; + +import java.io.FileOutputStream; +import java.io.OutputStream; + +import org.apache.tuscany.samples.sdo.SampleBase; +import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure; + +import commonj.sdo.DataObject; +import commonj.sdo.helper.DataFactory; +import commonj.sdo.helper.HelperContext; +import commonj.sdo.helper.XMLDocument; + +/** + * Demonstrates creating a purchaseOrder DataObject from an existing XSD and then + * persisting to disk. This + * sample was used to generate valid XML for Fuhwei Lwo's paper + * Create and read an XML document based on XML Schema + *

+ *

Running this Sample

See the main overview for instructions on how to run this + * sample. + */ + +public class CreatePurchaseOrder extends SampleBase { + + public CreatePurchaseOrder(Integer commentaryLevel) { + super(commentaryLevel, SAMPLE_LEVEL_BASIC); + } + + /* + * metadata for the sample documenting the areas of SDO that are explored + */ + public static int [] CORE_FUNCTION = { + SDOFacets.LOADING_DATA_FROM_XML, + SDOFacets.SAVING_DATA_TO_XML + }; + + + + public static void main(String[] args) { + + CreatePurchaseOrder sample = new CreatePurchaseOrder(COMMENTARY_FOR_NOVICE); + + sample.run(); + + } + + public void runSample() throws Exception { + + commentary(COMMENTARY_ALWAYS, + "This sample is based upon Fuhwei Lwo's paper\n" + + "http://www-128.ibm.com/developerworks/webservices/library/ws-sdoxmlschema/\n" + + "and demonstrates creating a purchaseOrder DataObject from an\n" + + "existing XSD and then persisting to disk."); + + HelperContext scope = createScopeForTypes(); + + loadTypesFromXMLSchemaFile(scope, SampleInfrastructure.PO_XSD_RESOURCE); + + + commentary ( + "We are creating a DataObject using a DataFactory by specifying the URI and name of\n"+ + "the Type that we want to use for the DataObject.\n\n"+ + "DataFactory factory = scope.getDataFactory();\n"+ + "DataObject purchaseOrder = factory.create(SampleInfrastructure.PO_NAMESPACE, \"PurchaseOrderType\");"); + + DataFactory factory = scope.getDataFactory(); + DataObject purchaseOrder = factory.create(SampleInfrastructure.PO_NAMESPACE, "PurchaseOrderType"); + + + commentary( + "Now we build on the graph using the DataObject's set() and createDataObject() methods.\n"+ + "Take a look inside the program code for the full detail of these steps"); + + purchaseOrder.setString("orderDate", "1999-10-20"); + DataObject shipTo = purchaseOrder.createDataObject("shipTo"); + shipTo.set("country", "US"); + shipTo.set("name", "Alice Smith"); + shipTo.set("street", "123 Maple Street"); + shipTo.set("city", "Mill Valley"); + shipTo.set("state", "CA"); + shipTo.setString("zip", "90952"); + DataObject billTo = purchaseOrder.createDataObject("billTo"); + billTo.set("country", "US"); + billTo.set("name", "Robert Smith"); + billTo.set("street", "8 Oak Avenue"); + billTo.set("city", "Mill Valley"); + billTo.set("state", "PA"); + billTo.setString("zip", "95819"); + purchaseOrder.set("comment", "Hurry, my lawn is going wild!"); + + DataObject items = purchaseOrder.createDataObject("items"); + + DataObject item1 = items.createDataObject("item"); + item1.set("partNum", "872-AA"); + item1.set("productName", "Lawnmower"); + item1.setInt("quantity", 1); + item1.setString("price", "148.95"); + + item1.set("comment", "Confirm this is electric"); + + DataObject item2 = items.createDataObject("item"); + item2.set("partNum", "926-AA"); + item2.set("productName", "Baby Monitor"); + item2.setInt("quantity", 1); + item2.setString("price", "39.98"); + item2.setString("shipDate", "1999-05-21"); + System.out.println("Created 2 items"); + + commentary( + "Now we use the XMLHelper to write an XML document representing the data graph\n"+ + "to a file. We must supply a namespace and a name for the root element of the graph, since it is\n"+ + "not contained in the DataObject\n\n"+ + "OutputStream stream = new FileOutputStream(SampleInfrastructure.PO_XML_GENERATED);\n"+ + "scope.getXMLHelper().save(purchaseOrder, SampleInfrastructure.PO_NAMESPACE, \"purchaseOrder\", stream);" + ); + + + OutputStream stream = new FileOutputStream(SampleInfrastructure.PO_XML_GENERATED); + scope.getXMLHelper().save(purchaseOrder, SampleInfrastructure.PO_NAMESPACE, "purchaseOrder", stream); + stream.close(); + + commentary( + "We could instead have created an XMLDocument instance to wrap the DataObject\n"+ + "This has the advantage that the namespace URI and root element name are preserved in the Object\n"+ + "This interface was introduced after Fuhwei's paper, and has particular advantage\n"+ + "when loading an XML document from a file\n\n"+ + "scope.getXMLHelper().createDocument(purchaseOrder, SampleInfrastructure.PO_NAMESPACE, \"purchaseOrder\");\n"+ + "scope.getXMLHelper().save(doc, System.out, null);"); + + + XMLDocument doc = scope.getXMLHelper().createDocument(purchaseOrder, SampleInfrastructure.PO_NAMESPACE, "purchaseOrder"); + scope.getXMLHelper().save(doc, System.out, null); + System.out.println(); + } + +} -- cgit v1.2.3