summaryrefslogtreecommitdiffstats
path: root/sca-cpp/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactoryImpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'sca-cpp/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactoryImpl.h')
-rw-r--r--sca-cpp/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactoryImpl.h716
1 files changed, 716 insertions, 0 deletions
diff --git a/sca-cpp/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactoryImpl.h b/sca-cpp/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactoryImpl.h
new file mode 100644
index 0000000000..046160bc71
--- /dev/null
+++ b/sca-cpp/branches/cpp-M1/sdo/runtime/core/src/commonj/sdo/DataFactoryImpl.h
@@ -0,0 +1,716 @@
+/*
+ *
+ * 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: 2006/04/13 08:35:04 $ */
+
+#ifndef _DataFactoryIMPL_H_
+#define _DataFactoryIMPL_H_
+
+#include "commonj/sdo/disable_warn.h"
+
+#include "commonj/sdo/DataFactory.h"
+#include "commonj/sdo/TypeImpl.h"
+#include "commonj/sdo/RefCountingPointer.h"
+#include "commonj/sdo/PropertyImpl.h"
+#include "commonj/sdo/SDOXMLString.h"
+
+
+#include <map>
+
+
+
+namespace commonj{
+namespace sdo{
+
+ typedef std::map<std::string, PropertyImpl> propertyMap;
+
+/**
+ * DataFactoryImpl implements the abstract class DataFactory.
+ * DataFactoryImpl holds metadata and creates DataObjects.
+ *
+ * The DataFactory holds properties and types loaded from XSD, or
+ * created using the DataFactory API.
+ */
+class DataFactoryImpl : public DataFactory
+{
+public:
+ DataFactoryImpl();
+ virtual ~DataFactoryImpl();
+
+ DataFactoryImpl(const DataFactoryImpl& inmdg);
+ DataFactoryImpl& operator=(const DataFactoryImpl& inmdg);
+
+ virtual void addType(const char* uri, const char* inTypeName,
+ bool isSeqenced = false,
+ bool isOpen = false,
+ bool isAbstract = false,
+ bool isDataType = false
+ );
+
+ virtual void addType(const SDOString& uri, const SDOString& inTypeName,
+ bool isSeqenced = false,
+ bool isOpen = false,
+ bool isAbstract = false,
+ bool isDataType = false
+ );
+
+ virtual void addType(const char* uri, const char* inTypeName,
+ bool isSeqenced ,
+ bool isOpen ,
+ bool isAbstract ,
+ bool isDataType ,
+ bool isFromList );
+
+ virtual void addType(const SDOString& uri, const SDOString& inTypeName,
+ bool isSeqenced ,
+ bool isOpen ,
+ bool isAbstract ,
+ bool isDataType ,
+ bool isFromList );
+
+ virtual void addPropertyToType(const char* uri,
+ const char* inTypeName,
+ const char* propname,
+ const char* propTypeUri,
+ const char* propTypeName,
+ bool isMany = false);
+
+ virtual void addPropertyToType(const SDOString& uri,
+ const SDOString& inTypeName,
+ const SDOString& propname,
+ const SDOString& propTypeUri,
+ const SDOString& propTypeName,
+ bool isMany = false);
+
+ virtual void addPropertyToType(const char* uri,
+ const char* inTypeName,
+ const char* propname,
+ const Type& propType,
+ bool isMany = false);
+
+ virtual void addPropertyToType(const SDOString& uri,
+ const SDOString& inTypeName,
+ const SDOString& propname,
+ const Type& propType,
+ bool isMany = false);
+
+ virtual void addPropertyToType(const Type& type,
+ const char* propname,
+ const Type& propType,
+ bool isMany = false);
+
+ virtual void addPropertyToType(const Type& type,
+ const SDOString& propname,
+ const Type& propType,
+ bool isMany = false);
+
+ virtual void addPropertyToType(const Type& type,
+ const char* propname,
+ const char* propTypeUri,
+ const char* propTypeName,
+ bool isMany = false);
+
+ virtual void addPropertyToType(const Type& type,
+ const SDOString& propname,
+ const SDOString& propTypeUri,
+ const SDOString& propTypeName,
+ bool isMany = false);
+
+ virtual void addPropertyToType(const char* uri,
+ const char* inTypeName,
+ const char* propname,
+ const char* propTypeUri,
+ const char* propTypeName,
+ bool isMany ,
+ bool isReadOnly,
+ bool isContainment);
+
+ virtual void addPropertyToType(const SDOString& uri,
+ const SDOString& inTypeName,
+ const SDOString& propname,
+ const SDOString& propTypeUri,
+ const SDOString& propTypeName,
+ bool isMany ,
+ bool isReadOnly,
+ bool isContainment);
+
+ virtual void addPropertyToType(const char* uri,
+ const char* inTypeName,
+ const char* propname,
+ const Type& propType,
+ bool isMany,
+ bool isReadOnly,
+ bool isContainment);
+
+ virtual void addPropertyToType(const SDOString& uri,
+ const SDOString& inTypeName,
+ const SDOString& propname,
+ const Type& propType,
+ bool isMany,
+ bool isReadOnly,
+ bool isContainment);
+
+ virtual void addPropertyToType(const Type& type,
+ const char* propname,
+ const Type& propType,
+ bool isMany,
+ bool isReadOnly,
+ bool isContainment);
+
+ virtual void addPropertyToType(const Type& type,
+ const SDOString& propname,
+ const Type& propType,
+ bool isMany,
+ bool isReadOnly,
+ bool isContainment);
+
+ virtual void addPropertyToType(const Type& type,
+ const char* propname,
+ const char* propTypeUri,
+ const char* propTypeName,
+ bool isMany,
+ bool isReadOnly,
+ bool isContainment);
+
+ virtual void addPropertyToType(const Type& type,
+ const SDOString& propname,
+ const SDOString& propTypeUri,
+ const SDOString& propTypeName,
+ bool isMany,
+ bool isReadOnly,
+ bool isContainment);
+
+
+ virtual void setBaseType( const Type& type,
+ const Type& base,
+ bool isRestriction = false);
+
+ virtual void setBaseType( const char* typeuri,
+ const char* typenam,
+ const char* baseuri,
+ const char* basename,
+ bool isRestriction = false);
+
+ virtual void setBaseType( const SDOString& typeuri,
+ const SDOString& typenam,
+ const SDOString& baseuri,
+ const SDOString& basename,
+ bool isRestriction = false);
+
+ virtual const Type& getType(const char* uri, const char* inTypeName) const;
+
+ virtual const Type& getType(const SDOString& uri, const SDOString& inTypeName) const;
+
+ virtual TypeList getTypes() const;
+
+ virtual DataObjectPtr create(const char* uri, const char* typeName) ;
+
+ virtual DataObjectPtr create(const SDOString& uri, const SDOString& typeName) ;
+
+ virtual DataObjectPtr create(const Type& type) ;
+
+ virtual void setAlias(const char* typeuri,
+ const char* typenam,
+ const char* alias) ;
+
+ virtual void setAlias(const SDOString& typeuri,
+ const SDOString& typenam,
+ const SDOString& alias) ;
+
+ virtual void setAlias(const char* typeuri,
+ const char* typname,
+ const char* propname,
+ const char* alias) ;
+
+ virtual void setAlias(const SDOString& typeuri,
+ const SDOString& typname,
+ const SDOString& propname,
+ const SDOString& alias) ;
+
+ virtual void setOpposite (const Type& type,
+ const char* propname,
+ const Type& opptype,
+ const char* opppropname) ;
+
+ virtual void setOpposite (const Type& type,
+ const SDOString& propname,
+ const Type& opptype,
+ const SDOString& opppropname) ;
+
+
+ virtual void setPropertySubstitute(
+ const char* uri,
+ const char* inTypeName,
+ const char* propname,
+ const char* subname,
+ const char* subTypeUri,
+ const char* subTypeName);
+
+ virtual void setPropertySubstitute(
+ const SDOString& uri,
+ const SDOString& inTypeName,
+ const SDOString& propname,
+ const SDOString& subname,
+ const SDOString& subTypeUri,
+ const SDOString& subTypeName);
+
+ virtual void setPropertySubstitute(
+ const Type& containertype,
+ const char* propname,
+ const char* subname,
+ const Type& subtype);
+
+ virtual void setPropertySubstitute(
+ const Type& containertype,
+ const SDOString& propname,
+ const SDOString& subname,
+ const Type& subtype);
+
+ ////////////////////////////////////////////////////////
+ virtual void setDefault(
+ const Type& t,
+ const char* propname,
+ bool b ) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const SDOString& propname,
+ bool b ) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const char* propname ,
+ char c) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const SDOString& propname ,
+ char c) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const char* propname ,
+ wchar_t c) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const SDOString& propname ,
+ wchar_t c) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const char* propname ,
+ char* c) ;
+
+// #pragma message( "GMW: Unimplemented method, writable string parameter" )
+// virtual void setDefault(
+// const Type& t,
+// const SDOString& propname ,
+// SDOString& c) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const char* propname ,
+ short s) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const SDOString& propname ,
+ short s) ;
+
+
+
+#if __WORDSIZE !=64
+ virtual void setDefault(
+ const Type& t,
+ const char* propname ,
+ long l) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const SDOString& propname ,
+ long l) ;
+
+#endif
+
+ virtual void setDefault(
+ const Type& t,
+ const char* propname ,
+ int64_t i) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const SDOString& propname ,
+ int64_t i) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const char* propname ,
+ float f) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const SDOString& propname ,
+ float f) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const char* propname ,
+ long double d) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const SDOString& propname ,
+ long double d) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const char* propname ,
+ const SDODate d) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const SDOString& propname ,
+ const SDODate d) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const char* propname ,
+ const wchar_t* c,
+ unsigned int len) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const SDOString& propname ,
+ const wchar_t* c,
+ unsigned int len) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const char* propname ,
+ const char* c,
+ unsigned int len) ;
+
+ virtual void setDefault(
+ const Type& t,
+ const SDOString& propname ,
+ const SDOString& c,
+ unsigned int len) ;
+
+ virtual void setDefault(
+ const char* typuri,
+ const char* typnam,
+ const char* propname,
+ bool b ) ;
+
+ virtual void setDefault(
+ const SDOString& typuri,
+ const SDOString& typnam,
+ const SDOString& propname,
+ bool b ) ;
+
+ virtual void setDefault(
+ const char* typuri,
+ const char* typnam,
+ const char* propname ,
+ char c) ;
+
+ virtual void setDefault(
+ const SDOString& typuri,
+ const SDOString& typnam,
+ const SDOString& propname ,
+ char c) ;
+
+ virtual void setDefault(
+ const char* typuri,
+ const char* typnam,
+ const char* propname ,
+ wchar_t c) ;
+
+ virtual void setDefault(
+ const SDOString& typuri,
+ const SDOString& typnam,
+ const SDOString& propname ,
+ wchar_t c) ;
+
+ virtual void setDefault(
+ const char* typuri,
+ const char* typnam,
+ const char* propname ,
+ char* c) ;
+
+// #pragma message( "GMW: Unimplemented method, writable string parameter" )
+// virtual void setDefault(
+// const SDOString& typuri,
+// const SDOString& typnam,
+// const SDOString& propname ,
+// SDOString& c) ;
+
+ virtual void setDefault(
+ const char* typuri,
+ const char* typnam,
+ const char* propname ,
+ short s) ;
+
+ virtual void setDefault(
+ const SDOString& typuri,
+ const SDOString& typnam,
+ const SDOString& propname ,
+ short s) ;
+
+#if __WORDSIZE !=64
+ virtual void setDefault(
+ const char* typuri,
+ const char* typnam,
+ const char* propname ,
+ long l) ;
+
+ virtual void setDefault(
+ const SDOString& typuri,
+ const SDOString& typnam,
+ const SDOString& propname ,
+ long l) ;
+
+#endif
+
+ virtual void setDefault(
+ const char* typuri,
+ const char* typnam,
+ const char* propname ,
+ int64_t i) ;
+
+ virtual void setDefault(
+ const SDOString& typuri,
+ const SDOString& typnam,
+ const SDOString& propname ,
+ int64_t i) ;
+
+ virtual void setDefault(
+ const char* typuri,
+ const char* typnam,
+ const char* propname ,
+ float f) ;
+
+ virtual void setDefault(
+ const SDOString& typuri,
+ const SDOString& typnam,
+ const SDOString& propname ,
+ float f) ;
+
+ virtual void setDefault(
+ const char* typuri,
+ const char* typnam,
+ const char* propname ,
+ long double d) ;
+
+ virtual void setDefault(
+ const SDOString& typuri,
+ const SDOString& typnam,
+ const SDOString& propname ,
+ long double d) ;
+
+ virtual void setDefault(
+ const char* typuri,
+ const char* typnam,
+ const char* propname ,
+ const SDODate d) ;
+
+ virtual void setDefault(
+ const SDOString& typuri,
+ const SDOString& typnam,
+ const SDOString& propname ,
+ const SDODate d) ;
+
+ virtual void setDefault(
+ const char* typuri,
+ const char* typnam,
+ const char* propname ,
+ const wchar_t* c,
+ unsigned int len) ;
+
+ virtual void setDefault(
+ const SDOString& typuri,
+ const SDOString& typnam,
+ const SDOString& propname ,
+ const wchar_t* c,
+ unsigned int len) ;
+
+ virtual void setDefault(
+ const char* typuri,
+ const char* typnam,
+ const char* propname ,
+ const char* c,
+ unsigned int len) ;
+
+ virtual void setDefault(
+ const SDOString& typuri,
+ const SDOString& typnam,
+ const SDOString& propname ,
+ const SDOString& c,
+ unsigned int len) ;
+
+ virtual void setDASValue(
+ const Type& type,
+ const char* name,
+ DASValue* value);
+
+ virtual void setDASValue(
+ const Type& type,
+ const SDOString& name,
+ DASValue* value);
+
+ virtual void setDASValue(
+ const char* typeuri,
+ const char* typenam,
+ const char* name,
+ DASValue* value);
+
+ virtual void setDASValue(
+ const SDOString& typeuri,
+ const SDOString& typenam,
+ const SDOString& name,
+ DASValue* value);
+
+ virtual DASValue* getDASValue(
+ const Type& type,
+ const char* name) const;
+
+ virtual DASValue* getDASValue(
+ const Type& type,
+ const SDOString& name) const;
+
+ virtual DASValue* getDASValue(
+ const char* typeuri,
+ const char* typenam,
+ const char* name) const;
+
+ virtual DASValue* getDASValue(
+ const SDOString& typeuri,
+ const SDOString& typenam,
+ const SDOString& name) const;
+
+ virtual void setDASValue(
+ const Type& type,
+ const char* propertyName,
+ const char* name,
+ DASValue* value);
+
+ virtual void setDASValue(
+ const Type& type,
+ const SDOString& propertyName,
+ const SDOString& name,
+ DASValue* value);
+
+ virtual void setDASValue(
+ const char* typeuri,
+ const char* typenam,
+ const char* propertyName,
+ const char* name,
+ DASValue* value);
+
+ virtual void setDASValue(
+ const SDOString& typeuri,
+ const SDOString& typenam,
+ const SDOString& propertyName,
+ const SDOString& name,
+ DASValue* value);
+
+ virtual DASValue* getDASValue(
+ const Type& type,
+ const char* propertyName,
+ const char* name) const;
+
+ virtual DASValue* getDASValue(
+ const Type& type,
+ const SDOString& propertyName,
+ const SDOString& name) const;
+
+ virtual DASValue* getDASValue(
+ const char* typeuri,
+ const char* typenam,
+ const char* propertyName,
+ const char* name) const;
+
+ virtual DASValue* getDASValue(
+ const SDOString& typeuri,
+ const SDOString& typenam,
+ const SDOString& propertyName,
+ const SDOString& name) const;
+
+ virtual void resolve();
+
+// TODO: Remove char* form of method since it is not exposed to users
+ const Type* findType (const char* uri, const char* inTypeName) const;
+ const Type* findType(const SDOString uri, const SDOString inTypeName) const;
+
+// TODO: Remove char* form of method since it is not exposed to users
+ const TypeImpl* findTypeImpl (const char* uri, const char* inTypeName) const;
+ const TypeImpl* findTypeImpl(const SDOString& uri, const SDOString& inTypeName) const;
+
+ void addOpenProperty(const PropertyImpl& prop);
+// TODO: Remove char* form of method since it is not exposed to users
+ void removeOpenProperty(const char* name);
+ void removeOpenProperty(const SDOString& name);
+ const propertyMap& getOpenProperties();
+// TODO: Remove char* form of method since it is not exposed to users
+ virtual const TypeImpl& getTypeImpl(const char* uri, const char* inTypeName) const;
+ virtual const TypeImpl& getTypeImpl(const SDOString& uri, const SDOString& inTypeName) const;
+ virtual const SDOString& getRootElementName() const;
+// TODO: Remove char* form of method since it is not exposed to users
+ virtual void setRootElementName(const char* ren);
+ virtual void setRootElementName(const SDOString& ren);
+ virtual bool checkType(const Type& t);
+ virtual bool isCompatible(DataFactory* df, DataObject* d);
+ virtual bool compareTypes(const TypeImpl* t1, const Type& t2);
+
+ virtual bool generateInterface(const char* fileroot, const char* factoryname);
+
+ virtual bool generateInterface(const SDOString& fileroot, const SDOString& factoryname);
+
+private:
+ typedef std::map<std::string, TypeImpl*> TYPES_MAP;
+ TYPES_MAP types;
+
+ std::vector<DataFactory*> compatibleFactories;
+
+ SDOString rootElementName;
+
+ propertyMap openProperties;
+
+ // Need to validate and 'lock' the data model for base types to
+ // work properly.
+
+ bool isResolved;
+
+ bool recursiveCheck(TypeImpl* cs, TypeImpl* t);
+ bool checkForValidChangeSummary(TypeImpl* t);
+
+ typedef std::vector<TypeImpl*> TYPES_VECTOR;
+ TYPES_VECTOR cstypes;
+
+// TODO: Remove char* form of method since it is not exposed to users
+ char* getFullTypeName(const char* uri, const char* inTypeName) const;
+ char* getFullTypeName(const SDOString& uri, const SDOString& inTypeName) const;
+// TODO: Remove char* form of method since it is not exposed to users
+ char* getAliasTypeName(const char* uri, const char* inTypeName) const;
+ char* getAliasTypeName(const SDOString& uri, const SDOString& inTypeName) const;
+
+ void copyTypes(const DataFactoryImpl& inmdg);
+};
+};
+};
+#endif // _DataFactoryIMPL_H_