/* * 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 . */ /************************************************************* * * * PURPOSE: Example Java program for reading a query out of a file * and send it to the server and write the result into a log file * * ************************************************************/ import rasj.*; import rasj.odmg.*; import org.odmg.*; import java.util.*; import java.io.*; /** * Example Java program for reading a query out of a file * and send it to the server and write the result into a log file * * set the server name with -server, the database name with -database, the collection name with -collection, * set port number with -port, the user login with -user, the password with -passwd, * the path to log file with -logfile, path to query file with -queryfile */ public class Query { public static void main( String[] args ) { String server = "localhost"; String port = "7001"; String base = "RASBASE"; String coll = "rockies"; String user = "rasguest"; String passwd = "rasguest"; String file = ""; String query = ""; String log = ""; String ret = ""; for (int i=args.length-1; i>=0; i--) { //System.out.println(args[i]); if (args[i].equals("-server")) server = args[i+1]; if (args[i].equals("-port")) port = args[i+1]; if (args[i].equals("-database")) base = args[i+1]; if (args[i].equals("-collection")) coll = args[i+1]; if (args[i].equals("-logfile")) log = args[i+1]; if (args[i].equals("-user")) user = args[i+1]; if (args[i].equals("-passwd")) passwd = args[i+1]; if (args[i].equals("-queryfile")) { try { file = args[i+1]; //System.out.println(file); FileReader fr = new FileReader(file); BufferedReader in = new BufferedReader(fr); String s; while((s = in.readLine()) != null) { String t = s.trim(); while(t.regionMatches(0, "--", 0, 2)) { s = in.readLine(); t = s.trim(); } query = query +" "+ s; } } catch(FileNotFoundException e) { ret = ret+" Query-file not found!"+e.getMessage(); System.err.println(ret); } catch(IOException e) { ret = ret+" Could not read Query-file!"+e.getMessage(); System.err.println(ret); } } } Transaction myTa = null; Database myDb = null; int accessMode = Database.OPEN_READ_ONLY; try { Implementation myApp = new RasImplementation("http://"+server+":"+port); ((RasImplementation)myApp).setUserIdentification(user, passwd); OQLQuery myQu = myApp.newOQLQuery(); if(query.equals("")) query="select avg_cells(a) from "+ coll+" as a"; //query="create collection UpdateULong1 ULongSet"; //query="insert into UpdateULong1 values $1"; myQu.create(query); StringTokenizer strTok = new StringTokenizer(query, "$"); RasMInterval domain; RasGMArray mddConst; if(strTok.hasMoreTokens()) strTok.nextToken(); while(strTok.hasMoreTokens()) { strTok.nextToken(); domain = new RasMInterval("[0:10,0:10]"); RasStorageLayout stl = new RasStorageLayout(); stl.setTileSize(100); mddConst = new RasGMArray(domain, 4, stl); mddConst.setObjectTypeName("ULongImage"); //System.out.println(mddConst); myQu.bind(mddConst); } //check if is an update Query if((query.indexOf("select") == -1) && (query.indexOf("SELECT") == -1)) accessMode = Database.OPEN_READ_WRITE; myDb = myApp.newDatabase(); //System.out.println( "Opening database ..." ); myDb.open( base, accessMode ); //System.out.println( "Starting transaction ..." ); myTa = myApp.newTransaction(); myTa.begin(); //System.out.println( "Executing query..." ); DBag result = (DBag) myQu.execute(); //System.out.println( "Committing transaction ..." ); myTa.commit(); //System.out.println( "Closing database ..." ); myDb.close(); //System.out.println( " Done." ); } catch(RasException e) { ret = ret+"RasException: "+e.getMessage(); System.err.println(ret); } catch (org.odmg.ODMGException e) { ret = ret + query + "\n Failed:\n " + e.getMessage() + "\n"; System.err.println(ret); //System.err.println("Try to abort the transaction ..."); if(myTa != null) myTa.abort(); try { //System.err.println("Try to close the database ..."); if(myDb != null) myDb.close(); } catch ( org.odmg.ODMGException exp ) { ret = ret+" Could not close the database: " + exp.getMessage(); System.err.println(ret); } } if(!log.equals("")) { try { FileOutputStream fos = new FileOutputStream(log, true); PrintWriter pw = new PrintWriter(fos); if(ret.equals("")) ret = "OK."; pw.write(ret); pw.close(); } catch(FileNotFoundException e) { ret = ret+" Log-file not found!"+e.getMessage(); System.out.println(ret); } catch(IOException e) { ret = ret+" Could not write Log-file!"+e.getMessage(); System.out.println(ret); } } } }