Strabon

changeset 326:b29f0bd444a1

some code beautification in Strabon
author Babis Nikolaou <charnik@di.uoa.gr>
date Fri Jun 22 17:44:15 2012 +0300 (2012-06-22)
parents 90c0265f8020
children c7dd5add6c9d
files runtime/src/main/java/eu/earthobservatory/runtime/generaldb/Strabon.java
line diff
     1.1 --- a/runtime/src/main/java/eu/earthobservatory/runtime/generaldb/Strabon.java	Fri Jun 22 13:45:05 2012 +0300
     1.2 +++ b/runtime/src/main/java/eu/earthobservatory/runtime/generaldb/Strabon.java	Fri Jun 22 17:44:15 2012 +0300
     1.3 @@ -110,11 +110,13 @@
     1.4  
     1.5  		//Used for the conversions taking place involving JTS + WGS84 (4326)
     1.6  		System.setProperty("org.geotools.referencing.forceXY", "true");
     1.7 +		
     1.8  		//our repository
     1.9  		repo1 = new SailRepository(db_store);
    1.10  
    1.11  		try {
    1.12  			repo1.initialize();
    1.13 +			
    1.14  		} catch (RepositoryException e) {
    1.15  			logger.error("[Strabon.init] initialize", e);
    1.16  		}
    1.17 @@ -123,6 +125,7 @@
    1.18  
    1.19  		try {
    1.20  			con1 = repo1.getConnection();
    1.21 +			
    1.22  		} catch (RepositoryException e) {
    1.23  			logger.error("[Strabon.init] getConnection", e);
    1.24  		}
    1.25 @@ -130,7 +133,7 @@
    1.26  
    1.27  
    1.28  	protected abstract void checkAndDeleteLock(String databaseName, String user, String password, int port, String serverName)
    1.29 -			throws SQLException, ClassNotFoundException ;
    1.30 +			throws SQLException, ClassNotFoundException;
    1.31  
    1.32  	public SailRepositoryConnection getSailRepoConnection() {
    1.33  		return con1;
    1.34 @@ -159,52 +162,52 @@
    1.35  	}
    1.36  
    1.37  	public Object query(String queryString)
    1.38 -	throws  MalformedQueryException, QueryEvaluationException, IOException, TupleQueryResultHandlerException
    1.39 -	{
    1.40 +	throws  MalformedQueryException, QueryEvaluationException, IOException, TupleQueryResultHandlerException {
    1.41  		return query(queryString, "", this.getSailRepoConnection());	
    1.42  	}
    1.43  
    1.44  	public Object query(String queryString, String resultsFormat)
    1.45 -	throws  MalformedQueryException , QueryEvaluationException, IOException, TupleQueryResultHandlerException
    1.46 -	{
    1.47 +	throws  MalformedQueryException , QueryEvaluationException, IOException, TupleQueryResultHandlerException {
    1.48  		return query(queryString, resultsFormat, this.getSailRepoConnection());
    1.49  	}
    1.50  
    1.51  	public Object query(String queryString, SailRepositoryConnection con)
    1.52 -	throws  MalformedQueryException, QueryEvaluationException, IOException, TupleQueryResultHandlerException
    1.53 -	{
    1.54 +	throws  MalformedQueryException, QueryEvaluationException, IOException, TupleQueryResultHandlerException {
    1.55  		return query(queryString, "", con);	
    1.56  	}
    1.57  
    1.58  	public Object queryBindings(String queryString, SailRepositoryConnection con) throws QueryEvaluationException, MalformedQueryException
    1.59  	{
    1.60 -		logger.info("[Strabon.query] Executing query: " + queryString);
    1.61 +		logger.info("[Strabon.query] Executing query: {}", queryString);
    1.62 +		
    1.63  		TupleQuery tupleQuery = null;
    1.64  		try {
    1.65  			tupleQuery = con.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
    1.66 +			
    1.67  		} catch (RepositoryException e) {
    1.68  			logger.error("[Strabon.query] Error in preparing tuple query.", e);
    1.69  		}
    1.70 -		TupleQueryResult result = tupleQuery.evaluate();
    1.71 -		return result;
    1.72 +		
    1.73 +		return tupleQuery.evaluate();
    1.74  	}
    1.75  
    1.76  	public Object query(String queryString, String resultsFormat, SailRepositoryConnection con)
    1.77 -	throws  MalformedQueryException, QueryEvaluationException, IOException, TupleQueryResultHandlerException 
    1.78 -	{
    1.79 -		logger.info("[Strabon.query] Executing query: " + queryString);
    1.80 +	throws  MalformedQueryException, QueryEvaluationException, IOException, TupleQueryResultHandlerException {
    1.81 +		logger.info("[Strabon.query] Executing query: {}", queryString);
    1.82 +		
    1.83  		TupleQuery tupleQuery = null;
    1.84  		try {
    1.85  			tupleQuery = con.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
    1.86 +			
    1.87  		} catch (RepositoryException e) {
    1.88  			logger.error("[Strabon.query] Error in preparing tuple query.", e);
    1.89  		}
    1.90  
    1.91  		ArrayList<String> ret = new ArrayList<String>();
    1.92  		ByteArrayOutputStream retStream = new ByteArrayOutputStream();
    1.93 -		//		DataOutputStream out = new DataOutputStream(retStream);
    1.94 -		OutputStreamWriter writeOut = new OutputStreamWriter(retStream,"UTF-8");
    1.95 -		if ( resultsFormat.equalsIgnoreCase("EXP") ) {
    1.96 +		OutputStreamWriter writeOut = new OutputStreamWriter(retStream, "UTF-8");
    1.97 +		
    1.98 +		if (resultsFormat.equalsIgnoreCase("EXP")) {
    1.99  			long results = 0;
   1.100  			long t1 = System.nanoTime();
   1.101  			TupleQueryResult result = tupleQuery.evaluate();
   1.102 @@ -214,49 +217,64 @@
   1.103  			}
   1.104  			long t3 = System.nanoTime();
   1.105  
   1.106 -			return new long[]{t2-t1, t3-t2, t3-t1,results};
   1.107 -		} else if ( resultsFormat.equalsIgnoreCase("") ) {
   1.108 +			return new long[]{t2-t1, t3-t2, t3-t1, results};
   1.109 +			
   1.110 +		} else if (resultsFormat.equalsIgnoreCase("")) {
   1.111  			TupleQueryResult result = null;
   1.112 -			//System.out.println("About to evaluate: ");
   1.113  			result = tupleQuery.evaluate();
   1.114  
   1.115 -			//System.out.println("-------------------------------------------");
   1.116 -			//System.out.println("-                RESULTS                  -");
   1.117 -			//System.out.println("-------------------------------------------");
   1.118 -
   1.119 -
   1.120  			while (result.hasNext()) {
   1.121  
   1.122  				BindingSet bindingSet = result.next();
   1.123 -				//					try {
   1.124  				System.out.println(bindingSet.toString());
   1.125  				ret.add(bindingSet.toString());
   1.126 -				//					} catch (NullPointerException e) {
   1.127 -				//						 System.err.println("Null pointer");
   1.128 -				//					}
   1.129  			}
   1.130  
   1.131 -			//System.out.println("-------------------------------------------");
   1.132 -			System.out.flush();
   1.133  			return ret;
   1.134 -		}
   1.135 -		else if (resultsFormat.equalsIgnoreCase("XML")) {
   1.136 +			
   1.137 +		} else if (resultsFormat.equalsIgnoreCase("XML")) {
   1.138  			if (logger.isDebugEnabled()) {
   1.139  				logger.debug("Serializing results (XML)");
   1.140  			}
   1.141 -			tupleQuery.evaluate(new stSPARQLResultsXMLWriter(retStream));
   1.142 -		} 
   1.143 -		else if (resultsFormat.equalsIgnoreCase("GeoJSON")) {
   1.144 +			
   1.145 +			tupleQuery.evaluate(new stSPARQLResultsXMLWriter(System.out));
   1.146 +			
   1.147 +		} else if (resultsFormat.equalsIgnoreCase("KML") || resultsFormat.equalsIgnoreCase("KMZ")) {
   1.148 +			if (logger.isDebugEnabled()) {
   1.149 +				logger.debug("Serializing results (KML/KMZ)");
   1.150 +			}
   1.151 +
   1.152 +			if (resultsFormat.equalsIgnoreCase("KML")) { 
   1.153 +				tupleQuery.evaluate(new stSPARQLResultsKMLWriter(System.out));
   1.154 +				
   1.155 +			} else { // KMZ
   1.156 +				// create a zip entry
   1.157 +				ZipEntry entry = new ZipEntry("sparql_results.kml");
   1.158 +				
   1.159 +				// create a zip stream on standard output
   1.160 +				ZipOutputStream kmzout = new ZipOutputStream(System.out);
   1.161 +				
   1.162 +				// add the zip entry in it
   1.163 +				kmzout.putNextEntry(entry);
   1.164 +				
   1.165 +				// pass the zip stream for evaluation
   1.166 +				tupleQuery.evaluate(new stSPARQLResultsKMLWriter(kmzout));
   1.167 +
   1.168 +				// close the zip entry
   1.169 +				kmzout.closeEntry();
   1.170 +				
   1.171 +				// close the zip stream
   1.172 +				kmzout.close();
   1.173 +			}
   1.174 +			
   1.175 +		} else if (resultsFormat.equalsIgnoreCase("GeoJSON")) {
   1.176  
   1.177  			DataOutputStream dos = new DataOutputStream(retStream);
   1.178  
   1.179  			TupleQueryResult result = null;
   1.180 -			try 
   1.181 -			{
   1.182 +			try {
   1.183  				result = tupleQuery.evaluate();
   1.184 -			} 
   1.185 -			catch (QueryEvaluationException e1) 
   1.186 -			{
   1.187 +			} catch (QueryEvaluationException e1) {
   1.188  				e1.printStackTrace();
   1.189  			}
   1.190  
   1.191 @@ -311,16 +329,13 @@
   1.192  					}
   1.193  				}
   1.194  
   1.195 -			}
   1.196 -			else
   1.197 -			{
   1.198 +			} else {
   1.199  				return retStream.toString(); //empty
   1.200  			}
   1.201  
   1.202  			boolean firstLineParsed = false;
   1.203  
   1.204 -			do
   1.205 -			{
   1.206 +			do {
   1.207  				if(firstLineParsed)
   1.208  				{
   1.209  					bindingSet = result.next();
   1.210 @@ -421,50 +436,9 @@
   1.211  			fjson.writeFeatureCollection(sfCollection, dos);
   1.212  			System.out.println(retStream.toString());
   1.213  
   1.214 -		} 
   1.215 -		else if (resultsFormat.equalsIgnoreCase("KML") || resultsFormat.equalsIgnoreCase("KMZ")) {
   1.216 -			if (logger.isDebugEnabled()) {
   1.217 -				logger.debug("Serializing results (KML/KMZ)");
   1.218 -			}
   1.219 -
   1.220 -			if (resultsFormat.equalsIgnoreCase("KML")) { 
   1.221 -				tupleQuery.evaluate(new stSPARQLResultsKMLWriter(System.out));
   1.222 -				
   1.223 -			} else {
   1.224 -				// create a zip entry
   1.225 -				ZipEntry entry = new ZipEntry("sparql_results.kml");
   1.226 -				
   1.227 -				// create a zip stream on standard output
   1.228 -				ZipOutputStream kmzout = new ZipOutputStream(System.out);
   1.229 -				
   1.230 -				// add the zip entry in it
   1.231 -				kmzout.putNextEntry(entry);
   1.232 -				
   1.233 -				// pass the zip stream for evaluation
   1.234 -				tupleQuery.evaluate(new stSPARQLResultsKMLWriter(kmzout));
   1.235 -
   1.236 -				// close the zip entry
   1.237 -				kmzout.closeEntry();
   1.238 -				
   1.239 -				// close the zip stream
   1.240 -				kmzout.close();
   1.241 -			}
   1.242 +		} else if(resultsFormat.equalsIgnoreCase("HTML")) {
   1.243 +			TupleQueryResult result = tupleQuery.evaluate();
   1.244  			
   1.245 -		} else if(resultsFormat.equalsIgnoreCase("HTML")) {
   1.246 -			//System.out.println("Placemark1!!");
   1.247 -			TupleQueryResult result = tupleQuery.evaluate();
   1.248 -			//			List<String> bindingNames = result.getBindingNames();
   1.249 -			//			out.writeBytes("<tr>");
   1.250 -			//			for (int i = 0; i < bindingNames.size(); i++) {
   1.251 -			//				String bindingName = bindingNames.get(i);
   1.252 -			//				out.writeBytes("<th>");
   1.253 -			//				out.writeBytes(bindingName);
   1.254 -			//				out.writeBytes("</th>");
   1.255 -			//			}
   1.256 -			///////////////////////////////
   1.257 -
   1.258 -			//System.out.println("Placemark2!!");
   1.259 -			//Remove IF in case it is considered redundant -> added to test Registry.war
   1.260  			if(result.hasNext())
   1.261  			{
   1.262  				BindingSet set = result.next();
   1.263 @@ -504,25 +478,20 @@
   1.264  					writeOut.write("</tr>");
   1.265  				}
   1.266  			}
   1.267 -		}
   1.268 -		else {
   1.269 +			
   1.270 +		} else {
   1.271  			//			System.exit(-1);// throw new InvalidDatasetFormatFault(); // TODO
   1.272  			logger.warn("[Strabon.query] No such format available \"" + resultsFormat + "\".");
   1.273  			return null;
   1.274  		}
   1.275  
   1.276  		try {
   1.277 -			//			baos.flush();
   1.278  			writeOut.flush();
   1.279  			retStream.flush();
   1.280  		} catch (IOException e) {
   1.281  			logger.error("[Strabon.query]", e);
   1.282  		}
   1.283 -		
   1.284 -		// Print results.
   1.285 -		//System.out.println(retStream.toString());
   1.286  
   1.287 -		//return ret;
   1.288  		return retStream.toString();
   1.289  	}
   1.290  
   1.291 @@ -532,12 +501,11 @@
   1.292  
   1.293  		try {
   1.294  			update = con.prepareUpdate(QueryLanguage.SPARQL, updateString);
   1.295 +			
   1.296  		} catch (RepositoryException e) {
   1.297  			logger.error("[Strabon.update]", e);
   1.298  		}
   1.299  
   1.300 -		//System.out.println("Placemark0");
   1.301 -		//System.out.println("\n\n\nGot query: " + updateString + "\n\n\n");
   1.302  		logger.info("[Strabon.update] executing update query: " + updateString);
   1.303  
   1.304  		try {
   1.305 @@ -545,10 +513,6 @@
   1.306  		} catch (UpdateExecutionException e) {
   1.307  			logger.error("[Strabon.update]", e);
   1.308  		}
   1.309 -
   1.310 -		//		System.out.println("-------------------------------------------");
   1.311 -		//		System.out.println("-            UPDATE EXECUTED              -");
   1.312 -		//		System.out.println("-------------------------------------------");
   1.313  	}
   1.314  
   1.315  	public void storeInRepo(String src, String format) throws RDFParseException, RepositoryException, IOException,InvalidDatasetFormatFault, RDFHandlerException
   1.316 @@ -560,37 +524,34 @@
   1.317  	{
   1.318  		RDFFormat realFormat = null;
   1.319  
   1.320 -		if ((baseURI != null) && (baseURI.equals("")))
   1.321 +		if ((baseURI != null) && (baseURI.equals(""))) {
   1.322  			baseURI = null;
   1.323 +		}
   1.324  
   1.325  		URI uriContext;
   1.326  
   1.327  		if ((context == null) || (context.equals(""))) {
   1.328 -			uriContext  = null; 
   1.329 +			uriContext  = null;
   1.330 +			
   1.331  		} else {
   1.332  			ValueFactory f = repo1.getValueFactory();
   1.333  			uriContext = f.createURI(context);
   1.334  		}
   1.335  
   1.336  
   1.337 -		if(format.equalsIgnoreCase("N3"))
   1.338 -		{
   1.339 +		if(format.equalsIgnoreCase("N3")) {
   1.340  			realFormat =  RDFFormat.N3;
   1.341 -		}
   1.342 -		else if(format.equalsIgnoreCase("NTRIPLES"))
   1.343 -		{
   1.344 +			
   1.345 +		} else if(format.equalsIgnoreCase("NTRIPLES")) {
   1.346  			realFormat =  RDFFormat.NTRIPLES;
   1.347 -		}
   1.348 -		else if(format.equalsIgnoreCase("RDFXML"))
   1.349 -		{
   1.350 +			
   1.351 +		} else if(format.equalsIgnoreCase("RDFXML")) {
   1.352  			realFormat =  RDFFormat.RDFXML;
   1.353 -		}
   1.354 -		else if(format.equalsIgnoreCase("TURTLE"))
   1.355 -		{
   1.356 +			
   1.357 +		} else if(format.equalsIgnoreCase("TURTLE")) {
   1.358  			realFormat =  RDFFormat.TURTLE;
   1.359 -		}
   1.360 -		else
   1.361 -		{
   1.362 +			
   1.363 +		} else {
   1.364  			throw new InvalidDatasetFormatFault();
   1.365  		}
   1.366  
   1.367 @@ -601,19 +562,17 @@
   1.368  		} catch(MalformedURLException e) {
   1.369  
   1.370  			URL fromClasspath = getClass().getResource(src);
   1.371 -			if(fromClasspath!=null)
   1.372 -			{
   1.373 +			if(fromClasspath!=null) {
   1.374  				storeURL(fromClasspath, baseURI, uriContext, realFormat);
   1.375 -			}
   1.376 -			else
   1.377 -			{
   1.378 +				
   1.379 +			} else {
   1.380  				File file = new File(src);
   1.381  				if (file.exists()) {
   1.382  					storeURL(new URL("file://" + src), baseURI, uriContext, realFormat);
   1.383  
   1.384  				} else {
   1.385 -					logger.info("File \"" + src + "\" does not exist. Trying reading as String.");
   1.386 -					storeString((String)src, baseURI, uriContext, realFormat);
   1.387 +					logger.info("File \"{}\" does not exist. Trying reading as String.", src);
   1.388 +					storeString((String) src, baseURI, uriContext, realFormat);
   1.389  				}
   1.390  			}
   1.391  		}
   1.392 @@ -622,10 +581,12 @@
   1.393  	private void storeURL(URL url, String baseURI, URI context, RDFFormat format) throws RDFParseException, RepositoryException, IOException, RDFHandlerException
   1.394  	{
   1.395  		logger.info("[Strabon.storeURL] Storing file.");
   1.396 -		logger.info("[Strabon.storeURL] URL      : " + url.toString());
   1.397 -		logger.info("[Strabon.storeURL] Base URI : " + ((baseURI == null) ? "null" : baseURI));
   1.398 -		logger.info("[Strabon.storeURL] Context  : " + ((context == null) ? "null" : context));
   1.399 -		logger.info("[Strabon.storeURL] Format   : " + ((format == null) ? "null" : format.toString()));
   1.400 +		logger.info("[Strabon.storeURL] URL      : {}", url.toString());
   1.401 +		if (logger.isDebugEnabled()) {
   1.402 +			logger.debug("[Strabon.storeURL] Base URI : {}", ((baseURI == null) ? "null" : baseURI));
   1.403 +			logger.debug("[Strabon.storeURL] Context  : {}", ((context == null) ? "null" : context));
   1.404 +			logger.debug("[Strabon.storeURL] Format   : {}", ((format == null) ? "null" : format));
   1.405 +		}
   1.406  
   1.407  		InputStream in = (InputStream) url.openStream();
   1.408  		InputStreamReader reader = new InputStreamReader(in);
   1.409 @@ -637,18 +598,22 @@
   1.410  		parser.setRDFHandler(handler);
   1.411  		parser.parse(reader, "");
   1.412  
   1.413 -		logger.info("[Strabon.storeURL] Inferred " + handler.getNumberOfTriples() + " triples.");
   1.414 +		logger.info("[Strabon.storeURL] Inferred {} triples.", handler.getNumberOfTriples());
   1.415  		if (handler.getNumberOfTriples() > 0) {
   1.416 -			logger.info("[Strabon.storeURL] Triples inferred:"+ handler.getTriples().toString());
   1.417 +			logger.info("[Strabon.storeURL] Triples inferred: {}", handler.getTriples());
   1.418  		}
   1.419 +		
   1.420  		StringReader georeader = new StringReader(handler.getTriples().toString());
   1.421  		handler.endRDF();
   1.422  
   1.423  		if (context == null) {
   1.424  			con1.add(url, baseURI, format);
   1.425 +			
   1.426  		} else {
   1.427  			con1.add(url, baseURI, format, context);
   1.428 +			
   1.429  		}
   1.430 +		
   1.431  		con1.add(georeader, "", RDFFormat.NTRIPLES);
   1.432  		georeader.close();
   1.433  		logger.info("[Strabon.storeURL] Storing was successful.");
   1.434 @@ -684,10 +649,13 @@
   1.435  		if (context == null) {
   1.436  			con1.add(reader, baseURI, format);
   1.437  			reader.close();
   1.438 +			
   1.439  		} else {
   1.440  			con1.add(reader, baseURI, format, context);
   1.441  			reader.close();
   1.442 +			
   1.443  		}
   1.444 +		
   1.445  		con1.add(georeader, "", RDFFormat.NTRIPLES);
   1.446  		georeader.close();
   1.447  		logger.info("[Strabon.storeString] Storing was successful.");
   1.448 @@ -699,12 +667,11 @@
   1.449  
   1.450  		try {
   1.451  			graphQuery = con.prepareGraphQuery(QueryLanguage.SPARQL, describeString);
   1.452 +			
   1.453  		} catch (RepositoryException e) {
   1.454  			logger.error("[Strabon.describe]", e);
   1.455  		}
   1.456  
   1.457 -		//		System.out.println("Placemark0");
   1.458 -		//		System.out.println("\n\n\nGot query: " + describeString + "\n\n\n");
   1.459  		logger.info("[Strabon.describe] Executing describe query:" + describeString);
   1.460  
   1.461  		try {
   1.462 @@ -723,9 +690,6 @@
   1.463  			logger.error("[Strabon.describe]", e);
   1.464  		}
   1.465  
   1.466 -		logger.info("[Strabon.describe] Output: "+outFile);
   1.467 -		//		System.out.println("---------------------------------------------");
   1.468 -		//		System.out.println("-            DESCRIBE EXECUTED              -");
   1.469 -		//		System.out.println("---------------------------------------------");
   1.470 +		logger.info("[Strabon.describe] Output: {}", outFile);
   1.471  	}
   1.472  }