diff options
author | dims <dims@13f79535-47bb-0310-9956-ffa450edef68> | 2008-06-17 00:23:01 +0000 |
---|---|---|
committer | dims <dims@13f79535-47bb-0310-9956-ffa450edef68> | 2008-06-17 00:23:01 +0000 |
commit | bdd0a41aed7edf21ec2a65cfa17a86af2ef8c48a (patch) | |
tree | 38a92061c0793434c4be189f1d70c3458b6bc41d /cpp/sdo/samples |
Move Tuscany from Incubator to top level.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@668359 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/sdo/samples')
32 files changed, 2552 insertions, 0 deletions
diff --git a/cpp/sdo/samples/AUTHORS b/cpp/sdo/samples/AUTHORS new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/cpp/sdo/samples/AUTHORS diff --git a/cpp/sdo/samples/COPYING b/cpp/sdo/samples/COPYING new file mode 100755 index 0000000000..6b0b1270ff --- /dev/null +++ b/cpp/sdo/samples/COPYING @@ -0,0 +1,203 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/cpp/sdo/samples/ChangeLog b/cpp/sdo/samples/ChangeLog new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/cpp/sdo/samples/ChangeLog diff --git a/cpp/sdo/samples/GettingStarted.html b/cpp/sdo/samples/GettingStarted.html new file mode 100644 index 0000000000..0223e05c7d --- /dev/null +++ b/cpp/sdo/samples/GettingStarted.html @@ -0,0 +1,236 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<!-- + 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. +--> + +<HTML> +<HEAD> + <META CONTENT="text/html; charset=iso-8859-1" HTTP-EQUIV="Content-Type"> + <META CONTENT="text/css" HTTP-EQUIV="Content-Style-Type"> + <STYLE MEDIA="all" TYPE="text/css"> +@import url("../doc/css/maven-base.css"); +@import url("../doc/css/maven-theme.css"); + </STYLE> + + <LINK HREF="../doc/css/maven-theme.css" MEDIA="print" REL="stylesheet" + TYPE="text/css"> + <TITLE>Tuscany SDO C++ Samples - Getting Started</TITLE> +</HEAD> + +<BODY> +<DIV ID="bodyColumn"> + <DIV ID="contentBox"> + <DIV CLASS="section"> + <H1>Tuscany Samples - Getting Started - SDO C++ Milestone release 3</H1> + + <P>Tuscany SDO C++ includes some simple technology samples that demonstrate some of the basic sceanrios for C++ SDO. + This page describes the samples and what is needed to install and run them. + </P> + <UL> + <LI>The ObjectCreation sample demonstrates building the metadata programmatically, followed by use + of the metadata to instantiate objects in a graph. + </LI> + <LI>The XSDLoading sample shows how to load metadata from an XSD, and how to check for errors during + parsing. The parser gathers all non-fatal errors into one list, so all errors can be checked at one + time after parsing. Elements which contained errors will have been omitted from the resulting metadata. + </LI> + <LI>The ChangeSummarySave sample modifies a data graph of employees, and saves the modified graph with + its change summary. The output in ChangeSummarySave-output.xml shows the summary and its relationship + by references to the data graph. + </LI> + <LI>The Substitutes sample shows how to use substitites in XSD to achieve a property which will accept a + range of types. + </LI> + <LI>The Query sample shows how to use XPath to navigate within a graph to the required element. Note + that exceptions such as "path not found" may well be thrown if the XPath specified does not lead to + a real object in the graph. + </LI> + </UL> + <P>The SDO samples are built together into a single executable called sdo_misc.exe on Windows and sdo_misc on Linux + </P> + </DIV> + + <DIV CLASS="section"> + <H2>Contents</H2> + <OL> + <LI><A HREF="#linuxbld">Building the samples on Linux or Mac OS X</A></LI> + <!--LI><A HREF="#linuxbldstdcxx">Building the samples on Linux with Apache STDCXX</A></LI--> + <LI><A HREF="#linuxrun">Running the samples on Linux or Mac OS X</A></LI> + <LI><A HREF="#winbld">Building the samples on Windows</A></LI> + <LI><A HREF="#winbldstdcxx">Building the samples on Windows with Apache STDCXX</A></LI> + <LI><A HREF="#winrun">Running the samples on Windows</A></LI> + </OL> + </DIV> + + + <DIV CLASS="section"> + <A NAME="linuxbld"><H2>Building the samples on Linux or Mac OS X</H2></A> + <OL> + <LI>The following environment variables are required: + <UL> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + </UL></LI> + </LI> + <LI>Build the source with the following command sequence: + <UL> + <LI>cd <tuscany_sdo_install_dir>/samples</LI> + <LI>./configure --prefix=<tuscany_sdo_install_dir>/deploy --enable-static=no</LI> + <LI>make</LI> + <LI>make install</LI> + </UL> + NOTE: If you don't provide a --prefix configure option, it will by default install into + /usr/local/tuscany/sdo/samples/misc</LI> + </OL> + <p> + A script, <b>build.sh</b>, is provided that will build and deploy the SDO for C++ samples to $TUSCANY_SCACPP/samples. + + </DIV> + + <!--DIV CLASS="section"> + <A NAME="linuxbldstdcxx"><H2>Building the samples on Linux with Apache STDCXX</H2></A> + <OL> + <LI>The following environment variables are required: + <UL> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO> + <LI>AXIS2C_HOME=<path to axis2c version 0.94></LI> + </UL></LI> + </LI> + <LI>Build the source with the following command sequence: + <UL> + <LI>cd <tuscany_sdo_install_dir>/samples</LI> + <LI>./configure</LI> + <LI>make</LI> + <LI>make install</LI> + </UL> + NOTE: If you don't provide a --prefix configure option, it will by default install into + /usr/local/tuscany/sdo/samples/misc</LI> + </OL> + </DIV--> + + <DIV CLASS="section"> + <A NAME="linuxrun"><H2>Running the samples on Linux or Mac OS X</H2></A> + <OL> + <LI>Ensure that <tuscany_sdo_install_dir>/lib is included in the LD_LIBRARY_PATH environment variable + </LI> + <LI>Run the sample with the following commands: + <UL> + <LI>cd <tuscany_sdo_install_dir>/samples/misc/deploy</LI> + <LI>./bin/sdo_misc</LI> + </UL> + </LI> + </OL> + </DIV> + + <DIV CLASS="section"> + <A NAME="winbld"><H2>Building the samples on Windows</H2></A> + <P>If using the binary distribution the samples are built and installed in + <tuscany_sdo_install_dir>/samples - go directly to <A HREF="#winrun">Running the samples on Windows</A>.</P> + <OL> + <LI>The following environment variables are required: + <UL> + <LI>TUSCANY_SDOCPP=<path to installed Tuscany SDO></LI> + </UL></LI> + </LI> + <LI>You must have set up the environment for Microsoft Visual Studio Express C++ tools. + The build command will call vcvars32 to set the environment. Ensure the + directory containing this is on your path. This will be where you + installed the compiler. + </LI> + <LI>Build the source, either via the Visual Studio Express projects under + <tuscany_sdo_install_dir>\samples\misc\VSExpress or via the command-line build file + found at <tuscany_sdo_install_dir>\samples\misc\build.bat + which will build and deploy the sample. + </LI> + </OL> + </DIV> + + <DIV CLASS="section"> + <A NAME="winbldstdcxx"><H2>Building the samples on Windows with Apache STDCXX</H2></A> + <P>STDCXX is an implementation of the C++ Standard Library provided by Apache. + The website is at <A HREF="http://incubator.apache.org/stdcxx/">http://incubator.apache.org/stdcxx/</A>. + </P> + <P>You must begin by downloading and building STDCXX as described <A HREF="../doc/BuildingSTDCXX.html">here</A> + </P> + <P>STDCXX is supported only when used with Microsoft Visual Studio C++ V7.1. Launch the + MSVC++ 7.1 studio by opening the file + <tuscany_sdo_install_dir>samples\ides\devstudio7\projects\misc\misc.sln + </P> + <P>The sdo_misc project includes build configurations that + use STDCXX. There are several ways to access the build configurations, and all + are equally effective. As an example, open the Property pages for sdo_misc by + right clicking on sdo_misc in the Solution Explorer pane and selecting + Properties. The Configuration property in the top left corner of the pane is a + drop down box offering four options: Debug, Release, stdcxx-Debug, + stdcxx-Release. Choose the one you want and then launch the build. + </P> + <P>All components that are linked (by the linker) must all use the same C++ + Standard library. Therefore, if either sdo_misc or sdo_runtime are built with + STDCXX then both must be. + </P> + </DIV> + + <DIV CLASS="section"> + <A NAME="winrun"><H2>Running the samples on Windows</H2></A> + <OL> + <LI>Ensure that <tuscany_sdo_install_dir>\bin is included in the PATH environment variable + </LI> + <LI>Run the sample with the following commands: + <UL> + <LI>cd <tuscany_sdo_install_dir>/samples/misc/deploy</LI> + <LI>bin\sdo_misc</LI> + </UL> + </LI> + </OL> + </DIV> + + + <DIV CLASS="section"> + <A NAME="help"><H2>Getting Help</H2></A> + + <P>First place to look is at the Tuscany FAQ at + <A HREF="http://cwiki.apache.org/TUSCANY/tuscany-sdo-faq.html" + TARGET="_blank">http://cwiki.apache.org/TUSCANY/tuscany-sdo-faq.html</A> </P> + + <P>Any problem with this release can be reported to the Tuscany + <A HREF="http://cwiki.apache.org/TUSCANY/mailing-lists.html" + TARGET="_blank">mailing lists</A> or create a JIRA issue at <A HREF="http://issues.apache.org/jira/browse/Tuscany" + TARGET="_blank">http://issues.apache.org/jira/browse/Tuscany</A>.</P> + + + <P> </P> + + <P> </P> + + <P> </P> + <TABLE CLASS="bodyTable"> + <TBODY> + <TR CLASS="a"> + <TD> + + <P>Thank you for your interest in Tuscany.</P> <STRONG><EM>-The + Tuscany Development Team</EM></STRONG> + </TD> + </TR> + </TBODY> + </TABLE> + </DIV> + </DIV> +</DIV> +</BODY> + +</HTML> diff --git a/cpp/sdo/samples/INSTALL b/cpp/sdo/samples/INSTALL new file mode 100644 index 0000000000..f3710f30e4 --- /dev/null +++ b/cpp/sdo/samples/INSTALL @@ -0,0 +1,2 @@ +Please read the GettingStarted.html document for information on +building, installing and running Tuscany SDO for C++ Samples
\ No newline at end of file diff --git a/cpp/sdo/samples/LICENSE b/cpp/sdo/samples/LICENSE new file mode 100755 index 0000000000..f433b1a53f --- /dev/null +++ b/cpp/sdo/samples/LICENSE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/cpp/sdo/samples/Makefile.am b/cpp/sdo/samples/Makefile.am new file mode 100644 index 0000000000..6f94423236 --- /dev/null +++ b/cpp/sdo/samples/Makefile.am @@ -0,0 +1,20 @@ +# 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. + +SUBDIRS = misc + +EXTRA_DIST = GettingStarted.html build.sh diff --git a/cpp/sdo/samples/NEWS b/cpp/sdo/samples/NEWS new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/cpp/sdo/samples/NEWS diff --git a/cpp/sdo/samples/NOTICE b/cpp/sdo/samples/NOTICE new file mode 100644 index 0000000000..4a1e01a59e --- /dev/null +++ b/cpp/sdo/samples/NOTICE @@ -0,0 +1,5 @@ +Apache Tuscany SDO for C++ +Copyright 2005, 2007 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/)
\ No newline at end of file diff --git a/cpp/sdo/samples/README b/cpp/sdo/samples/README new file mode 100644 index 0000000000..f3710f30e4 --- /dev/null +++ b/cpp/sdo/samples/README @@ -0,0 +1,2 @@ +Please read the GettingStarted.html document for information on +building, installing and running Tuscany SDO for C++ Samples
\ No newline at end of file diff --git a/cpp/sdo/samples/autogen.sh b/cpp/sdo/samples/autogen.sh new file mode 100755 index 0000000000..af38864985 --- /dev/null +++ b/cpp/sdo/samples/autogen.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# 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. + +for i in "libtoolize --force" aclocal autoconf autoheader +do + echo -n "Running $i..." + $i || exit 1 + echo 'done.' +done + +echo -n 'Running automake...' +automake --add-missing +echo 'done.' +exit 0 + diff --git a/cpp/sdo/samples/build.sh b/cpp/sdo/samples/build.sh new file mode 100755 index 0000000000..3aba22be31 --- /dev/null +++ b/cpp/sdo/samples/build.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +# 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. + +if [ x$TUSCANY_SDOCPP = x ]; then +echo "TUSCANY_SDOCPP not set" +exit; +fi +echo "Using SDO installed at $TUSCANY_SDOCPP" + +./configure --prefix=${TUSCANY_SDOCPP}/samples --enable-static=no +make +make install + diff --git a/cpp/sdo/samples/build.xml b/cpp/sdo/samples/build.xml new file mode 100644 index 0000000000..3fff723b52 --- /dev/null +++ b/cpp/sdo/samples/build.xml @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<project name="TuscanySDONative_samples" default="all" basedir="..">
+
+ <!--
+ This is the root level ant build.xml file for TuscanySDO Native samples
+ Nothing is actually performed here, it just delegates to subdirectory
+ build.xml files.
+ -->
+
+ <import file="${basedir}/antscripts/system.xml"/>
+ <import file="${basedir}/antscripts/compile-targets.xml"/>
+
+
+ <!--
+ Notice that the basedir for this project is set to the TuscanySDO root dir
+ This makes path setting in system.xml much simpler, but we'll just have to
+ set a property here to this directory.
+ -->
+ <property name="this.dir" location="${basedir}/samples"/>
+
+ <property name="misc.dir" location="${this.dir}/misc"/>
+
+ <!--
+ Public targets
+ -->
+
+ <target name="all" description="Build and install all TuscanySDONative samples">
+ <antcall target="misc.sample"/>
+ </target>
+
+ <!--
+ Using antfile and inheritAll="false" to maintain the subdir build.xml basedir settings
+ -->
+
+ <target name="misc.sample" description="Build and install the misc sample">
+ <ant target="all" antfile="${misc.dir}/build.xml" inheritAll="false"/>
+ </target>
+
+ <!-- clean -->
+
+ <target name="clean" description="Clean all TuscanySDONative samples">
+ <ant target="clean" antfile="${misc.dir}/build.xml" inheritAll="false"/>
+ </target>
+
+ <target name="distribution" description="Generate the necessary distribution files of all samples and copy it to the distribution dir">
+ <ant target="distribution" antfile="${misc.dir}/build.xml"/>
+ </target>
+
+</project>
diff --git a/cpp/sdo/samples/configure.ac b/cpp/sdo/samples/configure.ac new file mode 100644 index 0000000000..a549d0819e --- /dev/null +++ b/cpp/sdo/samples/configure.ac @@ -0,0 +1,55 @@ +# 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. + +dnl run autogen.sh to generate the configure script. + +AC_PREREQ(2.59) +AC_INIT(tuscany_sdo_samples, 1.0-incubator-M3) +AC_CANONICAL_SYSTEM +AM_CONFIG_HEADER(config.h) +AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION) +AC_PREFIX_DEFAULT(/usr/local/tuscany/sdo/samples) + +# Checks for programs. +AC_PROG_CXX +AC_PROG_CC +AC_PROG_CPP +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET +AC_PROG_LIBTOOL + +# Check for running on Darwin +AC_MSG_CHECKING([Checking if running on Darwin]) +UNAME=`uname -s` +if test "x$UNAME" = "xDarwin"; then + AC_DEFINE([IS_DARWIN], [1], [Set to 1 when running on Darwin - Mac OSX]) + AC_MSG_RESULT(yes) + AC_SUBST([libsuffix],[".dylib"]) + is_darwin=true +else + AC_MSG_RESULT(no) + AC_SUBST([libsuffix],[".so"]) + is_darwin=false +fi +AM_CONDITIONAL([DARWIN], [test x$is_darmin = xtrue]) + +AC_CONFIG_FILES([Makefile + misc/Makefile + ]) +AC_OUTPUT + diff --git a/cpp/sdo/samples/misc/ChangeSummarySave.cpp b/cpp/sdo/samples/misc/ChangeSummarySave.cpp new file mode 100644 index 0000000000..5a27683807 --- /dev/null +++ b/cpp/sdo/samples/misc/ChangeSummarySave.cpp @@ -0,0 +1,188 @@ +/* + * 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. + */ + +/* $Rev$ $Date$ */ + +#include "samples.h" +using namespace std; + +void ChangeSummarySave::sample() +{ + cout << " ********** ChangeSummarySave sample********" << endl; + + try { + + DataFactoryPtr mdg = DataFactory::getDataFactory(); + + XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); + xsh->defineFile("ChangeSummarySave.xsd"); + + /** + * Load the schema from ChangeSummarySave.xsd + */ + + const Type& tstring = mdg->getType("commonj.sdo","String"); + const Type& tbool = mdg->getType("commonj.sdo","Boolean"); + const Type& tcs = mdg->getType("commonj.sdo","ChangeSummary"); + const Type& tcomp = mdg->getType("companyNS","CompanyType"); + const Type& tdept = mdg->getType("companyNS","DepartmentType"); + const Type& temp = mdg->getType("companyNS","EmployeeType"); + + + /** + * create a graph, set the change summary logging, modify the + * data, then save it to a file + */ + + DataObjectPtr comp = mdg->create((Type&)tcomp); + comp->setCString("name","ACME"); + + DataObjectPtr dept = mdg->create((Type&)tdept); + DataObjectList& dol = comp->getList("departments"); + dol.append(dept); + + dept->setCString("name","Advanced Technologies"); + dept->setCString("location","NY"); + dept->setCString("number","123"); + + DataObjectPtr emp1 = mdg->create(temp); + DataObjectPtr emp2 = mdg->create(temp); + DataObjectPtr emp3 = mdg->create(temp); + + emp1->setCString("name","John Jones"); + emp1->setCString("SN","E0001"); + + emp2->setCString("name","Mary Smith"); + emp2->setCString("SN","E0002"); + emp2->setBoolean("manager",true); + + emp3->setCString("name","Jane Doe"); + emp3->setCString("SN","E0003"); + + DataObjectList& dol2 = dept->getList("employees"); + dol2.append(emp1); + dol2.append(emp2); + dol2.append(emp3); + + + /** + * Set the employee of the month - which is a reference, not + * a containment value + */ + + comp->setDataObject("employeeOfTheMonth",emp2); + + /** + * The XSD defined the company type as having a change summary, + * so we can get it... + */ + + ChangeSummaryPtr cs = comp->getChangeSummary(); + + /** + * And ask it to start logging... + */ + + cs->beginLogging(); + + /** + * With logging on, create a new employee + */ + + DataObjectPtr emp4 = mdg->create(temp); + emp4->setCString("name","Al Smith"); + emp4->setCString("SN","E0004"); + emp4->setBoolean("manager",true); + + /** + * The first recorded change happens now, as the employee is + * added into the data graph. Emp4 (Al Smith) will appear in the + * change summary as a creation. There will also be a change + * record for the list "employees" of this department, holding the + * values before Al was added. + */ + dol2.append(emp4); + + /** + * The second change is to remove element 1 from the + * same list - Thats Mary Smith. + * Mary will appear as a deletion, but there will be no extra + * change record for "employees", as its already been changed. + * Mary was employee of the month, so that reference gets + * emptied, and a change record is set up for it, recording + * Mary as the old value. + */ + + dol2.remove(1); // element 1 is Mary + + DataObjectPtr emp5 = mdg->create(temp); + emp5->setCString("name","Bill Withers"); + emp5->setCString("SN","E0005"); + + + /** + * The third change is to append Bill to the same list. + * Bill appears as a creation, but there is no change recorded to + * the employees list. + */ + + dol2.append(emp5); + + + /** + * The company name is changed. A change record is set up for + * the property "name" of this company. It stores the old value + * "ACME" + */ + + comp->setCString("name","MegaCorp"); + + /** + * The company employee of the month is changed. The old + * value has already been changed from Mary to NULL, so no change + * record is created here at all + */ + + comp->setDataObject("employeeOfTheMonth",emp4); + + + /** + * Stop logging changes + */ + + cs->endLogging(); + + + XMLHelperPtr xmh = HelperProvider::getXMLHelper(mdg); + XMLDocumentPtr doc = xmh->createDocument(comp,"companyNS","company"); + xmh->save(doc,"ChangeSummarySave-output.xml"); + + /** + * Have a look in the file and see if you can recognise the changes + * above + */ + + } + catch (SDORuntimeException e) + { + cout << "Exception in ChangeSummarySave" << endl; + cout << e; + } + cout << " ********** Sample ends ********************" << endl; +} diff --git a/cpp/sdo/samples/misc/ChangeSummarySave.xsd b/cpp/sdo/samples/misc/ChangeSummarySave.xsd new file mode 100644 index 0000000000..b626d6a45b --- /dev/null +++ b/cpp/sdo/samples/misc/ChangeSummarySave.xsd @@ -0,0 +1,49 @@ +<!-- + 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. +--> + + <xsd:schema + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:sdo="commonj.sdo" + xmlns:sdoxml="commonj.sdo/xml" + xmlns:company="companyNS" + targetNamespace="companyNS"> + <xsd:element name="company" type="company:CompanyType"/> + <xsd:complexType name="CompanyType"> + <xsd:sequence> + <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="cs" type="sdo:ChangeSummaryType"/> + <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" sdoxml:propertyType="company:EmployeeType"/> + </xsd:complexType> + <xsd:complexType name="DepartmentType"> + <xsd:sequence> + <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="location" type="xsd:string"/> + <xsd:attribute name="number" type="xsd:int"/> + </xsd:complexType> + <xsd:complexType name="EmployeeType"> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="SN" type="xsd:ID"/> + <xsd:attribute name="manager" type="xsd:boolean"/> + </xsd:complexType> + </xsd:schema> + diff --git a/cpp/sdo/samples/misc/Makefile.am b/cpp/sdo/samples/misc/Makefile.am new file mode 100644 index 0000000000..7ebcc44c59 --- /dev/null +++ b/cpp/sdo/samples/misc/Makefile.am @@ -0,0 +1,41 @@ +# 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. + +deploydir=$(prefix)/misc/deploy/ +prgbindir=$(deploydir)/bin + +prgbin_PROGRAMS = sdo_misc +prgbin_SCRIPTS = +EXTRA_DIST = *.xsd *.xml +deploy_DATA = *.xsd *.xml + +AM_CPPFLAGS = $(CPPFLAGS) +sdo_misc_SOURCES = samples.cpp \ +ChangeSummarySave.cpp \ +ObjectCreation.cpp \ +Query.cpp \ +Substitutes.cpp \ +XSDLoading.cpp + + +noinst_HEADERS = *.h + +sdo_misc_LDADD = -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo -lxml2 + + +INCLUDES = -I$(top_builddir)/misc \ + -I${TUSCANY_SDOCPP}/include diff --git a/cpp/sdo/samples/misc/ObjectCreation.cpp b/cpp/sdo/samples/misc/ObjectCreation.cpp new file mode 100644 index 0000000000..94ff64e904 --- /dev/null +++ b/cpp/sdo/samples/misc/ObjectCreation.cpp @@ -0,0 +1,251 @@ +/* + * 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. + */ + +/* $Rev$ $Date$ */ + +#include "samples.h" +using namespace std; + +void ObjectCreation::sample() +{ + + + cout << " ********** Sample ObjectCreation **********" << endl; + + try { + + + /** + * Get a data factory. With it we can either create metadata + * or load it from an XSD. + */ + + DataFactoryPtr mdg = DataFactory::getDataFactory(); + + /** + * Add some Types to the data factory.. + * The booleans at on addType are: + * "isSequenced", "isOpen" "isAbstract" and "isDataType" + */ + + mdg->addType("myspace","Company"); + + mdg->addType("myspace","Department"); + + /** + * Manager is going to be a sequenced type... + */ + + mdg->addType("myspace","Manager", true, false); + + mdg->addType("myspace","Employee"); + + + /** + * We will make employee and manager sub-types of 'person' + */ + + mdg->addType("myspace","Person", true, false); + + + /** + * having all the types defined, we can now define the tree + * by giving properties to the types. + */ + + /** + * We could use the API passing in name and URI for each + * Type , or get the Types back and use them directly. + * Here we get back the types to use... + */ + + const Type& tc = mdg->getType("myspace","Company"); + const Type& ts = mdg->getType("commonj.sdo","String"); + const Type& ti = mdg->getType("commonj.sdo","Integer"); + const Type& tm = mdg->getType("myspace","Manager"); + const Type& td = mdg->getType("myspace","Department"); + const Type& te = mdg->getType("myspace","Employee"); + const Type& tp = mdg->getType("myspace","Person"); + + + /** + * Example 1 - add a property of type String to type company + */ + + mdg->addPropertyToType(tc,"name",ts); + + /** + * Example 2 - add using the name of the company instead of the + * type... + */ + + mdg->addPropertyToType("myspace","Company","address",ts); + + /** + * Example 3 - add a many valued property + */ + + mdg->addPropertyToType(tc,"departments", "myspace","Department", + true); + + + /** + * Example 4 - add a reference property + */ + + mdg->addPropertyToType(tc,"employee of the month", "myspace", + "Employee",false, false, false); + + + /** + * Add other department properties... + */ + + mdg->addPropertyToType(td,"name", ts); + mdg->addPropertyToType(td,"id", ti); + mdg->addPropertyToType(td,"manager", tm); + mdg->addPropertyToType(td,"employees",te,true,false,true); + + /** + * Add a name to the person + */ + + mdg->addPropertyToType(tp,"name", ts); + + + + /** + * Make employees and mamagers both substypes of person + */ + + mdg->setBaseType(te,tp); + mdg->setBaseType(tm,tp); + + /** + * And give them different properties of their own. + */ + + mdg->addPropertyToType(tm,"officeid", ts); + mdg->addPropertyToType(te,"cubelocation", ts); + + + + /** + * The data structure looks like this: + + * Company + * ----name (String) + * ----address *String) + * ----departments (Department, many valued) + * ----employee of the month ( Employee - reference) + + * Person + * ----name (String) + + * Employee + * ----name (String - inherited from Person) + * ----cubelocation (String) + + * Manager + * ----name (String - inherited from Person) + * ----officeid (String) + + * Department + * ----name (String) + * ----id (Integer) + * ---- manager (Manager) + * ---- employees (Employee - many valued) + + + /** + * create an object of type Company using the DataFactory + */ + + DataObjectPtr dor = mdg->create((Type&)tc); + + /** + * Set the company name to Acme + */ + + dor->setCString("name","Acme"); + + /** + * Set up the two departments - using the + * DataObject createDataObject API + */ + + DataObjectPtr dep1 = dor->createDataObject("departments"); + dep1->setCString("name","Development"); + dep1->setInt("id",100); + + DataObjectPtr man1 = dep1->createDataObject("manager"); + man1->setCString("name","Herve Jones"); + + DataObjectPtr dep2= dor->createDataObject("departments"); + dep2->setCString("name","Marketing"); + dep2->setInt("id",200); + + DataObjectPtr man2 = dep2->createDataObject("manager"); + man1->setCString("name","August Phan"); + + /** + * Give the departments some employees + */ + + DataObjectPtr emp1 = dep1->createDataObject("employees"); + emp1->setCString("name","Fred Appleby"); + emp1->setCString("cubelocation","100-A"); + + DataObjectPtr emp2 = dep1->createDataObject("employees"); + emp2->setCString("name","Jane Bloggs"); + emp2->setCString("cubelocation","100-B"); + + DataObjectPtr emp3 = dep2->createDataObject("employees"); + emp3->setCString("name","Robin Corbet"); + emp3->setCString("cubelocation","200-A"); + + DataObjectPtr emp4 = dep2->createDataObject("employees"); + emp4->setCString("name","Martha Denby"); + emp4->setCString("cubelocation","200-B"); + + cout << "Company Name:" << dor->getCString("name") << endl; + + DataObjectList& depts = dor->getList("departments"); + for (int i=0;i<depts.size();i++) + { + cout << " Department Name:" << depts[i]->getCString("name") << endl; + + DataObjectList& emps = depts[i]->getList("employees"); + + for (int j=0;j<emps.size();j++) + { + cout << " Employee Name:" << emps[j]->getCString("name") << endl; + } + } + } + catch (SDORuntimeException e) + { + cout << "Exception in ObjectCreation" <<endl; + cout << e; + } + cout << " ********** Sample ends ********************" << endl; + return; +} + + diff --git a/cpp/sdo/samples/misc/Query.cpp b/cpp/sdo/samples/misc/Query.cpp new file mode 100644 index 0000000000..65638aa7d2 --- /dev/null +++ b/cpp/sdo/samples/misc/Query.cpp @@ -0,0 +1,178 @@ +/* + * 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. + */ + +/* $Rev$ $Date$ */ + +#include "samples.h" +using namespace std; + +void Query::sample() +{ + cout << " ********** Query sample *******************" << endl; + + DataFactoryPtr mdg = DataFactory::getDataFactory(); + + /** + * Create some types + */ + + mdg->addType("myspace","Company"); + mdg->addType("myspace","Department"); + mdg->addType("myspace","Employee"); + + + /* Now add the properties to the types...*/ + + + const Type& tstring = mdg->getType("commonj.sdo","String"); + const Type& tbool= mdg->getType("commonj.sdo","Boolean"); + const Type& tint= mdg->getType("commonj.sdo","Integer"); + + const Type& tc = mdg->getType("myspace","Company"); + const Type& td = mdg->getType("myspace","Department"); + const Type& te = mdg->getType("myspace","Employee"); + + /** + * The company + */ + + mdg->addPropertyToType(tc,"name",tstring); // single string name + mdg->addPropertyToType(tc,"departments", + td,true); // many departments + mdg->addPropertyToType(tc,"employee of the month" + , te, false, false, false); // reference to employee + + /** + * The department + */ + + mdg->addPropertyToType(td,"name", tstring); // single string name + mdg->addPropertyToType(td,"employees",te, + true,false,true); // many employees + + + /** + * The employee + */ + + mdg->addPropertyToType(te,"isFullTime",tbool); + mdg->addPropertyToType(te,"employeeNumber",tint); + mdg->addPropertyToType(te,"name",tstring); + + + const Type& tcc = mdg->getType("myspace","Company"); + + DataObjectPtr dor = mdg->create((Type&)tcc); + + // The departments + + DataObjectPtr dept = dor->createDataObject("departments"); + dept->setCString("name","Shipping"); + + DataObjectPtr dept2 = dor->createDataObject("departments"); + dept2->setCString("name","Buying"); + + // The employees + + DataObjectPtr emp1 = dept->createDataObject("employees"); + DataObjectPtr emp2 = dept->createDataObject("employees"); + DataObjectPtr emp3 = dept->createDataObject("employees"); + DataObjectPtr emp4 = dept2->createDataObject("employees"); + + + emp1->setBoolean("isFullTime",true); + emp1->setInt("employeeNumber",65443); + emp1->setCString("name","Norman"); + + + emp2->setBoolean("isFullTime",false); + emp2->setInt("employeeNumber",64778); + emp2->setCString("name","Carl"); + + emp3->setBoolean("isFullTime",true); + emp3->setInt("employeeNumber",61990); + emp3->setCString("name","Amanda"); + + emp4->setBoolean("isFullTime",true); + emp4->setInt("employeeNumber",56789); + emp4->setCString("name","Donna"); + + dor->setDataObject("employee of the month",emp4); // Donna is referenced. + + + try { + + // access the first employee of the first department who is not full time + + DataObjectPtr dob1 = dor->getDataObject("departments[1]/employees[isFullTime=false]"); + cout << "Carl should be the first part timer: " << dob1->getCString("name") << " is." <<endl; + + // get the same employee by index + + DataObjectPtr dob2 = dor->getDataObject("departments[1]/employees[2]"); + cout << "Carl should be employees[2]:" << dob2->getCString("name") << " is." << endl; + + // use the dot notation to get the same employee + + DataObjectPtr dob3 = dor->getDataObject("departments.0/employees.1"); + cout << "Carl should be employees.1:" << dob3->getCString("name") << " is." << endl; + + // get the reference... + + DataObjectPtr dob4 = dor->getDataObject("employee of the month"); + cout << "Donna should be employee of the month:" << dob4->getCString("name") << " is." << endl; + + // And by employee number... + + DataObjectPtr dob5 = dor->getDataObject("departments[2]/employees[employeeNumber=56789]"); + cout << "Donna should be employee 56789:" << dob5->getCString("name") << " is." << endl; + + // If the query yields no value because the element doesnt exist... + + try + { + DataObjectPtr dob6 = dor->getDataObject("departments[1]/employees[employeeNumber=56789]"); + cout << "Did not get the expected exception" << endl; + } + catch (SDORuntimeException e) + { + cout << "Expected an IndexOutOfRangeException and got " << e.getEClassName() << endl; + } + + // If the query yields no value because the path is invalid... + + + try + { + DataObjectPtr dob7 = dor->getDataObject("departments[fish]/employees[0]"); + cout << "Did not get the expected exception" << endl; + } + catch (SDORuntimeException e) + { + cout << "Expected an PathNotFoundException and got " << e.getEClassName() << endl; + } + } + catch (SDORuntimeException e) + { + cout << "Unexpected error in Query " << e << endl; + } + + + cout << " ********** End Query Sample **************" << endl; +} diff --git a/cpp/sdo/samples/misc/Substitutes.cpp b/cpp/sdo/samples/misc/Substitutes.cpp new file mode 100644 index 0000000000..816caee2d5 --- /dev/null +++ b/cpp/sdo/samples/misc/Substitutes.cpp @@ -0,0 +1,121 @@ +/* + * 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. + */ + +/* $Rev$ $Date$ */ + +#include "samples.h" +using namespace std; + +void Substitutes::sample() +{ + cout << " ********** Substitutes sample *************" << endl; + try + { + + DataFactoryPtr mdg = DataFactory::getDataFactory(); + XSDHelperPtr xsh = HelperProvider::getXSDHelper(mdg); + xsh->defineFile("companysubs.xsd"); + + /** + * The companysubs xsd defines some types including a + * type which allows substitutions. The PublicationType is + * the base of BookType and MagazineType, and the substitutions + * are enabled so that properties can be either. + */ + + const Type& tstring = mdg->getType("commonj.sdo","String"); + const Type& tcomp = mdg->getType("companyNS","CompanyType"); + const Type& book = mdg->getType("companyNS","BookType"); + const Type& mag = mdg->getType("companyNS","MagazineType"); + const Type& pub = mdg->getType("companyNS","PublicationType"); + + + /** + * Create some data to work with + */ + + DataObjectPtr comp = mdg->create((Type&)tcomp); + comp->setCString("name","Puflet Publishing"); + + + DataObjectPtr book1 = mdg->create(book); + book1->setCString("author","Mr P B Writer"); + + /** + * book has a title property because it inherits from Publication + */ + book1->setCString("title","Nowhere Man"); + + + DataObjectPtr mag1 = mdg->create(mag); + + /** + * Magazine has an eidtor, and a title inherited from publication + */ + + mag1->setCString("editor","Mr B Picky"); + // inherited from publication + mag1->setCString("title","Bionicle Weekly"); + + + DataObjectPtr pub1 = mdg->create(pub); + pub1->setCString("title","Noddy In Toyland"); + + + /** + * The property "Publication" is defined as substitutable, so + * any of the book, magazine or publication should be + * acceptable values. When the type is queried, the type + * returned should correspond to the current type of the + * property... + */ + + comp->setDataObject("Publication",pub1); + const Type& tpub1 = comp->getDataObject("Publication")->getType(); + cout << "Publication is now of type " << tpub1.getName() << endl; + + comp->setDataObject("Publication",book1); + const Type& tpub2 = comp->getDataObject("Publication")->getType(); + cout << "Publication now is of type " << tpub2.getName() << endl; + + comp->setDataObject("Publication",mag1); + const Type& tpub3 = comp->getDataObject("Publication")->getType(); + cout << "Publication now is of type " << tpub3.getName() << endl; + + /** + * As the substitutes have names, they act as a sort of + * alias, so we can address Publication as Book or Magazine too + */ + + comp->setDataObject("Book",book1); + const Type& tpub4 = comp->getDataObject("Book")->getType(); + cout << "Book is of type " << tpub4.getName() << endl; + + comp->setDataObject("Magazine",mag1); + const Type& tpub5 = comp->getDataObject("Magazine")->getType(); + cout << "Magazine is of type " << tpub5.getName() << endl; + + } + catch (SDORuntimeException e) + { + cout << "Exception in Substitutes"<< endl; + cout<< e; + } + cout << " ********** Sample ends ********************" << endl; +} diff --git a/cpp/sdo/samples/misc/VSExpress/misc.sln b/cpp/sdo/samples/misc/VSExpress/misc.sln new file mode 100644 index 0000000000..a88518bbbd --- /dev/null +++ b/cpp/sdo/samples/misc/VSExpress/misc.sln @@ -0,0 +1,20 @@ +
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual C++ Express 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdo_misc", "sdo_misc\sdo_misc.vcproj", "{1625B649-C6E1-4A4D-9DDA-EB7CBC3B8AC6}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {1625B649-C6E1-4A4D-9DDA-EB7CBC3B8AC6}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1625B649-C6E1-4A4D-9DDA-EB7CBC3B8AC6}.Debug|Win32.Build.0 = Debug|Win32
+ {1625B649-C6E1-4A4D-9DDA-EB7CBC3B8AC6}.Release|Win32.ActiveCfg = Release|Win32
+ {1625B649-C6E1-4A4D-9DDA-EB7CBC3B8AC6}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/cpp/sdo/samples/misc/VSExpress/sdo_misc/sdo_misc.vcproj b/cpp/sdo/samples/misc/VSExpress/sdo_misc/sdo_misc.vcproj new file mode 100644 index 0000000000..159d609f95 --- /dev/null +++ b/cpp/sdo/samples/misc/VSExpress/sdo_misc/sdo_misc.vcproj @@ -0,0 +1,245 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="sdo_misc"
+ ProjectGUID="{1625B649-C6E1-4A4D-9DDA-EB7CBC3B8AC6}"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/sdo_misc.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="$(TUSCANY_SDOCPP)\include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ PrecompiledHeaderFile=".\Debug/sdo_misc.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="2057"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="tuscany_sdo.lib $(NOINHERIT)"
+ OutputFile=".\Debug/sdo_misc.exe"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="$(TUSCANY_SDOCPP)\lib"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\Debug/sdo_misc.pdb"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile=".\Debug/sdo_misc.bsc"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\deploy.bat ..\..\ Debug"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/sdo_misc.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="4"
+ AdditionalIncludeDirectories="$(TUSCANY_SDOCPP)\include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ PrecompiledHeaderFile=".\Release/sdo_misc.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="2057"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="tuscany_sdo.lib $(NOINHERIT)"
+ OutputFile=".\Release/sdo_misc.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="$(TUSCANY_SDOCPP)\lib"
+ ProgramDatabaseFile=".\Release/sdo_misc.pdb"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ SuppressStartupBanner="true"
+ OutputFile=".\Release/sdo_misc.bsc"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="..\..\deploy.bat ..\..\ Release"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath="..\..\ChangeSummarySave.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\ObjectCreation.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Query.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\samples.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\Substitutes.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\XSDLoading.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath="..\..\samples.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/cpp/sdo/samples/misc/VSExpress/sdo_misc/sdo_misc.vcproj.user b/cpp/sdo/samples/misc/VSExpress/sdo_misc/sdo_misc.vcproj.user new file mode 100644 index 0000000000..5b786f64e5 --- /dev/null +++ b/cpp/sdo/samples/misc/VSExpress/sdo_misc/sdo_misc.vcproj.user @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioUserFile
+ ProjectType="Visual C++"
+ Version="8.00"
+ ShowAllFiles="false"
+ >
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ >
+ <DebugSettings
+ Command="$(TUSCANY_SDOCPP)\samples\misc\deploy\bin\sdo_misc.exe"
+ WorkingDirectory="$(TUSCANY_SDOCPP)\samples\misc\deploy"
+ CommandArguments=""
+ Attach="false"
+ DebuggerType="3"
+ Remote="1"
+ RemoteMachine=""
+ RemoteCommand=""
+ HttpUrl=""
+ PDBPath=""
+ SQLDebugging=""
+ Environment="PATH=$(TUSCANY_SDOCPP)\bin;%PATH%"
+ EnvironmentMerge="true"
+ DebuggerFlavor="0"
+ MPIRunCommand=""
+ MPIRunArguments=""
+ MPIRunWorkingDirectory=""
+ ApplicationCommand=""
+ ApplicationArguments=""
+ ShimCommand=""
+ MPIAcceptMode=""
+ MPIAcceptFilter=""
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ >
+ <DebugSettings
+ Command="$(TUSCANY_SDOCPP)\samples\misc\deploy\bin\sdo_misc.exe"
+ WorkingDirectory="$(TUSCANY_SDOCPP)\samples\misc\deploy"
+ CommandArguments=""
+ Attach="false"
+ DebuggerType="3"
+ Remote="1"
+ RemoteMachine=""
+ RemoteCommand=""
+ HttpUrl=""
+ PDBPath=""
+ SQLDebugging=""
+ Environment="PATH=$(TUSCANY_SDOCPP)\bin;%PATH%"
+ EnvironmentMerge="true"
+ DebuggerFlavor="0"
+ MPIRunCommand=""
+ MPIRunArguments=""
+ MPIRunWorkingDirectory=""
+ ApplicationCommand=""
+ ApplicationArguments=""
+ ShimCommand=""
+ MPIAcceptMode=""
+ MPIAcceptFilter=""
+ />
+ </Configuration>
+ </Configurations>
+</VisualStudioUserFile>
diff --git a/cpp/sdo/samples/misc/XSDLoading.cpp b/cpp/sdo/samples/misc/XSDLoading.cpp new file mode 100644 index 0000000000..8462f80f21 --- /dev/null +++ b/cpp/sdo/samples/misc/XSDLoading.cpp @@ -0,0 +1,110 @@ +/* + * 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. + */ + +/* $Rev$ $Date$ */ + +#include "samples.h" +using namespace std; + +void XSDLoading::sample() +{ + int i,j; + + cout << " ********** XSDLoading Sample **************" << endl; + try + { + DataFactoryPtr mdg = DataFactory::getDataFactory(); + + /** + * Get an XSD helper to load XSD information into the + * data factory + */ + + XSDHelperPtr myXSDHelper = HelperProvider::getXSDHelper(mdg); + myXSDHelper->defineFile("XSDLoading.xsd"); + + /** + * Check if there were any errors. The parse may still + * succeed, but errors indicate some elements were not + * understood + */ + + if ((i = myXSDHelper->getErrorCount()) > 0) + { + cout << "XSD Loading reported some errors:" << endl; + for (j=0;j<i;j++) + { + const char *m = myXSDHelper->getErrorMessage(j); + if (m != 0) cout << m; + cout << endl; + } + } + + /** + * Use the same data factory to load XML corresponding to + * data objects adhering to the previously loaded schema + */ + + XMLHelperPtr myXMLHelper = HelperProvider::getXMLHelper(mdg); + + XMLDocumentPtr myXMLDocument = myXMLHelper->loadFile("XSDLoading.xml", "companyNS"); + + /** + * Check if there were any errors. The parse may still + * succeed, but errors indicate some elements did not match + * the schema, or were malformed. + * + */ + + if ((i = myXMLHelper->getErrorCount()) > 0) + { + cout << "XML Loading reported some errors:" << endl; + for (j=0;j<i;j++) + { + const char *m = myXMLHelper->getErrorMessage(j); + if (m != 0) cout << m; + cout << endl; + } + } + + DataObjectPtr newdob = myXMLDocument->getRootDataObject(); + + cout << "Company Name:" << newdob->getCString("name") << endl; + + DataObjectList& depts = newdob->getList("departments"); + for (int i=0;i<depts.size();i++) + { + cout << " Department Name:" << depts[i]->getCString("name") << endl; + + DataObjectList& emps = depts[i]->getList("employees"); + + for (int j=0;j<emps.size();j++) + { + cout << " Employee Name:" << emps[j]->getCString("name") << endl; + } + } + + } + catch (SDORuntimeException e) + { + cout << "Exception in XSD Loading test" << endl; + cout << e; + } + cout << " ********** Sample ends ********************" << endl; +} diff --git a/cpp/sdo/samples/misc/XSDLoading.xml b/cpp/sdo/samples/misc/XSDLoading.xml new file mode 100644 index 0000000000..29ac158654 --- /dev/null +++ b/cpp/sdo/samples/misc/XSDLoading.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + 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. +--> + + <!-- This XML has an employee with an SN of nil, which should appear in the SDO as NULL + --> + <company xmlns="companyNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="MegaCorp" employeeOfTheMonth="#/departments.0/employees.1"> +<departments name="Advanced Technologies" location="NY" number="123"> +<employees> +<name>Jane Doe</name> +<SN xsi:nil="true" /> +</employees> +</departments> +</company>
\ No newline at end of file diff --git a/cpp/sdo/samples/misc/XSDLoading.xsd b/cpp/sdo/samples/misc/XSDLoading.xsd new file mode 100644 index 0000000000..4b7270354c --- /dev/null +++ b/cpp/sdo/samples/misc/XSDLoading.xsd @@ -0,0 +1,48 @@ +<!-- + 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. +--> + +<!-- This XSD recasts the properties of employee to elements in order to allow the SN property to be nillable --> +<xsd:schema + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:sdo="commonj.sdo" + xmlns:sdoxml="commonj.sdo/xml" + xmlns:company="companyNS" + targetNamespace="companyNS"> + <xsd:element name="company" type="company:CompanyType"/> + <xsd:complexType name="CompanyType"> + <xsd:sequence> + <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" +sdoxml:propertyType="company:EmployeeType"/> </xsd:complexType> + <xsd:complexType name="DepartmentType"> + <xsd:sequence> + <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="location" type="xsd:string"/> + <xsd:attribute name="number" type="xsd:int"/> + </xsd:complexType> + <xsd:complexType name="EmployeeType"> + <xsd:element name="name" type="xsd:string"/> + <xsd:element name="SN" type="xsd:ID" nillable="true"/> + <xsd:element name="manager" type="xsd:boolean"/> + </xsd:complexType> +</xsd:schema> diff --git a/cpp/sdo/samples/misc/build.bat b/cpp/sdo/samples/misc/build.bat new file mode 100644 index 0000000000..c061d8329d --- /dev/null +++ b/cpp/sdo/samples/misc/build.bat @@ -0,0 +1,40 @@ +@echo off +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. + +setlocal + +set config=Release +if .Debug == .%1 ( +echo Building Debug version +set config=Debug +) + +if "%TUSCANY_SDOCPP%" == "" ( +echo "TUSCANY_SDOCPP not set" +goto end +) + +echo using Tuscany SDOCPP: %TUSCANY_SDOCPP% + +call vcvars32 + +call vcbuild VSExpress\misc.sln "%config%|Win32" + + +:end +endlocal diff --git a/cpp/sdo/samples/misc/build.xml b/cpp/sdo/samples/misc/build.xml new file mode 100644 index 0000000000..d4720fdb57 --- /dev/null +++ b/cpp/sdo/samples/misc/build.xml @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<project name="TuscanySDONative_Sample_misc" default="all" basedir="../..">
+
+ <import file="${basedir}/antscripts/system.xml"/>
+ <import file="${basedir}/antscripts/compile-targets.xml"/>
+
+ <!--
+ Notice that the basedir for this project is set to the TuscanySDO root dir
+ This makes path setting in system.xml much simpler, but we'll just have to
+ set a property here to this directory.
+ -->
+
+ <target name="init">
+ <tstamp/>
+ <property name="this.dir" location="${basedir}/samples/misc"/>
+ <property name="sample.misc.dir" location="${this.dir}/build"/>
+ <property name="sample.misc.src.dir" location="${this.dir}"/>
+ <property name="sample.misc.build.dir" location="${sample.misc.dir}/build"/>
+ <property name="misc.install.dir"
+ location="${tuscanySDO.install.dir}/samples/misc/bin"/>
+
+
+ </target>
+
+ <!--
+ Public targets
+ -->
+ <target name="all"
+ description="build and install the TuscanySDONative misc sample">
+ <antcall target="build"/>
+ <antcall target="install"/>
+ </target>
+
+ <target name="build"
+ description="build the TuscanySDONative misc sample">
+ <antcall target="build.sample.misc"/>
+ </target>
+
+ <target name="install"
+ description="Install the TuscanySDONative misc sample">
+ <antcall target="install.sample.misc"/>
+ </target>
+
+ <target name="clean"
+ description="Clean the TuscanySDONative misc sample">
+ <antcall target="clean.sample.misc"/>
+
+ </target>
+
+ <target name="distribution" description="Generate the necessary distribution files of misc sample and copy it to the distribution dir">
+ <antcall target="sample.misc.distribution"/>
+ </target>
+
+ <!--
+ Internal targets
+ They can still be called, they're just not described, so wont show up in "ant -p"
+ -->
+
+ <!-- build -->
+
+ <target name="build.sample.misc" depends="init,check.ws">
+ <mkdir dir="${sample.misc.build.dir}"/>
+
+ <copy todir="${sample.misc.build.dir}">
+ <fileset dir="${sample.misc.dir}" includes="*.h"/>
+ <fileset dir="${sample.misc.dir}" includes="*.cpp"/>
+ </copy>
+ <!-- build the library -->
+ <cpp-build
+ srcdir="${sample.misc.src.dir}"
+ infiles="*.cpp"
+ outdir="${sample.misc.build.dir}/.libs"
+ outtype="executable"
+ outfile="misc">
+ <custom-build-elements>
+ <includepath path="${tuscanySDO.install.dir}/include"/>
+ <includepath path="${libxml2.include.dir}"/>
+ <includepath if="windows" path="${iconv.home.dir}/include"/>
+ <libset if="windows" dir="${libxml2.lib.dir}" libs="libxml2"/>
+ <libset unless="windows" dir="${libxml2.lib.dir}" libs="xml2"/>
+
+<libset dir="${tuscanySDO.install.dir}/lib" libs="tuscany_sdo"/>
+ </custom-build-elements>
+ </cpp-build>
+ </target>
+
+
+ <!-- install -->
+
+ <target name="install.sample.misc" depends="init">
+ <cpp-install-files
+ files="*.exe*"
+ srcdir="${sample.misc.dir}/build/.libs/"
+ destdir="${misc.install.dir}"/>
+ <copy todir="${misc.install.dir}" overwrite="true">
+ <fileset dir="${this.dir}" includes="*.xsd, *.xml" excludes="build.xml"/>
+ </copy>
+
+ </target>
+
+ <!-- clean -->
+
+ <target name="clean.sample.misc" depends="init">
+ <delete dir="${sample.misc.dir}" quiet="true"/>
+ </target>
+
+ <target name="sample.misc.distribution">
+ <copy todir="${distribution.bin.dir}/samples/misc" overwrite="true">
+ <fileset dir="${this.dir}/misc" excludes="build/ rsc/ VSExpress/"/>
+ </copy>
+
+
+ </target>
+
+</project>
diff --git a/cpp/sdo/samples/misc/companysubs.xsd b/cpp/sdo/samples/misc/companysubs.xsd new file mode 100644 index 0000000000..5b7e52ed9e --- /dev/null +++ b/cpp/sdo/samples/misc/companysubs.xsd @@ -0,0 +1,63 @@ +<!-- + 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. +--> + + <xsd:schema + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:sdo="commonj.sdo" + xmlns:sdoxml="commonj.sdo/xml" + xmlns:company="companyNS" + targetNamespace="companyNS"> + <xsd:element name="company" type="company:CompanyType"/> + <xsd:complexType name="CompanyType"> + <xsd:sequence> + <xsd:element name="departments" type="company:DepartmentType" maxOccurs="unbounded"/> + <xsd:element name="Publication" type="company:PublicationType" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="cs" type="sdo:ChangeSummaryType"/> + <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" sdoxml:propertyType="company:EmployeeType"/> + </xsd:complexType> + <xsd:complexType name="DepartmentType"> + <xsd:sequence> + <xsd:element name="employees" type="company:EmployeeType" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="location" type="xsd:string"/> + <xsd:attribute name="number" type="xsd:int"/> + </xsd:complexType> + <xsd:complexType name="EmployeeType"> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="SN" type="xsd:ID"/> + <xsd:attribute name="manager" type="xsd:boolean"/> + </xsd:complexType> + <xsd:complexType name="BookType"> + <xsd:restriction base="company:PublicationType" /> + <xsd:element name="author" type="xsd:string" maxOccurs="1"/> + </xsd:complexType> + <xsd:complexType name="MagazineType"> + <xsd:restriction base="company:PublicationType" /> + <xsd:element name="editor" type="xsd:string" maxOccurs="1"/> + </xsd:complexType> + <xsd:complexType name="PublicationType"> + <xsd:element name="title" type="xsd:string" maxOccurs="1"/> + </xsd:complexType> + <xsd:element name="Book" type="company:BookType" substitutionGroup="Publication" /> + <xsd:element name="Magazine" type="company:MagazineType" substitutionGroup="company:Publication" /> + </xsd:schema> + diff --git a/cpp/sdo/samples/misc/deploy.bat b/cpp/sdo/samples/misc/deploy.bat new file mode 100644 index 0000000000..fb2bec5a1f --- /dev/null +++ b/cpp/sdo/samples/misc/deploy.bat @@ -0,0 +1,52 @@ +@echo off + +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. + + +setlocal + +if . == .%1 ( +echo sample root not specified +goto usage +) +set deploydir=%TUSCANY_SDOCPP%\samples\misc\deploy +set srcdir=%1 + +if . == .%2 ( +echo input directory not specified +goto usage +) +set inpath=%2 +echo %inpath% + +if not exist %TUSCANY_SDOCPP%\samples mkdir %TUSCANY_SDOCPP%\samples +if not exist %TUSCANY_SDOCPP%\samples\misc mkdir %TUSCANY_SDOCPP%\samples\misc +if not exist %TUSCANY_SDOCPP%\samples\misc\deploy mkdir %TUSCANY_SDOCPP%\samples\misc\deploy +if not exist %TUSCANY_SDOCPP%\samples\misc\deploy\bin mkdir %TUSCANY_SDOCPP%\samples\misc\deploy\bin +copy %srcdir%\*.xsd %deploydir% +copy %srcdir%\*.xml %deploydir% + +copy %inpath%\sdo_misc.exe %deploydir%\bin +if exist %inpath%\sdo_misc.pdb copy %inpath%\sdo_misc.pdb %deploydir%\bin + +goto end +:usage +echo Usage: deploy <sample-root> <build-output> +:end + +endlocal diff --git a/cpp/sdo/samples/misc/samples.cpp b/cpp/sdo/samples/misc/samples.cpp new file mode 100644 index 0000000000..4d1ee57c61 --- /dev/null +++ b/cpp/sdo/samples/misc/samples.cpp @@ -0,0 +1,36 @@ +/* + * 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. + */ + +/* $Rev$ $Date$ */ + +#include "samples.h" + +/** + * C main to run the sample + */ + +int main (int argc, char** argv) +{ + ObjectCreation::sample(); + XSDLoading::sample(); + ChangeSummarySave::sample(); + Substitutes::sample(); + Query::sample(); + return 0; +} diff --git a/cpp/sdo/samples/misc/samples.h b/cpp/sdo/samples/misc/samples.h new file mode 100644 index 0000000000..f39cc910f7 --- /dev/null +++ b/cpp/sdo/samples/misc/samples.h @@ -0,0 +1,54 @@ +/* + * 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. + */ + +/* $Rev$ $Date$ */ + +#pragma warning(disable:4786) + +#include "commonj/sdo/SDO.h" + + +using namespace commonj::sdo; + + + +class ObjectCreation { + public: + static void sample(); +}; + +class XSDLoading { + public: + static void sample(); +}; + +class ChangeSummarySave { + public: + static void sample(); +}; + +class Substitutes { + public: + static void sample(); +}; + +class Query { + public: + static void sample(); +};
\ No newline at end of file |