summaryrefslogtreecommitdiffstats
path: root/reladminif/objectbroker.pgc
diff options
context:
space:
mode:
Diffstat (limited to 'reladminif/objectbroker.pgc')
-rw-r--r--reladminif/objectbroker.pgc1029
1 files changed, 1029 insertions, 0 deletions
diff --git a/reladminif/objectbroker.pgc b/reladminif/objectbroker.pgc
new file mode 100644
index 0000000..9313d9c
--- /dev/null
+++ b/reladminif/objectbroker.pgc
@@ -0,0 +1,1029 @@
+/*
+* This file is part of rasdaman community.
+*
+* Rasdaman community is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* Rasdaman community is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with rasdaman community. If not, see <http://www.gnu.org/licenses/>.
+*
+* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
+rasdaman GmbH.
+*
+* For more information please see <http://www.rasdaman.org>
+* or contact Peter Baumann via <baumann@rasdaman.com>.
+*/
+// This is -*- C++ -*-
+
+/*************************************************************************
+ *
+ *
+ * PURPOSE:
+ * Code with embedded SQL for PostgreSQL DBMS
+ *
+ *
+ * COMMENTS:
+ * none
+ *
+ ***********************************************************************/
+
+static const char rcsid[] = "@(#)reladminif,ObjectBroker: $Id: objectbroker.ec,v 1.4 2003/12/27 23:11:43 rasdev Exp $";
+
+#include "debug-srv.hh"
+
+// general embedded SQL related definitions
+EXEC SQL include "sqlglobals.h";
+
+#include "objectbroker.hh"
+#include "raslib/rmdebug.hh"
+#include "sqlerror.hh"
+#include "relindexif/dbtcindex.hh"
+#include "relindexif/indexid.hh"
+#include "adminif.hh"
+#include "relindexif/dbrcindexds.hh"
+#include "relblobif/inlinetile.hh"
+#include "dbref.hh"
+#include "dbnamedobject.hh"
+#include "externs.h"
+#include "catalogmgr/typefactory.hh"
+
+DBObject*
+ObjectBroker::loadInlineTile(const OId& id) throw (r_Error)
+{
+ RMDBGENTER(11, RMDebug::module_adminif, "ObjectBroker", "loadInlineTile(" << id << ")");
+ ENTER( "ObjectBroker::loadInlineTile, oid=" << id );
+
+ DBObject* retval = 0;
+ OIdMap::iterator i = theTileIndexMappings.find(id);
+ if (i != theTileIndexMappings.end())
+ {
+ DBTCIndexId dbtc((*i).second);
+ retval = (DBObject*)dbtc->getInlineTile(id);
+ }
+ else
+ {
+ try
+ {
+ retval = new InlineTile(id);
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "found in db");
+ }
+ catch (r_Error& error)
+ {
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "not found in db");
+ if(retval)
+ {
+ delete retval;
+ retval=0;
+ }
+ }
+ if (retval == 0)
+ {
+ EXEC SQL BEGIN DECLARE SECTION;
+ long indexid;
+ long inlineid;
+ EXEC SQL END DECLARE SECTION;
+
+ indexid = 0;
+ inlineid = id.getCounter();
+
+ EXEC SQL SELECT
+ IndexId
+ INTO
+ :indexid
+ FROM
+ RAS_ITMAP
+ WHERE
+ TileId = :inlineid;
+ if (SQLCODE == SQLOK)
+ {
+ DBTCIndexId dbtc(OId(indexid, OId::DBTCINDEXOID));
+ retval = (DBObject*)dbtc->getInlineTile(id);
+ }
+ else
+ {
+ if (SQLCODE == SQLNODATAFOUND)
+ {
+ RMDBGEXIT(11, RMDebug::module_adminif, "ObjectBroker", "db error not found in db");
+ throw r_Error(r_Error::r_Error_ObjectUnknown);
+ }
+ else
+ {
+ check("ObjectBroker::loadInlineTile SELECT FROM RAS_ITMAP");
+ generateException();
+ }
+ }
+ }
+ DBObjectPPair myPair(retval->getOId(), retval);
+ theInlineTiles.insert(myPair);
+ }
+
+ LEAVE( "ObjectBroker::loadInlineTile, retval=" << retval );
+ RMDBGEXIT(11, RMDebug::module_adminif, "ObjectBroker", "loadInlineTile(" << id << ")");
+ return retval;
+}
+
+
+OId
+ObjectBroker::getOIdOfSetType(const char* name) throw (r_Error)
+{
+ ENTER( "ObjectBroker::getOIdOfSetType, name=" << name );
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ char setname[STRING_MAXLEN];
+ long setoid;
+ EXEC SQL END DECLARE SECTION;
+
+ OId retval;
+ int len = strlen(name);
+ if (len > DBNamedObject::MAXNAMELENGTH)
+ {
+ throw r_Error(TYPENAMEISTOOLONG);
+ }
+ (void) strncpy( setname, (char*) name, (size_t) sizeof(setname) );
+
+ EXEC SQL SELECT
+ SetTypeId
+ INTO
+ :setoid
+ FROM
+ RAS_SETTYPES
+ WHERE
+ SetTypeName = :setname;
+
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE == SQLNODATAFOUND)
+ {
+ RMDBGONCE(11, RMDebug::module_adminif, "ObjectBroker", "is not in db");
+ throw r_Error(r_Error::r_Error_ObjectUnknown);
+ }
+ else
+ {
+ check("ObjectBroker::getOIdOfSetType()\0");
+ generateException();
+ }
+ }
+ else
+ {
+ retval = OId(setoid, OId::SETTYPEOID);
+ RMDBGONCE(11, RMDebug::module_adminif, "ObjectBroker", "is in db with " << retval);
+ }
+
+ LEAVE( "ObjectBroker::getOIdOfSetType, retval=" << retval );
+ return retval;
+}
+
+MDDType*
+ObjectBroker::getMDDTypeByName(const char* name) throw (r_Error)
+{
+ ENTER( "ObjectBroker::getMDDTypeByName, name=" << name );
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ char mddtnamev[STRING_MAXLEN];
+ double mddtoidv;
+ EXEC SQL END DECLARE SECTION;
+
+ MDDType* retval = 0;
+ DBObjectPMap* theMaps[] = {&theMDDTypes, &theMDDBaseTypes, &theMDDDimensionTypes, &theMDDDomainTypes};
+
+ // FIXME: why do we iterate 5 times?
+ for (int a = 0; a < 4; a++)
+ {
+ DBObjectPMap& theMap = *theMaps[a];
+ //check if there is an object with that name already in memory
+ for (DBObjectPMap::iterator iter = theMap.begin(); iter != theMap.end(); iter++)
+ {
+ if (strcmp(((DBNamedObject*)(*iter).second)->getName(), name) == 0)
+ {
+ //RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", name << " equals " << ((DBNamedObject*)(*iter).second)->getName());
+ retval = (MDDType*)(*iter).second;
+ break;
+ }
+ else
+ {
+ //RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", name << " equals NOT " << ((DBNamedObject*)(*iter).second)->getName());
+ }
+ }
+ if (retval != 0)
+ break;
+ }
+
+ if (retval == 0)
+ {
+ int len = strlen(name);
+ if (len > DBNamedObject::MAXNAMELENGTH)
+ {
+ LEAVE( "ObjectBroker::getMDDTypeByName(): type name exceeding max length: " << name );
+ throw r_Error(TYPENAMEISTOOLONG);
+ }
+ (void) strncpy( mddtnamev, (char*) name, (size_t) sizeof(mddtnamev) );
+
+ TALK( "EXEC SQL SELECT MDDTypeOId INTO :mddtoidv FROM RAS_MDDTYPES_VIEW WHERE MDDTypeName = " << mddtnamev );
+ EXEC SQL SELECT MDDTypeOId
+ INTO :mddtoidv
+ FROM RAS_MDDTYPES_VIEW
+ WHERE MDDTypeName = :mddtnamev;
+
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE == SQLNODATAFOUND)
+ {
+ RMDBGONCE(11, RMDebug::module_adminif, "ObjectBroker", "is not in db");
+ LEAVE( "ObjectBroker::getMDDTypeByName(): object not found" );
+ throw r_Error(r_Error::r_Error_ObjectUnknown);
+ }
+ else
+ {
+ check("ObjectBroker::getMDDTypeByName()\0");
+ LEAVE( "ObjectBroker::getMDDTypeByName(): database access error: " << SQLCODE );
+ generateException();
+ }
+ }
+ else
+ {
+ retval = (MDDType*)getObjectByOId(OId(mddtoidv));
+ }
+ }
+
+ LEAVE( "ObjectBroker::getMDDTypeByName, retval=" << retval );
+ return retval;
+}
+
+OId
+ObjectBroker::getOIdOfMDDType(const char* name) throw (r_Error)
+{
+ ENTER( "ObjectBroker::getOIdOfMDDType, name=" << name );
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ char mddtname[STRING_MAXLEN];
+ long mddtoid;
+ EXEC SQL END DECLARE SECTION;
+
+ OId retval;
+ int len = strlen(name);
+ if (len > DBNamedObject::MAXNAMELENGTH)
+ {
+ LEAVE( "ObjectBroker::getOIdOfMDDType(): name exceeds max length:" << name );
+ throw r_Error(TYPENAMEISTOOLONG);
+ }
+ (void) strncpy( mddtname, (char*) name, (size_t) sizeof(mddtname) );
+
+ TALK( "EXEC SQL SELECT MDDTypeOId INTO :mddtoid FROM RAS_MDDTYPES WHERE MDDTypeName = " << mddtname );
+ EXEC SQL SELECT MDDTypeOId
+ INTO :mddtoid
+ FROM RAS_MDDTYPES
+ WHERE MDDTypeName = :mddtname;
+
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE == SQLNODATAFOUND)
+ {
+ RMDBGONCE(11, RMDebug::module_adminif, "ObjectBroker", "is not in db");
+ LEAVE( "ObjectBroker::getOIdOfMDDType(): object not in db" );
+ throw r_Error(r_Error::r_Error_ObjectUnknown);
+ }
+ else
+ {
+ check("ObjectBroker::getOIdOfMDDType()\0");
+ LEAVE( "ObjectBroker::getOIdOfMDDType(): db access error: " << SQLCODE );
+ generateException();
+ }
+ }
+ else
+ {
+ retval = OId(mddtoid,OId::MDDTYPEOID);
+ }
+
+ LEAVE( "ObjectBroker::getOIdOfMDDType, retval=" << retval );
+ return retval;
+}
+
+OId
+ObjectBroker::getOIdOfMDDBaseType(const char* name) throw (r_Error)
+{
+ ENTER( "ObjectBroker::getOIdOfMDDBaseType, name=" << name );
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ char mddbname[STRING_MAXLEN];
+ long mddboid;
+ EXEC SQL END DECLARE SECTION;
+
+ OId retval;
+ int len = strlen(name);
+ if (len > DBNamedObject::MAXNAMELENGTH)
+ {
+ LEAVE( "ObjectBroker::getOIdOfMDDBaseType(): name exceeds max length:" << name );
+ throw r_Error(TYPENAMEISTOOLONG);
+ }
+ (void) strncpy( mddbname, (char*) name, (size_t) sizeof(mddbname) );
+
+ TALK( "EXEC SQL SELECT MDDBaseTypeOId INTO :mddboid FROM RAS_MDDBASETYPES WHERE MDDTypeName = " << mddbname );
+ EXEC SQL SELECT MDDBaseTypeOId
+ INTO :mddboid
+ FROM RAS_MDDBASETYPES
+ WHERE MDDTypeName = :mddbname;
+
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE == SQLNODATAFOUND)
+ {
+ RMDBGONCE(11, RMDebug::module_adminif, "ObjectBroker", "is not in db");
+ LEAVE( "ObjectBroker::getOIdOfMDDBaseType(): object not in db" );
+ throw r_Error(r_Error::r_Error_ObjectUnknown);
+ }
+ else
+ {
+ check("ObjectBroker::getOIdOfMDDBaseType()\0");
+ LEAVE( "ObjectBroker::getOIdOfMDDBaseType(): db access error: " << SQLCODE );
+ generateException();
+ }
+ }
+ else
+ {
+ retval = OId(mddboid,OId::MDDBASETYPEOID);
+ }
+
+ LEAVE( "ObjectBroker::getOIdOfMDDBaseType, retval=" << retval );
+ return retval;
+}
+
+OId
+ObjectBroker::getOIdOfMDDDimensionType(const char* name) throw (r_Error)
+{
+ ENTER( "ObjectBroker::getOIdOfMDDDimensionType, name=" << name );
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ char mdddiname[STRING_MAXLEN];
+ long mdddioid;
+ EXEC SQL END DECLARE SECTION;
+
+ OId retval;
+ int len = strlen(name);
+ if (len > DBNamedObject::MAXNAMELENGTH)
+ {
+ LEAVE( "ObjectBroker::getOIdOfMDDDimensionType(): name exceeds max length:" << name );
+ throw r_Error(TYPENAMEISTOOLONG);
+ }
+ (void) strncpy( mdddiname, (char*) name, (size_t) sizeof(mdddiname) );
+
+ TALK( "EXEC SQL SELECT MDDDimTypeOId INTO :mdddioid FROM RAS_MDDDIMTYPES WHERE MDDTypeName = " << mdddiname );
+ EXEC SQL SELECT MDDDimTypeOId
+ INTO :mdddioid
+ FROM RAS_MDDDIMTYPES
+ WHERE MDDTypeName = :mdddiname;
+
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE == SQLNODATAFOUND)
+ {
+ RMDBGONCE(11, RMDebug::module_adminif, "ObjectBroker", "is not in db");
+ LEAVE( "ObjectBroker::getOIdOfMDDDimensionType(): object not in db" );
+ throw r_Error(r_Error::r_Error_ObjectUnknown);
+ }
+ else
+ {
+ check("ObjectBroker::getOIdOfMDDDimensionType()\0");
+ LEAVE( "ObjectBroker::getOIdOfMDDDimensionType(): db access error: " << SQLCODE );
+ generateException();
+ }
+ }
+ else
+ {
+ retval = OId(mdddioid,OId::MDDDIMTYPEOID);
+ }
+
+ LEAVE( "ObjectBroker::getOIdOfMDDDimensionType, retval=" << retval );
+ return retval;
+}
+
+OId
+ObjectBroker::getOIdOfMDDDomainType(const char* name) throw (r_Error)
+{
+ ENTER( "ObjectBroker::getOIdOfMDDDomainType, name=" << name );
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ char mdddoname[STRING_MAXLEN];
+ long mdddooid;
+ EXEC SQL END DECLARE SECTION;
+
+ OId retval;
+ int len = strlen(name);
+ if (len > DBNamedObject::MAXNAMELENGTH)
+ {
+ LEAVE( "ObjectBroker::getOIdOfMDDDomainType(): name exceeds max length:" << name );
+ throw r_Error(TYPENAMEISTOOLONG);
+ }
+ (void) strncpy( mdddoname, (char*) name, (size_t) sizeof(mdddoname) );
+
+ TALK( "EXEC SQL SELECT MDDDomTypeOId INTO :mdddooid FROM RAS_MDDDOMTYPES WHERE MDDTypeName = " << mdddoname );
+ EXEC SQL SELECT MDDDomTypeOId
+ INTO :mdddooid
+ FROM RAS_MDDDOMTYPES
+ WHERE MDDTypeName = :mdddoname;
+
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE == SQLNODATAFOUND)
+ {
+ RMDBGONCE(11, RMDebug::module_adminif, "ObjectBroker", "is not in db");
+ LEAVE( "ObjectBroker::getOIdOfMDDDomainType(): object not in db" );
+ throw r_Error(r_Error::r_Error_ObjectUnknown);
+ }
+ else
+ {
+ check("ObjectBroker::getOIdOfMDDDomainType()\0");
+ LEAVE( "ObjectBroker::getOIdOfMDDDomainType(): db access error: " << SQLCODE );
+ generateException();
+ }
+ }
+ else
+ {
+ retval = OId(mdddooid,OId::MDDDOMTYPEOID);
+ }
+
+ LEAVE( "ObjectBroker::getOIdOfMDDDomainType, retval=" << retval );
+ return retval;
+}
+
+OId
+ObjectBroker::getOIdOfStructType(const char* name) throw (r_Error)
+{
+ ENTER( "ObjectBroker::getOIdOfStructType, name=" << name );
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ char structname[STRING_MAXLEN];
+ long structoid;
+ EXEC SQL END DECLARE SECTION;
+
+ OId retval;
+ int len = strlen(name);
+ if (len > DBNamedObject::MAXNAMELENGTH)
+ {
+ LEAVE( "ObjectBroker::getOIdOfStructType(): name exceeds max length:" << name );
+ throw r_Error(TYPENAMEISTOOLONG);
+ }
+ (void) strncpy( structname, (char*) name, (size_t) sizeof(structname) );
+
+ TALK( "EXEC SQL SELECT BaseTypeId INTO :structoid FROM RAS_BASETYPENAMES WHERE BaseTypeName = " << structname );
+ EXEC SQL SELECT BaseTypeId
+ INTO :structoid
+ FROM RAS_BASETYPENAMES
+ WHERE BaseTypeName = :structname;
+
+ if (SQLCODE != SQLOK)
+ {
+ RMDBGONCE(11, RMDebug::module_adminif, "ObjectBroker", "is not in db");
+ if (SQLCODE == SQLNODATAFOUND)
+ {
+ RMDBGONCE(11, RMDebug::module_adminif, "ObjectBroker", "is not in db");
+ LEAVE( "ObjectBroker::getOIdOfStructType(): object not in db" );
+ throw r_Error(r_Error::r_Error_ObjectUnknown);
+ }
+ else
+ {
+ check("ObjectBroker::getOIdOfStructType()\0");
+ LEAVE( "ObjectBroker::getOIdOfStructType(): db access error: " << SQLCODE );
+ generateException();
+ }
+ }
+ else
+ {
+ retval = OId(structoid, OId::STRUCTTYPEOID);
+ RMDBGONCE(11, RMDebug::module_adminif, "ObjectBroker", "is in db with " << retval);
+ }
+
+ LEAVE( "ObjectBroker::getOIdOfStructType, retval=" << retval );
+ return retval;
+}
+
+OId
+ObjectBroker::getOIdOfMDDSet(const char* name) throw (r_Error)
+{
+ ENTER( "ObjectBroker::getOIdOfMDDSet, name=" << name );
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ char collname[STRING_MAXLEN];
+ long colloid;
+ EXEC SQL END DECLARE SECTION;
+
+ OId retval;
+ int len = strlen(name);
+ if (len > DBNamedObject::MAXNAMELENGTH)
+ {
+ LEAVE( "ObjectBroker::getOIdOfMDDSet(): name exceeds max length:" << name );
+ throw r_Error(TYPENAMEISTOOLONG);
+ }
+ (void) strncpy( collname, (char*) name, (size_t) sizeof(collname) );
+
+ TALK( "EXEC SQL SELECT MDDCollId INTO :colloid FROM RAS_MDDCOLLNAMES WHERE MDDCollName = " << collname );
+ EXEC SQL SELECT MDDCollId
+ INTO :colloid
+ FROM RAS_MDDCOLLNAMES
+ WHERE MDDCollName = :collname;
+
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE == SQLNODATAFOUND)
+ {
+ RMDBGONCE(11, RMDebug::module_adminif, "ObjectBroker", "is not in db");
+ LEAVE( "ObjectBroker::getOIdOfMDDSet(): object not in db" );
+ throw r_Error(r_Error::r_Error_ObjectUnknown);
+ }
+ else
+ {
+ check("ObjectBroker::getOIdOfMDDSet()\0");
+ LEAVE( "ObjectBroker::getOIdOfMDDSet(): db access error: " << SQLCODE );
+ generateException();
+ }
+ }
+ else
+ {
+ retval = OId(colloid, OId::MDDCOLLOID);
+ RMDBGONCE(11, RMDebug::module_adminif, "ObjectBroker", "is in db with " << retval);
+ }
+
+ LEAVE( "ObjectBroker::getOIdOfMDDSet, retval=" << retval );
+ return retval;
+}
+
+OIdSet*
+ObjectBroker::getAllSetTypes() throw (r_Error)
+{
+ RMDBGENTER(11, RMDebug::module_adminif, "ObjectBroker", "getAllSetTypes()");
+ ENTER( "ObjectBroker::getAllSetTypes" );
+
+ OIdSet* retval = new OIdSet();
+ DBObjectPMap& theMap = ObjectBroker::getMap(OId::SETTYPEOID);
+ for (DBObjectPMap::iterator i = theMap.begin(); i != theMap.end(); i++)
+ {
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "inserted from memory " << (*i).first);
+ retval->insert((*i).first);
+ }
+ OId id;
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ long settoid1;
+ EXEC SQL END DECLARE SECTION;
+
+ TALK( "EXEC SQL DECLARE setcursor CURSOR FOR SELECT SetTypeId FROM RAS_SETTYPES ORDER BY SetTypeId" );
+ EXEC SQL DECLARE setcursor CURSOR FOR
+ SELECT SetTypeId
+ FROM RAS_SETTYPES
+ ORDER BY SetTypeId;
+
+ TALK( "EXEC SQL OPEN setcursor" );
+ EXEC SQL OPEN setcursor;
+
+ do
+ {
+ TALK( "EXEC SQL FETCH setcursor INTO :settoid1" );
+ EXEC SQL FETCH setcursor INTO :settoid1;
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE != SQLNODATAFOUND)
+ {
+ check("ObjectBroker::getAllSetTypes\0");
+ TALK( "EXEC SQL CLOSE setcursor" );
+ EXEC SQL CLOSE setcursor;
+ delete retval;
+ retval = 0;
+ LEAVE( "ObjectBroker::getAllSetTypes(): db access error: " << SQLCODE );
+ generateException();
+ }
+ break;
+ }
+ id = OId(settoid1, OId::SETTYPEOID);
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "read " << id << " " << id.getType());
+ TALK( "got object " << id << " " << id.getType());
+ retval->insert(id);
+ } while (1);
+
+ TALK( "EXEC SQL CLOSE setcursor" );
+ EXEC SQL CLOSE setcursor;
+
+ LEAVE( "ObjectBroker::getAllSetTypes, SQLCODE=" << SQLCODE );
+ RMDBGEXIT(11, RMDebug::module_adminif, "ObjectBroker", "getAllSetTypes() ");
+ return retval;
+}
+
+OIdSet*
+ObjectBroker::getAllMDDTypes() throw (r_Error)
+{
+ RMDBGENTER(11, RMDebug::module_adminif, "ObjectBroker", "getAllMDDTypes()");
+ ENTER( "ObjectBroker::getAllMDDTypes" );
+
+ OIdSet* retval = new OIdSet();
+ DBObjectPMap& theMap = ObjectBroker::getMap(OId::MDDTYPEOID);
+ for (DBObjectPMap::iterator i = theMap.begin(); i != theMap.end(); i++)
+ {
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "inserted from memory " << (*i).first);
+ retval->insert((*i).first);
+ }
+ OId id;
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ long mddtoid1;
+ EXEC SQL END DECLARE SECTION;
+
+ TALK( "EXEC SQL DECLARE mddtcursor CURSOR FOR SELECT MDDTypeOId FROM RAS_MDDTYPES ORDER BY MDDTypeOId" );
+ EXEC SQL DECLARE mddtcursor CURSOR FOR
+ SELECT MDDTypeOId
+ FROM RAS_MDDTYPES
+ ORDER BY MDDTypeOId;
+
+ TALK( "EXEC SQL OPEN mddtcursor" );
+ EXEC SQL OPEN mddtcursor;
+
+ do
+ {
+ TALK( "EXEC SQL FETCH mddtcursor INTO :mddtoid1" ) ;
+ EXEC SQL FETCH mddtcursor INTO :mddtoid1;
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE != SQLNODATAFOUND)
+ {
+ check("ObjectBroker::getAllMDDTypes()\0");
+ EXEC SQL CLOSE mddtcursor;
+ delete retval;
+ retval = 0;
+ LEAVE( "ObjectBroker::getAllMDDTypes(): db access error: " << SQLCODE );
+ generateException();
+ }
+ break;
+ }
+ id = OId(mddtoid1, OId::MDDTYPEOID);
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "read " << id << " " << id.getType());
+ TALK( "got object " << id << " " << id.getType() );
+ retval->insert(id);
+ } while (1);
+
+ TALK( "EXEC SQL CLOSE mddtcursor" );
+ EXEC SQL CLOSE mddtcursor;
+
+ LEAVE( "ObjectBroker::getAllMDDTypes, retval=" << retval );
+ RMDBGEXIT(11, RMDebug::module_adminif, "ObjectBroker", "getAllMDDTypes() ");
+ return retval;
+}
+
+OIdSet*
+ObjectBroker::getAllMDDBaseTypes() throw (r_Error)
+{
+ RMDBGENTER(11, RMDebug::module_adminif, "ObjectBroker", "getAllMDDBaseTypes()");
+ ENTER( "ObjectBroker::getAllMDDBaseTypes" );
+
+ OIdSet* retval = new OIdSet();
+ DBObjectPMap& theMap = ObjectBroker::getMap(OId::MDDBASETYPEOID);
+ for (DBObjectPMap::iterator i = theMap.begin(); i != theMap.end(); i++)
+ {
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "inserted from memory " << (*i).first);
+ retval->insert((*i).first);
+ }
+ OId id;
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ long mddboid1;
+ EXEC SQL END DECLARE SECTION;
+
+ TALK( "EXEC SQL DECLARE mddbcursor CURSOR FOR SELECT MDDBaseTypeOId FROM RAS_MDDBASETYPES ORDER BY MDDBaseTypeOId" );
+ EXEC SQL DECLARE mddbcursor CURSOR FOR
+ SELECT MDDBaseTypeOId
+ FROM RAS_MDDBASETYPES
+ ORDER BY MDDBaseTypeOId;
+
+ TALK( "EXEC SQL OPEN mddbcursor" );
+ EXEC SQL OPEN mddbcursor;
+
+ do
+ {
+ TALK( "EXEC SQL FETCH mddbcursor INTO :mddboid1" );
+ EXEC SQL FETCH mddbcursor INTO :mddboid1;
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE != SQLNODATAFOUND)
+ {
+ check("ObjectBroker::getAllMDDBaseTypes()\0");
+ EXEC SQL CLOSE mddbcursor;
+ delete retval;
+ retval = 0;
+ LEAVE( "ObjectBroker::getAllMDDBaseTypes(): db access error: " << SQLCODE );
+ generateException();
+ }
+ break;
+ }
+ id = OId(mddboid1, OId::MDDBASETYPEOID);
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "read " << id << " " << id.getType());
+ TALK( "got object " << id << " " << id.getType() );
+ retval->insert(id);
+ } while (1);
+
+ TALK( "EXEC SQL CLOSE mddbcursor" );
+ EXEC SQL CLOSE mddbcursor;
+
+ LEAVE( "ObjectBroker::getAllMDDBaseTypes, retval=" << retval );
+ RMDBGEXIT(11, RMDebug::module_adminif, "ObjectBroker", "getAllMDDBaseTypes() ");
+ return retval;
+}
+
+OIdSet*
+ObjectBroker::getAllMDDDimensionTypes() throw (r_Error)
+{
+ RMDBGENTER(11, RMDebug::module_adminif, "ObjectBroker", "getAllMDDDimensionTypes()");
+ ENTER( "ObjectBroker::getAllMDDDimensionTypes" );
+
+ OIdSet* retval = new OIdSet();
+ DBObjectPMap& theMap = ObjectBroker::getMap(OId::MDDDIMTYPEOID);
+ for (DBObjectPMap::iterator i = theMap.begin(); i != theMap.end(); i++)
+ {
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "inserted from memory " << (*i).first);
+ retval->insert((*i).first);
+ }
+ OId id;
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ long mdddioid1;
+ EXEC SQL END DECLARE SECTION;
+
+ TALK( "EXEC SQL DECLARE mdddicursor CURSOR FOR SELECT MDDDimTypeOId FROM RAS_MDDDIMTYPES ORDER BY MDDDimTypeOId" );
+ EXEC SQL DECLARE mdddicursor CURSOR FOR
+ SELECT MDDDimTypeOId
+ FROM RAS_MDDDIMTYPES
+ ORDER BY MDDDimTypeOId;
+
+ TALK( "EXEC SQL OPEN mdddicursor" );
+ EXEC SQL OPEN mdddicursor;
+
+ do
+ {
+ TALK( "EXEC SQL FETCH mdddicursor INTO :mdddioid1" );
+ EXEC SQL FETCH mdddicursor INTO :mdddioid1;
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE != SQLNODATAFOUND)
+ {
+ check("ObjectBroker::getAllMDDDimensionTypes()\0");
+ EXEC SQL CLOSE mdddicursor;
+ delete retval;
+ retval = 0;
+ LEAVE( "ObjectBroker::getAllMDDDimensionTypes(): db access error: " << SQLCODE );
+ generateException();
+ }
+ break;
+ }
+ id = OId(mdddioid1, OId::MDDDIMTYPEOID);
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "read " << id << " " << id.getType());
+ TALK( "got object " << id << " " << id.getType() );
+ retval->insert(id);
+ } while (1);
+
+ TALK( "EXEC SQL CLOSE mdddicursor" );
+ EXEC SQL CLOSE mdddicursor;
+
+ LEAVE( "ObjectBroker::getAllMDDDimensionTypes, retval=" << retval );
+ RMDBGEXIT(11, RMDebug::module_adminif, "ObjectBroker", "getAllMDDDimensionTypes() ");
+ return retval;
+}
+
+OIdSet*
+ObjectBroker::getAllMDDDomainTypes() throw (r_Error)
+{
+ RMDBGENTER(11, RMDebug::module_adminif, "ObjectBroker", "getAllMDDDomainTypes()");
+ ENTER( "ObjectBroker::getAllMDDDomainTypes" );
+
+ OIdSet* retval = new OIdSet();
+ DBObjectPMap& theMap = ObjectBroker::getMap(OId::MDDDOMTYPEOID);
+ for (DBObjectPMap::iterator i = theMap.begin(); i != theMap.end(); i++)
+ {
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "inserted from memory " << (*i).first);
+ retval->insert((*i).first);
+ }
+ OId id;
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ long mdddooid1;
+ EXEC SQL END DECLARE SECTION;
+
+ TALK( "EXEC SQL DECLARE mdddocursor CURSOR FOR SELECT MDDDomTypeOId FROM RAS_MDDDOMTYPES ORDER BY MDDDomTypeOId" );
+ EXEC SQL DECLARE mdddocursor CURSOR FOR
+ SELECT MDDDomTypeOId
+ FROM RAS_MDDDOMTYPES
+ ORDER BY MDDDomTypeOId;
+
+ TALK( "EXEC SQL OPEN mdddocursor" );
+ EXEC SQL OPEN mdddocursor;
+
+ do
+ {
+ TALK( "EXEC SQL FETCH mdddocursor INTO :mdddooid1" );
+ EXEC SQL FETCH mdddocursor INTO :mdddooid1;
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE != SQLNODATAFOUND)
+ {
+ check("ObjectBroker::getAllMDDDomainTypes()\0");
+ EXEC SQL CLOSE mdddocursor;
+ delete retval;
+ retval = 0;
+ LEAVE( "ObjectBroker::getAllMDDDomainTypes(): db access error: " << SQLCODE );
+ generateException();
+ }
+ break;
+ }
+ id = OId(mdddooid1, OId::MDDDOMTYPEOID);
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "read " << id << " " << id.getType());
+ TALK( "got object " << id << " " << id.getType() );
+ retval->insert(id);
+ } while (1);
+ TALK( "EXEC SQL CLOSE mdddocursor" );
+ EXEC SQL CLOSE mdddocursor;
+
+ LEAVE( "ObjectBroker::getAllMDDDomainTypes" );
+ RMDBGEXIT(11, RMDebug::module_adminif, "ObjectBroker", "getAllMDDDomainTypes() ");
+ return retval;
+}
+
+OIdSet*
+ObjectBroker::getAllStructTypes() throw (r_Error)
+{
+ RMDBGENTER(11, RMDebug::module_adminif, "ObjectBroker", "getAllStructTypes()");
+ ENTER( "ObjectBroker::getAllStructTypes" );
+
+ OIdSet* retval = new OIdSet();
+ DBObjectPMap& theMap = ObjectBroker::getMap(OId::STRUCTTYPEOID);
+ for (DBObjectPMap::iterator i = theMap.begin(); i != theMap.end(); i++)
+ {
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "inserted from memory " << (*i).first);
+ retval->insert((*i).first);
+ }
+ OId id;
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ long structoid1;
+ short maxbuiltin;
+ EXEC SQL END DECLARE SECTION;
+
+ maxbuiltin = TypeFactory::MaxBuiltInId;
+
+ TALK( "EXEC SQL DECLARE structcursor CURSOR FOR SELECT BaseTypeId FROM RAS_BASETYPENAMES ORDER BY BaseTypeId" );
+ EXEC SQL DECLARE structcursor CURSOR FOR
+ SELECT BaseTypeId
+ FROM RAS_BASETYPENAMES
+ ORDER BY BaseTypeId;
+
+ TALK( "EXEC SQL OPEN structcursor" );
+ EXEC SQL OPEN structcursor;
+
+ do
+ {
+ TALK( "EXEC SQL FETCH structcursor INTO :structoid1" );
+ EXEC SQL FETCH structcursor INTO :structoid1;
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE != SQLNODATAFOUND)
+ {
+ check("ObjectBroker::getAllStructTypes()\0");
+ EXEC SQL CLOSE structcursor;
+ delete retval;
+ retval = 0;
+ LEAVE( "ObjectBroker::getAllStructTypes(): db access error: " << SQLCODE );
+ generateException();
+ }
+ break;
+ }
+ id = OId(structoid1, OId::STRUCTTYPEOID);
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "read " << id << " " << id.getType());
+ TALK( "got object " << id << " " << id.getType() );
+ retval->insert(id);
+ } while (1);
+ TALK( "EXEC SQL CLOSE structcursor" );
+ EXEC SQL CLOSE structcursor;
+
+ LEAVE( "ObjectBroker::getAllStructTypes, retval=" << retval );
+ RMDBGEXIT(11, RMDebug::module_adminif, "ObjectBroker", "getAllStructTypes() ");
+ return retval;
+}
+
+OIdSet*
+ObjectBroker::getAllMDDObjects() throw (r_Error)
+{
+ RMDBGENTER(11, RMDebug::module_adminif, "ObjectBroker", "getAllMDDObjects()");
+ ENTER( "ObjectBroker::getAllMDDObjects" );
+
+ OIdSet* retval = new OIdSet();
+ DBObjectPMap& theMap = ObjectBroker::getMap(OId::MDDOID);
+ for (DBObjectPMap::iterator i = theMap.begin(); i != theMap.end(); i++)
+ {
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "inserted from memory " << (*i).first);
+ retval->insert((*i).first);
+ }
+ OId id;
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ long mddobjoid1;
+ EXEC SQL END DECLARE SECTION;
+
+ TALK(" EXEC SQL DECLARE mddobjcursor CURSOR FOR SELECT MDDId FROM RAS_MDDOBJECTS ORDER BY MDDId" );
+ EXEC SQL DECLARE mddobjcursor CURSOR FOR
+ SELECT MDDId
+ FROM RAS_MDDOBJECTS
+ ORDER BY MDDId;
+
+ TALK( "EXEC SQL OPEN mddobjcursor" );
+ EXEC SQL OPEN mddobjcursor;
+
+ do
+ {
+ TALK( "EXEC SQL FETCH mddobjcursor INTO :mddobjoid1" );
+ EXEC SQL FETCH mddobjcursor INTO :mddobjoid1;
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE != SQLNODATAFOUND)
+ {
+ check("ObjectBroker::getAllMDDObjects()\0");
+ EXEC SQL CLOSE mddobjcursor;
+ delete retval;
+ retval = 0;
+ RMDBGEXIT(11, RMDebug::module_adminif, "ObjectBroker", "Database Failed");
+ LEAVE( "ObjectBroker::getAllMDDObjects(): db access error: " << SQLCODE );
+ generateException();
+ }
+ break;
+ }
+ id = OId(mddobjoid1, OId::MDDOID);
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "read " << id << " " << id.getType());
+ TALK( "got object " << id << " " << id.getType() );
+ retval->insert(id);
+ } while (1);
+ TALK( "EXEC SQL CLOSE mddobjcursor" );
+ EXEC SQL CLOSE mddobjcursor;
+
+ LEAVE( "ObjectBroker::getAllMDDObjects, retval=" << retval );
+ RMDBGEXIT(11, RMDebug::module_adminif, "ObjectBroker", "getAllMDDObjects() ");
+ return retval;
+}
+
+OIdSet*
+ObjectBroker::getAllMDDSets() throw (r_Error)
+{
+ RMDBGENTER(11, RMDebug::module_adminif, "ObjectBroker", "getAllMDDSets()");
+ ENTER( "ObjectBroker::getAllMDDSets" );
+
+ OIdSet* retval = new OIdSet();
+ DBObjectPMap& theMap = ObjectBroker::getMap(OId::MDDCOLLOID);
+ for (DBObjectPMap::iterator i = theMap.begin(); i != theMap.end(); i++)
+ {
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "inserted from memory " << (*i).first);
+ retval->insert((*i).first);
+ }
+ OId id;
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ long colloid1;
+ EXEC SQL END DECLARE SECTION;
+
+ TALK( "EXEC SQL DECLARE collcursor CURSOR FOR SELECT MDDCollId FROM RAS_MDDCOLLNAMES ORDER BY MDDCollId" );
+ EXEC SQL DECLARE collcursor CURSOR FOR
+ SELECT MDDCollId
+ FROM RAS_MDDCOLLNAMES
+ ORDER BY MDDCollId;
+
+ TALK(" EXEC SQL OPEN collcursor" );
+ EXEC SQL OPEN collcursor;
+
+ do
+ {
+ TALK( "EXEC SQL FETCH collcursor INTO :colloid1" );
+ EXEC SQL FETCH collcursor INTO :colloid1;
+ if (SQLCODE != SQLOK)
+ {
+ if (SQLCODE != SQLNODATAFOUND)
+ {
+ check("ObjectBroker::getAllMDDSets()\0");
+ EXEC SQL CLOSE collcursor;
+ delete retval;
+ retval = 0;
+ RMDBGEXIT(11, RMDebug::module_adminif, "ObjectBroker", "Database Failed");
+ LEAVE( "ObjectBroker::getAllMDDSets(): db access error: " << SQLCODE );
+ generateException();
+ }
+ break;
+ }
+ id = OId(colloid1, OId::MDDCOLLOID);
+ RMDBGMIDDLE(11, RMDebug::module_adminif, "ObjectBroker", "read " << id << " " << id.getType());
+ TALK( "got object " << id << " " << id.getType() );
+ retval->insert(id);
+ } while (1);
+ TALK( "EXEC SQL CLOSE collcursor" );
+ EXEC SQL CLOSE collcursor;
+
+ LEAVE( "ObjectBroker::getAllMDDSets, retval=" << retval );
+ RMDBGEXIT(11, RMDebug::module_adminif, "ObjectBroker", "getAllMDDSets() ");
+ return retval;
+}
+