package uk.ac.vamsas.client.simpleclient; import java.io.File; import java.net.MalformedURLException; import java.net.URI; import uk.ac.vamsas.client.InvalidSessionUrnException; /** * SessionUrn for simpleclient sessions: * simpleclient://{Absolute path to session directory} * @author jimp * */ public class SessionUrn extends uk.ac.vamsas.client.SessionUrn { /** * a simple client session urn prefix */ public static final String SIMPLECLIENT="simpleclient"; public static String VAMSASDOCUMENT="vdoc"; static { TYPES.put(SIMPLECLIENT, SessionUrn.class); TYPES.put(SessionUrn.VAMSASDOCUMENT, SessionUrn.class); } /** * Creates a SessionUrn object from a String. * The string must be a string representation of a URI * @param urnString * @throws InvalidSessionUrnException */ public SessionUrn(String urnString) throws InvalidSessionUrnException { super(); this.setURN(urnString); } public SessionUrn(File sessionLocation) throws MalformedURLException { // TODO: LATER: implement switch to have vamsas document or simpleclient sessions for same constructor // super(SIMPLECLIENT, sessionLocation.getAbsoluteFile().toURL()); // super(SIMPLECLIENT, sessionLocation.getAbsoluteFile().toURL()); super(SIMPLECLIENT, sessionLocation.getAbsoluteFile().toURI()); //else // super(VAMSASDOCUMENT, sessionLocation); } public SessionUrn(VamsasSession session) throws MalformedURLException { super(SIMPLECLIENT, session.sessionDir.getAbsoluteFile().toURL()); } /** * @see uk.ac.vamsas.client.SessionUrn#setURN(java.lang.String) */ protected void setURN(String urnString) throws NullPointerException, IllegalArgumentException { super.setURN(urnString); } /** * TODO: LATER: think about this again. * @return File(urn.getPath()) */ public File asFile() { String path = this.urn.getRawPath(); /*if ("\\".equals(File.separator)) {//windows stuff //remove last separator at last position if found /* not needed anymore if (path.charAt(path.length() - 1) == '/')path = path.substring(0, path.length() - 1); path = path.replaceAll("/", "\\\\"); */ /* int index = path.indexOf(File.separator); if (index >-1) {//separator found, keep last part of the urn - filename path = path.substring(index+1, path.length()); } //remove encoded space character // path = path.replaceAll("%20", " "); } /*shall we use URI or String to create the object*/ /* from URI : URI.create("file://path") , but first / */ /* return new File(path);*/ return new File ( URI.create("file://"+path)); } // TODO: add abstract 'handler' methods for resolving the URN to a particular class }