rmp-common-library/src/main/java/org/gcube/resourcemanagement/support/server/gcube/queries/QueryLoader.java

74 lines
2.5 KiB
Java

/****************************************************************************
* This software is part of the gCube Project.
* Site: http://www.gcube-system.org/
****************************************************************************
* The gCube/gCore software is licensed as Free Open Source software
* conveying to the EUPL (http://ec.europa.eu/idabc/eupl).
* The software and documentation is provided by its authors/distributors
* "as is" and no expressed or
* implied warranty is given for its use, quality or fitness for a
* particular case.
****************************************************************************
* Filename: QueryLoader.java
****************************************************************************
* @author <a href="mailto:daniele.strollo@isti.cnr.it">Daniele Strollo</a>
***************************************************************************/
package org.gcube.resourcemanagement.support.server.gcube.queries;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import org.gcube.resourcemanagement.support.server.utils.ServerConsole;
/**
* Resource_support utility to load at runtime the customized queries to submit to
* the IS.
* @author Daniele Strollo
* @author Massimiliano Assante (ISTI-CNR)
*/
public class QueryLoader {
private static final HashMap<QueryLocation, String> cachedQueries = new HashMap<QueryLocation, String>();
private static final String LOG_PREFIX = "[QUERY-LOADER]";
/**
* @param query the location of query file to load
* @return the string consisting of the xquery to submit to the server
* @throws Exception
*/
public static String getQuery(final QueryLocation query) throws Exception {
if (query == null) {
throw new Exception("Invalid query parameter. Null not allowed.");
}
ServerConsole.trace(LOG_PREFIX, "loading " + query.name());
if (query != null && cachedQueries.containsKey(query)) {
return cachedQueries.get(query);
}
BufferedReader in = new BufferedReader(new InputStreamReader(query.getFileName()));
StringBuilder retval = new StringBuilder();
String currLine = null;
while ((currLine = in.readLine()) != null) {
// a comment
if (currLine.trim().length() > 0 && currLine.trim().startsWith("#")) {
continue;
}
if (currLine.trim().length() == 0) { continue; }
retval.append(currLine + System.getProperty("line.separator"));
}
in.close();
String tmp = retval.toString();
if (cachedQueries != null) {
cachedQueries.put(query, tmp);
}
return tmp;
}
}