// $HeadURL$ // $Id$ // // Copyright © 2006, 2010, 2011, 2012 by the President and Fellows of Harvard College. // // Screensaver is an open-source project developed by the ICCB-L and NSRB labs // at Harvard Medical School. This software is distributed under the terms of // the GNU General Public License. package edu.harvard.med.iccbl.screensaver.io.libraries.smallmolecule; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import org.apache.log4j.Logger; import edu.harvard.med.screensaver.io.libraries.smallmolecule.StructureImageLocator; import edu.harvard.med.screensaver.model.libraries.SmallMoleculeReagent; import edu.harvard.med.screensaver.model.libraries.WellKey; import edu.harvard.med.screensaver.util.UrlEncrypter; /** * @author <a mailto="andrew_tolopko@hms.harvard.edu">Andrew Tolopko</a> */ public class PlateWellStructureImageLocator implements StructureImageLocator { private static final String IMAGE_FILE_EXTENSION = ".png"; private static Logger log = Logger.getLogger(PlateWellStructureImageLocator.class); private String _baseUrl; private UrlEncrypter _urlEncrypter; public PlateWellStructureImageLocator(String baseUrl) { _baseUrl = baseUrl; } public PlateWellStructureImageLocator(String baseUrl, UrlEncrypter urlEncrypter) { _baseUrl = baseUrl; _urlEncrypter = urlEncrypter; } public URL getImageUrl(SmallMoleculeReagent reagent) { try { if (reagent == null) { return null; } WellKey wellKey = reagent.getWell().getWellKey(); String plateNumberLabel = WellKey.getPlateNumberLabel(wellKey.getPlateNumber()); String relativeLocation = (new File(WellKey.getPlateNumberLabel(wellKey.getPlateNumber()), plateNumberLabel + wellKey.getWellName() )).toString(); if(_urlEncrypter != null) { // NOTE: do not encrypt the baseUrl, as this is required by the web.xml to identify the image locator servlet relativeLocation = _urlEncrypter.encryptUrl(relativeLocation); } URL url = new URL(_baseUrl + relativeLocation+ IMAGE_FILE_EXTENSION); if (log.isDebugEnabled()) { log.debug("image URL for reagent " + reagent + ": " + url); } return url; } catch (MalformedURLException e) { return null; } } }