summaryrefslogtreecommitdiffstats
path: root/relcatalogif/mdddomaintype.pgc
diff options
context:
space:
mode:
Diffstat (limited to 'relcatalogif/mdddomaintype.pgc')
-rw-r--r--relcatalogif/mdddomaintype.pgc143
1 files changed, 143 insertions, 0 deletions
diff --git a/relcatalogif/mdddomaintype.pgc b/relcatalogif/mdddomaintype.pgc
new file mode 100644
index 0000000..ec2cd80
--- /dev/null
+++ b/relcatalogif/mdddomaintype.pgc
@@ -0,0 +1,143 @@
+#include "mymalloc/mymalloc.h"
+// This is -*- C++ -*-
+
+/*
+* 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>.
+*/
+/*************************************************************
+ *
+ *
+ * PURPOSE:
+ * Code with embedded SQL for PostgreSQL DBMS
+ *
+ *
+ * COMMENTS:
+ * uses embedded SQL
+ *
+ ************************************************************/
+
+// general embedded SQL related definitions
+EXEC SQL include "../reladminif/sqlglobals.h";
+
+#include "mdddomaintype.hh"
+#include "raslib/rmdebug.hh"
+#include "reladminif/objectbroker.hh"
+#include "reladminif/sqlerror.hh"
+#include "dbminterval.hh"
+
+
+void
+MDDDomainType::insertInDb() throw (r_Error)
+{
+ RMDBGENTER(5, RMDebug::module_catalogif, "MDDDomainType", "insertInDb() " << myOId << " " << getTypeName());
+
+ char* domstr = 0;
+ EXEC SQL BEGIN DECLARE SECTION;
+ long mddtypeid;
+ double mddbasetypeid;
+ char mddtypename[VARCHAR_MAXLEN];
+ long domainid;
+ EXEC SQL END DECLARE SECTION;
+
+ (void) strncpy( mddtypename, (char*) getName(), (size_t) sizeof(mddtypename) );
+ DBObject* obj = (DBObject*)getBaseType();
+ mddbasetypeid = obj->getOId();
+ mddtypeid = myOId.getCounter();
+ domainid = myDomain->getOId().getCounter();
+
+ EXEC SQL INSERT INTO RAS_MDDDOMTYPES ( MDDDomTypeOId, MDDTypeName, BaseTypeId, DomainId)
+ VALUES ( :mddtypeid, :mddtypename, :mddbasetypeid, :domainid);
+ if (check("MDDDomainType::insertInDb()\0"))
+ generateException();
+
+ DBObject::insertInDb();
+
+ RMDBGEXIT(5, RMDebug::module_catalogif, "MDDDomainType", "insertInDb() " << myOId);
+}
+
+void
+MDDDomainType::readFromDb() throw (r_Error)
+{
+ RMDBGENTER(5, RMDebug::module_catalogif, "MDDDomainType", "readFromDb() " << myOId);
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ long mddtypeid1;
+ struct {
+ short length;
+ char data[STRING_MAXLEN];
+ } mddtypename1;
+ double mddbasetypeid1;
+ long domainid1;
+ EXEC SQL END DECLARE SECTION;
+
+ mddtypeid1 = myOId.getCounter();
+ mddbasetypeid1 = 0;
+
+ EXEC SQL SELECT BaseTypeId, MDDTypeName, DomainId
+ INTO :mddbasetypeid1, :mddtypename1, :domainid1
+ FROM RAS_MDDDOMTYPES
+ WHERE MDDDomTypeOId = :mddtypeid1;
+ if (check("MDDDomainType::MDDDomainType() SELECT FROM RAS_MDDDOMTYPES\0") != 0)
+ {
+ if (SQLCODE == 100)
+ throw r_Error(r_Error::r_Error_ObjectUnknown);
+ else
+ generateException();
+ }
+
+ setName(mddtypename1.length, mddtypename1.data);
+ myBaseType = (BaseType*)ObjectBroker::getObjectByOId(OId(mddbasetypeid1));
+ myDomain = (DBMinterval*)ObjectBroker::getObjectByOId(OId(domainid1, OId::DBMINTERVALOID));
+ myDomain->setCached(true);
+
+#ifdef RMANBENCHMARK
+ DBObject::readTimer.pause();
+#endif
+
+ DBObject::readFromDb();
+
+ RMDBGEXIT(5, RMDebug::module_catalogif, "MDDDomainType", "readFromDb() " << myOId);
+}
+
+void
+MDDDomainType::deleteFromDb() throw (r_Error)
+{
+ RMDBGENTER(5, RMDebug::module_catalogif, "MDDDomainType", "deleteFromDb() " << myOId << " " << getTypeName());
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ long mddtypeid2;
+ EXEC SQL END DECLARE SECTION;
+
+ mddtypeid2 = myOId.getCounter();
+
+ EXEC SQL DELETE FROM RAS_MDDDOMTYPES
+ WHERE MDDDomTypeOId = :mddtypeid2;
+ if (check("MDDDomainType::deleteFromDb()\0"))
+ generateException();
+
+ myDomain->setPersistent(false);
+ myDomain->setCached(false);
+
+ DBObject::deleteFromDb();
+
+ RMDBGEXIT(5, RMDebug::module_catalogif, "MDDDomainType", "deleteFromDb() " << myOId);
+}