summaryrefslogtreecommitdiffstats
path: root/reladminif/oidif.pgc
diff options
context:
space:
mode:
Diffstat (limited to 'reladminif/oidif.pgc')
-rw-r--r--reladminif/oidif.pgc135
1 files changed, 135 insertions, 0 deletions
diff --git a/reladminif/oidif.pgc b/reladminif/oidif.pgc
new file mode 100644
index 0000000..9f19254
--- /dev/null
+++ b/reladminif/oidif.pgc
@@ -0,0 +1,135 @@
+/*
+* 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:
+ *
+ *
+ * COMMENTS:
+ * uses embedded SQL
+ *
+ *****************************************************************************/
+
+static const char rcsid[] = "@(#)reladminif,OIdIf: $Id: oidif.ec,v 1.5 2003/12/27 23:11:43 rasdev Exp $";
+
+#include "debug-srv.hh"
+
+// general embedded SQL related definitions
+EXEC SQL include "sqlglobals.h";
+
+#include "oidif.hh"
+#include "raslib/rmdebug.hh"
+#include "sqlerror.hh"
+#include "adminif.hh"
+
+void
+OId::initialize()
+{
+ RMDBGENTER(4, RMDebug::module_adminif, "OId", "initialize()");
+ ENTER( "OId::initialize" );
+
+ loadedOk = false;
+
+ EXEC SQL BEGIN DECLARE SECTION;
+ long nextoid;
+ char name[STRING_MAXLEN];
+ EXEC SQL END DECLARE SECTION;
+ nextoid = 0;
+ for (int i = 1; i < maxCounter; i++)
+ {
+ (void) strncpy( name, (char*) counterNames[i], (size_t) sizeof(name) );
+
+ TALK( "EXEC SQL SELECT NextValue INTO :nextoid FROM RAS_COUNTERS WHERE CounterName = " << name );
+ EXEC SQL SELECT NextValue INTO :nextoid
+ FROM RAS_COUNTERS
+ WHERE CounterName = :name;
+ TALK( "-> nextoid=" << nextoid );
+ if (check("OId::initialize() SELECT OId"))
+ {
+ RMInit::logOut << "OId::initialize() error reading " << name << endl;
+ generateException();
+ }
+ *counterIds[i] = nextoid;
+ RMDBGMIDDLE(4, RMDebug::module_adminif, "OIdIf", "read " << counterNames[i] << " " << *counterIds[i]);
+ }
+
+ loadedOk = true;
+
+ LEAVE( "OId::initialize" );
+ RMDBGEXIT(4, RMDebug::module_adminif, "OId", "initialize()");
+}
+
+void
+OId::deinitialize()
+{
+ RMDBGENTER(4, RMDebug::module_adminif, "OId", "deinitialize()");
+ ENTER( "OId::deinitialize" );
+
+ if (AdminIf::isReadOnlyTA())
+ {
+ RMDBGMIDDLE(4, RMDebug::module_adminif, "OIdIf", "do nothing is read only");
+ }
+ else
+ {
+ if (AdminIf::isAborted())
+ {
+ RMDBGMIDDLE(4, RMDebug::module_adminif, "OIdIf", "do nothing is aborted");
+ }
+
+ else if(loadedOk==false)
+ {
+ RMDBGMIDDLE(4, RMDebug::module_adminif, "OIdIf", "avoiding to write uninitialized counters into DB");
+ }
+
+ else
+ {
+ EXEC SQL BEGIN DECLARE SECTION;
+ long nextoid1;
+ char name2[STRING_MAXLEN];
+ EXEC SQL END DECLARE SECTION;
+
+ for (int i = 1; i < maxCounter; i++)
+ {
+ nextoid1 = *counterIds[i];
+ (void) strncpy( name2, (char*) counterNames[i], (size_t) sizeof(name2) );
+
+ RMDBGMIDDLE(4, RMDebug::module_adminif, "OIdIf", "setting " << name2 << " to " << nextoid1)
+ TALK( "EXEC SQL UPDATE RAS_COUNTERS SET NextValue = " << nextoid1 << " WHERE CounterName = " << name2 );
+ EXEC SQL UPDATE RAS_COUNTERS SET NextValue = :nextoid1
+ WHERE CounterName = :name2;
+ if (check("OId::deinitialize() UPDATE OId"))
+ {
+ RMInit::logOut << "OId::deinitialize() error writing " << name2 << endl;
+ }
+ }
+ }
+ }
+
+ loadedOk = false;
+
+ LEAVE( "OId::deinitialize" );
+ RMDBGEXIT(4, RMDebug::module_adminif, "OId", "deinitialize()");
+}
+