tuscany-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From edslatt...@apache.org
Subject svn commit: r366158 [5/25] - in /incubator/tuscany/cpp/sdo: ./ bin/ dependencies/ include/ include/commonj/ include/commonj/sdo/ lib/ projects/ projects/tuscany_sdo/ projects/tuscany_sdo/sdo_runtime/ projects/tuscany_sdo/sdo_samples/ projects/tuscany_s...
Date Thu, 05 Jan 2006 10:58:55 GMT
Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/CopyHelper.cpp
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/CopyHelper.cpp?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/CopyHelper.cpp (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/CopyHelper.cpp Thu Jan  5 02:55:00 2006
@@ -0,0 +1,258 @@
+/*
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  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.
+ */
+
+/* $Rev$ $Date: 2005/12/22 16:54:14 $ */
+
+#include "commonj/sdo/Property.h"
+#include "commonj/sdo/Type.h"
+#include "commonj/sdo/TypeList.h"
+#include "commonj/sdo/Sequence.h"
+#include "commonj/sdo/RefCountingPointer.h"
+#include "commonj/sdo/DataObjectImpl.h"
+
+
+#include "commonj/sdo/CopyHelper.h"
+
+namespace commonj{
+namespace sdo{
+
+    /** CopyHelper provides static copying helper functions.
+     *
+     * CopyHelper provides shallow and deep copy of data objects.
+     * copyShallow() copies the DataType members of the data object.
+     * copy() copies all the members and recurses downwards though
+     * the data graph
+     */
+
+    void CopyHelper::transferitem(DataObjectPtr to, DataObjectPtr from, const Property& p)
+    {
+        switch (p.getTypeEnum())
+        {
+        case Type::BooleanType:
+            to->setBoolean(    p, from->getBoolean(p));
+            break;
+        case Type::ByteType:
+            to->setByte( p, from->getByte(p));
+            break;
+        case Type::CharacterType:
+            to->setCharacter( p, from->getCharacter(p));
+            break;
+        case Type::IntegerType: 
+            to->setInteger( p, from->getInteger(p));
+            break;
+        case Type::ShortType:
+            to->setShort( p,from->getShort(p));
+            break;
+        case Type::DoubleType:
+            to->setDouble( p, from->getDouble(p));
+            break;
+        case Type::FloatType:
+            to->setFloat( p, from->getFloat(p));
+            break;
+        case Type::LongType:
+            to->setLong( p, from->getLong(p));
+            break;
+        case Type::DateType:
+            to->setDate( p, from->getDate(p));
+            break;
+        case Type::BigDecimalType: 
+        case Type::BigIntegerType: 
+        case Type::UriType:
+        case Type::StringType:
+            {
+                unsigned int siz =     from->getLength(p);
+                if (siz > 0)
+                {
+                    wchar_t * buf = new wchar_t[siz];
+                    from->getString(p,buf, siz);
+                    to->setString(p, buf, siz);
+                    delete buf;
+                }
+            }
+            break;
+        case Type::BytesType:
+            {
+                unsigned int siz = from->getLength(p);
+                if (siz > 0)
+                {
+                    char * buf = new char[siz];
+                    from->getBytes(p,buf, siz);
+                    to->setBytes(p, buf, siz);
+                    delete buf;
+                }
+            }
+            break;
+        default:
+            break;
+        }  // switch
+    }
+
+    void CopyHelper::transferlist(DataObjectList& to, DataObjectList& from, Type::Types t)
+    {
+        for (int i=0;i< from.size(); i++)
+        {
+            switch (t)
+            {
+            case Type::BooleanType:
+                to.append(from.getBoolean(i));
+                break;
+            case Type::ByteType:
+                to.append(from.getByte(i));
+                break;
+            case Type::CharacterType:
+                to.append(from.getCharacter(i));
+                break;
+            case Type::IntegerType: 
+                to.append(from.getInteger(i));
+                break;
+            case Type::ShortType:
+                to.append(from.getShort(i));
+                break;
+            case Type::DoubleType:
+                to.append(from.getDouble(i));
+                break;
+            case Type::FloatType:
+                to.append(from.getFloat(i));
+                break;
+            case Type::LongType:
+                to.append(from.getLong(i));
+                break;
+            case Type::DateType:
+                to.append(from.getDate(i));
+                break;
+            case Type::BigDecimalType: 
+            case Type::BigIntegerType: 
+            case Type::UriType:
+            case Type::StringType:
+                {
+                    unsigned int siz = from.getLength(i);
+                    if (siz > 0) 
+                    {
+                        wchar_t * buf = new wchar_t[siz];
+                        from.getString(i,buf,siz);
+                        to.append(buf,siz);
+                        delete buf;
+                    }
+                }
+                break;
+
+            case Type::BytesType:
+                {
+                    unsigned int siz = from.getLength(i);
+                    if (siz > 0) 
+                    {
+                        char * buf = new char[siz];
+                        from.getBytes(i,buf,siz);
+                        to.append(buf,siz);
+                        delete buf;
+                    }
+                }
+                break;
+
+            default:
+                break;
+            } // case
+        } // for
+    } // method
+
+    /** CopyHelper provides static copying helper functions.
+     *
+     * copyShallow() copies the DataType members of the data object.
+     * copy() copies all the members and recurses downwards though
+     * the data graph
+     */
+    DataObjectPtr CopyHelper::copyShallow(DataObjectPtr dataObject)
+    {
+        return internalCopy(dataObject, false);
+        
+    }
+
+    /** CopyHelper provides static copying helper functions.
+     *
+     * copyShallow() copies the DataType members of the data object.
+     * copy() copies all the members and recurses downwards though
+     * the data graph
+     */
+    DataObjectPtr CopyHelper::copy(DataObjectPtr dataObject)
+    {
+        return internalCopy(dataObject, true);
+    }
+
+    DataObjectPtr CopyHelper::internalCopy(DataObjectPtr dataObject,
+                                           bool fullCopy)
+    {
+
+        DataObject* theob = dataObject;
+        DataFactoryPtr fac = ((DataObjectImpl*)theob)->getDataFactory();
+        if (!fac) return 0;
+
+        const Type& t = dataObject->getType();
+        DataObjectPtr newob = fac->create(t);
+        if (!newob) return 0;
+
+        PropertyList pl = dataObject->getInstanceProperties();
+        for (int i=0;i < pl.size(); i++)
+        {
+            if (dataObject->isSet(pl[i]))
+            {
+                // data objects are only copied in the deep copy case
+                if (pl[i].getType().isDataObjectType()) 
+                {
+                    if (!fullCopy) 
+                    {
+                        continue;
+                    }
+                    else
+                    {
+                        if (pl[i].isMany())
+                        {
+                            DataObjectList& dolold = dataObject->getList(pl[i]);
+                            DataObjectList& dolnew = newob->getList(pl[i]);
+                            for (int i=0;i< dolold.size(); i++)
+                            {
+                                dolnew.append(internalCopy(dolold[i],true));
+                            }
+                        }
+                        else 
+                        {
+                            DataObjectPtr dob = dataObject->getDataObject(pl[i]);
+                            newob->setDataObject(pl[i],internalCopy(dob,true));
+                        }
+                    }
+                }
+                else 
+                {
+                    if (pl[i].isMany())
+                    {
+                        DataObjectList& dolold = dataObject->getList(pl[i]);
+                        DataObjectList& dolnew = newob->getList(pl[i]);
+                        transferlist(dolnew,dolold, pl[i].getTypeEnum());
+                    }
+                    else 
+                    {
+                        transferitem(newob,dataObject, pl[i]);
+                    }
+                } // else
+            } 
+        } 
+        return newob;
+    }
+    
+
+}
+};
+

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/CopyHelper.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/CopyHelper.cpp
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/CopyHelper.h
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/CopyHelper.h?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/CopyHelper.h (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/CopyHelper.h Thu Jan  5 02:55:00 2006
@@ -0,0 +1,69 @@
+/*
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  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.
+ */
+
+/* $Rev$ $Date: 2005/12/22 16:54:14 $ */
+
+#ifndef _COPYHELPER_H_
+#define _COPYHELPER_H_
+
+
+#include "commonj/sdo/DataObject.h"
+#include "commonj/sdo/RefCountingPointer.h"
+
+namespace commonj{
+namespace sdo{
+
+    /** CopyHelper provides static copying helper functions.
+     *
+     * CopyHelper provides shallow and deep copy of data objects.
+     * copyShallow() copies the DataType members of the data object.
+     * copy() copies all the members and recurses downwards though
+     * the data graph
+     */
+    
+class CopyHelper
+{
+    public:
+
+    /** CopyHelper provides static copying helper functions.
+     *
+     * CopyHelper provides shallow and deep copy of data objects.
+     * copyShallow() copies the DataType members of the data object.
+     * copy() copies all the members and recurses downwards though
+     * the data graph
+     */
+    static SDO_API DataObjectPtr copyShallow(DataObjectPtr dataObject);
+    
+    /** CopyHelper provides static copying helper functions.
+     *
+     * CopyHelper provides shallow and deep copy of data objects.
+     * copyShallow() copies the DataType members of the data object.
+     * copy() copies all the members and recurses downwards though
+     * the data graph
+     */
+    static SDO_API DataObjectPtr copy(DataObjectPtr dataObject);
+
+    private:
+    static void transferlist(DataObjectList& to, DataObjectList& from, Type::Types t);
+    static void transferitem(DataObjectPtr   to, DataObjectPtr   from, const Property& p);
+    static DataObjectPtr internalCopy(DataObjectPtr dataObject, bool fullCopy);
+
+};
+};
+};
+
+#endif //_COPYHELPER_H_

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/CopyHelper.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/CopyHelper.h
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASProperty.cpp
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASProperty.cpp?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASProperty.cpp (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASProperty.cpp Thu Jan  5 02:55:00 2006
@@ -0,0 +1,32 @@
+/*
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  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.
+ */
+
+/* $Rev$ $Date: 2005/12/22 16:54:14 $ */
+
+#include "commonj/sdo/DASProperty.h"
+
+
+namespace commonj{
+namespace sdo{
+
+
+    DASProperty::~DASProperty()
+    {
+    }
+};
+};
+

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASProperty.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASProperty.cpp
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASProperty.h
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASProperty.h?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASProperty.h (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASProperty.h Thu Jan  5 02:55:00 2006
@@ -0,0 +1,46 @@
+/*
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  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.
+ */
+
+/* $Rev$ $Date: 2005/12/22 16:54:14 $ */
+
+#ifndef _DASPROPERTY_H_
+#define _DASPROPERTY_H_
+#include "commonj/sdo/Property.h"
+#include "commonj/sdo/DASValues.h"
+
+#include "commonj/sdo/disable_warn.h"
+
+namespace commonj{
+namespace sdo{
+    
+/** 
+ * DASProperty is a class to provide data access services
+ * with a more flexible Property
+ */
+
+    class DASProperty : public Property, public DASValues
+{
+     public:
+
+    virtual ~DASProperty();
+
+
+
+};
+};
+};
+#endif //_DMSDATAOBJECT_H_

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASProperty.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASProperty.h
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASType.cpp
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASType.cpp?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASType.cpp (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASType.cpp Thu Jan  5 02:55:00 2006
@@ -0,0 +1,32 @@
+/*
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  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.
+ */
+
+/* $Rev$ $Date: 2005/12/22 16:54:14 $ */
+
+#include "commonj/sdo/DASType.h"
+
+
+namespace commonj{
+namespace sdo{
+
+
+    DASType::~DASType()
+    {
+    }
+};
+};
+

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASType.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASType.cpp
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASType.h
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASType.h?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASType.h (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASType.h Thu Jan  5 02:55:00 2006
@@ -0,0 +1,53 @@
+/*
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  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.
+ */
+
+/* $Rev$ $Date: 2005/12/22 16:54:14 $ */
+
+#ifndef _DASTYPE_H_
+#define _DASTYPE_H_
+
+#include "commonj/sdo/disable_warn.h"
+
+
+#include "commonj/sdo/Type.h"
+#include "commonj/sdo/DASValues.h"
+namespace commonj{
+namespace sdo{
+    
+/** 
+ * DASType is a class to provide data access services
+ * with a more flexible Type
+ */
+
+class DASType : public Type, public DASValues
+{
+     public:
+
+    virtual ~DASType();
+
+
+    
+    virtual void setOpen(bool set) = 0;
+    virtual void setSequenced( bool set) = 0;
+    virtual void setBaseType( const Type* type) = 0;
+
+ 
+
+};
+};
+};
+#endif //_DASDATAOBJECT_H_

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASType.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASType.h
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValue.cpp
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValue.cpp?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValue.cpp (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValue.cpp Thu Jan  5 02:55:00 2006
@@ -0,0 +1,52 @@
+/*
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  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.
+ */
+
+/* $Rev$ $Date: 2005/12/22 16:54:14 $ */
+
+#include "commonj/sdo/DASValue.h"
+
+
+namespace commonj
+{
+    namespace sdo
+    {
+        
+        DASValue::DASValue()
+        {
+        }
+
+        DASValue::DASValue(const char* val)
+            : value(val)
+        {
+        }
+        
+        DASValue::~DASValue()
+        {
+
+        }
+
+        const char* DASValue::getValue() const
+        {
+            return value.c_str();
+        }
+        
+        
+    }
+}
+// end - namespace sdo
+
+

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValue.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValue.cpp
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValue.h
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValue.h?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValue.h (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValue.h Thu Jan  5 02:55:00 2006
@@ -0,0 +1,52 @@
+/*
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  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.
+ */
+
+/* $Rev$ $Date: 2005/12/22 16:54:14 $ */
+
+#ifndef _SDO_DASValue_H_
+#define _SDO_DASValue_H_
+
+
+#include "commonj/sdo/export.h"
+#include "string"
+
+
+namespace commonj
+{
+    namespace sdo
+    {
+        
+/** 
+ * DASValue is a class to hold information required by data 
+ * access services but not required by the data factory.
+ */        
+        class DASValue
+        {
+        public:
+            SDO_API DASValue();
+            SDO_API DASValue(const char* value);
+            SDO_API virtual ~DASValue();
+            SDO_API const char* getValue() const;
+
+        private:
+            std::string value;
+        
+        };
+        
+    }
+}
+#endif //_SDO_DASValue_H_

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValue.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValue.h
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValues.cpp
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValues.cpp?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValues.cpp (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValues.cpp Thu Jan  5 02:55:00 2006
@@ -0,0 +1,68 @@
+/*
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  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.
+ */
+
+/* $Rev$ $Date: 2005/12/22 16:54:14 $ */
+
+#include "commonj/sdo/DASValues.h"
+
+using namespace std;
+namespace commonj
+{
+    namespace sdo
+    {
+        
+/** 
+ * DASValues is a class to hold list of information required by data 
+ * access services but not required by the data factory.
+ */
+
+        DASValues::~DASValues()
+        {
+            DASValue_MAP::iterator propertyIter;
+            for (propertyIter = properties.begin() ; propertyIter != properties.end() ; ++propertyIter)
+            {
+                delete propertyIter->second;
+            }
+        }
+        
+        void DASValues::setDASValue(const char* name, DASValue* property)
+        {
+            DASValue* prop = getDASValue(name);
+            if (prop != 0 && prop != property)
+            {
+                delete prop;
+            }
+            properties[name] = property;
+        }
+        
+        DASValue* DASValues::getDASValue(const char* name)
+        {
+            DASValue_MAP::iterator propertyIter;
+            propertyIter = properties.find(name);
+            if(propertyIter != properties.end())
+            {
+                return propertyIter->second;
+            }
+            return NULL;
+            
+        }
+        
+    }
+}
+// end - namespace sdo
+
+

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValues.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValues.cpp
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValues.h
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValues.h?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValues.h (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValues.h Thu Jan  5 02:55:00 2006
@@ -0,0 +1,57 @@
+/*
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  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.
+ */
+
+/* $Rev$ $Date: 2005/12/22 16:54:14 $ */
+
+#ifndef _SDO_DASValues_H_
+#define _SDO_DASValues_H_
+
+#include "commonj/sdo/disable_warn.h"
+
+#include "commonj/sdo/export.h"
+#include "commonj/sdo/DASValue.h"
+#include "map"
+#include "string"
+
+
+
+namespace commonj
+{
+    namespace sdo
+    {
+        
+/** 
+ * DASValues is a class to hold list of information required by data 
+ * access services but not required by the data factory.
+ */
+        
+        class DASValues
+        {
+        public:
+            SDO_API virtual ~DASValues();
+            SDO_API virtual void setDASValue(const char* name, DASValue* value);
+            SDO_API virtual DASValue* getDASValue(const char* name);
+        private:
+
+            typedef std::map<std::string, DASValue*> DASValue_MAP;
+            DASValue_MAP properties;
+            
+        };
+        
+    }
+}
+#endif //_SDO_DASValues_H_

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValues.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DASValues.h
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataFactory.cpp
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataFactory.cpp?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataFactory.cpp (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataFactory.cpp Thu Jan  5 02:55:00 2006
@@ -0,0 +1,52 @@
+/*
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  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.
+ */
+
+/* $Rev$ $Date: 2005/12/22 16:54:14 $ */
+
+
+#include "commonj/sdo/DataFactory.h"
+#include "commonj/sdo/DataFactoryImpl.h"
+
+namespace commonj{
+namespace sdo{
+
+/**  
+ *    DataFactory holds metadata and creates DataObjects.
+ *
+ *    The DataFactory holds properties and types loaded from XSD, or
+ *    created using the DataFactory API.
+ */
+
+    DataFactory::~DataFactory()
+    {
+    }
+
+    RefCountingPointer<DataFactory> DataFactory::getDataFactory()
+    {
+    DataFactory* dob = (DataFactory*)(new DataFactoryImpl());
+    return RefCountingPointer<DataFactory> (dob);
+    }
+
+    RefCountingPointer<DataFactory> DataFactory::clone()
+    {
+    const DataFactoryImpl* df = (const DataFactoryImpl*)this;
+    DataFactory* dob = (DataFactory*)(new DataFactoryImpl(*df));
+    return RefCountingPointer<DataFactory> (dob);
+    }
+
+};
+};

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataFactory.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataFactory.cpp
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataFactory.h
URL: http://svn.apache.org/viewcvs/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataFactory.h?rev=366158&view=auto
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataFactory.h (added)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataFactory.h Thu Jan  5 02:55:00 2006
@@ -0,0 +1,501 @@
+/*
+ *
+ *  Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  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.
+ */
+
+/* $Rev$ $Date: 2005/12/22 16:54:14 $ */
+
+#ifndef _DATAFACTORY_H_
+#define _DATAFACTORY_H_
+
+#include "commonj/sdo/export.h"
+
+#include "commonj/sdo/TypeList.h"
+
+#include "commonj/sdo/RefCountingObject.h"
+#include "commonj/sdo/RefCountingPointer.h"
+#include "commonj/sdo/SDODate.h"
+#include "commonj/sdo/DASValue.h"
+
+
+namespace commonj{
+namespace sdo{
+
+class DataObject;
+class Type;
+
+/**  
+ *    DataFactory holds metadata and creates DataObjects.
+ *
+ *    The DataFactory holds properties and types loaded from XSD, or
+ *    created using the DataFactory API.
+ */
+
+class DataFactory : public RefCountingObject
+{
+    public:
+
+
+        /**
+         *  getDataFactory is static and gets a data factory
+         *
+         * Static method to get a new data factory, with a set of base Types defined. 
+         * With the data factory returned, either load Type definitions 
+         * from XSD, or use the DataFactory APIs to define the types.
+         */
+
+        static SDO_API DataFactoryPtr getDataFactory();
+        
+        virtual SDO_API ~DataFactory();
+
+
+        /**
+         *  DataFactory::clone copies a data factory
+         *
+         * Copy the data factory, and return a new data factory which 
+         * has the same properties and types, but is still able to have
+         * new types added to it.
+         */
+
+        SDO_API virtual DataFactoryPtr clone();
+
+        /**
+         *  DataFactory::create creates a data object.
+         *
+         * Create a data object based on the type specified as a parameter
+         * Once a data object has been created by this factory, the metadata
+         * (types and properties) may no longer be altered.
+         */
+
+        SDO_API virtual DataObjectPtr create(const char* uri, const char* typeName)  = 0;
+
+        SDO_API virtual DataObjectPtr create(const Type& type)  = 0;
+
+        /**
+         *  DataFactory::getType gets a type back from the factory.
+         *
+         * Get a type as specified in the data factory. Useful for creating
+         * data objects or querying properties.
+         */
+
+        virtual const Type& getType(const char* uri, const char* inTypeName) const = 0;
+
+
+        /**
+         *  DataFactory::getTypes gets a list of types back from the factory.
+         *
+         * Get all the types available within this data factory. Useful for 
+         * validating whether a data object is of the correct type to be 
+         * usable.
+         */
+
+        virtual TypeList getTypes() const = 0;
+
+        /**
+         *  DataFactory::addType adds a type definition.
+         *
+         * Add a type defintion to the factory. (Properties may be added later).
+         * The type is defined by its uri and name.
+         * -# The type may be sequenced - and therefore work with a sequence API.
+         * -# The type may be open, indicating that it may have extra properties
+         * added at runtime.
+         * -# The type may be abstract, so the data factory will not permit creation
+         * of instances.
+         * -# The type may be a data type, indicating that is will not have properties.
+         * The Type may inherit from another type, but that is specified later with a 
+         * call to setBaseType().
+         */
+
+        
+        virtual SDO_API void addType(const char* uri, const char* inTypeName,
+            bool isSequenced = false, 
+            bool isOpen      = false,
+            bool isAbstract  = false,
+            bool isDataType  = false) = 0;
+        
+
+        /**
+         *  DataFactory::setBaseType allows inheritance
+         *
+         * The type specified second in the parameters becomes the basetype
+         * of the first parameter.
+         * The second type will have all the properties of its baser type, followed
+         * by any additional properties of its own. The property indices of the properties
+         * of the subclass will begin at one more than the total number of
+         * properties of the supertype
+         * This relationship is fixed when the first data object of any type is
+         * created by the factory. Up to that point the base type may be changed.
+         * 
+         */
+
+        virtual SDO_API void setBaseType( 
+            const Type& type,
+            const Type& base) = 0;
+        
+        virtual SDO_API void setBaseType( 
+            const char* typeuri,
+            const char* typenam,
+            const char* baseuri,
+            const char* basename) = 0;
+
+        /**
+         *  DataFactory::setAlias sets an alternative name
+         *
+         * A Type may be known to the data factory by several different names.
+         * This method adds a new name for an existing property.
+         * 
+         */
+
+        virtual SDO_API void setAlias(const char* typeuri,
+            const char* typenam,
+            const char* alias) = 0;
+
+        /**
+         *  DataFactory::addPropertyToType adds properties
+         *
+         * The various addPropertyToType methods add a property to an 
+         * existing type in the factory, specifying the name of the new property,
+         * and the type of the new property - which must also be an existing type
+         * in this factory.
+         * -# The new property may be many-valued - so it will be a list of values.
+         * -# The property may be read-only , and may not be altered by user code - 
+         * However the value may be changed by data access service code.
+         * -# The property may be containment.
+         * The type of a property may be DataType, or DataObjectType (see Types).
+         * If the property is a DataType, then the actual value of the property is held
+         * within the data object containing the property.
+         * If the property is a DataObjectType, it may be containment, or reference. 
+         * Containment indicates that the value of the property is contained in the 
+         * data object, whilst reference indicates that the property is only a pointer to
+         * a value somewhere else in the data graph.
+         * 
+         */
+
+
+        virtual SDO_API void addPropertyToType(const char* uri, 
+            const char* inTypeName,
+            const char* propname,
+            const char* propTypeUri, 
+            const char* propTypeName,
+            bool  isMany  ,
+            bool  isReadOnly ,
+            bool  isContainment ) = 0;
+        
+        virtual SDO_API void addPropertyToType(const char* uri, 
+            const char* inTypeName,
+            const char* propname,
+            const Type& propType,
+            bool  isMany   ,
+            bool  isReadOnly ,
+            bool  isContainment ) = 0;
+        
+        virtual SDO_API void addPropertyToType(const Type& type, 
+            const char* propname,
+            const Type& propType,
+            bool  isMany   ,
+            bool  isReadOnly ,
+            bool  isContainment ) = 0;
+        
+        virtual SDO_API void addPropertyToType(const Type& type, 
+            const char* propname,
+            const char* propTypeUri, 
+            const char* propTypeName,
+            bool  isMany   ,
+            bool  isReadOnly ,
+            bool  isContainment ) = 0;
+        
+        
+        virtual SDO_API void addPropertyToType(const char* uri, 
+            const char* inTypeName,
+            const char* propname,
+            const char* propTypeUri, 
+            const char* propTypeName,
+            bool  isMany   = false) =0;
+        
+        virtual SDO_API void addPropertyToType(const char* uri, 
+            const char* inTypeName,
+            const char* propname,
+            const Type& propType,
+            bool  isMany   = false) =0;
+        
+        virtual SDO_API void addPropertyToType(const Type& type, 
+            const char* propname,
+            const Type& propType,
+            bool  isMany   = false) =0;
+        
+        virtual SDO_API void addPropertyToType(const Type& type, 
+            const char* propname,
+            const char* propTypeUri, 
+            const char* propTypeName,
+            bool  isMany   = false) =0;
+
+        /**
+         *  DataFactory::setOpposite sets an opposite name
+         *
+         * NOT IMPLEMENTED.
+         * 
+         */
+
+        virtual SDO_API void setOpposite( 
+            const Type& type,
+            const char* propName,
+            const Type& oppositetype,
+            const char* oppositePropName) = 0;
+        
+        
+        /**
+         *  DataFactory::setAlias sets a property alias name
+         *
+         * A property, like a type, may be known to the factory by several
+         * names.
+         */
+
+        virtual SDO_API void setAlias(const char* typeuri, 
+            const char* typname, 
+            const char* propname,
+            const char* alias) = 0;
+
+        /**
+         *  DataFactory::setPropertySubstitute sets a substitute for a property
+         *
+         * A property is of a specified type. However this method specifies another type
+         * which will be accepted by the data factory at runtime as a substitute for this
+         * property, and will be inserted into the parent data object as though it was
+         * a value for this property. The substitute name is then used for this property
+         * as a sort of alias.
+         * names.
+         */
+
+        virtual SDO_API void setPropertySubstitute(
+            const char* uri, 
+            const char* inTypeName,
+            const char* propname,
+            const char* subname,
+            const char* subTypeUri, 
+            const char* subTypeName) = 0;
+        
+
+        virtual SDO_API void setPropertySubstitute(
+            const Type& containertype,
+            const char* propname,
+            const char* subname,
+            const Type& subtype) = 0;
+
+
+        /**
+         *  DataFactory::setDefault sets a default value for a property
+         *
+         * When querying the value of a property of a data object, that property
+         * may be set - indicating that a value has been assigned, or unset - indicating that
+         * no value has yet been assigned.
+         * If there is no value assigned, then a default value may be returned for that
+         * property. 
+         * This method allows the data factory to define that default value. 
+         * There is no default value for a DataObjectType. There are overloads for 
+         * each of the primitive DataTypes.
+         */
+
+        virtual SDO_API void setDefault(
+            const Type& t, 
+            const char* propname, 
+            bool b ) = 0;
+
+        virtual SDO_API void setDefault(
+            const Type& t, 
+            const char* propname , 
+            char c) = 0;
+
+        virtual SDO_API void setDefault(
+            const Type& t, 
+            const char* propname , 
+            wchar_t c) = 0;
+
+        virtual SDO_API void setDefault(
+            const Type& t, 
+            const char* propname , 
+            char* c) = 0;
+
+        virtual SDO_API void setDefault(
+            const Type& t, 
+            const char* propname , 
+            short s) = 0;
+
+        virtual SDO_API void setDefault(
+            const Type& t, 
+            const char* propname , 
+            long l) = 0;
+
+        virtual SDO_API void setDefault(
+            const Type& t, 
+            const char* propname , 
+            int64_t i) = 0;
+
+        virtual SDO_API void setDefault(
+            const Type& t, 
+            const char* propname , 
+            float f) = 0;
+
+        virtual SDO_API void setDefault(
+            const Type& t, 
+            const char* propname , 
+            long double d) = 0;
+
+        virtual SDO_API void setDefault(
+            const Type& t, 
+            const char* propname , 
+            const wchar_t* c, 
+            unsigned int len) = 0;
+
+        virtual SDO_API void setDefault(
+            const Type& t, 
+            const char* propname , 
+            const char* c, 
+            unsigned int len) = 0;
+
+
+        virtual SDO_API void setDefault(
+            const Type& t, 
+            const char* propname , 
+            const SDODate dat) = 0;
+
+        virtual SDO_API void setDefault(
+            const char* typuri, 
+            const char* typnam, 
+            const char* propname, 
+            bool b ) = 0;
+
+        virtual SDO_API void setDefault(
+            const char* typuri, 
+            const char* typnam, 
+            const char* propname , 
+            char c) = 0;
+
+        virtual SDO_API void setDefault(
+            const char* typuri, 
+            const char* typnam, 
+            const char* propname ,
+            wchar_t c) = 0;
+
+        virtual SDO_API void setDefault(
+            const char* typuri, 
+            const char* typnam, 
+            const char* propname , 
+            char* c) = 0;
+
+        virtual SDO_API void setDefault(
+            const char* typuri, 
+            const char* typnam, 
+            const char* propname , 
+            short s) = 0;
+
+        virtual SDO_API void setDefault(
+            const char* typuri, 
+            const char* typnam, 
+            const char* propname ,
+            long l) = 0;
+
+        virtual SDO_API void setDefault(
+            const char* typuri, 
+            const char* typnam, 
+            const char* propname , 
+            int64_t i) = 0;
+
+        virtual SDO_API void setDefault(
+            const char* typuri, 
+            const char* typnam, 
+            const char* propname , 
+            float f) = 0;
+
+        virtual SDO_API void setDefault(
+            const char* typuri, 
+            const char* typnam, 
+            const char* propname , 
+            long double d) = 0;
+
+        virtual SDO_API void setDefault(
+            const char* typuri, 
+            const char* typnam, 
+            const char* propname ,
+            const wchar_t* c, 
+            unsigned int len) = 0;
+
+        virtual SDO_API void setDefault(
+            const char* typuri, 
+            const char* typnam, 
+            const char* propname , 
+            const char* c, 
+            unsigned int len) = 0;
+
+        virtual SDO_API void setDefault(
+            const char* typuri, 
+            const char* typnam, 
+            const char* propname , 
+            const SDODate dat) = 0;
+        
+
+        /**
+         * DAS values are used by a DAS implementation
+         */
+
+        virtual SDO_API void setDASValue( 
+            const Type& type,
+            const char* name,
+            DASValue* value) = 0;
+
+        virtual SDO_API void setDASValue(
+            const char* typeuri,
+            const char* typenam,
+            const char* name,
+            DASValue* value) = 0;
+
+        virtual SDO_API DASValue* getDASValue( 
+            const Type& type,
+            const char* name) const = 0;
+
+        virtual SDO_API DASValue* getDASValue(
+            const char* typeuri,
+            const char* typenam, 
+            const char* name) const = 0;
+
+        virtual SDO_API void setDASValue( 
+            const Type& type,
+            const char* propertyName,
+            const char* name,
+            DASValue* value) = 0;
+
+        virtual SDO_API void setDASValue( 
+            const char* typeuri,
+            const char* typenam,
+            const char* propertyName,
+            const char* name,
+            DASValue* value) = 0;
+
+        virtual SDO_API DASValue* getDASValue( 
+            const Type& type,
+            const char* propertyName,
+            const char* name) const = 0;
+
+        virtual SDO_API DASValue* getDASValue(
+            const char* typeuri,
+            const char* typenam,
+            const char* propertyName, 
+            const char* name) const = 0;
+
+        virtual void resolve() = 0;
+
+    };
+};
+};
+#endif //_DATAFACTORY_H_

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataFactory.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/DataFactory.h
------------------------------------------------------------------------------
    svn:keywords = Rev,Date



Mime
View raw message