diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-10 19:19:55 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-10 19:19:55 +0000 |
commit | 2a444004802173fa97afbc389fc4a6600b6d3f88 (patch) | |
tree | b175a25dd02206218987ab4bc730ad8e77b7756a /branches/sdo-1.1-incubating/sample/src/main/java/org | |
parent | c993ba575bdd1530b7bbc0c6a19c32e66fce4b89 (diff) |
moving SDO branches
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@834614 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sdo-1.1-incubating/sample/src/main/java/org')
25 files changed, 0 insertions, 4448 deletions
diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/ExecuteSamples.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/ExecuteSamples.java deleted file mode 100644 index 02bce0efe6..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/ExecuteSamples.java +++ /dev/null @@ -1,100 +0,0 @@ -/** - * - * 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; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; - -import org.apache.tuscany.samples.sdo.SampleBase; -import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure; - - -/** - * A program to execute a sequence of SDO sample programs. The program executes - * the sample programs listed in the {@link SampleInfrastructure#sampleClasses sample classes} - * static constant. These samples are executed in roughly increasing order of complexity. - * You can edit the {@link #pauseBetweenSamples}, {@link #runSamplesUpToLevel} and - * {@link #constructorArgs} variables to change the way this program executes the samples. - * - * <P> - * Each of the samples creates text output to the console. If the commentary - * level in {@link #constructorArgs the sample program constructor arguments} - * used to construct each sample is set to - * {@link SampleInfrastructure#COMMENTARY_FOR_NOVICE COMMENTARY_FOR_NOVICE} then there - * will be much more output than if set to one of the other values. - * - */ -public class ExecuteSamples extends SampleBase { - - /** - * Edit this value to cause the program to pause between each sample program - * and wait for the user to hit the enter key. - */ - private static final boolean pauseBetweenSamples = true; - - /** - * By default run all samples from novice level right up to advanced level. - * Edit this to run fewer samples. - */ - private static final int runSamplesUpToLevel = SampleInfrastructure.SAMPLE_LEVEL_ADVANCED.intValue(); - - /** - * Edit the value of this argument to one of COMMENTARY_FOR_NOVICE, COMMENTARY_FOR_INTERMEDIATE or COMMENTARY_FOR_ADVANCED to see - * more or less commentary. Note, this value only controls the level of commentary, - * not which samples are executed. Use it to filter out the noise if you have already - * understood the more basic commentary. - */ - private static final Object[] constructorArgs = { SampleInfrastructure.COMMENTARY_FOR_NOVICE }; - - - public static void main(String [] args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException, IOException { - ExecuteSamples sample = new ExecuteSamples(COMMENTARY_FOR_NOVICE); - sample.run(); - } - - public ExecuteSamples(Integer userLevel) { - super(userLevel, SAMPLE_LEVEL_BASIC); - } - - public void runSample() throws Exception { - Class[] constructorArgTypes = { Integer.class }; - - - BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); - - int sampleCount = 0; - for (int i=0; i < SampleInfrastructure.sampleClasses.length; i++) { - Constructor c = SampleInfrastructure.sampleClasses[i].getConstructor(constructorArgTypes); - SampleBase sample = (SampleBase)c.newInstance(constructorArgs); - if(sample.getSampleComplexityLevel() <= runSamplesUpToLevel) { - sample.run(); - sampleCount++; - if(pauseBetweenSamples) { - System.out.println(">>>Press Enter to continue"); - in.readLine(); - } - } - } - System.out.println("Ran " + sampleCount + " samples"); - } -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/SampleBase.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/SampleBase.java deleted file mode 100644 index 3b4aba2b42..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/SampleBase.java +++ /dev/null @@ -1,192 +0,0 @@ -/** - * - * 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; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; - -import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure; -import org.apache.tuscany.sdo.api.SDOUtil; - -import commonj.sdo.DataObject; -import commonj.sdo.helper.HelperContext; -import commonj.sdo.helper.XMLDocument; -import commonj.sdo.helper.XSDHelper; -import commonj.sdo.impl.HelperProvider; - -/** - * the base function for samples is split into two classes. This one is intended - * to house all the interesting SDO utility methods, and the superclass houses - * all the infrastructure that the SDO user isn't interested in inspecting. - */ -public abstract class SampleBase extends SampleInfrastructure { - - - public SampleBase() - { - super(COMMENTARY_FOR_NOVICE); - } - - - public SampleBase(Integer commentaryLevel, Integer sampLevel) { - super(commentaryLevel, sampLevel); - } - - protected HelperContext createScopeForTypes() { - commentary( - COMMENTARY_FOR_NOVICE, - "All MetaData for SDO types can be viewed as being scoped within an instance of HelperContext\n" + - "The Helper Context instance provides access to a collection of other helpers\n" + - "that you will see exercised in the SDO samples\n" + - "All the Helpers related to a given helper context instance know about the same set of types\n\n" + - "The SDO specification doesn't state how an SDO implementation should create a HelperContext\n" + - "So we use a Tuscany specific API to do this ...\n\n" + - "HelperContext scope = SDOUtil.createHelperContext();", - - "Creating a new HelperContext scope for types for the next sample run as we did in previous samples" - ); - - HelperContext scope = SDOUtil.createHelperContext(); - return scope; - } - - protected HelperContext useDefaultScopeForTypes() { - commentary( - COMMENTARY_FOR_NOVICE, - "All MetaData for SDO types can be viewed as being held in an instance of HelperContext\n" + - "The Helper Context instance provides access to a collection of other helpers\n" + - "that you will see exercised in the SDO samples\n" + - "All the Helpers related to a given helper context instance know about the same set of types\n\n" + - "For most cases it's best to take control of the type scope by creating a new HelperContext,\n" + - "but a default helper context is provided and can be accessed using ...\n\n" + - "HelperContext scope = HelperProvider.getDefaultContext();\n\n" + - "A case in point where the default scope must be used is when using some of the DataGraph APIs\n" + - "which don't all support the type scoping extensions which were introduced in the SDO 2.1 specification", - - "Retrieving the default HelperContext scope for types for the next sample run as we saw in a previous sample" - ); - - HelperContext scope = HelperProvider.getDefaultContext(); - return scope; - } - - - protected void loadTypesFromXMLSchemaFile(HelperContext scope, String fileName) { - commentary(COMMENTARY_FOR_NOVICE, - "If you want to create types dynamically by loading an XML schema you\n" + - "use an instance of XSDHelper. You get that helper from a HelperContext.\n" + - "After successful loading of a schema, the new types are available to every\n" + - "other helper belonging to the HelperContext instance\n\n" + - "XSDHelper xsdHelper = scope.getXSDHelper();\n"+ - "xsdHelper.define(inputStream, null);", - - "Using an XSDHelper again to create types from an XML schema file as we saw in a previous sample" - ); - - XSDHelper xsdHelper = scope.getXSDHelper(); - - InputStream is = null; - try { - - URL url = getClass().getResource("/"+fileName); - is = url.openStream(); - xsdHelper.define(is, url.toString()); - - } catch (Exception e) { - somethingUnexpectedHasHappened(e); - } finally { - try { - is.close(); - } catch (Exception e) { - somethingUnexpectedHasHappened(e); - } - } - } - - public DataObject getDataObjectFromFile(HelperContext scope, String filename) - throws Exception { - - - XMLDocument xmlDoc = getXMLDocumentFromFile(scope, filename); - commentary(COMMENTARY_FOR_NOVICE, - "An XMLDocument instance provides a wrapper for the root DataObject of a data graph\n" + - "along with other aspects of the XML nature of the document\n\n"+ - "DataObject result = xmlDoc.getRootObject();", - - "Getting the root object from an XMLDocument as seen in previous samples" - ); - DataObject result = xmlDoc.getRootObject(); - - return result; - } - - public XMLDocument getXMLDocumentFromFile(HelperContext scope, - String filename) throws Exception { - - XMLDocument result = null; - InputStream is = null; - - try { - commentary(COMMENTARY_FOR_NOVICE, - "The XMLHelper can be used to create an SDO XMLDocument instance from a file\n\n"+ - "inputStream = ClassLoader.getSystemResourceAsStream(filename);\n"+ - "result = scope.getXMLHelper().load(is);", - - "Getting an XMLDocument instance from an XML file as seen in previous samples" - ); - is = ClassLoader.getSystemResourceAsStream(filename); - result = scope.getXMLHelper().load(is); - - } catch (Exception e) { - somethingUnexpectedHasHappened(e); - } finally { - try { - is.close(); - } catch (Exception e) { - somethingUnexpectedHasHappened(e); - } - } - - return result; - } - - protected XMLDocument getXMLDocumentFromString(HelperContext scope, String xmlDoc) throws IOException { - XMLDocument result = null; - InputStream is = null; - - - commentary(COMMENTARY_FOR_NOVICE, - "The XMLHelper can be used to create an SDO XMLDocument instance from an\n\n"+ - "inputStream = new ByteArrayInputStream(xmlDoc.getBytes());\n"+ - "result = scope.getXMLHelper().load(is);", - - "Getting an XMLDocument instance from an XML file as seen in previous samples" - ); - - is = new ByteArrayInputStream(xmlDoc.getBytes()); - result = scope.getXMLHelper().load(is); - - return result; - } - -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/MedicalScenario.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/MedicalScenario.java deleted file mode 100644 index 916fe9405c..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/MedicalScenario.java +++ /dev/null @@ -1,424 +0,0 @@ -/** - * 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.advanced; - -import java.io.FileNotFoundException; -import java.util.ArrayList; -import java.util.List; - -import org.apache.tuscany.samples.sdo.SampleBase; -import org.apache.tuscany.sdo.api.SDOUtil; - -import commonj.sdo.DataObject; -import commonj.sdo.Property; -import commonj.sdo.Type; -import commonj.sdo.helper.DataFactory; -import commonj.sdo.helper.HelperContext; -import commonj.sdo.helper.TypeHelper; - -/** - * This sample is based on a 2 part article by Kelvin Goodson and Geoffrey Winn. - * See <A href="http://soa.sys-con.com/read/313547.htm">Part1</A> and <A - * href="http://soa.sys-con.com/read/358059.htm">Part 2</A> of the article. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ -public class MedicalScenario extends SampleBase { - - private static final String sdoApiUri = "commonj.sdo"; - - private static final String peopleURI = "www.example.org/people"; - - private static final String medicalURI = "www.example.org/MedicalTest"; - - boolean typesViaAPI = false; - - private static final String usage = " [-api |-xsd]\n" - + " -api : define the types using the SDO API\n" - + " -xsd : define the types using an XML schema file"; - - public MedicalScenario(String[] args, Integer userLevel) { - - super(userLevel, SAMPLE_LEVEL_ADVANCED); - - if (args.length > 1) { - printUsage(args); - System.exit(-1); - } - if (args.length == 1) { - if (args[0].equals("-xsd")) { - typesViaAPI = false; - } else if (args[0].equals("-api")) { - typesViaAPI = true; - } else { - printUsage(args); - System.exit(-1); - } - } - } - - public MedicalScenario(Integer userLevel) { - super(userLevel, SAMPLE_LEVEL_ADVANCED); - } - - - private void printUsage(String[] args) { - System.out.println("Usage: " + this.getClass().getName() + usage); - } - - /** - * @param args - * @throws Exception - */ - public static void main(String[] args) throws Exception { - - MedicalScenario s = new MedicalScenario(args, COMMENTARY_FOR_NOVICE); - s.run(); - - } - - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] CORE_FUNCTION = { - SDOFacets.CONTAINMENT, - SDOFacets.CREATE_TYPES_USING_THE_SDO_API, - SDOFacets.CREATE_TYPES_USING_XML_SCHEMA, - SDOFacets.OPEN_CONTENT, - SDOFacets.NON_CONTAINMENT - }; - - public static int [] SIGNIFICANT_FUNCTION = { - SDOFacets.CREATE_DATAOBJECTS_BY_NAME, - SDOFacets.ISMANY_PROPERTIES, - SDOFacets.GENERIC_DATA_GRAPH_TRAVERSAL, - SDOFacets.SAVING_DATA_TO_XML - }; - - public void runSample() throws Exception { - - HelperContext scope = SDOUtil.createHelperContext(); - - if (typesViaAPI) { - - commentary("In this execution of the sample we use Types created\n" - + "using the SDO API"); - - createTypesViaAPI(scope); - - } else { - - commentary("In this execution of the sample we use Types created\n" - + "by loading an XMLSchema"); - - loadTypesFromXMLSchemaFile(scope, "MedicalTest.xsd"); - - } - - commentary( - COMMENTARY_FOR_NOVICE, - "The DataFactory associated with the scope that the types were created within\n" - + "can be used to create an instance of the Person Type\n\n" - + "DataFactory dataFactory = scope.getDataFactory();\n" - + "DataObject person1 = dataFactory.create(\"www.example.org/people\", \"Person\");"); - - DataFactory dataFactory = scope.getDataFactory(); - DataObject person1 = dataFactory.create("www.example.org/people", "Person"); - - commentary("The setString() of dataObject method is used to set the properties of the\n" - + "new Person DataObject, including a unique identifier reference value\n" - + "for the Person instance.\n\n" - + "person1.setString(\"id\", \"1\");\n" - + "person1.setString(\"name\", \"Joe Johnson Snr.\");\n" - + "person1.setString(\"gender\", \"male\"););"); - - person1.setString("id", "1"); - person1.setString("name", "Joe Johnson Snr."); - person1.setString("gender", "male"); - - commentary("An alternative approach to using the DataFactory directly to create\n" - + "all DataObjects is to use a top-down approach, where we create the\n" - + "root object for a data graph, and then use the createDataObject(String propertyName)\n" - + "method to create the contained DataObjects. Here we create the overall\n" - + "medical test DataObject, and then create the contained \"referrals\" DataObject\n\n" - + "DataObject test = dataFactory.create(\"www.example.org/MedicalTest\", \"Test\");\n" - + "DataObject referrals = test.createDataObject(\"referrals\");"); - - DataObject test = dataFactory.create("www.example.org/MedicalTest", "Test"); - DataObject referrals = test.createDataObject("referrals"); - - commentary("Now we can add the person we created earlier into the set of people who have\n" - + "been referred for this medical test.\n\n" - + "test.set(\"referrals\", referrals);\n" - + "referrals.getList(\"person\").add(person1);"); - - test.set("referrals", referrals); - referrals.getList("person").add(person1); - - commentary("Let's take a look at how the current state of the data" - + "graph is rendered in XML ..."); - - System.out.println(scope.getXMLHelper().save(test, - "www.example.org/MedicalTest", "test")); - - commentary("The scenario unfolds and the Joe Johnson Snr. becomes a patient\n\n" - + "DataObject patients = test.createDataObject(\"patients\");\n" - + "patients.getList(\"person\").add(person1);"); - - DataObject patients = test.createDataObject("patients"); - - patients.getList("person").add(person1); - - commentary("Having added Joe Johnson Snr. to the set of patients we can see\n" - + "the way that SDO preserves a single containment hierarchy within a\n" - + "datagraph. If we look at the XML rendering of the graph again, we will\n" - + "see that by adding him to the set of patients he has been removed from the\n" - + "containment property associated with the referrals set ..."); - - System.out.println(scope.getXMLHelper().save(test, - "www.example.org/MedicalTest", "test")); - - commentary("The 'Person' Type we are making use of here has been designed to be\n" - + "multi-purpose, in that the type has been declared to be 'Open'.\n" - + "That means that we can make use of 'Open Content' Properties\n" - + "(If the type system has been defined using an XML schema\n" - + "then these properties will derive from global elements)\n" - + "We can look up open content Properties using the TypeHelper\n\n" - + "Property conditionProperty = scope.getTypeHelper().getOpenContentProperty(\n" - + " \"www.example.org/MedicalTest\", \"condition\");"); - - Property conditionProperty = scope.getTypeHelper().getOpenContentProperty( - "www.example.org/MedicalTest", "condition"); - - commentary("We can create a value of the appropriate Type for this open\n" - + "content Property\n\n" - + "DataObject condition = dataFactory.create(conditionProperty.getType());\n" - + "condition.setString(\"name\", \"Panar Syndrome\");"); - - DataObject condition = dataFactory.create(conditionProperty.getType()); - condition.setString("name", "Panar Syndrome"); - - commentary("If you ask a DataObject that has an 'Open' Type for its list of\n" - + "values associated with an open content Property, and the DataObject\n" - + "doesn't currently have any values for the Property, it will return\n" - + "an empty list. We can use the list to add values for the Property\n\n" - + "List conditions = person1.getList(conditionProperty);\n" - + "conditions.add(condition);"); - - List conditions = person1.getList(conditionProperty); - conditions.add(condition); - - commentary("A further look at the data graph in XML form shows\n" - + "the presence of the new condition Property's value ..."); - - System.out.println(scope.getXMLHelper().save(test, - "www.example.org/MedicalTest", "test")); - - commentary("Having looked at the way SDO handles Open content\n" - + "We now turn our attention to 'non-containment' relationships.\n" - + "To do this we first create the set of people in the test that\n" - + "constitute the blood relatives of patients -- 'relatives'\n" - + "and define a new person to be Joe Johnson Snr's child.\n\n" - + "DataObject relatives = test.createDataObject(\"relatives\");\n" - + "DataObject person2 = relatives.createDataObject(\"person\");\n" - + "person2.setString(\"id\", \"2\");\n" - + "person2.setString(\"name\", \"Joe Johnson Jnr.\");\n" - + "person2.setString(\"gender\", \"male\");"); - - DataObject relatives = test.createDataObject("relatives"); - DataObject person2 = relatives.createDataObject("person"); - - person2.setString("id", "2"); - person2.setString("name", "Joe Johnson Jnr."); - person2.setString("gender", "male"); - - commentary("Another quick look at the XML rendering of the graph confirms that\n" - + "the set of relatives now includes Joe Johnson Jnr, but we haven't yet\n" - + "defined who he is related to, or how."); - - System.out.println(scope.getXMLHelper().save(test, - "www.example.org/MedicalTest", "test")); - - commentary("The Person type has a Property 'relative'\n" - + "so we create a relative for Joe Johnson Snr.\n\n" - + "DataObject relation = person1.createDataObject(\"relative\");\n" - + "relation.set(\"target\", person2);\n" - + "relation.set(\"relationship\", \"child\");"); - - DataObject relation = person1.createDataObject("relative"); - relation.set("target", person2); - relation.set("relationship", "child"); - - commentary("Now when we look at the XML rendering of the data graph\n" - + "we can see that the action of setting the 'target' of the\n" - + "relationship to Joe Johnson Jnr didn't displace him from the\n" - + "set of 'relatives', because the 'target' Property is a\n" - + "non-containment Property. This non-containment relationship\n" - + "is reflected in the XML by a reference to the Person DataObject\n" - + "describing Joe Johnson Jnr, \"2\" ...\n" - + "If the Type system has been created from an XML schema then the\n" - + "unique ID of the target can be used in the serialization.\n" - + "If however the type system was defined dynamically, then the reference\n" - + "will be represented as an XPath from the root of the data graph."); - - System.out.println(scope.getXMLHelper().save(test, - "www.example.org/MedicalTest", "test")); - - commentary("Now that the graph is complete we can use the PrintDataGraph sample utility\n" + - "to reveal the full SDO nature of the final data graph\n\n" + - ""); - - PrintDataGraph printer = new PrintDataGraph(COMMENTARY_FOR_ADVANCED); - printer.printDataObject(test); - System.out.println(printer.getBuf()); - } - - /** - * @throws Exception - * @throws FileNotFoundException - */ - private void createTypesViaAPI(HelperContext scope) throws Exception { - - List typeDeclarations = new ArrayList(); - - TypeHelper typeHelper = scope.getTypeHelper(); - - Type stringType = typeHelper.getType(sdoApiUri, "String"); - Type dateType = typeHelper.getType(sdoApiUri, "Date"); - Type booleanType = typeHelper.getType(sdoApiUri, "Boolean"); - - // <complexType name="Person"> - // <sequence> - // <element name="dob" type="date"/> - // <element name="relative" maxOccurs="unbounded" type="tns:Relative"/> - // <any namespace="##other" processContents="lax" maxOccurs="unbounded"/> - // </sequence> - // <attribute name="id" type="ID"/> - // <attribute name="name" type="string"/> - // <attribute name="gender" type = "tns:Gender"/> - // </complexType> - - DataObject personTypeDesc = createTypeDescription(scope, peopleURI, - "Person"); - typeDeclarations.add(personTypeDesc); - - addPropertyDescription(personTypeDesc, stringType, "name"); - addPropertyDescription(personTypeDesc, dateType, "dob"); - addPropertyDescription(personTypeDesc, stringType, "id"); // set to unique - // identifier? - addPropertyDescription(personTypeDesc, stringType, "gender"); // restrict? - - DataObject relativeType = createTypeDescription(scope, peopleURI, - "Relative"); // forward declare the Relative type - typeDeclarations.add(relativeType); - - DataObject rp = addPropertyDescription(personTypeDesc, relativeType, - "relative"); - rp.setBoolean("many", true); - personTypeDesc.set("open", Boolean.TRUE); - - // <complexType name="Relative"> - // <attribute name="target" type="IDREF" sdoxml:propertyType="tns:Person" - // use="required"/> - // <attribute name="relationship" type="string" /> - // <attribute name="genetic" use="optional" type="boolean"/> - // </complexType> - - addPropertyDescription(relativeType, stringType, "relationship"); - addPropertyDescription(relativeType, booleanType, "genetic"); - DataObject targetPersonProp = addPropertyDescription(relativeType, - personTypeDesc, "target"); - targetPersonProp.setBoolean("containment", false); - - // <complexType name="PersonSet"> - // <sequence> - // <element name="person" type="tns:Person" maxOccurs="unbounded"/> - // </sequence> - // </complexType> - - DataObject pSet = createTypeDescription(scope, peopleURI, "PersonSet"); - typeDeclarations.add(pSet); - DataObject pSetProperty = addPropertyDescription(pSet, personTypeDesc, - "person"); - pSetProperty.setBoolean("many", true); - - // <complexType name="Condition"> - // <sequence> - // <element name="diagnosed" type="date" /> - // </sequence> - // <attribute name="name" type="tns:ConditionName" /> - // </complexType> - - DataObject condition = createTypeDescription(scope, medicalURI, "Condition"); - typeDeclarations.add(condition); - addPropertyDescription(condition, booleanType, "diagnosed"); - addPropertyDescription(condition, stringType, "name"); // constrain? - - // <complexType name="Test"> - // <sequence> - // <element name="referrals" type="people:PersonSet" /> - // <element name="patients" type="people:PersonSet" /> - // <element name="relatives" type="people:PersonSet" /> - // </sequence> - // </complexType> - - DataObject testType = createTypeDescription(scope, medicalURI, "Test"); - typeDeclarations.add(testType); - addPropertyDescription(testType, pSet, "referrals"); - addPropertyDescription(testType, pSet, "patients"); - addPropertyDescription(testType, pSet, "relatives"); - - List types = typeHelper.define(typeDeclarations); - - DataObject p = scope.getDataFactory().create("commonj.sdo", "Property"); - p.set("type", typeHelper.getType(medicalURI, "Condition")); - p.set("name", "condition"); - p.setBoolean("many", true); - p.setBoolean("containment", true); // why is this not the default? - - typeHelper.defineOpenContentProperty(medicalURI, p); - - } - - /** - * @param uri - * @param name - * @return - */ - private DataObject createTypeDescription(HelperContext scope, String uri, - String name) { - DataObject typeDesc = scope.getDataFactory().create(sdoApiUri, "Type"); - typeDesc.set("name", name); - typeDesc.set("uri", uri); - return typeDesc; - } - - private DataObject addPropertyDescription( - DataObject containerTypeDescription, Object propertyType, - String propertyName) { - DataObject property = containerTypeDescription.createDataObject("property"); - property.set("type", propertyType); - property.setString("name", propertyName); - property.setBoolean("containment", true); - return property; - } - -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/MedicalScenarioWithChangeMonitoring.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/MedicalScenarioWithChangeMonitoring.java deleted file mode 100644 index 32d63f4335..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/MedicalScenarioWithChangeMonitoring.java +++ /dev/null @@ -1,449 +0,0 @@ -/** - * 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.advanced; - -import java.io.FileNotFoundException; -import java.util.ArrayList; -import java.util.List; - -import org.apache.tuscany.samples.sdo.SampleBase; -import org.apache.tuscany.sdo.api.SDOUtil; - -import commonj.sdo.DataObject; -import commonj.sdo.Property; -import commonj.sdo.Type; -import commonj.sdo.helper.DataFactory; -import commonj.sdo.helper.HelperContext; -import commonj.sdo.helper.TypeHelper; - -/** - * This sample is based on a 2 part article by Kelvin Goodson and Geoffrey Winn. - * In this variant of the sample the model for the test includes change monitoring. - * The facility for undoing changes on the basis of the change monitoring is - * demonstrated. - * See <A href="http://soa.sys-con.com/read/313547.htm">Part1</A> and <A - * href="http://soa.sys-con.com/read/358059.htm">Part 2</A> of the article. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ -public class MedicalScenarioWithChangeMonitoring extends SampleBase { - - private static final String sdoApiUri = "commonj.sdo"; - - private static final String peopleURI = "www.example.org/people"; - - private static final String medicalURI = "www.example.org/MedicalTest"; - - boolean typesViaAPI = false; - - private static final String usage = " [-api |-xsd]\n" - + " -api : define the types using the SDO API\n" - + " -xsd : define the types using an XML schema file"; - - public MedicalScenarioWithChangeMonitoring(String[] args, Integer userLevel) { - - super(userLevel, SAMPLE_LEVEL_ADVANCED); - - if (args.length > 1) { - printUsage(args); - System.exit(-1); - } - if (args.length == 1) { - if (args[0].equals("-xsd")) { - typesViaAPI = false; - } else if (args[0].equals("-api")) { - typesViaAPI = true; - } else { - printUsage(args); - System.exit(-1); - } - } - } - - public MedicalScenarioWithChangeMonitoring(Integer userLevel) { - super(userLevel, SAMPLE_LEVEL_ADVANCED); - } - - - private void printUsage(String[] args) { - System.out.println("Usage: " + this.getClass().getName() + usage); - } - - /** - * @param args - * @throws Exception - */ - public static void main(String[] args) throws Exception { - - MedicalScenarioWithChangeMonitoring s = new MedicalScenarioWithChangeMonitoring(args, COMMENTARY_FOR_NOVICE); - s.run(); - - } - - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] CORE_FUNCTION = { - SDOFacets.CONTAINMENT, - SDOFacets.CREATE_TYPES_USING_THE_SDO_API, - SDOFacets.CREATE_TYPES_USING_XML_SCHEMA, - SDOFacets.OPEN_CONTENT, - SDOFacets.NON_CONTAINMENT, - SDOFacets.CHANGE_MONITORING_USING_A_CHANGESUMMARY_PROPERTY_ON_A_DATAOBJECT - }; - - public static int [] SIGNIFICANT_FUNCTION = { - SDOFacets.CREATE_DATAOBJECTS_BY_NAME, - SDOFacets.ISMANY_PROPERTIES, - SDOFacets.GENERIC_DATA_GRAPH_TRAVERSAL, - SDOFacets.SAVING_DATA_TO_XML - }; - - public void runSample() throws Exception { - - HelperContext scope = SDOUtil.createHelperContext(); - - if (typesViaAPI) { - - commentary("In this execution of the sample we use Types created\n" - + "using the SDO API"); - - createTypesViaAPI(scope); - - } else { - - commentary("In this execution of the sample we use Types created\n" - + "by loading a variant of the XMLSchema that includes a change summary Property"); - - loadTypesFromXMLSchemaFile(scope, "MedicalTest_CS.xsd"); - - } - - commentary( - COMMENTARY_FOR_NOVICE, - "The DataFactory associated with the scope that the types were created within\n" - + "can be used to create an instance of the Person Type\n\n" - + "DataFactory dataFactory = scope.getDataFactory();\n" - + "DataObject person1 = dataFactory.create(\"www.example.org/people\", \"Person\");"); - - DataFactory dataFactory = scope.getDataFactory(); - DataObject person1 = dataFactory.create("www.example.org/people", "Person"); - - commentary("The setString() of dataObject method is used to set the properties of the\n" - + "new Person DataObject, including a unique identifier reference value\n" - + "for the Person instance.\n\n" - + "person1.setString(\"id\", \"1\");\n" - + "person1.setString(\"name\", \"Joe Johnson Snr.\");\n" - + "person1.setString(\"gender\", \"male\"););"); - - person1.setString("id", "1"); - person1.setString("name", "Joe Johnson Snr."); - person1.setString("gender", "male"); - - commentary("An alternative approach to using the DataFactory directly to create\n" - + "all DataObjects is to use a top-down approach, where we create the\n" - + "root object for a data graph, and then use the createDataObject(String propertyName)\n" - + "method to create the contained DataObjects. Here we create the overall\n" - + "medical test DataObject, and then create the contained \"referrals\" DataObject\n\n" - + "DataObject test = dataFactory.create(\"www.example.org/MedicalTest\", \"Test\");\n" - + "DataObject referrals = test.createDataObject(\"referrals\");"); - - DataObject test = dataFactory.create("www.example.org/MedicalTest", "Test"); - - DataObject referrals = test.createDataObject("referrals"); - - commentary("The default state for monitoring changes for the DataObject when created in this\n" + - "way is the monitoring is switched off, so we switch it on. (Note that if you\n" + - "get your data graphs from a data Access Service then this service may turn on\n" + - "change monitoring be default\n\n" + - "test.getChangeSummary().beginLogging();"); - test.getChangeSummary().beginLogging(); - - commentary("We'll repeat the whole of the MedicalScenario sample, but then at the \n" + - "last minute we'll decide it was all wrong and roll back the changes......"); - - commentary("Now we can add the person we created earlier into the set of people who have\n" - + "been referred for this medical test.\n\n" - + "test.set(\"referrals\", referrals);\n" - + "referrals.getList(\"person\").add(person1);"); - - test.set("referrals", referrals); - referrals.getList("person").add(person1); - - commentary("Let's take a look at how the current state of the data" - + "graph is rendered in XML ..."); - - System.out.println(scope.getXMLHelper().save(test, - "www.example.org/MedicalTest", "test")); - - commentary("The scenario unfolds and the Joe Johnson Snr. becomes a patient\n\n" - + "DataObject patients = test.createDataObject(\"patients\");\n" - + "patients.getList(\"person\").add(person1);"); - - DataObject patients = test.createDataObject("patients"); - - patients.getList("person").add(person1); - - commentary("Having added Joe Johnson Snr. to the set of patients we can see\n" - + "the way that SDO preserves a single containment hierarchy within a\n" - + "datagraph. If we look at the XML rendering of the graph again, we will\n" - + "see that by adding him to the set of patients he has been removed from the\n" - + "containment property associated with the referrals set ..."); - - System.out.println(scope.getXMLHelper().save(test, - "www.example.org/MedicalTest", "test")); - - commentary("The 'Person' Type we are making use of here has been designed to be\n" - + "multi-purpose, in that the type has been declared to be 'Open'.\n" - + "That means that we can make use of 'Open Content' Properties\n" - + "(If the type system has been defined using an XML schema\n" - + "then these properties will derive from global elements)\n" - + "We can look up open content Properties using the TypeHelper\n\n" - + "Property conditionProperty = scope.getTypeHelper().getOpenContentProperty(\n" - + " \"www.example.org/MedicalTest\", \"condition\");"); - - Property conditionProperty = scope.getTypeHelper().getOpenContentProperty( - "www.example.org/MedicalTest", "condition"); - - commentary("We can create a value of the appropriate Type for this open\n" - + "content Property\n\n" - + "DataObject condition = dataFactory.create(conditionProperty.getType());\n" - + "condition.setString(\"name\", \"Panar Syndrome\");"); - - DataObject condition = dataFactory.create(conditionProperty.getType()); - condition.setString("name", "Panar Syndrome"); - - commentary("If you ask a DataObject that has an 'Open' Type for its list of\n" - + "values associated with an open content Property, and the DataObject\n" - + "doesn't currently have any values for the Property, it will return\n" - + "an empty list. We can use the list to add values for the Property\n\n" - + "List conditions = person1.getList(conditionProperty);\n" - + "conditions.add(condition);"); - - List conditions = person1.getList(conditionProperty); - conditions.add(condition); - - commentary("A further look at the data graph in XML form shows\n" - + "the presence of the new condition Property's value ..."); - - System.out.println(scope.getXMLHelper().save(test, - "www.example.org/MedicalTest", "test")); - - commentary("Having looked at the way SDO handles Open content\n" - + "We now turn our attention to 'non-containment' relationships.\n" - + "To do this we first create the set of people in the test that\n" - + "constitute the blood relatives of patients -- 'relatives'\n" - + "and define a new person to be Joe Johnson Snr's child.\n\n" - + "DataObject relatives = test.createDataObject(\"relatives\");\n" - + "DataObject person2 = relatives.createDataObject(\"person\");\n" - + "person2.setString(\"id\", \"2\");\n" - + "person2.setString(\"name\", \"Joe Johnson Jnr.\");\n" - + "person2.setString(\"gender\", \"male\");"); - - DataObject relatives = test.createDataObject("relatives"); - DataObject person2 = relatives.createDataObject("person"); - - person2.setString("id", "2"); - person2.setString("name", "Joe Johnson Jnr."); - person2.setString("gender", "male"); - - commentary("Another quick look at the XML rendering of the graph confirms that\n" - + "the set of relatives now includes Joe Johnson Jnr, but we haven't yet\n" - + "defined who he is related to, or how."); - - System.out.println(scope.getXMLHelper().save(test, - "www.example.org/MedicalTest", "test")); - - commentary("The Person type has a Property 'relative'\n" - + "so we create a relative for Joe Johnson Snr.\n\n" - + "DataObject relation = person1.createDataObject(\"relative\");\n" - + "relation.set(\"target\", person2);\n" - + "relation.set(\"relationship\", \"child\");"); - - DataObject relation = person1.createDataObject("relative"); - relation.set("target", person2); - relation.set("relationship", "child"); - - commentary("Now when we look at the XML rendering of the data graph\n" - + "we can see that the action of setting the 'target' of the\n" - + "relationship to Joe Johnson Jnr didn't displace him from the\n" - + "set of 'relatives', because the 'target' Property is a\n" - + "non-containment Property. This non-containment relationship\n" - + "is reflected in the XML by a reference to the Person DataObject\n" - + "describing Joe Johnson Jnr, \"2\" ...\n" - + "If the Type system has been created from an XML schema then the\n" - + "unique ID of the target can be used in the serialization.\n" - + "If however the type system was defined dynamically, then the reference\n" - + "will be represented as an XPath from the root of the data graph."); - - System.out.println(scope.getXMLHelper().save(test, - "www.example.org/MedicalTest", "test")); - - commentary("Now that the graph is complete we can use the PrintDataGraph sample utility\n" + - "to reveal the full SDO nature of the final data graph\n\n" + - ""); - - PrintDataGraph printer = new PrintDataGraph(COMMENTARY_FOR_ADVANCED); - printer.printDataObject(test); - System.out.println(printer.getBuf()); - - commentary("But Wait! it's all wrong. Let's go back to our checkpoint where we started monitoring changes\n\n" + - "test.getChangeSummary().undoChanges();"); - - test.getChangeSummary().undoChanges(); - - printer.reset(); - printer.printDataObject(test); - System.out.println(printer.getBuf()); - - } - - /** - * @throws Exception - * @throws FileNotFoundException - */ - private void createTypesViaAPI(HelperContext scope) throws Exception { - - List typeDeclarations = new ArrayList(); - - TypeHelper typeHelper = scope.getTypeHelper(); - - Type stringType = typeHelper.getType(sdoApiUri, "String"); - Type dateType = typeHelper.getType(sdoApiUri, "Date"); - Type booleanType = typeHelper.getType(sdoApiUri, "Boolean"); - - // <complexType name="Person"> - // <sequence> - // <element name="dob" type="date"/> - // <element name="relative" maxOccurs="unbounded" type="tns:Relative"/> - // <any namespace="##other" processContents="lax" maxOccurs="unbounded"/> - // </sequence> - // <attribute name="id" type="ID"/> - // <attribute name="name" type="string"/> - // <attribute name="gender" type = "tns:Gender"/> - // </complexType> - - DataObject personTypeDesc = createTypeDescription(scope, peopleURI, - "Person"); - typeDeclarations.add(personTypeDesc); - - addPropertyDescription(personTypeDesc, stringType, "name"); - addPropertyDescription(personTypeDesc, dateType, "dob"); - addPropertyDescription(personTypeDesc, stringType, "id"); // set to unique - // identifier? - addPropertyDescription(personTypeDesc, stringType, "gender"); // restrict? - - DataObject relativeType = createTypeDescription(scope, peopleURI, - "Relative"); // forward declare the Relative type - typeDeclarations.add(relativeType); - - DataObject rp = addPropertyDescription(personTypeDesc, relativeType, - "relative"); - rp.setBoolean("many", true); - personTypeDesc.set("open", Boolean.TRUE); - - // <complexType name="Relative"> - // <attribute name="target" type="IDREF" sdoxml:propertyType="tns:Person" - // use="required"/> - // <attribute name="relationship" type="string" /> - // <attribute name="genetic" use="optional" type="boolean"/> - // </complexType> - - addPropertyDescription(relativeType, stringType, "relationship"); - addPropertyDescription(relativeType, booleanType, "genetic"); - DataObject targetPersonProp = addPropertyDescription(relativeType, - personTypeDesc, "target"); - targetPersonProp.setBoolean("containment", false); - - // <complexType name="PersonSet"> - // <sequence> - // <element name="person" type="tns:Person" maxOccurs="unbounded"/> - // </sequence> - // </complexType> - - DataObject pSet = createTypeDescription(scope, peopleURI, "PersonSet"); - typeDeclarations.add(pSet); - DataObject pSetProperty = addPropertyDescription(pSet, personTypeDesc, - "person"); - pSetProperty.setBoolean("many", true); - - // <complexType name="Condition"> - // <sequence> - // <element name="diagnosed" type="date" /> - // </sequence> - // <attribute name="name" type="tns:ConditionName" /> - // </complexType> - - DataObject condition = createTypeDescription(scope, medicalURI, "Condition"); - typeDeclarations.add(condition); - addPropertyDescription(condition, booleanType, "diagnosed"); - addPropertyDescription(condition, stringType, "name"); // constrain? - - // <complexType name="Test"> - // <sequence> - // <element name="referrals" type="people:PersonSet" /> - // <element name="patients" type="people:PersonSet" /> - // <element name="relatives" type="people:PersonSet" /> - // </sequence> - // </complexType> - - DataObject testType = createTypeDescription(scope, medicalURI, "Test"); - typeDeclarations.add(testType); - addPropertyDescription(testType, pSet, "referrals"); - addPropertyDescription(testType, pSet, "patients"); - addPropertyDescription(testType, pSet, "relatives"); - - List types = typeHelper.define(typeDeclarations); - - DataObject p = scope.getDataFactory().create("commonj.sdo", "Property"); - p.set("type", typeHelper.getType(medicalURI, "Condition")); - p.set("name", "condition"); - p.setBoolean("many", true); - p.setBoolean("containment", true); // why is this not the default? - - typeHelper.defineOpenContentProperty(medicalURI, p); - - } - - /** - * @param uri - * @param name - * @return - */ - private DataObject createTypeDescription(HelperContext scope, String uri, - String name) { - DataObject typeDesc = scope.getDataFactory().create(sdoApiUri, "Type"); - typeDesc.set("name", name); - typeDesc.set("uri", uri); - return typeDesc; - } - - private DataObject addPropertyDescription( - DataObject containerTypeDescription, Object propertyType, - String propertyName) { - DataObject property = containerTypeDescription.createDataObject("property"); - property.set("type", propertyType); - property.setString("name", propertyName); - property.setBoolean("containment", true); - return property; - } - -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/ObtainingDataGraphFromXml.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/ObtainingDataGraphFromXml.java deleted file mode 100644 index 6d8ac0ab31..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/ObtainingDataGraphFromXml.java +++ /dev/null @@ -1,201 +0,0 @@ -/** - * - * 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.advanced; - -import java.io.InputStream; - -import org.apache.tuscany.samples.sdo.SampleBase; -import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure; -import org.apache.tuscany.sdo.api.SDOUtil; - -import commonj.sdo.DataGraph; -import commonj.sdo.DataObject; -import commonj.sdo.helper.HelperContext; -import commonj.sdo.helper.XMLDocument; - -/** - * This sample program demonstrates a variety of methods available to obtain the root DataObject - * contained within an xml representation of a DataGraph. This is currently a grey - * area of the specification and this sample demonstrates spec compliant methods, as - * well as utility methods that have been added to Tuscany to address issues within - * the specification. - * - * The following sample is from the <a href="http://incubator.apache.org/tuscany" - * target="_blank"> Apache Tuscany</a> project. It was written to help users - * understand and experiment with SDO. It is based upon example code contained - * within, and is meant for use with, and reference to the <a - * href="http://osoa.org/download/attachments/36/Java-SDO-Spec-v2.1.0-FINAL.pdf?version=1" - * target="_bank">SDO Specification</a>. This sample attempts to clarify aspects of - * the the AccessDataObjectsUsingXPath example from the Examples section of the SDO - * specification.<br> - * <br> - * To define the correct Types for each DataObject ( CompanyType, DepartmentType etc ) - * this sample relies upon - * {@link org.apache.tuscany.samples.sdo.internal.SampleInfrastructure#COMPANY_XSD} which is - * provided in the resources directory of these samples. The xml file - * {@link org.apache.tuscany.samples.sdo.internal.SampleInfrastructure#COMPANY_DATAGRAPH_XML} is - * used to load the DataGraph and is also located in this resources directory. <br> - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ - -public class ObtainingDataGraphFromXml extends SampleBase { - - HelperContext scope; - - - - public ObtainingDataGraphFromXml(Integer userLevel) { - super(userLevel, SAMPLE_LEVEL_ADVANCED); - } - - public static void main(String[] args) { - - /* - * Create an instance of the sample program. Edit the "commentaryLevel" argument to suit - * your experience, COMMENTARY_FOR_NOVICE, COMMENTARY_FOR_INTERMEDIATE or COMMENTARY_FOR_ADVANCED - */ - ObtainingDataGraphFromXml sample = - new ObtainingDataGraphFromXml(COMMENTARY_FOR_ADVANCED); - sample.run(); - - } - - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] CORE_FUNCTION = { - SDOFacets.WRAPPING_DATA_GRAPH_IN_A_DATAGRAPH_INSTANCE - }; - - public static int [] SIGNIFICANT_FUNCTION = { - SDOFacets.USING_BUILT_IN_TYPES - }; - - - public void runSample () { - banner('*', - "SDO Sample " + this.getClass().getName() + "\n\n" + - - "This sample touches an area of the SDO API where the emphasis has changed over the various\n"+ - "version of the specification, and so it's important to be clear what's going on\n"+ - "First off lets be sure of our terminology ...\n"+ - "1) A \"data graph\" is a just collection of DataObjects, all contained within a single\n"+ - "containment hierarchy, with a single root object, and possibly having some non-containment\n"+ - "references\n"+ - "2) A \"DataGraph\" is an instance of the SDO DataGraph class, used as a container for the root\n"+ - "DataObject of a data graph, and providing a means to access a change summary for the data graph.\n\n"+ - "More recent versions of the SDO specification have provided alternative means of containment\n"+ - "of a data graph ...\n"+ - "3) The graph can be contained in a DataObject of a built-in SDO Type with namespace URI \"commonj.sdo\"\n" + - "and name \"DataGraph\": so this is a modeled version of the special DataGraph class.\n"+ - "4) The Graph can be contained in an XMLDocument instance, which provides for things such as\n"+ - "naming the root element of an XML instance document" - ); - - scope = useDefaultScopeForTypes(); - loadTypesFromXMLSchemaFile(scope, SampleInfrastructure.COMPANY_XSD); - - - - try { - - - - - DataObject company = null; - - commentary( - "Here we see the specification's example for obtaining dealing with\n"+ - "loading a data graph which uses a method, XMLHelper.load(). This loads an XML instance document\n"+ - "into an instance of XMLDocument ...\n\n"+ - "XMLDocument doc = scope.getXMLHelper().load(\n"+ - "ClassLoader.getSystemResourceAsStream(SampleInfrastructure.COMPANY_DATAGRAPH_XML));" - ); - - InputStream is = ClassLoader.getSystemResourceAsStream(SampleInfrastructure.COMPANY_DATAGRAPH_XML); - int x= is.available(); - byte b[]= new byte[x]; - is.read(b); - String instanceDoc = new String(b); - - System.out.println(instanceDoc); - - XMLDocument doc = scope.getXMLHelper().load( - ClassLoader.getSystemResourceAsStream(SampleInfrastructure.COMPANY_DATAGRAPH_XML)); - - commentary( - "Now we can get the wrapper for the data graph, which in this case is the DataObject\n"+ - "of type commonj.sdo#DataGraph. Note how there's no magic here; no special class for\n"+ - "DataGraph, no special handling, this is just a standard pattern of using a built in SDO Type.\n"+ - "The wrapper is there purely because it was serialized\n"+ - "into the XML document, using the standard serialization technique.\n\n" + - "DataObject dataObjectRepresentingDataGraph = doc.getRootObject();"); - - DataObject dataObjectRepresentingDataGraph = doc.getRootObject(); - - System.out.println(dataObjectRepresentingDataGraph); - - commentary( - "If you are confused by the fact that what we really get is an instance of DataGraphTypeImpl\n"+ - "This really is a DataObject, but it is a generated class extending DataObjectImpl\n+"+ - "representing the DataGraph model."); - - company = dataObjectRepresentingDataGraph.getDataObject("company"); - - commentary( - "We've obtained a DataObject representing the data graph, and from that we have obtained\n"+ - "the true root object of the business data"); - - System.out.println(company); - System.out.println(); - - commentary( - "Using an instance of DataGraph can perhaps be seen as an older style pattern of wrapping a data graph\n"+ - "and the first approach is likely to get more emphasis and attention in future revisions of the spec.\n"+ - "The SDO API has some limitations in the area of saving and loading instances of the\n"+ - "Java DataGraph type, so Tuscany has an API for doing this ...\n\n"+ - "DataGraph datagraph = SDOUtil.loadDataGraph(\n"+ - " ClassLoader.getSystemResourceAsStream(SampleInfrastructure.COMPANY_DATAGRAPH_XML), null);" - - ); - - DataGraph datagraph = SDOUtil.loadDataGraph(ClassLoader.getSystemResourceAsStream(SampleInfrastructure.COMPANY_DATAGRAPH_XML), null); - - System.out.println(datagraph); - - commentary( - "In this case we directly receive an instance of DataGraph and can retrieve the root\n"+ - "business object from the DataGraph\n\n"+ - "DataObject company = datagraph.getRootObject();"); - - company = datagraph.getRootObject(); - System.out.println(company); - System.out.println(); - - } catch (Exception e) { - somethingUnexpectedHasHappened(e); - } - - } -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/PrintDataGraph.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/PrintDataGraph.java deleted file mode 100644 index 7458eef76c..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/PrintDataGraph.java +++ /dev/null @@ -1,498 +0,0 @@ -/** - * - * 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.advanced; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.apache.tuscany.samples.sdo.SampleBase; -import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure; - -import commonj.sdo.DataObject; -import commonj.sdo.Property; -import commonj.sdo.Sequence; -import commonj.sdo.Type; -import commonj.sdo.helper.HelperContext; -import commonj.sdo.helper.XMLDocument; -import commonj.sdo.helper.XSDHelper; -import commonj.sdo.impl.HelperProvider; - -/** - * - * This sample program traverses data graphs and builds up a text representation of the - * data graph. As it traverses a graph it outputs commentary to the console - * about what it has encountered and how it intends to process what it finds. At - * the end of each traversal the text representation of the graph is printed to - * the console. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ -public class PrintDataGraph extends SampleBase { - - StringBuffer buf = null; - HelperContext scope = HelperProvider.getDefaultContext(); - - private int indent; - - private int indentIncrement = 2; - - public PrintDataGraph(Integer userLevel) { - super(userLevel, SAMPLE_LEVEL_ADVANCED); - buf = new StringBuffer(); - } - - public static void main(String[] args) { - PrintDataGraph sample = new PrintDataGraph(COMMENTARY_FOR_NOVICE); - sample.run(); - } - - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] CORE_FUNCTION = { - SDOFacets.GENERIC_DATA_GRAPH_TRAVERSAL - }; - - public static int [] SIGNIFICANT_FUNCTION = { - SDOFacets.GET_SET_PROPERTIES_BY_INSTANCE_PROPERTIES, - SDOFacets.ISMANY_PROPERTIES, - SDOFacets.CREATE_TYPES_USING_THE_SDO_API, - SDOFacets.ACCESSING_VALUES_IN_A_SEQUENCE, - SDOFacets.NON_CONTAINMENT - }; - - public void runSample() throws Exception { - commentary("This sample demonstrates a common pattern of traversing a data graph\n" - + "and printing the values of its Properties. As the sample traverses a couple of\n" - + "graphs it provides commentary about what it has found and what actions it\n" - + "is taking, whilst building up a text representation of the graph. It then\n" - + "shows you the results of its labours."); - - HelperContext scope = createScopeForTypes(); - - commentary( - COMMENTARY_ALWAYS, - "First we look at a data graph of a Purchase Order which has a fairly simple XML schema\n" - + "and the graph's containment hierarchy has a couple of levels of depth"); - - loadTypesFromXMLSchemaFile(scope, SampleInfrastructure.PO_XSD_RESOURCE); - - XMLDocument purchaseOrder = getXMLDocumentFromFile(scope, - SampleInfrastructure.PO_XML_RESOURCE); - - printXMLDocument(purchaseOrder); - - commentary(COMMENTARY_ALWAYS, - "And here is the resultant view of the data graph\n\n"); - System.out.println(getBuf().toString()); - - commentary(COMMENTARY_ALWAYS, - "Next we look at a graph representing a form letter, where the Type of the\n" - + "root data object is 'Sequenced'"); - - loadTypesFromXMLSchemaFile(scope, "letter.xsd"); - DataObject letter = getDataObjectFromFile(scope, "letter.xml"); - - reset(); - print(letter); - - commentary(COMMENTARY_ALWAYS, - "And here is the resultant view of the data graph\n\n"); - - System.out.println(getBuf().toString()); - - } - - public void reset() { - indent = 0; - buf = new StringBuffer(); - } - - /* - * a convenience method allowing untyped access to the print function for - * selected SDO artifacts - */ - public void print(Object sdoObject) throws Exception { - - if (sdoObject instanceof XMLDocument) { - printXMLDocument((XMLDocument) sdoObject); - } else if (sdoObject instanceof DataObject) { - printDataObject((DataObject) sdoObject); - } - - } - - public void printXMLDocument(XMLDocument xmlDocument) { - - commentary( - COMMENTARY_FOR_NOVICE, - "We are going to traverse a data graph that has been wrapped in an instance of XMLDocument\n" - + "Amongst other things, the XMLDocument instance provides access to the root element name\n" - + "and the root DataObject of the data graph.\n\n" - + "xmlDocument.getRootElementName();\n" - + "xmlDocument.getRootObject();", - - "Accessing another graph via an XMLDocument instance as we saw previously ...\n" - + "xmlDocument.getRootElementName();\n" - + "xmlDocument.getRootObject();"); - - buf.append("XMLDocument: ").append(xmlDocument.getRootElementName()); - lineBreak(); - incrementIndent(); - printDataObject(xmlDocument.getRootObject()); - decrementIndent(); - } - - public void printDataObject(DataObject dataObject) { - - if (dataObject.getContainer() == null) { - commentary( - COMMENTARY_FOR_NOVICE, - "We begin traversing the data graph by examining the root object of the graph's containment hierarchy,\n" - + "making a record of the values of its Properties. As we inspect the values of the Properties of this object\n" - + "if we encounter contained DataObjects, then we will recurs through the containment hierarchy of the\n" - + "data graph in a depth first fashion, and create a text representation of the graph that we'll print\n" - + "out after the graph traversal has been completed.", - - "We are beginning to traverse another data graph from its root object, in the same way that we saw previously"); - } else { - commentary( - COMMENTARY_FOR_NOVICE, - "We have arrived at a contained dataObject in the graph, and will inspect its Property values,\n" - + "recursing deeper if necessary", - - "Inspecting another contained dataObject"); - } - - lineBreak(); - indent(); - buf.append("DataObject: "); - Type type = dataObject.getType(); - buf.append("Type: ").append(type.getURI()).append('#').append( - type.getName()); - lineBreak(); - - if (dataObject.getType().isSequenced()) { - - commentary( - COMMENTARY_FOR_INTERMEDIATE, - "We've encountered a DataObject in the graph for which the Type is 'Sequenced'\n" - + "That is to say that the order of addition of Property values to the DataObject instance\n" - + "is important, and is preserved by the DataObject\n\n" - + "dataObject.getType().isSequenced();", - - "We've encountered another sequenced DataObject instance, and so will traverse the Property\n" - + "values in the order preerved by the instance, as we saw before\n\n" - + "dataObject.getType().isSequenced();"); - - commentary( - "There's a subtlety here which we must deal with if this sample code is to\n" + - "handle both Type systems that derive from XML schema, and those that come from elsewhere,\n" + - "e.g. using the SDO API. If a Sequenced DataObject has a Type that comes from XML schema\n" + - "then its Properties that derive from XML attributes are not ordered, whereas those that\n" + - "derive from XML elements are ordered. The SDO specification doesn't say whether\n" + - "the attribute related Properties should appear at the start of a Sequence or not.\n" + - "Currently in Tuscany we leave them out of the Sequence; other SDO implementations may\n" + - "include the XML attributes in the Sequence. This sample code is written to deal with\n" + - "either approach\n." + - "We use the XSDHelper.isAttribute(Property) and isElement(Property) methods to distinguish\n" + - "between the two kinds of Property", - - "Examining the xml attributes and elements of a Sequenced DataObject again." - ); - - XSDHelper xsdHelper = getScope().getXSDHelper(); - incrementIndent(); - for(Iterator it=dataObject.getInstanceProperties().iterator(); it.hasNext();) { - Property property = (Property)it.next(); - if (xsdHelper.isAttribute(property)) { - indent(); - buf.append("Property (XML Attribute): ").append(property.getName()).append(" - ").append(dataObject.get(property)); - lineBreak(); - } - - } - decrementIndent(); - Sequence seq = dataObject.getSequence(); - - commentary( - "The Property/Value pairs of a Sequence can be accessed via the getProperty(int) and getValue(int)\n" - + "accessor methods of the Sequence interface. The size() method of the Sequence tells us how many there are.\n" - + "If the getProperty(int) method returns null, then the value is text. These text values may be encountered\n" - + "when the DataObject's type is 'mixed' (dataObject.getType().isMixed() == true). A typical example of this\n" - + "is when the data graph represents a form letter.", - - "Inspecting the Property/Value pairs of another Sequence"); - - incrementIndent(); - indent(); - buf.append("Sequence: {\n"); - - incrementIndent(); - for (int i = 0; i < seq.size(); i++) { - Property p = seq.getProperty(i); - if (p == null) { - indent(); - buf.append("text: ").append(seq.getValue(i)); - lineBreak(); - } else if(!xsdHelper.isAttribute(p)){ - printPropertyValuePair(p, seq.getValue(i)); - } - } - decrementIndent(); - - indent(); - buf.append("}\n"); - decrementIndent(); - - } else { - incrementIndent(); - - commentary( - COMMENTARY_FOR_INTERMEDIATE, - "We access the Property values of this DataObject by first getting the list of 'Instance Properties'\n" - + "from the DataObject. For many DataObjects, this will be the same set of Properties that are defined\n" - + "by the DataObject's Type. However, if the DataObject's type is 'Open' then an instance of that Type\n" - + "may contain more Properties than the type itself. The list of Instance Properties will always include\n" - + "the Properties defined in the Type, but will also include any Properties that the instance has values for\n" - + "by virtue of it's type being 'Open'\n\n" - + "for (int i = 0; i < dataObject.getInstanceProperties().size(); i++) {\n" - + " Property p = (Property) dataObject.getInstanceProperties().get(i);", - - "Traversing the instance Properties of this DataObject\n" - + "for (int i = 0; i < dataObject.getInstanceProperties().size(); i++) {\n" - + " Property p = (Property) dataObject.getInstanceProperties().get(i);" - - ); - - for (int i = 0; i < dataObject.getInstanceProperties().size(); i++) { - Property p = (Property) dataObject.getInstanceProperties().get(i); - indent(); - printValueOfProperty(dataObject, p); - } - - decrementIndent(); - } - - } - - - - - - private void printPropertyValuePair(Property p, Object value) { - - indent(); - buf.append("Property: ").append(p.getName()).append(": "); - if(p.getType().isDataType()) { - printSimpleValue(value); - lineBreak(); - } else { - if(p.isContainment()) { - incrementIndent(); - printDataObject((DataObject)value); - decrementIndent(); - } else { - printReferencedDataObject((DataObject)value); - } - } - - - } - - private void printValueOfProperty(DataObject dataObject, Property p) { - - commentary( - COMMENTARY_FOR_INTERMEDIATE, - "We are about to inspect the value of a Property, but we must\n" - + "consider the nature of that Property in order to deal with it appropriately.\n" - + "Firstly we see if the Property value has been set (dataObject.isSet(property))\n" - + "Then we see if the Property is simple valued (property.isDataType() == true)\n" - + "--if not then we know it's a DataObject and we must recurs deeper into the graph's\n" - + "containment hierarchy\n" - + "Whether or not the property value is a DataObject, is may be single or multi-valued\n" - + "so we must either use one of the DataObject's get*(Property) accessors for single\n" - + "valued Properties or the getList() method for multi-valued properties.\n" - + "Another thing we must deal with when the Property is a DataObject, is whether or not the\n" - + "Property is a 'containment' Property. If it isn't, then here we simply record the fact that\n" - + "we have encountered this non-containment relationship, and move on to the next Property", - - "Inspecting another property to determine how to access its value, as we saw before"); - - // TODO deal with nullable - - buf.append("Property ").append(p.getName()).append(": ").append(" - "); - - if (dataObject.isSet(p)) { - if (p.getType().isDataType()) { - if (p.isMany()) { - printSimpleValues(dataObject.getList(p)); - } else { - printSimpleValue(dataObject.get(p)); - } - } else { - if (p.isContainment()) { - incrementIndent(); - if (p.isMany()) { - printDataObjects(dataObject.getList(p)); - } else { - printDataObject(dataObject.getDataObject(p)); - } - decrementIndent(); - } else { - if (p.isMany()) { - printReferencedDataObjects(dataObject.getList(p)); - } else { - printReferencedDataObject(dataObject.getDataObject(p)); - } - } - } - } else { - buf.append(" is not set"); - } - - lineBreak(); - - } - - private void printReferencedDataObject(DataObject dataObject) { - - commentary( - COMMENTARY_FOR_INTERMEDIATE, - "We have encounted a non-containment reference to a DataObject, and so\n" - + "we know that this DataObject will be fully inspected when encountered by the\n" - + "traversal of the data graph's containment hierarchy.\n" - + "We therefore record the fact that this association has been encountered by\n" - + "establishing the path from the root object of the data graph to the referenced\n" - + "DataObject", - - "Recording the fact that we have encountered another non-containment reference"); - - List path = new ArrayList(); - DataObject current = dataObject; - while (current != null) { - Property containmentProperty = current.getContainmentProperty(); - if(containmentProperty != null) { - if(containmentProperty.isMany()) { - List pValues = current.getContainer().getList(containmentProperty); - int index = pValues.indexOf(current)+1; - path.add("["+index+"]"); - } - path.add("/"+current.getContainmentProperty().getName()); - } - current = current.getContainer(); - } - buf.append("reference to: "); - for (ListIterator i = path.listIterator(path.size()); i.hasPrevious();) { - buf.append(i.previous()); - } - } - - private void printReferencedDataObjects(List list) { - - commentary( - COMMENTARY_FOR_NOVICE, - "Traversing a list of DataObjects which represent the values of a multi-valued non-containment Property"); - - indent(); - buf.append('['); - for (Iterator i = list.iterator(); i.hasNext();) { - printReferencedDataObject((DataObject) i.next()); - } - indent(); - buf.append(']'); - } - - private void printDataObjects(List list) { - - commentary( - COMMENTARY_FOR_NOVICE, - "Traversing a list of DataObjects which represent the values of a multi-valued containment Property"); - - - lineBreak(); - indent(); - buf.append("["); - incrementIndent(); - for (Iterator i = list.iterator(); i.hasNext();) { - printDataObject((DataObject) i.next()); - } - decrementIndent(); - indent(); - buf.append(']'); - } - - private void printSimpleValue(Object object) { - buf.append(object); - } - - private void printSimpleValues(List values) { - buf.append('['); - for (Iterator i = values.iterator(); i.hasNext();) { - printSimpleValue(i.next()); - if (i.hasNext()) { - buf.append(','); - } - } - buf.append(']'); - - } - - private void decrementIndent() { - indent -= indentIncrement; - - } - - private void incrementIndent() { - indent += indentIncrement; - - } - - private void indent() { - for (int i = 0; i < indent; i++) { - buf.append(' '); - } - } - - private void lineBreak() { - buf.append('\n'); - } - - public StringBuffer getBuf() { - return buf; - } - - public void setBuf(StringBuffer b) { - buf = b; - } - - public HelperContext getScope() { - return scope; - } - - public void setScope(HelperContext scope) { - this.scope = scope; - } - -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/package.html b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/package.html deleted file mode 100644 index 4a375228f8..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/package.html +++ /dev/null @@ -1,31 +0,0 @@ -<html>
-<!--
- *
- * 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.
- * -->
-<head>
- <title>Advanced SDO Samples</title>
-</head>
-<BODY>
-<h1>Advanced Service Data Object (SDO) Sample Programs</h1>
-
-<h3>Running the Samples</h3> See <A HREF="../../../../../../index.html"
-target="_top">the main overview</A> for instructions on how to run these
-samples.
-</BODY>
-</HTML>
diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/AccessDataObjectPropertiesByName.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/AccessDataObjectPropertiesByName.java deleted file mode 100644 index 2030f35017..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/AccessDataObjectPropertiesByName.java +++ /dev/null @@ -1,99 +0,0 @@ -/** - * - * 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.util.List; - -import org.apache.tuscany.samples.sdo.SampleBase; -import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure; - -import commonj.sdo.DataObject; -import commonj.sdo.helper.HelperContext; - -/** - * Demonstrates accessing a DataObject's Property values by name. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ -public class AccessDataObjectPropertiesByName extends SampleBase { - - public AccessDataObjectPropertiesByName(Integer commentaryLevel) { - super(commentaryLevel, SAMPLE_LEVEL_BASIC); - } - - - public static void main(String[] args) { - AccessDataObjectPropertiesByName sample = new AccessDataObjectPropertiesByName(COMMENTARY_FOR_NOVICE); - sample.run(); - - } - - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] CORE_FUNCTION = { - SDOFacets.GET_PROPERTIES_OF_DATAOBJECT_BY_NAME - }; - - public void runSample () throws Exception { - - banner("This sample will access a DataObject's properties by name\n"+ - "Take a look at the sample code to see all the uses of dataObject.get(String)\n"+ - "dataObject.getList(String) and dataObject.getDataObject(String)"); - - // setting up the type system for the example, see the utility methods for details of these operations - HelperContext scope = createScopeForTypes(); - loadTypesFromXMLSchemaFile(scope, SampleInfrastructure.PO_XSD_RESOURCE); - - DataObject purchaseOrder = getDataObjectFromFile(scope, SampleInfrastructure.PO_XML_RESOURCE); - - System.out.println("Accessing properties of purchaseOrder by name"); - System.out.println("Purchase Order: "); - System.out.println(" purchaseOrder.get(\"orderDate\"): " + purchaseOrder.get("orderDate")); - System.out.println(" purchaseOrder.get(\"comment\"): " + purchaseOrder.get("comment")); - - System.out.println(" DataObject shipTo = purchaseOrder.getDataObject(\"shipTo\");"); - DataObject shipTo = purchaseOrder.getDataObject("shipTo"); - System.out.println(" shipTo.get(\"name\"): " + shipTo.get("name")); - - System.out.println(" DataObject billTo = purchaseOrder.getDataObject(\"billTo\");"); - DataObject billTo = purchaseOrder.getDataObject("billTo"); - System.out.println(" billTo.get(\"name\"): " + billTo.get("name")); - - System.out.println(" DataObject items = purchaseOrder.getDataObject(\"items\");\n" + - " List itemList = items.getList(\"item\");\n" + - " DataObject item = (DataObject) itemList.get(i);"); - DataObject items = purchaseOrder.getDataObject("items"); - List itemList = items.getList("item"); - - System.out.println(" Items:"); - for (int i = 0; i < itemList.size(); i++) { - DataObject item = (DataObject) itemList.get(i); - System.out.println(" item[" + i + "]"); - System.out.println(" item.get(\"partNum\"): " + item.get("partNum")); - System.out.println(" item.get(\"productName\"): " + item.get("productName")); - } - - } - -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/AccessingTheContentsOfASequence.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/AccessingTheContentsOfASequence.java deleted file mode 100644 index e24a837ccc..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/AccessingTheContentsOfASequence.java +++ /dev/null @@ -1,115 +0,0 @@ -/** - * - * 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 org.apache.tuscany.samples.sdo.SampleBase; - -import commonj.sdo.DataObject; -import commonj.sdo.Property; -import commonj.sdo.Sequence; -import commonj.sdo.helper.HelperContext; - -/** - * Demonstrates accessing the sequence from a DataObject containing mixed content. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ - -public class AccessingTheContentsOfASequence extends SampleBase { - - HelperContext scope; - - public AccessingTheContentsOfASequence(Integer userLevel) { - super(userLevel, SAMPLE_LEVEL_BASIC); - } - - - /** - * previously created XSD file used - */ - public static final String LETTER_XSD = "letter.xsd"; - - /** - * previously created XML file used - */ - public static final String LETTER_XML = "letter.xml"; - - /** - * Execute this method in order to run the sample. - * - * @param args - */ - public static void main(String[] args) { - - AccessingTheContentsOfASequence sample = - new AccessingTheContentsOfASequence(COMMENTARY_FOR_NOVICE); - - sample.run(); - - } - - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] CORE_FUNCTION = { - SDOFacets.ACCESSING_VALUES_IN_A_SEQUENCE - }; - - public void runSample () throws Exception { - - commentary("Demonstrates accessing the sequence from a DataObject containing mixed content."); - - scope = createScopeForTypes(); - loadTypesFromXMLSchemaFile(scope, LETTER_XSD); - DataObject letter = getDataObjectFromFile(scope, LETTER_XML); - - // print letter sequence - commentary("We've loaded a document from an XML file that contains mixed content.\n" + - "Here's how the XML looks ...\n"); - System.out.println(scope.getXMLHelper().save(letter, "letter.xsd", "letter")); - - commentary("We can iterate over the sequence, getting the Property / Value pairs\n" + - "using the Sequence.getProperty(int) and Sequence.getValue(int) methods.\n" + - "The model for this document is \"mixed\", i.e.\n" + - "letter.getType().isMixed() returns \"true\".\n" + - "Let's take a look at the Properties in this sequence."); - - Sequence letterSequence = letter.getSequence(); - - for (int i = 0; i < letterSequence.size(); i++) { - Property prop = letterSequence.getProperty(i); - if (prop == null) { - String text = (String) letterSequence.getValue(i); - System.out.println("Unstructured text (" + text + ")"); - } else { - System.out.println("Property: " + prop.getName() + " Value : " + letterSequence.getValue(i)); - } - } - - commentary("The values of the modeled Properties are still accessible through the DataObject\n" + - "getter and setter methods, but only through the Sequence API can we get to the unstructured\n" + - "text and see the ordering of the instance document"); - - } -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreateCompany.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreateCompany.java deleted file mode 100644 index 38bafca539..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreateCompany.java +++ /dev/null @@ -1,151 +0,0 @@ -/** - * - * 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 org.apache.tuscany.samples.sdo.SampleBase; -import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure; - - -import commonj.sdo.DataObject; -import commonj.sdo.helper.HelperContext; - -/** - * This sample uses the scenario of building a description of a company to demonstrate - * primarily the setting of data using strings to name Properties. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ -public class CreateCompany extends SampleBase { - - public CreateCompany(Integer commentaryLevel) { - this(commentaryLevel, SAMPLE_LEVEL_BASIC); - } - - public CreateCompany(Integer commentaryLevel, Integer sampleLevel) { - super(commentaryLevel, sampleLevel); - } - - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] CORE_FUNCTION = { - SDOFacets.SET_PROPERTIES_OF_DATAOBJECT_BY_NAME - }; - - /** - * XML file generated for the company DataObject - */ - private static final String COMPANY_GENERATED_XML = "companyGenerated.xml"; - - /** - * Main method. Execute this method in order to run sample - * @param args - * @throws Exception - */ - public static void main(String[] args) { - /* - * this sample is suitable for a novice to SDO. - * Change the experience level constructor argument to one of - * COMMENTARY_FOR_NOVICE, COMMENTARY_FOR_INTERMEDIATE, COMMENTARY_FOR_ADVANCED, change - * the level of commentary output. - */ - CreateCompany sample = new CreateCompany(COMMENTARY_FOR_NOVICE); - - sample.run(); - - } - - public void runSample () throws Exception { - - banner('*', - "Demonstrates how to create a data graph using a model loaded\n"+ - "from an XML Schema contained in a file on the file system"); - - HelperContext scope = createScopeForTypes(); - loadTypesFromXMLSchemaFile(scope, SampleInfrastructure.COMPANY_XSD); - - commentary( - "Now that our type system has been loaded and made available through the scope\n"+ - "DataObjects can be created by a DataFactory that has access to the required types.\n\n"+ - "DataObject company = scope.getDataFactory().create(SampleInfrastructure.COMPANY_NAMESPACE, \"CompanyType\");"); - - DataObject company = scope.getDataFactory().create(SampleInfrastructure.COMPANY_NAMESPACE, "CompanyType"); - - populateGraph(scope, company); - - FileOutputStream fos = new FileOutputStream(COMPANY_GENERATED_XML); - - commentary( - "The XMLHelper can be used to write an XML serialized version of the data graph\n\n"+ - "scope.getXMLHelper().save(company, SampleInfrastructure.COMPANY_NAMESPACE, \"company\", fos);"); - - scope.getXMLHelper().save(company, SampleInfrastructure.COMPANY_NAMESPACE, "company", fos); - - commentary( - "Similarly we can serialize the graph to an XML String using the XMLHelper\n\n"+ - "String xml = scope.getXMLHelper().save(company, SampleInfrastructure.COMPANY_NAMESPACE, \"company\");\n"); - - String xml = scope.getXMLHelper().save(company, SampleInfrastructure.COMPANY_NAMESPACE, "company"); - - System.out.println(xml); - - } - - public void populateGraph(HelperContext scope, DataObject company) - { - - System.out.println("Populating the company DataObject"); - company.setString("name", "ACME"); - company.setString("employeeOfTheMonth", "E0001"); - - System.out.println("Creating a Department"); - - DataObject depts = company.createDataObject("departments"); - - depts.setString("name", "Advanced Technologies"); - depts.setString("location", "NY"); - depts.setString("number", "123"); - - System.out.println("Creating an employee: John Jones"); - DataObject johnJones = depts.createDataObject("employees"); - johnJones.setString("name", "John Jones"); - - johnJones.setString("SN", "E0001"); - - System.out.println("Creating an employee: Jane Doe"); - DataObject janeDoe = depts.createDataObject("employees"); - janeDoe.setString("name", "Jane Doe"); - janeDoe.setString("SN", "E0003"); - - System.out.println("Creating a manager: Fred Bloggs"); - DataObject fVarone = depts.createDataObject("employees"); - fVarone.setString("name", "Fred Bloggs"); - fVarone.setString("SN", "E0004"); - fVarone.setString("manager", "true"); - System.out.println("DataObject creation completed"); - System.out.println(); - } - -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreatePurchaseOrder.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreatePurchaseOrder.java deleted file mode 100644 index c41aa37397..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreatePurchaseOrder.java +++ /dev/null @@ -1,159 +0,0 @@ -/** - * - * 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 <A - * HREF="http://www-128.ibm.com/developerworks/webservices/library/ws-sdoxmlschema/"> - * Create and read an XML document based on XML Schema</A> - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> 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(); - } - -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/ReadPurchaseOrder.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/ReadPurchaseOrder.java deleted file mode 100644 index e1b0dce3e6..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/ReadPurchaseOrder.java +++ /dev/null @@ -1,147 +0,0 @@ -/** - * - * 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.util.List; - -import org.apache.tuscany.samples.sdo.SampleBase; -import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure; - -import commonj.sdo.DataObject; -import commonj.sdo.helper.HelperContext; -import commonj.sdo.helper.XMLDocument; - -/** - * Reads purchase order DataObject from XML, based upon Fuhwei Lwo's paper <A - * HREF="http://www-128.ibm.com/developerworks/webservices/library/ws-sdoxmlschema/"> - * Create and read an XML document based on XML Schema</A>. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - * - */ -public class ReadPurchaseOrder extends SampleBase { - - - public static String purchaseOrderDoc = - "<?xml version=\"1.0\" encoding=\"ASCII\"?>\n"+ - " <po:purchaseOrder xmlns:po=\"http://www.example.com/PO\" orderDate=\"1999-10-20\">\n"+ - " <shipTo country=\"US\">\n"+ - " <name>Alice Smith</name>\n"+ - " <street>123 Maple Street</street>\n"+ - " <city>Mill Valley</city>\n"+ - " <state>CA</state>\n"+ - " <zip>90952</zip>\n"+ - " </shipTo>\n"+ - " <billTo country=\"US\">\n"+ - " <name>Robert Smith</name>\n"+ - " <street>8 Oak Avenue</street>\n"+ - " <city>Mill Valley</city>\n"+ - " <state>PA</state>\n"+ - " <zip>95819</zip>\n"+ - " </billTo>\n"+ - " <po:comment>Hurry, my lawn is going wild!</po:comment>\n"+ - " <items>\n"+ - " <item partNum=\"872-AA\">\n"+ - " <productName>Lawnmower</productName>\n"+ - " <price>148.95</price>\n"+ - " <quantity>1</quantity>\n"+ - " <po:comment>Confirm this is electric</po:comment>\n"+ - " </item>\n"+ - " <item partNum=\"926-AA\">\n"+ - " <productName>Baby Monitor</productName>\n"+ - " <price>39.98</price>\n"+ - " <quantity>1</quantity>\n"+ - " <shipDate>1999-05-21</shipDate>\n"+ - " </item>\n"+ - " </items>\n"+ - " </po:purchaseOrder>\n"; - - public ReadPurchaseOrder(Integer commentaryLevel) { - super(commentaryLevel, SampleInfrastructure.SAMPLE_LEVEL_BASIC); - } - - public static void main(String[] args) { - ReadPurchaseOrder sample = new ReadPurchaseOrder(COMMENTARY_FOR_NOVICE); - sample.run(); - - } - - /* - * 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 int [] SIGNIFICANT_FUNCTION = { - SDOFacets.GET_PROPERTIES_OF_DATAOBJECT_BY_NAME - }; - - - - 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"); - - HelperContext scope = createScopeForTypes(); - - loadTypesFromXMLSchemaFile(scope, SampleInfrastructure.PO_XSD_RESOURCE); - - commentary( - "We load the purchase order document into an instance of XMLDocument\n\n"+ - "XMLDocument xmlDoc = getXMLDocumentFromString(scope, purchaseOrderDoc);\n"); - - XMLDocument xmlDoc = getXMLDocumentFromString(scope, purchaseOrderDoc); - - commentary( - "We then retrieve the root DataObject from the XMLDocument\n"+ - "then print out some of the details\n\n"+ - "DataObject purchaseOrder = xmlDoc.getRootObject();"); - - DataObject purchaseOrder = xmlDoc.getRootObject(); - - System.out.println("Order date: " + purchaseOrder.get("orderDate")); - System.out.println("Comment: " + purchaseOrder.get("comment")); - - DataObject shipTo = purchaseOrder.getDataObject("shipTo"); - System.out.println("Ship to name: " + shipTo.get("name")); - - DataObject billTo = purchaseOrder.getDataObject("billTo"); - System.out.println("Bill to name: " + billTo.get("name")); - System.out.println(); - - DataObject items = purchaseOrder.getDataObject("items"); - List itemList = items.getList("item"); - for (int i = 0; i < itemList.size(); i++) { - - DataObject item = (DataObject) itemList.get(i); - - System.out.println("Part num: " + item.get("partNum")); - System.out.println("Product name: " + item.get("productName")); - } - - } - - -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/package.html b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/package.html deleted file mode 100644 index d926bdbf5c..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/package.html +++ /dev/null @@ -1,31 +0,0 @@ -<html>
-<!--
- *
- * 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.
- * -->
-<head>
- <title>Basic SDO Samples</title>
-</head>
-<BODY>
-<h1>Simple Service Data Object (SDO) Sample Programs</h1>
-
-<h3>Running the Samples</h3> See <A HREF="../../../../../../index.html"
-target="_top">the main overview</A> for instructions on how to run these
-samples.
-</BODY>
-</HTML>
diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/AccessDataObjectUsingValidXPath.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/AccessDataObjectUsingValidXPath.java deleted file mode 100644 index 56bc68340f..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/AccessDataObjectUsingValidXPath.java +++ /dev/null @@ -1,129 +0,0 @@ -/** - * - * 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.intermediate; - -import java.util.List; - -import org.apache.tuscany.samples.sdo.SampleBase; -import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure; - -import commonj.sdo.DataObject; -import commonj.sdo.helper.HelperContext; - -/** - * Demonstrates accessing a created DataObject's properties using the SDO XPath like syntax. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ -public class AccessDataObjectUsingValidXPath extends SampleBase { - HelperContext scope; - - public AccessDataObjectUsingValidXPath(Integer userLevel) { - super(userLevel, SampleInfrastructure.SAMPLE_LEVEL_INTERMEDIATE); - } - - - /** - * Accesses and modifies properties of a purchase order DataObject using xPath( - * properties are defined in the xsd - * {@link org.apache.tuscany.samples.sdo.internal.SampleInfrastructure#PO_XSD_RESOURCE} and - * populated by xml - * {@link org.apache.tuscany.samples.sdo.internal.SampleInfrastructure#PO_XML_RESOURCE} ) - * - * @param args. - * No parameters required. - */ - public static void main(String[] args) { - AccessDataObjectUsingValidXPath sample = new AccessDataObjectUsingValidXPath(COMMENTARY_FOR_NOVICE); - sample.run(); - - } - - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] CORE_FUNCTION = { - SDOFacets.GET_SET_PROPERTIES_OF_DATAOBJECT_BY_XPATH - }; - - - public void runSample () throws Exception { - - commentary("Demonstrates accessing a DataObject's properties using the XPath style getter/setter methods"); - - - HelperContext scope = createScopeForTypes(); - - - commentary( - "First we create the type system using an XML Schema file and then create\n"+ - "A DataObject using an XML document for convenience"); - - loadTypesFromXMLSchemaFile(scope, SampleInfrastructure.PO_XSD_RESOURCE); - DataObject purchaseOrder = getDataObjectFromFile(scope, SampleInfrastructure.PO_XML_RESOURCE); - - - - commentary( - "Accessing data from the purchase order using the DataObjects XPath style methods\n"); - - - System.out.println("First we use the simplest kind of path\n" + - "purchaseOrder.getString(\"billTo/name\")\n" + - "The purchase is to be paid for by .... " + - purchaseOrder.getString("billTo/name")); - - - System.out.println("\nThen we use indexing by integer starting from 1\n" + - "purchaseOrder.getString(\"items/item[1]/productName\")\n" + - "The first item in the order is a ... " + - purchaseOrder.getString("items/item[1]/productName")); - - - System.out.println("\nThe alternative style of indexing uses a . notation and starts from 0\n"+ - "purchaseOrder.getFloat(\"items/item.0/price\")\n" + - "The price of this item is ... " + - purchaseOrder.getFloat("items/item.0/price")); - - - System.out.println("\nDataObjects can be looked up by supplying the value of one of the contained simple valued Properties\n"+ - "DataObject babyMonitorItem = purchaseOrder.getDataObject(\"items/item[productName=\\\"Baby Monitor\\\"]"); - - DataObject babyMonitorItem = purchaseOrder.getDataObject("items/item[productName=\"Baby Monitor\"]"); - System.out.println("The price of the Baby Monitor is .... " + - babyMonitorItem.getFloat("price")); - - - System.out.println("\nA parent DataObject can be accessed with the .. notation\n"+ - "List onlyIfBuyingGrassSeed = purchaseOrder.getList(\"items/item[productName=GrassSeed]/../item\");"); - List onlyIfBuyingGrassSeed = purchaseOrder.getList("items/item[productName=GrassSeed]/../item"); - if(onlyIfBuyingGrassSeed != null) { - System.out.println("The purchase order included grass seed and " + new Integer(onlyIfBuyingGrassSeed.size()-1) + " other items"); - } else { - System.out.println("The purchase order did not include GrassSeed"); - } - - - } - -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/AccessingDataObjectsViaPropertyIndex.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/AccessingDataObjectsViaPropertyIndex.java deleted file mode 100644 index 98a63b5654..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/AccessingDataObjectsViaPropertyIndex.java +++ /dev/null @@ -1,164 +0,0 @@ -/** - * - * 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.intermediate; - -import java.util.List; - -import org.apache.tuscany.samples.sdo.SampleBase; -import org.apache.tuscany.samples.sdo.advanced.PrintDataGraph; -import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure; - -import commonj.sdo.DataObject; -import commonj.sdo.helper.HelperContext; - -/** - * Demonstrates accessing the properties of a DataObject using integer property indices. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ - -public class AccessingDataObjectsViaPropertyIndex extends SampleBase { - - HelperContext scope; - PrintDataGraph printer; - - public AccessingDataObjectsViaPropertyIndex(Integer userLevel) { - /* - * Classifying this sample as intermediate, not because it is complex - * but because it's a scenario not to be encouraged for use by - * people new to SDO. - */ - super(userLevel, SAMPLE_LEVEL_INTERMEDIATE); - printer = new PrintDataGraph(SAMPLE_LEVEL_ADVANCED); - } - - - /** - * Predefine the property indexes. - */ - - private static final int COMPANY_DEPARTMENT = 0; - private static final int COMPANY_NAME = 1; - private static final int COMPANY_EMPLOYEE_OF_MONTH = 2; - - private static final int DEPARTMENT_EMPLOYEES = 0; - - private static final int EMPLOYEE_NAME = 0; - private static final int EMPLOYEE_SN = 1; - private static final int EMPLOYEE_MANAGER = 2; - - - /** - * Execute this method in order to run the sample. - * - * @param args - */ - public static void main(String[] args) { - AccessingDataObjectsViaPropertyIndex sample = - new AccessingDataObjectsViaPropertyIndex(COMMENTARY_FOR_NOVICE); - - sample.run(); - - } - - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] CORE_FUNCTION = { - SDOFacets.GET_SET_PROPERTIES_OF_DATAOBJECT_BY_INDEX - }; - - - public void runSample () throws Exception { - - - commentary( - "This sample demonstrates the use of integer index to get and set\n" + - "Property values of a DataObject. This approach is optimized for\n" + - "performance, but is fragile to changes to the Type system. It will be\n" + - "broken if someone alters the XML schema that is used to load the type system." + - "This kind of approach is well suited to a situation where the SDO code is being\n" + - "generated."); - - scope = createScopeForTypes(); - - loadTypesFromXMLSchemaFile(scope, SampleInfrastructure.COMPANY_XSD); - - DataObject company = getDataObjectFromFile(scope, SampleInfrastructure.COMPANY_DATAOBJECT_XML); - - commentary("We've loaded a data graph that looks like this ..."); - - printer.print(company); - System.out.println(printer.getBuf()); - printer.reset(); - - commentary("Here's how the data graph looks rendered in XML ..."); - System.out.println( - scope.getXMLHelper().save(company, SampleInfrastructure.COMPANY_NAMESPACE, "company")); - - commentary( - "This sample class has primitive int static constants defined for the Properties\n" + - "of the Types that the program is designed to work with, e.g.\n\n" + - "private static final int COMPANY_NAME = 2;\n\n" + - "The value of the integers is defined by the sequence the Properties\n" + - "appear in the List returned by dataObject.getType().getDeclaredProperties()\n" + - "For a type derived from an XML schema this will be the sequence they appeared in the\n" + - "schema document.\n" + - "We can use these integer values to get and set Properties on the company DataObject\n\n" + - "company.setString(COMPANY_NAME, \"MegaCorp\");\n" + - "List departments = company.getList(COMPANY_DEPARTMENT);\n" + - "List employees = department.getList(DEPARTMENT_EMPLOYEES);\n"); - - company.setString(COMPANY_NAME, "MegaCorp"); - - - - commentary("The sample continues, altering the data graph by using the getter\n" + - "and setter methods that take int arguments"); - - List departments = company.getList(COMPANY_DEPARTMENT); - DataObject department = (DataObject) departments.get(0); - List employees = department.getList(DEPARTMENT_EMPLOYEES); - DataObject employeeFromList = (DataObject) employees.get(2); - employeeFromList.detach(); - - DataObject newEmployee = department.createDataObject(DEPARTMENT_EMPLOYEES); - - newEmployee.set(EMPLOYEE_NAME, "Al Smith"); - newEmployee.set(EMPLOYEE_SN, "E0005"); - newEmployee.setBoolean(EMPLOYEE_MANAGER, true); - - company.set(COMPANY_EMPLOYEE_OF_MONTH, newEmployee.get(EMPLOYEE_SN)); - - commentary("After some more manipulation (take a look at the sample code to see the detail)\n" + - "we can examine the state of the modified graph"); - - printer.print(company); - System.out.println(printer.getBuf()); - printer.reset(); - - commentary("Or rendered in XML it now looks like this ..."); - System.out.println(scope.getXMLHelper().save(company, SampleInfrastructure.COMPANY_NAMESPACE, "company")); - - } -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/CreateCompanyTuscanyAPI.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/CreateCompanyTuscanyAPI.java deleted file mode 100644 index 097814d35f..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/CreateCompanyTuscanyAPI.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * - * 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.intermediate; - -import java.io.FileOutputStream; - -import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure; -import org.apache.tuscany.sdo.api.SDOUtil; - -import commonj.sdo.DataGraph; -import commonj.sdo.DataObject; -import commonj.sdo.helper.HelperContext; - -/** - * This sample is a variant of the CreateCompany sample where the graph of DataObjects - * is contained in an instance of DataGraph. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ -public class CreateCompanyTuscanyAPI extends org.apache.tuscany.samples.sdo.basic.CreateCompany { - - public CreateCompanyTuscanyAPI(Integer commentaryLevel) { - super(commentaryLevel, SAMPLE_LEVEL_INTERMEDIATE); - } - - /** - * XML file generated for the company DataGraph - */ - private String COMPANY_DATAGRAPH_GENERATED_XML = "companyDataGraphGenerated.xml"; - - - /** - * Main method. Execute this method in order to run sample - * @param args - * @throws Exception - */ - public static void main(String[] args) { - /* - * this sample is best suited so someone with an intermediate level - * of understanding of SDO. Change the experience level argument to get more - * or less commentary. - */ - CreateCompanyTuscanyAPI sample = new CreateCompanyTuscanyAPI(COMMENTARY_FOR_INTERMEDIATE); - sample.run(); - - } - - public void runSample () throws Exception { - - banner('*', - " SDO Sample Create Company in a DataGraph \n\n"+ - "This is a variant of the simple CreateCompany sample, but\n"+ - "demonstrates how to create a DataGraph in the absence of a Data Access Service (DAS)\n"+ - "This is not typical of how an SDO user would code, because a DAS is usually\n"+ - "responsible for creating a DataGraph instance. This is why we must use a Tuscany API\n"+ - "to create the dataGraph in the first place\n"+ - "If you don't have a need to use a DataGraph instance then you may want to skip this\n"+ - "sample, or leave it until you have explored the DataObject interface fully\n"); - - commentary(COMMENTARY_FOR_INTERMEDIATE, - "As we are dealing with a DataGraph, the SDO API has some gray areas at the moment\n"+ - "in that the DataGraph API hasn't yet been developed to deal with scopes\n"+ - "other than the default scope. So here is an occasion where we must use "+ - "the default singleton scope"); - HelperContext scope = useDefaultScopeForTypes(); - loadTypesFromXMLSchemaFile(scope, SampleInfrastructure.COMPANY_XSD); - - commentary (COMMENTARY_FOR_INTERMEDIATE, - "Here is the use of the Tuscany API for creating a DataGraph instance\n\n"+ - "DataGraph dataGraph = SDOUtil.createDataGraph();"); - - DataGraph dataGraph = SDOUtil.createDataGraph(); - - commentary(COMMENTARY_FOR_INTERMEDIATE, - "Now we create a root object of a selected type for the DataGraph wrapper to contain.\n"+ - "This is an example of a DataGraph interface that currently forces us to use the default scope.\n\n"+ - "company = dataGraph.createRootObject(SampleInfrastructure.COMPANY_NAMESPACE, \"CompanyType\");"); - - DataObject company = dataGraph.createRootObject(SampleInfrastructure.COMPANY_NAMESPACE, "CompanyType"); - - populateGraph(scope, company); - - commentary(COMMENTARY_FOR_INTERMEDIATE, - "Since the SDO API doesn't currently have a method for serializing the DataGraph instance\n"+ - "we again use a Tuscany specific API\n\n"+ - "SDOUtil.saveDataGraph(dataGraph, fos, null);"); - - FileOutputStream fos = new FileOutputStream(COMPANY_DATAGRAPH_GENERATED_XML); - SDOUtil.saveDataGraph(dataGraph, fos, null); - - SDOUtil.saveDataGraph(dataGraph, System.out, null); - } - -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/CreateDataObjectFromXmlString.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/CreateDataObjectFromXmlString.java deleted file mode 100644 index 1ec920146d..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/CreateDataObjectFromXmlString.java +++ /dev/null @@ -1,133 +0,0 @@ -/** - * - * 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.intermediate; - -import java.util.List; - -import org.apache.tuscany.samples.sdo.SampleBase; - -import commonj.sdo.DataObject; -import commonj.sdo.Property; -import commonj.sdo.Sequence; -import commonj.sdo.helper.HelperContext; - -/** - * Demonstrates creating a DataObject from a String of XML without an explicit model. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ -public class CreateDataObjectFromXmlString extends SampleBase { - HelperContext scope; - - - public CreateDataObjectFromXmlString(Integer userLevel) { - super(userLevel, SAMPLE_LEVEL_INTERMEDIATE); - } - - - /** - * String representing a PurchaseOrder in XML format - */ - public static final String XML_STRING = "<purchaseOrder orderDate='1999-10-20'>" + " <shipTo country='US'>" + " <name>Alice Smith</name>" - + " <street>123 Maple Street</street>" + " <city>Mill Valley</city>" + " <state>PA</state>" + " <zip>90952</zip>" + "</shipTo>" - + "</purchaseOrder>"; - - - public static void main(String[] args) { - - CreateDataObjectFromXmlString sample = new CreateDataObjectFromXmlString(COMMENTARY_FOR_NOVICE); - sample.run(); - - } - - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] CORE_FUNCTION = { - SDOFacets.USING_BUILT_IN_TYPES, - SDOFacets.LOADING_DATA_FROM_XML - }; - - public void runSample () throws Exception { - - - commentary("Demonstrates creating a DataObject from a String of XML,\n" + - "based upon section titled 'Creating DataObjects from XML documents'\n"+ - "This quite unassuming sample demonstrates the maxim of 'less is more'\n"+ - "in that it might look like other samples where the XML document was loaded\n"+ - "from a file or string, but note that we don't define any Types before loading\n"+ - "the document. Built in generic types are used to model the data graph"); - - - scope = createScopeForTypes(); - - commentary("don't define any types! Just go ahead and load from the String\n\n"+ - "DataObject purchaseOrder = scope.getXMLHelper().load(XML_STRING).getRootObject();"); - - DataObject purchaseOrder = scope.getXMLHelper().load(XML_STRING).getRootObject(); - - commentary("Note that the Type of the newly created DataObject has no Properties defined for it\n"+ - "but the type is said to be \"Open\", which means that an instance of the Type may make use of other Properties\n"+ - "defined elsewhere. The XMLHelper's load operation creates Properties on demand for the DataObject instance to use as it loads\n"+ - "the document\n\n" + - "purchaseOrder.getType().isOpen returns true\n" + - "purchaseOrder.getType().getProperty(\"shipTo\") returns null and\n" + - "purchaseOrder.getInstanceProperty(\"shipTo\") returns a Property"); - - System.out.println("DataObject's type is open?: " + purchaseOrder.getType().isOpen()); - System.out.println("Data Object's type has a property shipTo?: " + (purchaseOrder.getType().getProperty("shipTo") != null)); - System.out.println("Data Object instance has a property shipTo?: " + (purchaseOrder.getInstanceProperty("shipTo") != null)); - - commentary( - "Without a Type definition accessing a DataObject is slightly\n"+ - "different, since without a Type definition SDO does not know\n"+ - "the intended multiplicity of properties. So every Property is assumed to\n"+ - "be multi-valued, and must be accessed via a list\n\n"+ - "List shipToList = purchaseOrder.getList(\"shipTo\");\n"+ - "DataObject shipTo = (DataObject) shipToList.get(0);"); - - List shipToList = purchaseOrder.getList("shipTo"); - DataObject shipTo = (DataObject) shipToList.get(0); - - - - /* - * With no model around, this next operation is currently quite cumbersome. - * In future specifications accessing - * the name element will be simplier and the user could simply execute: - * List nameList = shipTo.getList("name"); String actualName = (String) - * nameList.get(0); - * - * Or if name is an attribute ("<shipTo country='US' name='Alice - * Smith'>") simply: String actualName = shipTo.getString("name"); - * - * There are currently more elegant means to perform this task using the xPath support - */ - List nameList = shipTo.getList("name"); - DataObject name = (DataObject) nameList.get(0); - // access the contents of the name DataObject - Sequence s = name.getSequence(); - String actualName = (String) s.getValue(0); - System.out.println("Name being shipped to: " + actualName); - - } -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/DynamicCustomerTypeSample.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/DynamicCustomerTypeSample.java deleted file mode 100644 index abe3434fab..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/DynamicCustomerTypeSample.java +++ /dev/null @@ -1,193 +0,0 @@ -/** - * - * 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.intermediate; - -import java.util.List; - -import org.apache.tuscany.samples.sdo.SampleBase; - -import commonj.sdo.DataObject; -import commonj.sdo.Type; -import commonj.sdo.helper.DataFactory; -import commonj.sdo.helper.HelperContext; -import commonj.sdo.helper.TypeHelper; - -/** - * Demonstrates creating and using Types dynamically. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ -public class DynamicCustomerTypeSample extends SampleBase { - HelperContext scope; - - public DynamicCustomerTypeSample(Integer userLevel) { - super(userLevel, SAMPLE_LEVEL_INTERMEDIATE); - } - - - /** - * XSD file used to define the model and Types for Customer Dataobject - */ - public static final String CUSTOMER_MODEL = "customer.xsd"; - - /** - * Default file name to use when generated customer XSD files. - * - * @see org.apache.tuscany.samples.sdo.specCodeSnippets.CreateXmlAndXsdFromDataObject - */ - public static final String CUSTOMER_MODEL_GENERATED = "generatedCustomer.xsd"; - - /** - * Fake namespace used for Customer - */ - public static final String CUSTOMER_NAMESPACE = "http://www.example.com/customer"; - - /** - * XML file used to populate Customer DataObjects - */ - public static final String CUSTOMER_XML = "customer.xml"; - - /** - * Default file name to use when generated customer XML files. - * - * @see org.apache.tuscany.samples.sdo.specCodeSnippets.CreateXmlAndXsdFromDataObject - */ - public static final String CUSTOMER_XML_GENERATED = "generatedCustomer.xml"; - - /** - * Drives sample methods - * - * @param args - * no arguments required - */ - public static void main(String[] args) { - - DynamicCustomerTypeSample sample = - new DynamicCustomerTypeSample(COMMENTARY_FOR_INTERMEDIATE); - sample.run(); - - } - - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] CORE_FUNCTION = { - SDOFacets.CREATE_TYPES_USING_THE_SDO_API - }; - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] SIGNIFICANT_FUNCTION = { - SDOFacets.SET_PROPERTIES_OF_DATAOBJECT_BY_NAME, - SDOFacets.USING_BUILT_IN_TYPES, - SDOFacets.SAVING_DATA_TO_XML - }; - - public void runSample () throws Exception { - - commentary(COMMENTARY_ALWAYS, - "Demonstrates the use of the SDO API to build types dynamically\n"+ - "by building a data graph representing the type system and\n"+ - "submitting that graph to TypeHelper.define()"); - - - scope = createScopeForTypes(); - - - commentary("A TypeHelper is used for both looking up types, and later creating them\n\n"+ - "TypeHelper typeHelper = scope.getTypeHelper();"); - - TypeHelper typeHelper = scope.getTypeHelper(); - - commentary("We can look up existing types to use in the creation of Properties\n\n"+ - "Type intType = types.getType(\"commonj.sdo\", \"Int\");\n"+ - "Type stringType = types.getType(\"commonj.sdo\", \"String\");"); - - Type intType = typeHelper.getType("commonj.sdo", "Int"); - Type stringType = typeHelper.getType("commonj.sdo", "String"); - - commentary("To begin modeling the type system we create a DataObject with\n"+ - "Type \"commonj.sdo#Type\" and set the URI and name for that type\n\n"+ - - "DataObject customerType = scope.getDataFactory().create(\"commonj.sdo\", \"Type\");\n"+ - "customerType.set(\"uri\", \"http://example.com/customer\");\n"+ - "customerType.set(\"name\", \"Customer\");"); - - DataObject customerType = scope.getDataFactory().create("commonj.sdo", "Type"); - customerType.set("uri", "http://example.com/customer"); - customerType.set("name", "Customer"); - - commentary("Now we can create a model for the Properties for the Type\n"+ - "and set the name and Types of those Properties\n\n"+ - "DataObject custNumProperty = customerType.createDataObject(\"property\");\n"+ - "custNumProperty.set(\"name\", \"custNum\");\n"+ - "custNumProperty.set(\"type\", intType);" - ); - - DataObject custNumProperty = customerType.createDataObject("property"); - custNumProperty.set("name", "custNum"); - custNumProperty.set("type", intType); - - commentary("We continue in this manner until all the Types and their Properties are modeled"); - DataObject lastNameProperty = customerType.createDataObject("property"); - lastNameProperty.set("name", "lastName"); - lastNameProperty.set("type", stringType); - - DataObject firstNameProperty = customerType.createDataObject("property"); - firstNameProperty.set("name", "firstName"); - firstNameProperty.set("type", stringType); - - commentary("Now that our type is fully modeled we submit the model to the TypeHelper\n"+ - "The new Type instance is returned to us, but is also available for lookup within\n"+ - "the scope associated with the TypeHelper\n\n"+ - "Type t = typeHelper.define(customerType);"); - Type t = typeHelper.define(customerType); - - commentary("Here we see the newly created Type being accessed via the TypeHelper\n"+ - "along with a printout of the Type's Properties\n\n"+ - "Type testType = scope.getTypeHelper().getType(\"http://example.com/customer\", \"Customer\");"); - - Type testType = scope.getTypeHelper().getType("http://example.com/customer", "Customer"); - List props = testType.getProperties(); - for (int i = 0; i < props.size(); i++) { - System.out.println(props.get(i)); - } - - commentary("Now we can create an instance of the type using the DataFactory associated with the type scope\n\n"+ - "DataFactory factory = scope.getDataFactory();\n"+ - "DataObject customer1 = factory.create(\"http://example.com/customer\", \"Customer\");"); - - DataFactory factory = scope.getDataFactory(); - DataObject customer1 = factory.create("http://example.com/customer", "Customer"); - customer1.setInt("custNum", 1); - customer1.set("firstName", "John"); - customer1.set("lastName", "Adams"); - - commentary("Here's an XML String representing a DataObject we have created with the new type"); - String xmlDocString = scope.getXMLHelper().save(customer1, CUSTOMER_NAMESPACE, "customer"); - System.out.println(xmlDocString); - - - } - -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/SerializingDeserializingADataObject.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/SerializingDeserializingADataObject.java deleted file mode 100644 index eaecf436bf..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/SerializingDeserializingADataObject.java +++ /dev/null @@ -1,137 +0,0 @@ -/** - * - * 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.intermediate; - -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; - -import org.apache.tuscany.samples.sdo.SampleBase; -import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure; - -import commonj.sdo.DataObject; -import commonj.sdo.helper.HelperContext; - -/** - * Demonstrates serializing and deserializing a DataObject to disk - * using java serialization. - * <p> - * <h3>Running this Sample</h3> See <A HREF="../../../../../../index.html" - * target="_top">the main overview</A> for instructions on how to run this - * sample. - */ -public class SerializingDeserializingADataObject extends SampleBase { - HelperContext scope; - - public SerializingDeserializingADataObject(Integer userLevel) { - super(userLevel, SAMPLE_LEVEL_INTERMEDIATE); - } - - - public static void main(String[] args) { - - SerializingDeserializingADataObject sample = - new SerializingDeserializingADataObject(COMMENTARY_FOR_INTERMEDIATE); - sample.run(); - - } - - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] CORE_FUNCTION = { - SDOFacets.JAVA_SERIALIZATION_OF_DATA_GRAPH - }; - /* - * metadata for the sample documenting the areas of SDO that are explored - */ - public static int [] SIGNIFICANT_FUNCTION = { - SDOFacets.TESTING_FOR_GRAPH_EQUALITY - }; - - public void runSample () throws Exception { - - commentary( - "Demonstrates serializing and deserializing a DataObject\n" + - "to disk using Java serialization."); - - scope = useDefaultScopeForTypes(); - loadTypesFromXMLSchemaFile(scope, SampleInfrastructure.COMPANY_XSD); - DataObject company = getDataObjectFromFile(scope, SampleInfrastructure.COMPANY_DATAOBJECT_XML); - - - commentary("We've loaded a data graph 'company' from a file\n" + - "using XML schema for the model and XML for the graph in the usual manner\n"); - String fileName = "temporarySerializedDataObject.xml"; - commentary("We've loaded a data graph 'company' from a file\n" + - "using XML schema for the model and XML for the graph in the usual manner\n" + - "Now we are going to serialize it to, and read it from a temporary file: "+fileName); - - commentary( - "The following code, which doesn't use any SDO APIs, demonstrates the\n" + - "underlying SDO function of performing Java serialization on SDO objects\n\n" + - "FileOutputStream fos = new FileOutputStream(fileName);\n" + - "ObjectOutputStream out = new ObjectOutputStream(fos);\n" + - "out.writeObject(company);\n" + - "out.close();"); - - FileOutputStream fos = new FileOutputStream(fileName); - ObjectOutputStream out = new ObjectOutputStream(fos); - out.writeObject(company); - out.close(); - - // read in DataObject - commentary("Having written the data graph to the temporary file we\n" + - "can read it back\n\n" + - "FileInputStream fis = new FileInputStream(fileName);\n" + - "ObjectInputStream input = new ObjectInputStream(fis);\n" + - "DataObject newDataObject = (DataObject) input.readObject();\n" + - "input.close();"); - - FileInputStream fis = new FileInputStream(fileName); - ObjectInputStream input = new ObjectInputStream(fis); - DataObject newDataObject = (DataObject) input.readObject(); - input.close(); - - /** - * Compare data graphs - */ - - commentary("We can use the SDO EqualityHelper to check that we have got\n" + - "back an equivalent graph to the one we had originally\n\n" + - "boolean equal = scope.getEqualityHelper().equal(company, newDataObject);"); - - boolean equal = scope.getEqualityHelper().equal(company, newDataObject); - System.out.println("DataObjects are equal: " + equal); - - //print out xml representation - System.out.println(); - System.out.println("Original company DataObject:"); - System.out.println(scope.getXMLHelper().save(company, SampleInfrastructure.COMPANY_NAMESPACE, "company")); - - System.out.println(); - System.out.println("Deserialized company DataObject:"); - System.out.println(scope.getXMLHelper().save(newDataObject, SampleInfrastructure.COMPANY_NAMESPACE, "company")); - - - } -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/package.html b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/package.html deleted file mode 100644 index 59ea1c39e6..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/package.html +++ /dev/null @@ -1,30 +0,0 @@ -<html>
-<!--
- *
- * 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.
- * -->
-<head>
- <title>Intermediate SDO Samples</title>
-</head>
-<BODY>
-<h1>Intermediate Service Data Object (SDO) Sample Programs</h1>
-<h3>Running the Samples</h3> See <A HREF="../../../../../../index.html"
-target="_top">the main overview</A> for instructions on how to run these
-samples.
-</BODY>
-</HTML>
diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/internal/DocumentSamples.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/internal/DocumentSamples.java deleted file mode 100644 index af20cb663a..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/internal/DocumentSamples.java +++ /dev/null @@ -1,218 +0,0 @@ -/** - * - * 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.internal; - -import java.io.IOException; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; - -import org.apache.tuscany.samples.sdo.internal.SampleInfrastructure.SDOFacets; - - -/** - * Class to generate html documentation for the SDO Samples. - * The program introspects the sample programs listed in the - * {@link SampleInfrastructure#sampleClasses sample classes} - * static constant, for the values of the static CORE_FUNCTION - * and SIGNIFICANT_FUNCTION variables. - * <P> - * It builds indexes from - * sample to function and from function to sample and creates - * html output that displays these indexes. - */ -public class DocumentSamples { - - private Map classToCoreFunction = new HashMap(); - private Map coreFunctionToClass = new HashMap(); - private Map classToSignificantFunction = new HashMap(); - private Map significantFunctionToClass = new HashMap(); - - public static void main(String[] args) throws SecurityException, - NoSuchMethodException, IllegalArgumentException, InstantiationException, - IllegalAccessException, InvocationTargetException, IOException { - - DocumentSamples ds = new DocumentSamples(); - ds.run(); - - } - - private static String HTML_HEADER = - "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n" + - "<html>\n" + - "<!-- Note: This file is GENERATED from the samples using the\n" + - "Document Samples utility. Hand edits will be lost when regenerated! --> \n"+ - "<!-- \n"+ - "* \n"+ - "* Licensed to the Apache Software Foundation (ASF) under one \n"+ - "* or more contributor license agreements. See the NOTICE file\n"+ - "* distributed with this work for additional information \n"+ - "* regarding copyright ownership. The ASF licenses this file \n"+ - "* to you under the Apache License, Version 2.0 (the \n"+ - "* \"License\"); you may not use this file except in compliance \n"+ - "* with the License. You may obtain a copy of the License at \n"+ - "* \n"+ - "* http://www.apache.org/licenses/LICENSE-2.0 \n"+ - "* \n"+ - "* Unless required by applicable law or agreed to in writing, \n"+ - "* software distributed under the License is distributed on an \n"+ - "* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY \n"+ - "* KIND, either express or implied. See the License for the \n"+ - "* specific language governing permissions and limitations \n"+ - "* under the License. \n"+ - "--> \n"+ - "<head><title>SDO Samples</title></head><body>\n" + - " <h1>SDO Samples</h1>\n" + - "<P>\n" + - "The samples provided in the Tuscany SDO distribution cover many areas of\n" + - "the SDO API. Here we provide two indexes into the samples. The first lists\n" + - "each sample in sequence and details the central theme(s) of the sample.\n" + - "It also mentions if the sample significantly demonstrates other areas in passing.\n" + - "The second index lists all the themes that are covered by these samples, and\n" + - "indicates which of the samples has that subject area as a central theme or as\n" + - "demonstrates the subject area significant as an incidental part of the sample."; - - private static String CLASSES_HEADING = - "<H2>Index by Sample Program Name</H2>\n"; - - private static String FUNCTION_HEADING = - "<H2>Index by function</H2>\n"; - - private static String HTML_FOOTER = - "</body>\n</html>"; - - - private void run() throws IllegalAccessException { - /* - * gather the data - */ - for (int i = 0; i < SampleInfrastructure.sampleClasses.length; i++) { - Class c = SampleInfrastructure.sampleClasses[i]; - classToCoreFunction.put(c, new HashSet()); - try { - Field coreFunction = c.getField("CORE_FUNCTION"); - recordFunction(c, coreFunction, coreFunctionToClass, classToCoreFunction); - } catch (NoSuchFieldException e) { - // no problem - } - try { - Field sigFunction = c.getField("SIGNIFICANT_FUNCTION"); - recordFunction(c, sigFunction, significantFunctionToClass, classToSignificantFunction); - } catch (NoSuchFieldException e) { - // no problem - } - } - - /* - * create the documentation - */ - StringBuffer doc = new StringBuffer(); - doc.append(HTML_HEADER); - - doc.append(CLASSES_HEADING); - Class [] classes = SampleInfrastructure.sampleClasses; - for(int i=0; i < classes.length;i++) { - doc.append("<h3>Sample Program " + getSimpleName(classes[i]) + "</h3>\n"); - doc.append("<b>Core function:</b><br/>\n"); - int [] functions = (int[])classToCoreFunction.get(classes[i]); - for(int j=0;j<functions.length;j++) { - doc.append("<a href=\"#facet") - .append(functions[j]) - .append("\">") - .append(SDOFacets.subject_areas[functions[j]]) - .append("</a><br/>\n"); } - doc.append("<br/>"); - if(classToSignificantFunction.get(classes[i])!= null) { - doc.append("<b>Also demonstrates:</b><br/>\n"); - functions = (int[])classToSignificantFunction.get(classes[i]); - for(int j=0;j<functions.length;j++) { - doc.append("<a href=\"#facet") - .append(functions[j]) - .append("\">") - .append(SDOFacets.subject_areas[functions[j]]) - .append("</a><br/>\n"); - } - } - } - - doc.append(FUNCTION_HEADING); - - String [] facets = SDOFacets.subject_areas; - for(int f = 0; f<facets.length; f++) { - Integer fobj = new Integer(f); - doc.append("<a name=\"facet") - .append(f) - .append("\"/>\n<h3>") - .append(SDOFacets.subject_areas[f]) - .append("</h3>\n"); - if(coreFunctionToClass.keySet().contains(fobj)) { - doc.append("<b>Samples which demonstrate this as their core function</b><br/>\n"); - Set classesWithFunction = (Set)coreFunctionToClass.get(fobj); - for(Iterator cwf = classesWithFunction.iterator(); cwf.hasNext();) { - Class c = (Class)cwf.next(); - doc.append(getSimpleName(c)).append("<br/>\n"); - } - } - if(significantFunctionToClass.keySet().contains(fobj)) { - doc.append("<b>Samples which demonstrate this in addition to their core function</b><br/>\n"); - Set classesWithFunction = (Set)significantFunctionToClass.get(fobj); - for(Iterator cwf = classesWithFunction.iterator(); cwf.hasNext();) { - Class c = (Class)cwf.next(); - doc.append(getSimpleName(c)).append("<br/>\n"); - } - } - - } - - doc.append(HTML_FOOTER); - System.out.println(doc); - } - - private int[] recordFunction(Class c, Field functionIndices, Map ftoc, Map ctof) - throws IllegalAccessException { - int[] functions = (int[]) functionIndices.get(c); - for (int j = 0; j < functions.length; j++) { - addClassesToFunction(ftoc, functions[j], c); - } - ctof.put(c, functions); - return functions; - } - - private void addClassesToFunction(Map functionToClass, int i, Class c) { - Integer iobj = new Integer(i); - if (!functionToClass.containsKey(iobj)) { - functionToClass.put(iobj, new HashSet()); - } - ((Set) (functionToClass.get(iobj))).add(c); - } - - private String getSimpleName(Class c) { - String result = c.getName(); - int lastDot = result.lastIndexOf('.'); - if(lastDot != -1) { - result = result.substring(lastDot+1); - } - return result; - } -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/internal/SampleInfrastructure.java b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/internal/SampleInfrastructure.java deleted file mode 100644 index aa65cbad6d..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/internal/SampleInfrastructure.java +++ /dev/null @@ -1,330 +0,0 @@ -/** - * - * 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.internal; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.util.HashSet; -import java.util.Set; - -import org.apache.tuscany.samples.sdo.advanced.MedicalScenario; -import org.apache.tuscany.samples.sdo.advanced.MedicalScenarioWithChangeMonitoring; -import org.apache.tuscany.samples.sdo.advanced.ObtainingDataGraphFromXml; -import org.apache.tuscany.samples.sdo.advanced.PrintDataGraph; -import org.apache.tuscany.samples.sdo.basic.AccessDataObjectPropertiesByName; -import org.apache.tuscany.samples.sdo.basic.AccessingTheContentsOfASequence; -import org.apache.tuscany.samples.sdo.basic.CreateCompany; -import org.apache.tuscany.samples.sdo.basic.CreatePurchaseOrder; -import org.apache.tuscany.samples.sdo.basic.ReadPurchaseOrder; -import org.apache.tuscany.samples.sdo.intermediate.AccessDataObjectUsingValidXPath; -import org.apache.tuscany.samples.sdo.intermediate.AccessingDataObjectsViaPropertyIndex; -import org.apache.tuscany.samples.sdo.intermediate.CreateCompanyTuscanyAPI; -import org.apache.tuscany.samples.sdo.intermediate.CreateDataObjectFromXmlString; -import org.apache.tuscany.samples.sdo.intermediate.DynamicCustomerTypeSample; -import org.apache.tuscany.samples.sdo.intermediate.SerializingDeserializingADataObject; - -/** - * One of a pair of base classes for samples. This one contains all the - * infrastructure code that a person wanting to learn SDO would not want to look - * at. - */ -public abstract class SampleInfrastructure { - - protected int sampleComplexityLevel = SAMPLE_LEVEL_BASIC.intValue(); - protected int commentaryLevel = COMMENTARY_FOR_NOVICE.intValue(); - - /** - * Here's the list of sample programs - */ - public static final Class[] sampleClasses = { - CreateCompany.class, - ReadPurchaseOrder.class, - CreatePurchaseOrder.class, - AccessDataObjectPropertiesByName.class, - AccessingTheContentsOfASequence.class, - - AccessDataObjectUsingValidXPath.class, - DynamicCustomerTypeSample.class, - CreateCompanyTuscanyAPI.class, - CreateDataObjectFromXmlString.class, - SerializingDeserializingADataObject.class, - AccessingDataObjectsViaPropertyIndex.class, - - ObtainingDataGraphFromXml.class, - PrintDataGraph.class, - MedicalScenario.class, - MedicalScenarioWithChangeMonitoring.class - - }; - - public static class SDOFacets { - public static final int GET_PROPERTIES_OF_DATAOBJECT_BY_NAME = 1; - public static final int SET_PROPERTIES_OF_DATAOBJECT_BY_NAME = 2; - public static final int CREATE_DATAOBJECTS_BY_NAME = 3; - public static final int GET_SET_PROPERTIES_OF_DATAOBJECT_BY_INDEX = 4; - public static final int GET_SET_PROPERTIES_BY_INSTANCE_PROPERTIES = 5; - public static final int GET_SET_PROPERTIES_OF_DATAOBJECT_BY_XPATH = 6; - public static final int ISMANY_PROPERTIES = 7; - public static final int CONTAINMENT = 8; - public static final int CREATE_TYPES_USING_THE_SDO_API = 9; - public static final int CREATE_TYPES_USING_XML_SCHEMA = 10; - public static final int CREATE_TYPES_USING_THE_TUSCANY_API = 11; - public static final int USING_BUILT_IN_TYPES = 12; - public static final int ACCESSING_VALUES_IN_A_SEQUENCE = 13; - public static final int GENERIC_DATA_GRAPH_TRAVERSAL = 14; - public static final int LOADING_DATA_FROM_XML = 15; - public static final int SAVING_DATA_TO_XML = 16; - public static final int CHANGE_MONITORING_USING_A_DATAGRAPH = 17; - public static final int CHANGE_MONITORING_USING_A_CHANGESUMMARY_PROPERTY_ON_A_DATAOBJECT = 18; - public static final int WRAPPING_DATA_GRAPH_IN_A_DATAGRAPH_INSTANCE = 19; - public static final int OPEN_CONTENT = 20; - public static final int NON_CONTAINMENT = 21; - public static final int CREATE_XML_SCHEMA_FROM_TYPES = 22; - public static final int JAVA_SERIALIZATION_OF_DATA_GRAPH = 23; - public static final int TESTING_FOR_GRAPH_EQUALITY = 24; - - public static final String [] subject_areas = { - "", - "Get Properties of DataObject by name", - "Set Properties of DataObject by name", - "Create DataObjects by name", - "Get/Set Properties of DataObject by index", - "Get/Set Properties by Instance Properties", - "Get/Set Properties of DataObject by Xpath", - "isMany Properties","Containment", - "Create Types using the SDO API", - "Create Types using XML Schema", - "Create Types using the Tuscany API", - "Using Built-in Types", - "Accessing values in a Sequence", - "Generic data graph traversal", - "Loading data from XML", - "Saving data to XML", - "Change Monitoring using a DataGraph", - "Change Monitoring using a ChangeSummary Property on a DataObject", - "Wrapping data graph in a DataGraph instance", - "Open Content","Non-Containment", - "Create XML Schema from Types", - "Java Serialization of data graph", - "Testing for Graph Equality" - }; - } - - - /* - * keep a record of what's been said, so that if alternative terse text is - * offered, the verbose text need not be repeated for repeat actions. - */ - private static Set commentaryHistory = new HashSet(); - - public SampleInfrastructure(Integer commentaryLevel) { - this.commentaryLevel = commentaryLevel.intValue(); - } - - public SampleInfrastructure(Integer commentaryLevel, Integer sampLevel) { - this.commentaryLevel = commentaryLevel.intValue(); - this.sampleComplexityLevel = sampLevel.intValue(); - } - - private static String hrule = "********************************************"; - - /* - * Constants which allow the sample program infrastructure to understand the - * complexity of a sample program. - */ - protected static final Integer SAMPLE_LEVEL_BASIC = new Integer(0); - protected static final Integer SAMPLE_LEVEL_INTERMEDIATE = new Integer(1); - protected static final Integer SAMPLE_LEVEL_ADVANCED = new Integer(2); - - /* - * Constants which can be used to reduce the amount of information output by - * an executing sample program. - */ - protected static final Integer COMMENTARY_FOR_NOVICE = new Integer(0); - protected static final Integer COMMENTARY_FOR_INTERMEDIATE = new Integer(1); - protected static final Integer COMMENTARY_FOR_ADVANCED = new Integer(2); - protected static final Integer COMMENTARY_ALWAYS = new Integer(3); - - protected static final String[] userLevels = { "novice", "intermediate", - "advanced" }; - - /* - * Various constants that reference resources etc shared between the samples - */ - public static final String COMPANY_DATAOBJECT_XML = "companyGenerated.xml"; - public static final String COMPANY_DATAGRAPH_XML = "companyDataGraphGenerated.xml"; - public static final String COMPANY_XSD = "company.xsd"; - public static final String COMPANY_NAMESPACE = "company.xsd"; - public static final String PO_NAMESPACE = "http://www.example.com/PO"; - public static final String PO_XML_GENERATED = "temporaryPoGenerated.xml"; - public static final String PO_XML_RESOURCE = "po.xml"; - public static final String PO_XSD_RESOURCE = "po.xsd"; - - - public void banner(char borderChar, String text) { - if (text == null || text.length() == 0) { - System.out.println(hrule); - return; - } - String[] lines = text.split("\n"); - int maxlinelen = 0; - - for (int i = 0; i < lines.length; i++) { - maxlinelen = lines[i].length() > maxlinelen ? lines[i].length() - : maxlinelen; - } - - StringBuffer buf = new StringBuffer(); - for (int p = 0; p < maxlinelen + 4; p++) { - buf.append(borderChar); - } - buf.append("\n"); - for (int l = 0; l < lines.length; l++) { - buf.append(borderChar).append(" "); - buf.append(lines[l]); - for (int rem = lines[l].length() + 2; rem < maxlinelen + 3; rem++) - buf.append(" "); - buf.append(borderChar).append("\n"); - } - for (int p = 0; p < maxlinelen + 4; p++) { - buf.append(borderChar); - } - buf.append("\n"); - System.out.println(buf.toString()); - } - - public void banner(String text) { - banner('-', text); - } - - protected void commentary(String text, String repeatText) { - commentary(new Integer(sampleComplexityLevel), text, repeatText); - - } - - protected void commentary(Integer commentLevel, String text, String repeatText) { - - if (commentLevel.intValue() < commentaryLevel) - return; - - if (repeatText != null) { - boolean alreadySeen = commentaryHistory.contains(text); - if (alreadySeen) { - commentary(commentLevel, repeatText); - } else { - commentary(commentLevel, text); - commentaryHistory.add(text); - } - } else { - commentary(commentLevel, text); - } - - } - - protected void commentary(Integer commentLevel, String text) { - if (commentLevel.intValue() >= commentaryLevel) { - banner(text); - } - } - - /* - * convenience method to allow commentary level to default to that of the - * sample's complexity - */ - protected void commentary(String text) { - commentary(new Integer(getSampleComplexityLevel()), text); - } - - public void somethingUnexpectedHasHappened(Exception e) { - banner( - '!', - "Something unexpected has gone wrong with the execution of this sample program\n" - + "Please take a look at the exception and see if its something wrong with your environment\n" - + "If you can't figure it out please send a note to the tuscany-user@ws.apache.org mailing list\n" - + "including the text of the exception and any other useful information, thanks"); - - e.printStackTrace(); - } - - /** - * Utility method to obtain information from the user about whether or not - * they would like to use a DataGraph or simply use a DataObject - * - * @return whether or not a DataGraph should be used - * @throws Exception - */ - protected boolean yesOrNoFromUser(String question) throws Exception { - - System.out.print(question + " {y,n} :"); - BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); - String answer = in.readLine(); - while ((!answer.equalsIgnoreCase("n")) && (!answer.equalsIgnoreCase("y"))) { - - System.out.println(); - System.out.print("Sorry, please enter 'y' or 'n':"); - answer = in.readLine(); - } - System.out.println(); - - if (answer.equalsIgnoreCase("y")) { - return true; - } else { - return false; - } - } - - public void run() { - - commentary( - COMMENTARY_FOR_INTERMEDIATE, - "Running with commentary level for a " - + userLevels[commentaryLevel] - + " user\n" - + "Edit the sample program's constructor argument to one from\n" - + "COMMENTARY_FOR_NOVICE\nCOMMENTARY_FOR_INTERMEDIATE or\nCOMMENTARY_FOR_ADVANCED\n" - + "in order to alter the level of commentary you are seeing", ""); - - commentary(COMMENTARY_ALWAYS, " Tuscany SDO Java Sample " - + this.getClass().getName() + " \n" - + " This sample is aimed at a " + userLevels[sampleComplexityLevel] - + " user"); - - try { - runSample(); - } catch (Exception e) { - somethingUnexpectedHasHappened(e); - } finally { - commentary(COMMENTARY_ALWAYS, " End of sample " - + this.getClass().getName() + " "); - } - } - - public abstract void runSample() throws Exception; - - public int getSampleComplexityLevel() { - return sampleComplexityLevel; - } - - public void setSampleComplexityLevel(Integer sampleComplexityLevel) { - this.sampleComplexityLevel = sampleComplexityLevel.intValue(); - } - -} diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/overview.html b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/overview.html deleted file mode 100644 index b4fc183800..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/overview.html +++ /dev/null @@ -1,127 +0,0 @@ -<html>
-<!--
- *
- * 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.
- * -->
-<head>
- <title>SDO Sample Overview</title>
-</head>
-<BODY>
-<h1>Tuscany Service Data Object (SDO) Sample Programs</h1> <h2>Overview</h2>
-<a href="http://incubator.apache.org/tuscany">Apache Tuscany</a> SDO samples
-are provided here to help users learn SDO.
-The <a href="sampleProgramContents.html">index by SDO
-subject areas</a> lists the different samples available
-to you. These samples provide a starting point for learning SDO and can be
-extended and enhanced to experiment with other available SDO features.
-Please help us enhance these samples by sending your feedback to Tuscany
-mailing list or join us and <a href="http://incubator.apache.org/tuscany/getting-involved.html">contribute to this
-project</a>.
-</P>
-<P>
-These samples are coded to the SDO 2.1 API defined <a href="http://osoa.org/download/attachments/36/Java-SDO-Spec-v2.1.0-FINAL.pdf">
-here</a>
-</P>
-<P>
-These samples provide a place to begin learning and experimenting with the SDO
-API and programming model. Developers are encouraged to extend and experiment
-with the current set of samples. If a sample is unclear, is missing
-documentation, or does not cover a desired area, please send feedback to the
-Tuscany mailing lists, or better still send us a patch or join the Tuscany team
-and contribute back to the <A
-href="http://incubator.apache.org/tuscany">project</A>.
-</P>
-<h3>Running the Samples from a Binary Distribution of Apache Tuscany</h3>
-<P>The
-SDO samples have been written to be useful in learning SDO, even without
-reference to the sample source code. The samples output commentary as they
-execute and key lines of source code are output too. One of the sample programs
-(ExecuteSamples) executes all the other samples in sequence. The binary
-distribution includes the sample source code too, so that you can investigate
-further if you wish.
-</P>
-<P>
-The binary distribution of Tuscany contains a pair of scripts to execute the
-ExecuteSamples program (runsamples.bat and runsamples.sh). To execute the
-samples first locate the appropriate script for your environment in the samples
-directory of the binary distribution and set the value of the BINARY_BASE
-variable to be the directory in your file system that contains the lib and
-samples directories. Then run the script and take a look at the output. After
-that, copy and modify the script to suit your own purposes in running the other
-samples.
-</P>
-<h3>Running the Samples from a Source Distribution of Apache Tuscany</h3>
-<P>
-The
-samples depend on the following libraries
-</P>
-<UL>
- <LI>
- The samples themselves, the SDO 2.1 API and the Tuscany SDO
- Implementation
- <UL>
- <LI>
- sample-sdo-{tuscany-version}.jar - SDO API
- </LI>
- <LI>
- sdo-api-r2.1-{tuscany-version}.jar - SDO API
- </LI>
- <LI>
- tuscany-sdo-lib-{tuscany-version}.jar - Tuscany APIs and support
- function
- </LI>
- <LI>
- tuscany-sdo-impl-{tuscany-version}.jar - Tuscany SDO
- implementation
- </LI>
- </UL>
- </LI>
- <LI>
- EMF dependencies.
- <UL>
- <LI>
- common-{version}.jar - some common framework utility and base classes
- </LI>
- <LI>
- ecore-{version}.jar - the EMF core runtime implementation classes (the Ecore
- metamodel)
- </LI>
- <LI>
- ecore-change-{version}.jar - the EMF change recorder and framework
- </LI>
- <LI>
- ecore-xmi-{version}.jar - EMF's default XML (and XMI) serializer and loader
- </LI>
- <LI>
- xsd-{version}.jar - the XML Schema model
- </LI>
- </UL>
- </LI>
- <LI>And the StAX API</LI>
- <UL>
- <LI>stax-api-1.0.1.jar</LI>
- </UL>
-</UL>
-<P>
-If you are running these samples as a result of building Tuscany SDO for Java
-from a Tuscany source distribution using maven then these dependencies will be
-resolved by having followed the instructions in the BUILDING file at the root of
-the source distribution.
-</P>
-</BODY>
-</html>
diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/package.html b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/package.html deleted file mode 100644 index c1335e6e5b..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/package.html +++ /dev/null @@ -1,33 +0,0 @@ -<html> -<!-- - * - * 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. - * --> -<head> - <title>package information</title> -</head> -<body> -Provides common constants and a command line java interface for executing samples. -<h2>Related Documentation</h2> -For overviews, tutorials, examples, guides, and tool documentation, please see the -<a href="http://cwiki.apache.org/TUSCANY/sdo-overview.html"> SDO Java Overview -</a> -section of the Tuscany website. - -</body> -</html>
\ No newline at end of file diff --git a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/sampleProgramContents.html b/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/sampleProgramContents.html deleted file mode 100644 index cc646ed3a9..0000000000 --- a/branches/sdo-1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/sampleProgramContents.html +++ /dev/null @@ -1,243 +0,0 @@ -<html>
-<!-- Note -- this file is GENERATED from the samples using the
-Document Samples utility. Hand edits will be lost when regenerated!-->
-<!--
-*
-* 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.
--->
-<head><title>SDO Samples</title></head><body>
- <h1>SDO Samples</h1>
-<P>
-The samples provided in the Tuscany SDO distribution cover many areas of
-the SDO API. Here we provide two indexes into the samples. The first lists
-each sample in sequence and details the central theme(s) of the sample.
-It also mentions if the sample significantly demonstrates other areas in passing.
-The second index lists all the themes that are covered by these samples, and
-indicates which of the samples has that subject area as a central theme or as
-demonstrates the subject area significant as an incidental part of the sample.<H2>Index by Sample Program Name</H2>
-<h3>Sample Program CreateCompany</h3>
-<b>Core function:</b><br/>
-<a href="#facet2">Set Properties of DataObject by name</a><br/>
-<br/><h3>Sample Program ReadPurchaseOrder</h3>
-<b>Core function:</b><br/>
-<a href="#facet15">Loading data from XML</a><br/>
-<a href="#facet16">Saving data to XML</a><br/>
-<br/><b>Also demonstrates:</b><br/>
-<a href="#facet1">Get Properties of DataObject by name</a><br/>
-<h3>Sample Program CreatePurchaseOrder</h3>
-<b>Core function:</b><br/>
-<a href="#facet15">Loading data from XML</a><br/>
-<a href="#facet16">Saving data to XML</a><br/>
-<br/><h3>Sample Program AccessDataObjectPropertiesByName</h3>
-<b>Core function:</b><br/>
-<a href="#facet1">Get Properties of DataObject by name</a><br/>
-<br/><h3>Sample Program AccessingTheContentsOfASequence</h3>
-<b>Core function:</b><br/>
-<a href="#facet13">Accessing values in a Sequence</a><br/>
-<br/><h3>Sample Program AccessDataObjectUsingValidXPath</h3>
-<b>Core function:</b><br/>
-<a href="#facet6">Get/Set Properties of DataObject by Xpath</a><br/>
-<br/><h3>Sample Program DynamicCustomerTypeSample</h3>
-<b>Core function:</b><br/>
-<a href="#facet9">Create Types using the SDO API</a><br/>
-<br/><b>Also demonstrates:</b><br/>
-<a href="#facet2">Set Properties of DataObject by name</a><br/>
-<a href="#facet12">Using Built-in Types</a><br/>
-<a href="#facet16">Saving data to XML</a><br/>
-<h3>Sample Program CreateCompanyTuscanyAPI</h3>
-<b>Core function:</b><br/>
-<a href="#facet2">Set Properties of DataObject by name</a><br/>
-<br/><h3>Sample Program CreateDataObjectFromXmlString</h3>
-<b>Core function:</b><br/>
-<a href="#facet12">Using Built-in Types</a><br/>
-<a href="#facet15">Loading data from XML</a><br/>
-<br/><h3>Sample Program SerializingDeserializingADataObject</h3>
-<b>Core function:</b><br/>
-<a href="#facet23">Java Serialization of data graph</a><br/>
-<br/><b>Also demonstrates:</b><br/>
-<a href="#facet24">Testing for Graph Equality</a><br/>
-<h3>Sample Program AccessingDataObjectsViaPropertyIndex</h3>
-<b>Core function:</b><br/>
-<a href="#facet4">Get/Set Properties of DataObject by index</a><br/>
-<br/><h3>Sample Program ObtainingDataGraphFromXml</h3>
-<b>Core function:</b><br/>
-<a href="#facet19">Wrapping data graph in a DataGraph instance</a><br/>
-<br/><b>Also demonstrates:</b><br/>
-<a href="#facet12">Using Built-in Types</a><br/>
-<h3>Sample Program PrintDataGraph</h3>
-<b>Core function:</b><br/>
-<a href="#facet14">Generic data graph traversal</a><br/>
-<br/><b>Also demonstrates:</b><br/>
-<a href="#facet5">Get/Set Properties by Instance Properties</a><br/>
-<a href="#facet7">isMany Properties</a><br/>
-<a href="#facet9">Create Types using the SDO API</a><br/>
-<a href="#facet13">Accessing values in a Sequence</a><br/>
-<a href="#facet21">Non-Containment</a><br/>
-<h3>Sample Program MedicalScenario</h3>
-<b>Core function:</b><br/>
-<a href="#facet8">Containment</a><br/>
-<a href="#facet9">Create Types using the SDO API</a><br/>
-<a href="#facet10">Create Types using XML Schema</a><br/>
-<a href="#facet20">Open Content</a><br/>
-<a href="#facet21">Non-Containment</a><br/>
-<br/><b>Also demonstrates:</b><br/>
-<a href="#facet3">Create DataObjects by name</a><br/>
-<a href="#facet7">isMany Properties</a><br/>
-<a href="#facet14">Generic data graph traversal</a><br/>
-<a href="#facet16">Saving data to XML</a><br/>
-<h3>Sample Program MedicalScenarioWithChangeMonitoring</h3>
-<b>Core function:</b><br/>
-<a href="#facet8">Containment</a><br/>
-<a href="#facet9">Create Types using the SDO API</a><br/>
-<a href="#facet10">Create Types using XML Schema</a><br/>
-<a href="#facet20">Open Content</a><br/>
-<a href="#facet21">Non-Containment</a><br/>
-<a href="#facet18">Change Monitoring using a ChangeSummary Property on a DataObject</a><br/>
-<br/><b>Also demonstrates:</b><br/>
-<a href="#facet3">Create DataObjects by name</a><br/>
-<a href="#facet7">isMany Properties</a><br/>
-<a href="#facet14">Generic data graph traversal</a><br/>
-<a href="#facet16">Saving data to XML</a><br/>
-<H2>Index by function</H2>
-<a name="facet0"/>
-<h3></h3>
-<a name="facet1"/>
-<h3>Get Properties of DataObject by name</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-AccessDataObjectPropertiesByName<br/>
-<b>Samples which demonstrate this in addition to their core function</b><br/>
-ReadPurchaseOrder<br/>
-<a name="facet2"/>
-<h3>Set Properties of DataObject by name</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-CreateCompany<br/>
-CreateCompanyTuscanyAPI<br/>
-<b>Samples which demonstrate this in addition to their core function</b><br/>
-DynamicCustomerTypeSample<br/>
-<a name="facet3"/>
-<h3>Create DataObjects by name</h3>
-<b>Samples which demonstrate this in addition to their core function</b><br/>
-MedicalScenario<br/>
-MedicalScenarioWithChangeMonitoring<br/>
-<a name="facet4"/>
-<h3>Get/Set Properties of DataObject by index</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-AccessingDataObjectsViaPropertyIndex<br/>
-<a name="facet5"/>
-<h3>Get/Set Properties by Instance Properties</h3>
-<b>Samples which demonstrate this in addition to their core function</b><br/>
-PrintDataGraph<br/>
-<a name="facet6"/>
-<h3>Get/Set Properties of DataObject by Xpath</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-AccessDataObjectUsingValidXPath<br/>
-<a name="facet7"/>
-<h3>isMany Properties</h3>
-<b>Samples which demonstrate this in addition to their core function</b><br/>
-PrintDataGraph<br/>
-MedicalScenario<br/>
-MedicalScenarioWithChangeMonitoring<br/>
-<a name="facet8"/>
-<h3>Containment</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-MedicalScenario<br/>
-MedicalScenarioWithChangeMonitoring<br/>
-<a name="facet9"/>
-<h3>Create Types using the SDO API</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-MedicalScenario<br/>
-DynamicCustomerTypeSample<br/>
-MedicalScenarioWithChangeMonitoring<br/>
-<b>Samples which demonstrate this in addition to their core function</b><br/>
-PrintDataGraph<br/>
-<a name="facet10"/>
-<h3>Create Types using XML Schema</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-MedicalScenario<br/>
-MedicalScenarioWithChangeMonitoring<br/>
-<a name="facet11"/>
-<h3>Create Types using the Tuscany API</h3>
-<a name="facet12"/>
-<h3>Using Built-in Types</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-CreateDataObjectFromXmlString<br/>
-<b>Samples which demonstrate this in addition to their core function</b><br/>
-ObtainingDataGraphFromXml<br/>
-DynamicCustomerTypeSample<br/>
-<a name="facet13"/>
-<h3>Accessing values in a Sequence</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-AccessingTheContentsOfASequence<br/>
-<b>Samples which demonstrate this in addition to their core function</b><br/>
-PrintDataGraph<br/>
-<a name="facet14"/>
-<h3>Generic data graph traversal</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-PrintDataGraph<br/>
-<b>Samples which demonstrate this in addition to their core function</b><br/>
-MedicalScenario<br/>
-MedicalScenarioWithChangeMonitoring<br/>
-<a name="facet15"/>
-<h3>Loading data from XML</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-CreateDataObjectFromXmlString<br/>
-CreatePurchaseOrder<br/>
-ReadPurchaseOrder<br/>
-<a name="facet16"/>
-<h3>Saving data to XML</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-CreatePurchaseOrder<br/>
-ReadPurchaseOrder<br/>
-<b>Samples which demonstrate this in addition to their core function</b><br/>
-MedicalScenario<br/>
-DynamicCustomerTypeSample<br/>
-MedicalScenarioWithChangeMonitoring<br/>
-<a name="facet17"/>
-<h3>Change Monitoring using a DataGraph</h3>
-<a name="facet18"/>
-<h3>Change Monitoring using a ChangeSummary Property on a DataObject</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-MedicalScenarioWithChangeMonitoring<br/>
-<a name="facet19"/>
-<h3>Wrapping data graph in a DataGraph instance</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-ObtainingDataGraphFromXml<br/>
-<a name="facet20"/>
-<h3>Open Content</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-MedicalScenario<br/>
-MedicalScenarioWithChangeMonitoring<br/>
-<a name="facet21"/>
-<h3>Non-Containment</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-MedicalScenario<br/>
-MedicalScenarioWithChangeMonitoring<br/>
-<b>Samples which demonstrate this in addition to their core function</b><br/>
-PrintDataGraph<br/>
-<a name="facet22"/>
-<h3>Create XML Schema from Types</h3>
-<a name="facet23"/>
-<h3>Java Serialization of data graph</h3>
-<b>Samples which demonstrate this as their core function</b><br/>
-SerializingDeserializingADataObject<br/>
-<a name="facet24"/>
-<h3>Testing for Graph Equality</h3>
-<b>Samples which demonstrate this in addition to their core function</b><br/>
-SerializingDeserializingADataObject<br/>
-</body>
-</html>
|