diff options
| author | Andrei Aiordachioaie <a.aiordachioaie@jacobs-university.de> | 2009-08-07 12:08:24 +0200 |
|---|---|---|
| committer | Andrei Aiordachioaie <a.aiordachioaie@jacobs-university.de> | 2009-08-07 11:48:15 +0200 |
| commit | 6809f0681ce452f25651237ab4923b0baa1337d5 (patch) | |
| tree | e02a5e7e01171cfd7d9f5296de9a107f10e0f81a /src | |
| parent | 1aa535dc28010b39b4c2b916b56c94c8c6002e8b (diff) | |
PetaScope usability improvements
- WCPS and WCS-T now both use the ConfigManager for reading settings
- Now we have a unique settings file: settings.properties (dbparams.properties has been removed)
- The HTML templates were moved to a different folder
Diffstat (limited to 'src')
| -rw-r--r-- | src/wcps/server/servlet/WCPSServlet.java | 4 | ||||
| -rw-r--r-- | src/wcst/server/ConfigManager.java | 30 | ||||
| -rw-r--r-- | src/wcst/server/wcstServlet.java | 12 | ||||
| -rw-r--r-- | src/wcst/transaction/executeTransaction.java | 10 | ||||
| -rw-r--r-- | src/wcst/transaction/tools/RasdamanUtils.java | 63 | ||||
| -rw-r--r-- | src/wcst/transaction/tools/TestRasdamanUtils.java | 11 |
6 files changed, 98 insertions, 32 deletions
diff --git a/src/wcps/server/servlet/WCPSServlet.java b/src/wcps/server/servlet/WCPSServlet.java index f791215..b1abaa0 100644 --- a/src/wcps/server/servlet/WCPSServlet.java +++ b/src/wcps/server/servlet/WCPSServlet.java @@ -67,7 +67,7 @@ public class WCPSServlet extends HttpServlet private String rasdamanUrl;
private WCPS wcps;
// path to the default HTML response of the servlet
- private String servletHtmlPath = "/misc/wcps-servlet.html";
+ private String servletHtmlPath = "/templates/wcps-servlet.html";
// String containing the HTML code for the default response
private String defaultHtmlResponse;
@@ -79,7 +79,7 @@ public class WCPSServlet extends HttpServlet System.out.println("WCPS: loading database properties");
dbParams.load(
new FileInputStream(
- getServletContext().getRealPath("/dbparams.properties")));
+ getServletContext().getRealPath("/settings.properties")));
rasdamanUrl = dbParams.getProperty("rasdaman_url");
rasdamanDatabase = dbParams.getProperty("rasdaman_database");
diff --git a/src/wcst/server/ConfigManager.java b/src/wcst/server/ConfigManager.java index 5e6091e..07cd631 100644 --- a/src/wcst/server/ConfigManager.java +++ b/src/wcst/server/ConfigManager.java @@ -43,6 +43,9 @@ public class ConfigManager public static boolean PRINT_LOG; public static String SERVLET_INFO; public static String VERSION; + public static String RASDAMAN_URL; + public static String RASDAMAN_DATABASE; + /* Singleton instance */ private static ConfigManager instance; private static Properties props; @@ -57,12 +60,14 @@ public class ConfigManager props = new Properties(); try { + log("Loading settings from file: " + settingsPath); props.load(new FileInputStream(settingsPath)); initSettings(); } catch (IOException e) { e.printStackTrace(); + log("Failed to load settings."); } } @@ -99,9 +104,26 @@ public class ConfigManager private void initSettings() { - LANGUAGE = get("WCST_LANGUAGE"); - VERSION = get("WCST_VERSION"); - PRINT_LOG = Boolean.parseBoolean(get("PRINT_LOG")); - SERVLET_INFO = get("SERVLET_INFO"); + LANGUAGE = get("wcst_language"); + VERSION = get("wcst_version"); + PRINT_LOG = Boolean.parseBoolean(get("wcst_print_log")); + SERVLET_INFO = get("wcst_servlet_info"); + RASDAMAN_DATABASE = get("rasdaman_database"); + RASDAMAN_URL = get("rasdaman_url"); + + log("---------------------------"); + log("WCS-T Language: " + LANGUAGE); + log("WCS-T Version: " + VERSION); + log("WCS-T Print Log: " + PRINT_LOG); + log("WCS-T Servlet Info: " + SERVLET_INFO); + log("Rasdaman URL: " + RASDAMAN_URL); + log("Rasdaman DB: " + RASDAMAN_DATABASE); + log("---------------------------"); } + + private void log(String msg) + { +// if (PRINT_LOG) + System.out.println(msg); + } } diff --git a/src/wcst/server/wcstServlet.java b/src/wcst/server/wcstServlet.java index 8fb0410..1500fc5 100644 --- a/src/wcst/server/wcstServlet.java +++ b/src/wcst/server/wcstServlet.java @@ -45,24 +45,24 @@ import javax.servlet.http.HttpServletResponse; */ public class wcstServlet extends HttpServlet { - private static final long serialVersionUID = 84786549L; private String defaultHtmlResponse; + private String relativeServletHtmlPath = "/templates/wcst-servlet.html"; private String servletHtmlPath; + private String relativeSettingsPath = "/settings.properties"; private wcstServer server; @Override public void init() throws ServletException { - // Initialize the configuration manager - String settingsPath = getServletContext().getRealPath("/settings.properties"); + // Initialize the configuration manager. Now all classes can read the settings. + String settingsPath = getServletContext().getRealPath(relativeSettingsPath); ConfigManager config = ConfigManager.getInstance(settingsPath); // Initialize the WCS-T server with proper metadata - String metadataDbPath = getServletContext().getRealPath("/dbparams.properties"); - server = new wcstServer(metadataDbPath); + server = new wcstServer(settingsPath); // Load the servlet HTML response - servletHtmlPath = getServletContext().getRealPath("/misc/wcst-servlet.html"); + servletHtmlPath = getServletContext().getRealPath(relativeServletHtmlPath); try { defaultHtmlResponse = FileUtils.readFileToString(new File(servletHtmlPath)); diff --git a/src/wcst/transaction/executeTransaction.java b/src/wcst/transaction/executeTransaction.java index 53428b4..e708c17 100644 --- a/src/wcst/transaction/executeTransaction.java +++ b/src/wcst/transaction/executeTransaction.java @@ -76,6 +76,7 @@ import javax.xml.bind.JAXBElement; import javax.xml.bind.Unmarshaller; import org.odmg.ODMGException; import wcps.server.core.Metadata; +import wcst.server.ConfigManager; import wcst.transaction.tools.RasdamanUtils; /** @@ -87,9 +88,6 @@ import wcst.transaction.tools.RasdamanUtils; public class executeTransaction { private static boolean printLog = true; - public final String ACCEPTED_LANGUAGE = "en"; - public final static String DEFAULT_RASSERVER = "http://kahlua.eecs.jacobs-university.de:7001"; - public final static String DEFAULT_RASDATABASE = "RASBASE"; private boolean finished; private TransactionType input; private MetadataDb meta; @@ -111,8 +109,8 @@ public class executeTransaction metadataSettingsPath = metadataDbPath; meta = new MetadataDb(metadataSettingsPath); - String server = DEFAULT_RASSERVER; - String db = DEFAULT_RASDATABASE; + String server = ConfigManager.RASDAMAN_URL; + String db = ConfigManager.RASDAMAN_DATABASE; rasUtils = new RasdamanUtils(server, db); rasUtils.init(); @@ -571,7 +569,7 @@ public class executeTransaction { LanguageStringType a = (LanguageStringType) i.next(); - if ( a.getLang().equals(ACCEPTED_LANGUAGE) ) + if ( a.getLang().equals(ConfigManager.LANGUAGE) ) result = a.getValue(); } diff --git a/src/wcst/transaction/tools/RasdamanUtils.java b/src/wcst/transaction/tools/RasdamanUtils.java index adcd52a..8eefbba 100644 --- a/src/wcst/transaction/tools/RasdamanUtils.java +++ b/src/wcst/transaction/tools/RasdamanUtils.java @@ -108,8 +108,9 @@ public class RasdamanUtils } catch (Exception e) { -// e.printStackTrace(); - throw new WCSTException("RasdamanUnavailable", "Could not connect to the Rasdaman server !"); +// e.printStackTrace(); + throw new WCSTException("RasdamanUnavailable", + "Could not connect to the Rasdaman server !"); } } @@ -167,7 +168,8 @@ public class RasdamanUtils RasGMArray result = (RasGMArray) iter.next(); byte[] ba = result.getArray(); ByteArrayInputStream bas = new ByteArrayInputStream(ba); - com.sun.image.codec.jpeg.JPEGImageDecoder decoder = com.sun.image.codec.jpeg.JPEGCodec.createJPEGDecoder(bas); + com.sun.image.codec.jpeg.JPEGImageDecoder decoder = com.sun.image.codec.jpeg + .JPEGCodec.createJPEGDecoder(bas); BufferedImage bufImg = null; try @@ -249,7 +251,8 @@ public class RasdamanUtils } } - public void updateGrayImageWithArray(String name, BufferedImage img, int x1, int y1, int x2, int y2) + public void updateGrayImageWithArray(String name, BufferedImage img, int x1, int y1, int x2, + int y2) { try { @@ -260,11 +263,14 @@ public class RasdamanUtils // set up query object for collection creation: OQLQuery myQu = myApp.newOQLQuery(); // Where to insert new image - String interval = String.valueOf(x1) + ":" + String.valueOf(x2) + "," + String.valueOf(y1) + ":" + String.valueOf(y2); + String interval = String.valueOf(x1) + ":" + String.valueOf(x2) + "," + + String.valueOf(y1) + ":" + String.valueOf(y2); // Size of new image - String interval2 = String.valueOf(0) + ":" + String.valueOf(x2 - x1) + "," + String.valueOf(0) + ":" + String.valueOf(y2 - y1); + String interval2 = String.valueOf(0) + ":" + String.valueOf(x2 - x1) + "," + + String.valueOf(0) + ":" + String.valueOf(y2 - y1); - myQu.create("update " + name + " AS c SET c[" + interval + "] " + "assign maaray x in [" + interval2 + "] values $1"); + myQu.create("update " + name + " AS c SET c[" + interval + "] " + + "assign maaray x in [" + interval2 + "] values $1"); // let the server generate a new OID for the object to be // inserted, and remember this OID locally: String myNewOID = myApp.getObjectId(myMDD); @@ -316,6 +322,40 @@ public class RasdamanUtils } } + public void insertColorImageAsArray(String name, BufferedImage img) throws ODMGException + { + try + { + log("Creating grey image ..."); + RasGMArray myMDD = createMddFromImage(img); + // set up query object for collection creation: + OQLQuery myQu = myApp.newOQLQuery(); + + myQu.create("create collection " + name + " RGBSet"); + // set the object type name (used for server type checking): + myMDD.setObjectTypeName("RGBImage"); + // finally, execute “create collection” statement: + log("Creating collection '" + name + "'"); + myQu.execute(); + // now create the insert statement: + myQu.create("insert into " + name + " values $1"); + // let the server generate a new OID for the object to be + // inserted, and remember this OID locally: + String myNewOID = myApp.getObjectId(myMDD); + + // bind the MDD value which substitutes formal parameter $1: + myQu.bind(myMDD); + // …and ship the complete statement to the server: + log("Inserting data into the collection"); + myQu.execute(); + log("Done !"); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + public void insertImageAsJpeg(String name, byte[] img, int maxX, int maxY) throws ODMGException { try @@ -357,7 +397,8 @@ public class RasdamanUtils } } - private RasGMArray createRasArrayFromBytes(byte[] bytes, int maxX, int maxY) throws RasResultIsNoIntervalException + private RasGMArray createRasArrayFromBytes(byte[] bytes, int maxX, int maxY) + throws RasResultIsNoIntervalException { // create 2-D MDD with cell length 1, i.e., type “byte”: String strX = String.valueOf(maxX), strY = String.valueOf(maxY); @@ -373,7 +414,8 @@ public class RasdamanUtils return myMDD; } - public void deleteCollection(String name) throws ODMGException, ODMGException, ODMGException, Exception + public void deleteCollection(String name) + throws ODMGException, ODMGException, ODMGException, Exception { try { @@ -471,7 +513,8 @@ public class RasdamanUtils public BufferedImage convertImageToGray(BufferedImage img) { - BufferedImage image = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_BYTE_GRAY); + BufferedImage image = new BufferedImage(img.getWidth(), img.getHeight(), + BufferedImage.TYPE_BYTE_GRAY); Graphics g = image.getGraphics(); g.drawImage(img, 0, 0, null); diff --git a/src/wcst/transaction/tools/TestRasdamanUtils.java b/src/wcst/transaction/tools/TestRasdamanUtils.java index 4fefeae..965e9b7 100644 --- a/src/wcst/transaction/tools/TestRasdamanUtils.java +++ b/src/wcst/transaction/tools/TestRasdamanUtils.java @@ -63,17 +63,19 @@ public class TestRasdamanUtils // myUtils.loadCoverage("mr"); // myUtils.printAllCollections(); // testLoadRasdaman("rgb"); - testLoadRasdaman("andreiWedding1"); +// testLoadRasdaman("andreiFlickrColor"); // insertImageFromInternet("andreiFlickr1", "http://farm4.static.flickr.com/3347/3500129555_137c537e75_m.jpg"); // myUtils.deleteCollection("andreiFlickr1"); // myUtils.commitAndClose(); // myUtils.deleteCollection("flickr1"); -// updateImageFromInternet("andreiFlickr1", "http://localhost/peta/car.jpeg"); + updateImageFromInternet("andreiFlickr1", "http://localhost/peta/car.jpeg"); + +// insertImageFromInternet("andreiFlickrColor", "http://localhost/peta/flickr1.jpg"); // try // { -// myUtils.deleteCollection("andreiFlickr1"); +// myUtils.deleteCollection("andreiFlickrColor"); // myUtils.commitAndClose(); // } // catch (Exception e) @@ -99,7 +101,7 @@ public class TestRasdamanUtils myUtils.abortAndClose(); } - understandColorImage("http://localhost/peta/flickr1.jpg"); +// understandColorImage("http://localhost/peta/flickr1.jpg"); } private static void insertImageFromInternet(String identifier, String href) @@ -116,6 +118,7 @@ public class TestRasdamanUtils // Step 2: Insert image into rasdaman myUtils.insertGrayImageAsArray(identifier, img); +// myUtils.insertColorImageAsArray(identifier, img); } catch (Exception e) { |
