From 411b21bf3464d7991857587311164631036ee35d Mon Sep 17 00:00:00 2001 From: Matthew Peters Date: Wed, 20 Jul 2005 10:21:32 +0000 Subject: [PATCH] Substantial WS change to get one-space indentation, plus - + - SDO Functions - SDO + SDO Functions + SDO - -
- &reftitle.intro; - - - &warn.experimental; - - - Service Data Objects (SDOs) are designed to simplify working with - heterogeneous data whilst also being tailored for service-oriented - applications. Using SDO, developers can uniformly manipulate data for - hetergeneous data sources, such as relational databases and XML. - - - SDOs are based on the concept of disconnected data graphs. A data - graph is a tree structure of data objects, navigable via their containment - references. A containment reference is an aggregation relationship. For - example, a Company data object might consists of a number of Department - data objects and therefore the Company would have a containment - reference to the Departments. A data graph also allows non-containment - references. These are references between data objects within the same - tree. For example, one Employee data object might reference another - to identify a career mentor. - - - The task of connecting an application to a data source is - performed by a Data Access Service (DAS). Applications use a DAS to retrieve - an SDO from a data source. The application can then manipulate the - SDO and use a DAS to write it back to the same, or an alternative, - data source. - - - See the - list of Data Access Services - for details on those - currently available. In addition to the provided DASs, SDO also - provides interfaces to enable others to be implemented (see the section on - SDO Data Access Services Interface - for more details). - - - This extension is derived from concepts taken from the - - Service Data Objects specification - -. - -
+ +
+ &reftitle.intro; + + + &warn.experimental; + + + Service Data Objects (SDOs) are designed to simplify working with + heterogeneous data whilst also being tailored for service-oriented + applications. Using SDO, developers can uniformly manipulate data for + hetergeneous data sources, such as relational databases and XML. + + + SDOs are based on the concept of disconnected data graphs. A data + graph is a tree structure of data objects, navigable via their containment + references. A containment reference is an aggregation relationship. For + example, a Company data object might consists of a number of Department + data objects and therefore the Company would have a containment + reference to the Departments. A data graph also allows non-containment + references. These are references between data objects within the same + tree. For example, one Employee data object might reference another + to identify a career mentor. + + + The task of connecting an application to a data source is + performed by a Data Access Service (DAS). Applications use a DAS to retrieve + an SDO from a data source. The application can then manipulate the + SDO and use a DAS to write it back to the same, or an alternative, + data source. + + + See the + list of Data Access Services + for details on those + currently available. In addition to the provided DASs, SDO also + provides interfaces to enable others to be implemented (see the section on + SDO Data Access Services Interface + for more details). + + + This extension is derived from concepts taken from the + + Service Data Objects specification + + +
-
- &reftitle.required; - - The SDO extension requires PHP 5.1 or higher. - - - SDO XML Data Access Service, which is built as part of this extension, requires libxml2 - (Tested with libxml2 2.6.19) which can be downloaded from &url.libxml;" - -
+
+ &reftitle.required; + + The SDO extension requires PHP 5.1 or higher. + + + SDO + XML Data Access Service + , which is built as part of this extension, requires libxml2 + (Tested with libxml2 2.6.19) which can be downloaded from + &url.libxml; + . + +
+
+ &reftitle.install; + + + An automated installation process using PEAR will be supplied soon. + Meanwhile, you can build the extension manually using the steps below. + + + + Linux intallation steps + + The following instructions describe how to install the SDO extension on Linux. Note, these + steps will also install the + XML Data Access Service + which is packaged as part of this extension. + + + Note, if you built your PHP installation in a different location, using + --prefix + , + then you will need to adjust the + ./configure + steps below accordingly. + + + + Download the SDO extension from the pecl/sdo directory on CVS. + + + + + The SDO and SDO_DAS_XML are implemented as a separate internal 'core' C++ libraries which must be built before building the main extension. + This can be done by using the following steps: + + + + + Go to the core library directory: + cd sdo/sdolib + + + + + Run + ./configure + + + + + The following step is required to ensure + g++ + , and NOT + gcc + is used to build the the libraries. + + + Open + libtool + created by the configure script and + change the line which says + CC="gcc" + to + CC="g++" + . + + + + + Run + make; make install + + + + + + + Change to the main extension directory: + cd .. + + + + + Run + phpize + , which will set up the environment to compile both SDO and the XML Data Access Service. + + + + + Next run + ./configure; make; make install + + + Note, the compilation process checks for internal 'core' library which was installed in the previous build steps. + + + Note, if you used + --prefix + for the internal 'core' library build, then you will need to add + --with-sdolibs=... + to the + ./configure + to point to the destination where the libraries were built. + + + + + Make sure that these modules are loaded by PHP, by adding + extension=sdo.so + and + extension=sdo_das_xml.so + to your + php.ini + file. + + + +
+
+ Data Access Services + + The table below lists the currently provided SDO Data Access Services: + + + + + DAS Name + Description + + + + + + SDO_DAS_XML + + + An XML Data Access Service supporting reading/writing + SDOs as XML documents or via a Web URL to supporting things like RSS feeds. + + + + + SDO_DAS_Relational + + + A PDO-based Data Access Service supporting reading/writing SDO to relational + data sources. Implements an optimistic concurrency policy for updates. + + + + + + +
-
- &reftitle.install; - - - An automated installation process using PEAR will be supplied soon. - Meanwhile, you can build the extension manually using the steps below. - - - - Linux intallation steps - - The following instructions describe how to install the SDO extension on Linux. Note, these - steps will also install the - XML Data Access Service - which is packaged as part of this extension. - - - Note, if you built your PHP installation in a different location, using --prefix, - then you will need to adjust the ./configure steps below accordingly. - - - - Download the SDO extension from the pecl/sdo directory on CVS. - - - - - The SDO and SDO_DAS_XML are implemented as a separate internal 'core' C++ libraries which must be built before building the main extension. - This can be done by using the following steps: - - - - - Go to the core library directory: cd sdo/sdolib - - - - - Run ./configure - - - - - The following step is required to ensure g++, and NOT gcc - is used to build the the libraries. - - - Open libtool created by the configure script and - change the line which says CC="gcc" to CC="g++". - - - - - Run make; make install - - - - - - - Change to the main extension directory: cd .. - - - - - Run phpize, which will set up the environment to compile both SDO and the XML Data Access Service. - - - - - Next run ./configure; make; make install. - - - Note, the compilation process checks for internal 'core' library which was installed in the previous build steps. - - - Note, if you used --prefix for the internal 'core' library build, then you will need to add --with-sdolibs=... - to the ./configure to point to the destination where the libraries were built. - - - - - Make sure that these modules are loaded by PHP, by adding - extension=sdo.so and extension=sdo_das_xml.so - to your php.ini file. - - - -
+
+ Limitations + + Implementation Limitations + + The following are limitations in the current SDO implementation: + + + + There is no support for multi-byte character sets. + + + + + The class constants SDO_DAS_ChangeSummary::NONE, SDO_DAS_ChangeSummary::MODIFICATION, + SDO_DAS_ChangeSummary::ADDITION, SDO_DAS_ChangeSummary::DELETION are unavailable, + because of an outstanding problem. + + + As a bypass, the global constants SDO_DAS_CHANGE_SUMMARY_NONE, + SDO_DAS_CHANGE_SUMMARY_MODIFICATION, SDO_DAS_CHANGE_SUMMARY_ADDITION, + SDO_DAS_CHANGE_SUMMARY_DELETION are provided. + + + + + You may see problems when serializing and unserializing graphs which include + non-containment references. We are working on these. + + + + + SDO Limitations + + The following SDO 2.0 concepts are not supported in the current PHP implementation. + It is not necessarily the case that these will all be added over time. + Their inclusion will depend on community requirements. + + + + Abstract types and type derivation. + + + + + Open types. + + + + + Bi-directional relationships. + + + + + Type and property alias names. + + + + + Default property values. + + + + + Read-only properties. + + + + + Model introspection. + + + + + XMLHelper/XSDHelper (the XML DAS provide a lot of this functionality) + + + + + TypeHelper (the SDO_DAS_DataFactory provides this functionality) + + + +
- -
- Data Access Services - - The table below lists the currently provided SDO Data Access Services: - - - - - DAS Name - Description - - - - - - SDO_DAS_XML - - - An XML Data Access Service supporting reading/writing - SDOs as XML documents or via a Web URL to supporting things like RSS feeds. - - - - - SDO_DAS_Relational - - - A PDO-based Data Access Service supporting reading/writing SDO to relational - data sources. Implements an optimistic concurrency policy for updates. - - - - - - -
- - -
- Limitations - - Implementation Limitations - - The following are limitations in the current SDO implementation: - - - - There is no support for multi-byte character sets. - - - - - The class constants SDO_DAS_ChangeSummary::NONE, SDO_DAS_ChangeSummary::MODIFICATION, - SDO_DAS_ChangeSummary::ADDITION, SDO_DAS_ChangeSummary::DELETION are unavailable, - because of an outstanding problem. - - - As a bypass, the global constants SDO_DAS_CHANGE_SUMMARY_NONE, - SDO_DAS_CHANGE_SUMMARY_MODIFICATION, SDO_DAS_CHANGE_SUMMARY_ADDITION, - SDO_DAS_CHANGE_SUMMARY_DELETION are provided. - - - - - You may see problems when serializing and unserializing graphs which include - non-containment references. We are working on these. - - - - - SDO Limitations - - The following SDO 2.0 concepts are not supported in the current PHP implementation. - It is not necessarily the case that these will all be added over time. - Their inclusion will depend on community requirements. - - - - Abstract types and type derivation. - - - - - Open types. - - - - - Bi-directional relationships. - - - - - Type and property alias names. - - - - - Default property values. - - - - - Read-only properties. - - - - - Model introspection. - - - - - XMLHelper/XSDHelper (the XML DAS provide a lot of this functionality) - - - - - TypeHelper (the SDO_DAS_DataFactory provides this functionality) - - - -
- -
- &reftitle.examples; - - The examples below assume an SDO created with the schema - and instance information shown below, using the XML Data Access Service. - - - The schema describes a company data object. The company contains department data objects, and - each department contains employee data objects. - Each data object has a number of primitive properties to describe things like name, serial number, etc. - Finally, the company data object also has a non-containment reference to one of the employee data - objects to identify them as the 'employeeOfTheMonth'. - - - - + &reftitle.examples; + + The examples below assume an SDO created with the schema + and instance information shown below, using the XML Data Access Service. + + + The schema describes a company data object. The company contains department data objects, and + each department contains employee data objects. + Each data object has a number of primitive properties to describe things like name, serial number, etc. + Finally, the company data object also has a non-containment reference to one of the employee data + objects to identify them as the 'employeeOfTheMonth'. + + + + ]]> - - + + - - The instance document below describes a single company, called 'MegaCorp', w - hich contains a single department, called 'Advanced Technologies'. - The Advanced Technologies department contains three employees. - The company employeeOfTheMonth is referencing the second employee, 'Jane Doe'. - + + The instance document below describes a single company, called 'MegaCorp', + which contains a single department, called 'Advanced Technologies'. + The Advanced Technologies department contains three employees. + The company employeeOfTheMonth is referencing the second employee, 'Jane Doe'. + - - - + + @@ -349,245 +377,241 @@ sdoxml:propertyType="company:EmployeeType"/> ]]> - - + + -
+ -
- Setting and Getting Property Values - - The following examples assume - $company - is a data object created from the schema and instance document shown above. - - - - Access via Property names - - Data object properties can be accessed using the object property - access syntax. The following gets the list of departments (containing a - single department), and sets the company name to 'Acme'. - - - + Setting and Getting Property Values + + The following examples assume + $company + is a data object created from the schema and instance document shown above. + + + + Access via Property names + + Data object properties can be accessed using the object property + access syntax. The following gets the list of departments (containing a + single department), and sets the company name to 'Acme'. + + +departments; $company->name = 'Acme'; ?> ]]> - - - + + + - - - Access via Property index - - Data object properties can be accessed via their property index - using array syntax. The property index is the position at which the - property's definition appears in the model (in this case the xml schema). - We can see from the schema listing above that the departments element is the - first company property defined and the company name attribute is the second - company property (the SDO interface makes no distinction between XML attributes - and elements). The following gets the list of departments (containing a - single department), and sets the company name to 'Acme'. - - - + + Access via Property index + + Data object properties can be accessed via their property index + using array syntax. The property index is the position at which the + property's definition appears in the model (in this case the xml schema). + We can see from the schema listing above that the departments element is the + first company property defined and the company name attribute is the second + company property (the SDO interface makes no distinction between XML attributes + and elements). The following gets the list of departments (containing a + single department), and sets the company name to 'Acme'. + + + ]]> - - - + + + - - - Data Object Iteration - - We can iterate over the properties of a data object using foreach. - The following iterates over the company properties; name, departments and - employeeOfTheMonth. - - - + + Data Object Iteration + + We can iterate over the properties of a data object using foreach. + The following iterates over the company properties; name, departments and + employeeOfTheMonth. + + + $value) { ... } ?> ]]> - - - For the first iteration, $name will be 'name' and $value - will be 'Acme'. For the second iteration, $name will be - 'departments' and $value will be an SDO_List (because departments is a - many-valued property (stated - maxOccurs="unbouded" - in the schema)) containing a single data object of type DepartmentType. - For the third iteration, $name will be 'employeeOfTheMonth' and $value - will be a data object of type EmployeeType. - - - + + + For the first iteration, $name will be 'name' and $value + will be 'Acme'. For the second iteration, $name will be + 'departments' and $value will be an SDO_List (because departments is a + many-valued property (stated + maxOccurs="unbouded" + in the schema)) containing a single data object of type DepartmentType. + For the third iteration, $name will be 'employeeOfTheMonth' and $value + will be a data object of type EmployeeType. + + + - - - Many-valued Property Iteration - - Many-valued properties can also be iterated over using - foreach. The following iterates over the company's departments. - - - + + Many-valued Property Iteration + + Many-valued properties can also be iterated over using + foreach. The following iterates over the company's departments. + + +departments as $department) { ... } ?> ]]> - - - Each iteration will assign the next department in the - list to the variable - $department -. - - - + + + Each iteration will assign the next department in the + list to the variable + $department + . + + + - - - - - Many-valued Element Access - - - We can access individual elements of many-valued properties - using array syntax. The following accesses the first department in the - company. - - - + + Many-valued Element Access + + We can access individual elements of many-valued properties + using array syntax. The following accesses the first department in the + company. + + +departments[0]; ?> ]]> - - - + + + - - - Nested Property Access - - We can use nested property access to navigate the data object - instance structure. The following gets and sets the name of the first - department. - - - + + Nested Property Access + + We can use nested property access to navigate the data object + instance structure. The following gets and sets the name of the first + department. + + +departments[0]->name; $company->departments[0]->name = 'Emerging Technologies'; ?> ]]> - - - + + + - - - - Simple XPath support - - We can access properties using XPath-like (an augmented - sub-set of XPath) expressions, the simplest form of which is the property - name. The following sets the company name and gets the employeeOfTheMonth. - - - + + Simple XPath support + + We can access properties using XPath-like (an augmented + sub-set of XPath) expressions, the simplest form of which is the property + name. The following sets the company name and gets the employeeOfTheMonth. + + + ]]> - - - + + + - - - Simple XPath support - - We can use chained array access calls to navigate the data - object instance structure. The following gets and sets the name of the - first department. - - - + + Simple XPath support + + We can use chained array access calls to navigate the data + object instance structure. The following gets and sets the name of the + first department. + + + ]]> - - - + + + - - - XPath Navigation - - We can use XPath expressions to navigate the data object - instance structure. Two forms of indexing into many-valued properties are - supported. The first is the standard XPath array syntax with the indexing - starting at one, the second is an SDO extension to XPath with an index - starting at zero. The following both get the second employee from the - first department. - - - + + XPath Navigation + + We can use XPath expressions to navigate the data object + instance structure. Two forms of indexing into many-valued properties are + supported. The first is the standard XPath array syntax with the indexing + starting at one, the second is an SDO extension to XPath with an index + starting at zero. The following both get the second employee from the + first department. + + + ]]> - - - + + + - - - XPath Querying - - We can use XPath to query and identify parts of a data object based - on instance data. The following retrieves the manager from the - 'Advanced Technologies' department. - - - + + XPath Querying + + We can use XPath to query and identify parts of a data object based + on instance data. The following retrieves the manager from the + 'Advanced Technologies' department. + + + ]]> - - - + + + - - - Creating child data object - - A data object can be a factory for its child data objects. A child - data object is automatically part of the data graph. The - following add a new employee to the 'Advanced Technologies' department. - - - + + Creating child data object + + A data object can be a factory for its child data objects. A child + data object is automatically part of the data graph. The + following add a new employee to the 'Advanced Technologies' department. + + +createDataObject('employees'); @@ -596,71 +620,71 @@ sdoxml:propertyType="company:EmployeeType"/> $new_hire->manager = false; ?> ]]> - - - + + + - - - Unset referenced data object - - We can use the - isset -and - unset -functions to test and remove items - from the data object. - - - The following removes the 'employeeOfTheMonth' from the company. - If this were a containment reference then the - employee would be removed from the company (probably not a good idea to - sack your best employee each month!), but since this is a non-containment - reference, the employee being referenced will remain in the department in - the company, but will no longer be accessible via the employeeOfTheMonth - property. - - - + + Unset referenced data object + + We can use the + isset + and + unset + functions to test and remove items + from the data object. + + + The following removes the 'employeeOfTheMonth' from the company. + If this were a containment reference then the + employee would be removed from the company (probably not a good idea to + sack your best employee each month!), but since this is a non-containment + reference, the employee being referenced will remain in the department in + the company, but will no longer be accessible via the employeeOfTheMonth + property. + + +employeeOfTheMonth) { unset($company->employeeOfTheMonth); } ?> ]]> - - - -
+ + + + -
- Working with Sequenced Data Objects - - Sequenced data objects are SDOs which can track property - ordering across the properties of a data object. They can also - contain unstructured text elements (text element which do not - belong to any of the SDO's properties). Sequenced data objects are - useful for working with XML documents which allow unstructured text (i.e. - mixed=true) or if the elements can be interleaved ( - ]]>). This can occur for example when - the schema defines maxOccurs>1 on a - element which is a complexType with a choice order indicator. - - - The examples below assume an SDO created with the following schema - and instance information, using the XML Data Access Service. - - - The schema below describes the format of a letter. The letter can - optionally contain three properties; date, firstName, and lastName. - The schema states - mixed="true" -which means that - unstructured text can be interspersed between the three properties. - - - - + Working with Sequenced Data Objects + + Sequenced data objects are SDOs which can track property + ordering across the properties of a data object. They can also + contain unstructured text elements (text element which do not + belong to any of the SDO's properties). Sequenced data objects are + useful for working with XML documents which allow unstructured text (i.e. + mixed=true) or if the elements can be interleaved ( + ]]>). This can occur for example when + the schema defines maxOccurs>1 on a + element which is a complexType with a choice order indicator. + + + The examples below assume an SDO created with the following schema + and instance information, using the XML Data Access Service. + + + The schema below describes the format of a letter. The letter can + optionally contain three properties; date, firstName, and lastName. + The schema states + mixed="true" + which means that + unstructured text can be interspersed between the three properties. + + + + @@ -674,17 +698,17 @@ which means that ]]> - - + + - - The following is an instance letter document. It contains the - three letter properties; date, firstName and lastName, and has - unstructured text elements for the address and letter body. - - - - + The following is an instance letter document. It contains the + three letter properties; date, firstName and lastName, and has + unstructured text elements for the address and letter body. + + + + March 1, 2005 Mutual of Omaha @@ -696,175 +720,173 @@ which means that Your premium is past due. ]]> - - - - When loaded, the letter data object will have the sequence and - property indices shown in the table below: - - - - - Sequnece Index - Property Index:Name - Value - - - - - 0 - 0:date - March 1, 2005 - - - 1 - - - Mutual of Omaha - - - 2 - - - Wild Kingdom, USA - - - 3 - - - Dear - - - 4 - 1:firstName - Casy - - - 5 - 2:lastName - Crocodile - - - 6 - - - Please buy more shark repellent. - - - 7 - - - Your premium is past due. - - - - - + + + + When loaded, the letter data object will have the sequence and + property indices shown in the table below: + + + + + Sequence Index + Property Index:Name + Value + + + + + 0 + 0:date + March 1, 2005 + + + 1 + - + Mutual of Omaha + + + 2 + - + Wild Kingdom, USA + + + 3 + - + Dear + + + 4 + 1:firstName + Casy + + + 5 + 2:lastName + Crocodile + + + 6 + - + Please buy more shark repellent. + + + 7 + - + Your premium is past due. + + + + + - - To ensure sequence indices are maintained, sequenced data objects - should be manipulated through the SDO_Sequence interface. This allows - the data object's instance data to be manipulated in terms of the sequence - index as opposed to the property index (shown in the table above). The - following examples assume the letter instance has been loaded into a - data object referenced by the variable - $letter -. -. - - Getting the SDO_Sequence interface - - We obtain a data object's sequence using the - getSequence -method. The follow gets the - sequence for the letter data object. - - - + To ensure sequence indices are maintained, sequenced data objects + should be manipulated through the SDO_Sequence interface. This allows + the data object's instance data to be manipulated in terms of the sequence + index as opposed to the property index (shown in the table above). The + following examples assume the letter instance has been loaded into a + data object referenced by the variable + $letter + . + + Getting the SDO_Sequence interface + + We obtain a data object's sequence using the + getSequence + method. The follow gets the + sequence for the letter data object. + + +getSequence(); ?> ]]> - - - - - All subsequent examples assume that the - $letter_seq - variable has been assigned the sequence for the letter data object. - + + + + + All subsequent examples assume that the + $letter_seq + variable has been assigned the sequence for the letter data object. + - - - Get/set sequence values - - We can get and set individual values (including unstructured text) - using the sequence index. The following sets the firstName to 'Snappy' - and gets the last sequence values (the unstructured text, 'Your premium is - past due.'). - - - + + Get/set sequence values + + We can get and set individual values (including unstructured text) + using the sequence index. The following sets the firstName to 'Snappy' + and gets the last sequence values (the unstructured text, 'Your premium is + past due.'). + + + ]]> - - - + + + - - - Sequence iteration - - We can iterate through the individual sequence values using foreach. - The following runs through the individual values in sequence order. - - - + + Sequence iteration + + We can iterate through the individual sequence values using foreach. + The following runs through the individual values in sequence order. + + +getSequence() as $value) { ... } ?> ]]> - - - + + + - - - Sequence versus Data Object - - Setting values through the data object interface may result in the - value not being part of the sequence. A value set through the data - object will only be accessible through the sequence if the property was - already part of the sequence. The following example sets the - lastName through the data object and gets it through the sequence. - This is fine because lastName already exists in the sequence. If - it had not previously been set, then lastName would be set to - 'Smith', but would not be part of the sequence. - - - + + Sequence versus Data Object + + Setting values through the data object interface may result in the + value not being part of the sequence. A value set through the data + object will only be accessible through the sequence if the property was + already part of the sequence. The following example sets the + lastName through the data object and gets it through the sequence. + This is fine because lastName already exists in the sequence. If + it had not previously been set, then lastName would be set to + 'Smith', but would not be part of the sequence. + + + ]]> - - - + + + - - - Adding to a sequence - - We can add new values to a sequence using the - - SDO_Sequence::insert - -method. The following examples assume that the 'firstName' and - 'lastName' properties are initially unset. - - - + + Adding to a sequence + + We can add new values to a sequence using the + + SDO_Sequence::insert + + method. The following examples assume that the 'firstName' and 'lastName' properties are initially unset. + + +insert('Care of:', 1); ?> ]]> - - - + + + - - - Removing from a sequence - - We can use the - isset -and - unset -functions to test and remove items - from the sequence (Note: - unset -currently - leaves the values in the data object, but this behaviour is - likely to change to also remove the data from the data object). - Sequence behaves like a contiguous list and therefore removing - from the middle results in entries at higher indices being shifted - down. The following example tests to see if the first sequence - element is set and unsets it if is. - - - + + Removing from a sequence + + We can use the + isset + and + unset + functions to test and remove items + from the sequence (Note: + unset + currently + leaves the values in the data object, but this behaviour is + likely to change to also remove the data from the data object). + Sequence behaves like a contiguous list and therefore removing + from the middle results in entries at higher indices being shifted + down. The following example tests to see if the first sequence + element is set and unsets it if is. + + + ]]> - - - + + + +
+ + +
+ &reftitle.classes; + + SDO consists of two set of interfaces. The first set covers those + interfaces for use by SDO client applications. These are identified by + the package prefix 'SDO_'. The second set is those for use by Data + Access Service implementations and are identified by the package prefix + 'SDO_DAS_'. The majority of SDO users will not need to use or understand + the 'SDO_DAS_' interfaces. + + +
+ SDO Application Programmer Interface + +
+ + <classname>SDO_DataObject</classname> + + + The main interface through which data objects are manipulated. In + addition to the methods below, SDO_DataObject extends the + ArrayAccess, SDO_PropertyAccess (defines + __get + / + __set + methods for property access overloading), Iterator, and + Countable interfaces. + +
&reftitle.methods; + + + + getType - get the type of a data object + + + + + getSequnece - get the sequence for the data object + + + + + createDataObject - create a child data object + + + + + clear - unset the properties of a data object + + + + + getContainer - get the container (also known as 'parent') of this data object + + + + + getContainmentPropertyName - get the name by which the parent refers to this data object + + + +
+
+ +
+ + <classname>SDO_Sequence</classname> + + + The interface through which sequenced data objects can be accessed in + order to preserve ordering across a data object's properties and to allow + unstructured text. SDO_Sequence preserves contiguous indices and + therefore inserting or removing elements may results in other elements shifted up or + down. In addition to the methods below, SDO_Sequence extends the + ArrayAccess, Iterator and Countable interface. + +
+ &reftitle.methods; + + + + getPropertyIndex - get the property index for a given sequence index + + + + + getPropertyName - get the property name for a given sequence index + + + + + move - move an element from one property index to another + + + + + insert - insert a new value into the sequence + + + +
+
+ +
+ + <classname>SDO_List</classname> + + + The interface through which many-valued properties are manipulated. + In addition to the method defined below, SDO_List extends ArrayAccess, + Iterator and Coutable. SDO_List preserves contiguous indices and + therefore inserting or removing elements may results in other elements + shifted up or down. + +
+ &reftitle.methods; + + + + insert - insert a new value into the list + + + +
+
+ +
+ + <classname>SDO_DataFactory</classname> + + + The interface through which data objects can be created. A Data + Access Service is responsible for populating the model (i.e. configuring + the data factory with the type and structure information for the data + objects it can create.) for the factory and + can then optionally return an instance of, or implement, the + SDO_DataFactory interface. + +
+ &reftitle.methods; + + + + create - create a new data object + + + +
+
+
+ + +
+ + SDO Data Access Service Developer Interfaces + + + +
+ + <classname>SDO_DAS_DataObject</classname> + + + The interface through which a Data Access Service can access a data object's + SDO_DAS_ChangeSummary. + The change summary is used by the Data Access Service to check for conflicts + when applying changes back to a data source. + +
&reftitle.methods; + + + + getChangeSummary - get the change summary for a data object + + + + +
- -
- &reftitle.classes; - - SDO consists to two set of interfaces. The first set covers those - interfaces for use by SDO client applications. These are identified by - the package prefix 'SDO_'. The second set is those for use by Data - Access Service implementations and are identified by the package prefix - 'SDO_DAS_'. The majority of SDO users will not need to use or understand - the 'SDO_DAS_' interfaces. - +
+ + <classname>SDO_DAS_ChangeSummary</classname> + + + The interface through which the change history of a data + object is accessed. The change summary holds information for any + modifications on a data object which occurred since logging + was activated. In the case of deletions and modifications, the old + values are also held in the change summary. + + + If logging is no longer active + then the change summary only hold changes made up to the point when + logging was deactivated. Reactivating logging clears the change summary. + This is useful when a set of changes have been written out by a + DAS and the data object is to be reused. + +
+ &reftitle.methods; + + + + beginLogging - begin logging changes made to a data object + + + + + endLogging - end logging changes made to a data object + + + + + isLogging - test to see if change logging is on + + + + + getChangedDataObjects - get a list of the data objects which have been changed + + + + + getChangeType - get the type of change which has been made to a data object + + + + + getOldValues - get a list of old values for a data object + + + + + getOldContainer - get the old container data object for a deleted data object + + + +
+
-
- SDO Application Programmer Interface - - -
- - <classname>SDO_DataObject</classname> - - - The main interface through which data objects are manipulated. In - addition to the methods below, SDO_DataObject extends the - ArrayAccess, SDO_PropertyAccess (defines - __get -/ - __set - methods for property access overloading), Iterator, and - Countable interfaces - -
&reftitle.methods; - - - - getType - - get the type of a data object - - - - - getSequnece - - get the sequence for the data object - - - - - createDataObject - - create a child data object - - - - - clear - - unset the properties of a data object - - - - - getContainer - - get the container (also known as 'parent') of this data object - - - - - getContainmentPropertyName - - get the name by which the parent refers to this data object - - - -
-
- -
- - <classname>SDO_Sequence</classname> - - - The interface through which sequenced data objects can be accessed in - order to preserve ordering across a data object's properties and to allow - unstructured text. SDO_Sequence preserves contiguous indices and - therefore inserting or removing elements may results in other elements shifted up or - down. In addition to the methods below, SDO_Sequence extends the - ArrayAccess, Iterator and Countable interface. - -
- &reftitle.methods; - - - - getPropertyIndex - - get the property index for a given sequence index - - - - - getPropertyName - - get the property name for a given sequence index - - - - - move - - move an element from one property index to another - - - - - insert - - insert a new value into the sequence - - - -
-
- -
- - <classname>SDO_List</classname> - - - The interface through which many-valued properties are manipulated. - In addition to the method defined below, SDO_List extends ArrayAccess, - Iterator and Coutable. SDO_List preserves contiguous indices and - therefore inserting or removing elements may results in other elements - shifted up or down. - -
- &reftitle.methods; - - - - insert - - insert a new value into the list - - - -
-
- -
- - <classname>SDO_DataFactory</classname> - - - The interface through which data objects can be created. A Data - Access Service is responsible for populating the model (i.e. configuring - the data factory with the type and structure information for the data - objects it can create.) for the factory and - can then optionally return an instance of, or implement, the - SDO_DataFactory interface. - -
- &reftitle.methods; - - - - create - - create a new data object - - - -
-
-
- - -
- - SDO Data Access Service Developer Interfaces - - - -
- - <classname>SDO_DAS_DataObject</classname> - - - The interface through which a Data Access Service can access a data object's - SDO_DAS_ChangeSummary. - The change summary is used by the Data Access Service to check for conflicts - when applying changes back to a data source. - -
&reftitle.methods; - - - - getChangeSummary - - get the change summary for a data object - - - - -
-
- - -
- - <classname>SDO_DAS_ChangeSummary</classname> - - - The interface through which the change history of a data - object is accessed. The change summary holds information for any - modifications on a data object which occurred since logging - was activated. In the case of deletions and modifications, the old - values are also held in the change summary. - - - If logging is no longer active - then the change summary only hold changes made up to the point when - logging was deactivated. Reactivating logging clears the change summary. - This is useful when a set of changes have been written out by a - DAS and the data object is to be reused. - -
- &reftitle.methods; - - - - beginLogging - - begin logging changes made to a data object - - - - - endLogging - - end logging changes made to a data object - - - - - isLogging - - test to see if change logging is on - - - - - getChangedDataObjects - - get a list of the data objects which have been changed - - - - - getChangeType - - get the type of change which has been made to a data object - - - - - getOldValues - - get a list of old values for a data object - - - - - getOldContainer - - get the old container data object for a deleted data object - - - -
-
- -
- - <classname>SDO_DAS_Setting</classname> - - - The interface through which the old value for a property is - accessed. A list of settings is returned by the change summary method - - getOldValues - +
+ + <classname>SDO_DAS_Setting</classname> + + + The interface through which the old value for a property is + accessed. A list of settings is returned by the change summary method + + getOldValues + . - -
- &reftitle.methods; - - - - getPropertyIndex - - get the property index for the changed property - - - - - getPropertyName - - get the property name for the changed property - - - - - getValue - - get the old value for the changed property - - - - - getListIndex - - get the list index for the old value if it was part of + +
+ &reftitle.methods; + + + + getPropertyIndex - get the property index for the changed property + + + + + getPropertyName - get the property name for the changed property + + + + + getValue - get the old value for the changed property + + + + + getListIndex - get the list index for the old value if it was part of a many-valued property - - - - - isSet - - test to see if the property was set prior to being modified - - - -
-
- -
- - <classname>SDO_DAS_DataFactory</classname> - - - The interface for constructing the model for an SDO_DataObject. - The SDO_DAS_DataFactory is an abstract class providing a static - method which returns a concrete data factory implementation. - The implementation is used by Data Access Services to create an SDO model from their model. - For example, a Relational Data Access Service might create and populate an - SDO_DAS_DataFactory model based on a schema for a relational database. - -
- &reftitle.methods; - - - - getDataFactory - - static methods for getting a concrete data factory instance - - - - - - - addType - - add a new type to the SDO model - - - - - - - addPropertyToType - - add a new property to a type definition in the SDO model - - - -
-
-
+
+ + + + isSet - test to see if the property was set prior to being modified + + + +
- &reference.sdo.constants; +
+ + <classname>SDO_DAS_DataFactory</classname> + + + The interface for constructing the model for an SDO_DataObject. + The SDO_DAS_DataFactory is an abstract class providing a static + method which returns a concrete data factory implementation. + The implementation is used by Data Access Services to create an SDO model from their model. + For example, a Relational Data Access Service might create and populate an + SDO_DAS_DataFactory model based on a schema for a relational database. + +
+ &reftitle.methods; + + + + getDataFactory - static methods for getting a concrete data factory instance + + + + + + + addType - add a new type to the SDO model + + + + + + + addPropertyToType - add a new property to a type definition in the SDO model + + + +
+
+
+
- + &reference.sdo.constants; + + &reference.sdo.functions;