/* * 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 . * * Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / rasdaman GmbH. * * For more information please see * or contact Peter Baumann via . */ #include #include #ifdef EARLY_TEMPLATE #define __EXECUTABLE__ #endif #include "rasodmg/database.hh" #include "rasodmg/transaction.hh" #include "rasodmg/marray.hh" #include "rasodmg/ref.hh" #include "rasodmg/set.hh" #include "rasodmg/oqlquery.hh" #define STRINGSIZE 256 int main(int argc, char *argv[]) { char dbname[STRINGSIZE] = ""; char servername[STRINGSIZE] = ""; char collname[STRINGSIZE] = "tTAcoll"; r_Range range_low = 0; r_Range range_high = 15; int i; i = 1; while (i < argc) { if (argv[i][0] == '-') { switch (argv[i][1]) { case 's': strcpy(servername, argv[++i]); break; case 'd': strcpy(dbname, argv[++i]); break; case 'c': strcpy(collname, argv[++i]); break; case 'h': cout << "Usage: " << argv[0] << " -s servername -d dbname" << endl; exit(0); } } i++; } if ((strlen(servername) == 0) || (strlen(dbname) == 0)) { cerr << "Must specify servername and databasename!" << endl; exit(-1); } r_Database db; try { cout << "Trying to open " << dbname << " on " << servername << "... "; cout << flush; db.set_servername(servername); db.open(dbname); cout << "OK" << endl; } catch (r_Error &err) { cout << "failed." << endl; cerr << err.what(); return -1; } r_Transaction ta; char queryString[STRINGSIZE]; try { ta.begin(); sprintf(queryString, "CREATE COLLECTION %s GreySet", collname); cout << "Collection " << collname << flush; r_OQL_Query query(queryString); r_oql_execute(query); ta.commit(); cout << " created." << endl; } catch (r_Error &err) { ta.abort(); cout << " not created: " << err.what() << endl; } try { r_Sinterval siv = r_Sinterval(range_low, range_high); r_Minterval interv(2); interv << siv << siv; r_Ref > mddPtr = new ("GreyImage") r_Marray(interv); memset(mddPtr->get_array(), 0, interv.cell_count()); ta.begin(); cout << "Starting write transaction, press return to commit..." << flush; sprintf(queryString, "INSERT INTO %s VALUES $1", collname); r_OQL_Query query(queryString); query << (*mddPtr); r_oql_execute(query); while (fgetc(stdin) == EOF) ; ta.commit(); cout << "Write transaction successful." << endl; } catch(r_Error &err) { cerr << "Write transaction failed: " << err.what() << endl; ta.abort(); db.close(); exit(0); } db.close(); return 0; }