summaryrefslogtreecommitdiffstats
path: root/relcatalogif/mddbasetype.pgc
diff options
context:
space:
mode:
Diffstat (limited to 'relcatalogif/mddbasetype.pgc')
-rw-r--r--relcatalogif/mddbasetype.pgc125
1 files changed, 125 insertions, 0 deletions
diff --git a/relcatalogif/mddbasetype.pgc b/relcatalogif/mddbasetype.pgc
new file mode 100644
index 0000000..6b4f11d
--- /dev/null
+++ b/relcatalogif/mddbasetype.pgc
@@ -0,0 +1,125 @@
+/*
+* 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:
+ * uses embedded SQL
+ *
+ ************************************************************/
+
+// general embedded SQL related definitions
+EXEC SQL include "../reladminif/sqlglobals.h";
+
+#include "debug-srv.hh"
+#include "mddbasetype.hh"
+#include "raslib/rmdebug.hh"
+#include "reladminif/sqlerror.hh"
+#include "reladminif/externs.h"
+#include "reladminif/objectbroker.hh"
+
+void
+MDDBaseType::insertInDb() throw (r_Error)
+{
+ RMDBGENTER(6, RMDebug::module_catalogif, "MDDBaseType", "insertInDb() " << myOId << " " << getTypeName());
+ EXEC SQL BEGIN DECLARE SECTION;
+ long mddtypeid;
+ double mddbasetypeid;
+ char mddtypename[STRING_MAXLEN];
+ EXEC SQL END DECLARE SECTION;
+
+ (void) strncpy( mddtypename, (char*) getName(), (size_t) sizeof(mddtypename) );
+ DBObject* obj = (DBObject*)getBaseType();
+ mddbasetypeid = obj->getOId();
+ mddtypeid = myOId.getCounter();
+ TALK( "EXEC SQL INSERT INTO RAS_MDDBASETYPES ( MDDBaseTypeOId, MDDTypeName, BaseTypeId)"
+ << " VALUES ( " << mddtypeid << ", " << mddtypename << ", " << mddbasetypeid << ")" );
+ EXEC SQL INSERT INTO RAS_MDDBASETYPES ( MDDBaseTypeOId, MDDTypeName, BaseTypeId)
+ VALUES ( :mddtypeid, :mddtypename, :mddbasetypeid);
+ if (check("MDDBaseType::insertInDb()\0"))
+ generateException();
+ DBObject::insertInDb();
+ RMDBGEXIT(5, RMDebug::module_catalogif, "MDDBaseType", "insertInDb() " << myOId);
+}
+
+void
+MDDBaseType::readFromDb() throw (r_Error)
+{
+ RMDBGENTER(5, RMDebug::module_catalogif, "MDDBaseType", "readFromDb() " << myOId);
+#ifdef RMANBENCHMARK
+ DBObject::readTimer.resume();
+#endif
+ EXEC SQL BEGIN DECLARE SECTION;
+ long mddtypeid1;
+ char mddtypename1[STRING_MAXLEN];
+ double mddbasetypeid1;
+ EXEC SQL END DECLARE SECTION;
+
+ mddtypeid1 = myOId.getCounter();
+ mddbasetypeid1 = 0;
+
+ TALK( "EXEC SQL SELECT BaseTypeId, MDDTypeName INTO :mddbasetypeid1, :mddtypename1 "
+ << "FROM RAS_MDDBASETYPES "
+ << "WHERE MDDBaseTypeOId = " << mddtypeid1 );
+ EXEC SQL SELECT BaseTypeId, MDDTypeName INTO :mddbasetypeid1, :mddtypename1
+ FROM RAS_MDDBASETYPES
+ WHERE MDDBaseTypeOId = :mddtypeid1;
+ if (check("MDDBaseType::readFromDb() SELECT FROM RAS_MDDBASETYPES\0") != 0)
+ if (SQLCODE == 100)
+ throw r_Error(r_Error::r_Error_ObjectUnknown);
+ else
+ generateException();
+
+ setName(mddtypename1);
+ myBaseType = (BaseType*)ObjectBroker::getObjectByOId(OId(mddbasetypeid1));
+#ifdef RMANBENCHMARK
+ DBObject::readTimer.pause();
+#endif
+ DBObject::readFromDb();
+ RMDBGEXIT(5, RMDebug::module_catalogif, "MDDBaseType", "readFromDb() " << myOId);
+}
+
+void
+MDDBaseType::deleteFromDb() throw (r_Error)
+{
+ RMDBGENTER(5, RMDebug::module_catalogif, "MDDBaseType", "deleteFromDb() " << myOId << " " << getTypeName());
+ EXEC SQL BEGIN DECLARE SECTION;
+ long mddtypeid2;
+ EXEC SQL END DECLARE SECTION;
+
+ mddtypeid2 = myOId.getCounter();
+
+ TALK( "EXEC SQL DELETE FROM RAS_MDDBASETYPES WHERE MDDBaseTypeOId = " << mddtypeid2 );
+ EXEC SQL DELETE FROM RAS_MDDBASETYPES
+ WHERE MDDBaseTypeOId = :mddtypeid2;
+ if (check("MDDBaseType::deleteFromDb()\0"))
+ generateException();
+ DBObject::deleteFromDb();
+ RMDBGEXIT(5, RMDebug::module_catalogif, "MDDBaseType", "deleteFromDb() " << myOId);
+}
+