From 836328ea2ca7c6780307abf258503201c91e5a96 Mon Sep 17 00:00:00 2001
From: lresende
- * 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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/SampleBase.java b/branches/sdo-1.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.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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/MedicalScenario.java b/branches/sdo-1.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.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 Part1 and Part 2 of the article.
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- * 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 =
- "\n" +
- "\n" +
- " \n"+
- " \n"+
- " \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 =
- "Running this Sample
See the main overview 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");
-
- // Running this Sample
See the main overview 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");
-
- //
- *
- * 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.
- * Running this Sample
See the main overview 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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/PrintDataGraph.java b/branches/sdo-1.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.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.
- * Running this Sample
See the main overview 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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/package.html b/branches/sdo-1.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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/advanced/package.html
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
- Advanced Service Data Object (SDO) Sample Programs
-
-Running the Samples
See the main overview for instructions on how to run these
-samples.
-
-
diff --git a/branches/sdo-1.1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/AccessDataObjectPropertiesByName.java b/branches/sdo-1.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.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.
- * Running this Sample
See the main overview 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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/AccessingTheContentsOfASequence.java b/branches/sdo-1.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.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.
- * Running this Sample
See the main overview 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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreateCompany.java b/branches/sdo-1.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.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.
- * Running this Sample
See the main overview 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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/CreatePurchaseOrder.java b/branches/sdo-1.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.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
- * Create and read an XML document based on XML Schema
- * Running this Sample
See the main overview for instructions on how to run this
- * sample.
- */
-
-public class CreatePurchaseOrder extends SampleBase {
-
- public CreatePurchaseOrder(Integer commentaryLevel) {
- super(commentaryLevel, SAMPLE_LEVEL_BASIC);
- }
-
- /*
- * metadata for the sample documenting the areas of SDO that are explored
- */
- public static int [] CORE_FUNCTION = {
- SDOFacets.LOADING_DATA_FROM_XML,
- SDOFacets.SAVING_DATA_TO_XML
- };
-
-
-
- public static void main(String[] args) {
-
- CreatePurchaseOrder sample = new CreatePurchaseOrder(COMMENTARY_FOR_NOVICE);
-
- sample.run();
-
- }
-
- public void runSample() throws Exception {
-
- commentary(COMMENTARY_ALWAYS,
- "This sample is based upon Fuhwei Lwo's paper\n"
- + "http://www-128.ibm.com/developerworks/webservices/library/ws-sdoxmlschema/\n"
- + "and demonstrates creating a purchaseOrder DataObject from an\n"
- + "existing XSD and then persisting to disk.");
-
- HelperContext scope = createScopeForTypes();
-
- loadTypesFromXMLSchemaFile(scope, SampleInfrastructure.PO_XSD_RESOURCE);
-
-
- commentary (
- "We are creating a DataObject using a DataFactory by specifying the URI and name of\n"+
- "the Type that we want to use for the DataObject.\n\n"+
- "DataFactory factory = scope.getDataFactory();\n"+
- "DataObject purchaseOrder = factory.create(SampleInfrastructure.PO_NAMESPACE, \"PurchaseOrderType\");");
-
- DataFactory factory = scope.getDataFactory();
- DataObject purchaseOrder = factory.create(SampleInfrastructure.PO_NAMESPACE, "PurchaseOrderType");
-
-
- commentary(
- "Now we build on the graph using the DataObject's set() and createDataObject() methods.\n"+
- "Take a look inside the program code for the full detail of these steps");
-
- purchaseOrder.setString("orderDate", "1999-10-20");
- DataObject shipTo = purchaseOrder.createDataObject("shipTo");
- shipTo.set("country", "US");
- shipTo.set("name", "Alice Smith");
- shipTo.set("street", "123 Maple Street");
- shipTo.set("city", "Mill Valley");
- shipTo.set("state", "CA");
- shipTo.setString("zip", "90952");
- DataObject billTo = purchaseOrder.createDataObject("billTo");
- billTo.set("country", "US");
- billTo.set("name", "Robert Smith");
- billTo.set("street", "8 Oak Avenue");
- billTo.set("city", "Mill Valley");
- billTo.set("state", "PA");
- billTo.setString("zip", "95819");
- purchaseOrder.set("comment", "Hurry, my lawn is going wild!");
-
- DataObject items = purchaseOrder.createDataObject("items");
-
- DataObject item1 = items.createDataObject("item");
- item1.set("partNum", "872-AA");
- item1.set("productName", "Lawnmower");
- item1.setInt("quantity", 1);
- item1.setString("price", "148.95");
-
- item1.set("comment", "Confirm this is electric");
-
- DataObject item2 = items.createDataObject("item");
- item2.set("partNum", "926-AA");
- item2.set("productName", "Baby Monitor");
- item2.setInt("quantity", 1);
- item2.setString("price", "39.98");
- item2.setString("shipDate", "1999-05-21");
- System.out.println("Created 2 items");
-
- commentary(
- "Now we use the XMLHelper to write an XML document representing the data graph\n"+
- "to a file. We must supply a namespace and a name for the root element of the graph, since it is\n"+
- "not contained in the DataObject\n\n"+
- "OutputStream stream = new FileOutputStream(SampleInfrastructure.PO_XML_GENERATED);\n"+
- "scope.getXMLHelper().save(purchaseOrder, SampleInfrastructure.PO_NAMESPACE, \"purchaseOrder\", stream);"
- );
-
-
- OutputStream stream = new FileOutputStream(SampleInfrastructure.PO_XML_GENERATED);
- scope.getXMLHelper().save(purchaseOrder, SampleInfrastructure.PO_NAMESPACE, "purchaseOrder", stream);
- stream.close();
-
- commentary(
- "We could instead have created an XMLDocument instance to wrap the DataObject\n"+
- "This has the advantage that the namespace URI and root element name are preserved in the Object\n"+
- "This interface was introduced after Fuhwei's paper, and has particular advantage\n"+
- "when loading an XML document from a file\n\n"+
- "scope.getXMLHelper().createDocument(purchaseOrder, SampleInfrastructure.PO_NAMESPACE, \"purchaseOrder\");\n"+
- "scope.getXMLHelper().save(doc, System.out, null);");
-
-
- XMLDocument doc = scope.getXMLHelper().createDocument(purchaseOrder, SampleInfrastructure.PO_NAMESPACE, "purchaseOrder");
- scope.getXMLHelper().save(doc, System.out, null);
- System.out.println();
- }
-
-}
diff --git a/branches/sdo-1.1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/basic/ReadPurchaseOrder.java b/branches/sdo-1.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.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
- * Create and read an XML document based on XML Schema.
- * Running this Sample
See the main overview for instructions on how to run this
- * sample.
- *
- */
-public class ReadPurchaseOrder extends SampleBase {
-
-
- public static String purchaseOrderDoc =
- "\n"+
- " Simple Service Data Object (SDO) Sample Programs
-
-Running the Samples
See the main overview for instructions on how to run these
-samples.
-
-
diff --git a/branches/sdo-1.1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/AccessDataObjectUsingValidXPath.java b/branches/sdo-1.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.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.
- * Running this Sample
See the main overview 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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/AccessingDataObjectsViaPropertyIndex.java b/branches/sdo-1.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.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.
- * Running this Sample
See the main overview 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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/CreateCompanyTuscanyAPI.java b/branches/sdo-1.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.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.
- * Running this Sample
See the main overview 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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/CreateDataObjectFromXmlString.java b/branches/sdo-1.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.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.
- * Running this Sample
See the main overview 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 = "Running this Sample
See the main overview 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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/SerializingDeserializingADataObject.java b/branches/sdo-1.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.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.
- * Running this Sample
See the main overview 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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/package.html b/branches/sdo-1.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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/intermediate/package.html
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- Intermediate Service Data Object (SDO) Sample Programs
-Running the Samples
See the main overview for instructions on how to run these
-samples.
-
-
diff --git a/branches/sdo-1.1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/internal/DocumentSamples.java b/branches/sdo-1.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.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.
- * SDO Samples
\n" +
- "Index by Sample Program Name
\n";
-
- private static String FUNCTION_HEADING =
- "Index by function
\n";
-
- private static String HTML_FOOTER =
- "\n";
-
-
- 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("Sample Program " + getSimpleName(classes[i]) + "
\n");
- doc.append("Core function:
\n");
- int [] functions = (int[])classToCoreFunction.get(classes[i]);
- for(int j=0;j
\n"); }
- doc.append("
");
- if(classToSignificantFunction.get(classes[i])!= null) {
- doc.append("Also demonstrates:
\n");
- functions = (int[])classToSignificantFunction.get(classes[i]);
- for(int j=0;j
\n");
- }
- }
- }
-
- doc.append(FUNCTION_HEADING);
-
- String [] facets = SDOFacets.subject_areas;
- for(int f = 0; f")
- .append(SDOFacets.subject_areas[f])
- .append("
\n");
- if(coreFunctionToClass.keySet().contains(fobj)) {
- doc.append("Samples which demonstrate this as their core function
\n");
- Set classesWithFunction = (Set)coreFunctionToClass.get(fobj);
- for(Iterator cwf = classesWithFunction.iterator(); cwf.hasNext();) {
- Class c = (Class)cwf.next();
- doc.append(getSimpleName(c)).append("
\n");
- }
- }
- if(significantFunctionToClass.keySet().contains(fobj)) {
- doc.append("Samples which demonstrate this in addition to their core function
\n");
- Set classesWithFunction = (Set)significantFunctionToClass.get(fobj);
- for(Iterator cwf = classesWithFunction.iterator(); cwf.hasNext();) {
- Class c = (Class)cwf.next();
- doc.append(getSimpleName(c)).append("
\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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/internal/SampleInfrastructure.java b/branches/sdo-1.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.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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/overview.html b/branches/sdo-1.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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/overview.html
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
- Tuscany Service Data Object (SDO) Sample Programs
Overview
-Apache Tuscany SDO samples
-are provided here to help users learn SDO.
-The index by SDO
-subject areas 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 contribute to this
-project.
-
-These samples are coded to the SDO 2.1 API defined -here -
--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 project. -
-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. -
--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. -
--The -samples depend on the following libraries -
--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. -
- - diff --git a/branches/sdo-1.1.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/package.html b/branches/sdo-1.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.1-incubating/sample/src/main/java/org/apache/tuscany/samples/sdo/package.html +++ /dev/null @@ -1,33 +0,0 @@ - - - --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.