package uk.ac.vamsas.client.simpleclient; import java.io.File; import java.net.URI; import uk.ac.vamsas.client.InvalidSessionUrnException; /** * SessionUrn for simpleclient sessions: * simpleclient://{Absolute path to session directory} * * For simpleclient urn, it consideres as on the same machine, using the path to the session * directory to generate the session URN * * @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); } /** * Generates a sessionURN bases on a session directory location * * @param sessionLocation the file object to the session directory */ public SessionUrn(File sessionLocation) {//throws MalformedURLException { // TODO: LATER: implement switch to have vamsas document or simpleclient sessions for same constructor //use URI instead of URL super(SIMPLECLIENT, sessionLocation.getAbsoluteFile().toURI()); } /** * Generates a sessionURN bases on a vamsas session * @param session a VamsasSession * * Should return the same URN string than the creation with the session directory */ public SessionUrn(VamsasSession session) { //throws MalformedURLException { // use URI instead of URL super(SIMPLECLIENT, session.sessionDir.getAbsoluteFile().toURI()); } /** * TODO: LATER: think about this again. * * Retrieves the file associated to the current sessionURN. * The sessionURN (URI) is based on the session directory absolute path. * Use the raw path of the URN and change the scheme to file to generate a new file * URI. Then, from the URI create the File object (a File object can be created from an uri) * * @return File object representing the session URN // * File(urn.getPath()) */ public File asFile() { String path = this.urn.getRawPath(); return new File ( URI.create("file://"+path)); } // TODO: add abstract 'handler' methods for resolving the URN to a particular class }