summaryrefslogtreecommitdiffstats
path: root/manuals_and_examples/examples/java/Query.java
diff options
context:
space:
mode:
Diffstat (limited to 'manuals_and_examples/examples/java/Query.java')
-rw-r--r--manuals_and_examples/examples/java/Query.java225
1 files changed, 225 insertions, 0 deletions
diff --git a/manuals_and_examples/examples/java/Query.java b/manuals_and_examples/examples/java/Query.java
new file mode 100644
index 0000000..9fd3d9c
--- /dev/null
+++ b/manuals_and_examples/examples/java/Query.java
@@ -0,0 +1,225 @@
+/*
+* 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: 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);
+ }
+ }
+
+ }
+
+}