Changeset 3503


Ignore:
Timestamp:
12/27/07 22:28:49 (12 years ago)
Author:
melissa
Message:
  • Added image name filter.
  • OMEReader and OMEWriter now use ReflectedUniverse, so ome-java.jar is not required to compile.
  • Tweaked download plugin to be (mostly) usable from a macro.
Location:
trunk/loci
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/ome/OMEReader.java

    r3431 r3503  
    2828import java.io.*; 
    2929import loci.formats.*; 
    30 import org.openmicroscopy.ds.*; 
    31 import org.openmicroscopy.ds.dto.*; 
    32 import org.openmicroscopy.ds.st.*; 
    33 import org.openmicroscopy.is.*; 
    3430 
    3531/** 
     
    3733 * Authentication with the OME server is handled, provided the 'id' parameter 
    3834 * is properly formed. 
    39  * The 'id' parameter should take one of the following forms: 
     35 * The 'id' parameter should be: 
    4036 * 
    4137 * [server]?user=[username]&password=[password]&id=[image id] 
    42  * [server]?key=[session key]&id=[image id] 
    4338 * 
    4439 * where [server] is the URL of the OME data server (not the image server). 
     
    5045public class OMEReader extends FormatReader { 
    5146 
     47  // -- Constants -- 
     48 
     49  /** Message to display if OME-Java is not found. */ 
     50  private static final String NO_OME_JAVA = "OME-Java not found.  Please " + 
     51    "download ome-java.jar from http://www.loci.wisc.edu/ome/formats.html"; 
     52 
    5253  // -- Fields -- 
    5354 
    54   /** String containing authentication information. */ 
    55   private String loginString; 
    56  
    57   /** Current server. */ 
    58   private String server; 
    59  
    60   /** Session key for authentication. */ 
    61   private String sessionKey; 
    62  
    63   /** OME image ID. */ 
    64   private String imageId; 
    65  
    66   /** Thumbnail associated with the current dataset. */ 
    67   private BufferedImage thumb; 
    68  
    69   /** Download helpers. */ 
    70   private DataServices rs; 
    71   private RemoteCaller rc; 
    72   private DataFactory df; 
    73   private PixelsFactory pf; 
    74   private Pixels pixels; 
     55  /** Authentication credentials. */ 
     56  private OMECredentials credentials; 
     57 
     58  // -- Static fields -- 
     59 
     60  private static boolean hasOMEJava = true; 
     61  private static ReflectedUniverse r = createReflectedUniverse(); 
     62 
     63  private static ReflectedUniverse createReflectedUniverse() { 
     64    r = null; 
     65    try { 
     66      r = new ReflectedUniverse(); 
     67      r.exec("import java.awt.image.BufferedImage"); 
     68      r.exec("import java.lang.Class"); 
     69      r.exec("import java.util.List"); 
     70      r.exec("import org.openmicroscopy.ds.Criteria"); 
     71      r.exec("import org.openmicroscopy.ds.DataFactory"); 
     72      r.exec("import org.openmicroscopy.ds.DataServer"); 
     73      r.exec("import org.openmicroscopy.ds.DataServices"); 
     74      r.exec("import org.openmicroscopy.ds.FieldsSpecification"); 
     75      r.exec("import org.openmicroscopy.ds.RemoteCaller"); 
     76      r.exec("import org.openmicroscopy.ds.dto.Image"); 
     77      r.exec("import org.openmicroscopy.ds.st.Pixels"); 
     78      r.exec("import org.openmicroscopy.ds.st.Repository"); 
     79      r.exec("import org.openmicroscopy.is.PixelsFactory"); 
     80    } 
     81    catch (ReflectException e) { 
     82      if (debug) LogTools.trace(e); 
     83      hasOMEJava = false; 
     84    } 
     85    return r; 
     86  } 
    7587 
    7688  // -- Constructor -- 
     
    8395  /* @see loci.formats.FormatReader#initFile(String) */ 
    8496  protected void initFile(String id) throws FormatException, IOException { 
    85     if (id.equals(loginString)) return; 
    86  
    87     OMECredentials cred = OMEUtils.parseCredentials(id); 
    88     id = String.valueOf(cred.imageID); 
     97    if (id.equals(currentId)) return; 
     98 
     99    if (!hasOMEJava) throw new FormatException(NO_OME_JAVA); 
     100 
     101    credentials = OMEUtils.parseCredentials(id); 
     102    id = String.valueOf(credentials.imageID); 
    89103 
    90104    super.initFile(id); 
    91105 
    92106    // do sanity check on server name 
    93     if (cred.server.startsWith("http:")) { 
    94       cred.server = cred.server.substring(5); 
    95     } 
    96     while (cred.server.startsWith("/")) cred.server = cred.server.substring(1); 
    97     int slash = cred.server.indexOf("/"); 
    98     if (slash >= 0) cred.server = cred.server.substring(0, slash); 
    99     int colon = cred.server.indexOf(":"); 
    100     if (colon >= 0) cred.server = cred.server.substring(0, colon); 
    101  
    102     currentId = cred.server + ":" + cred.imageID; 
    103  
    104     String omeis = "http://" + cred.server + "/cgi-bin/omeis"; 
    105     cred.server = "http://" + cred.server + "/shoola/"; 
    106     cred.isOMERO = false; 
    107  
    108     try { 
    109       OMEUtils.login(cred); 
     107    if (credentials.server.startsWith("http:")) { 
     108      credentials.server = credentials.server.substring(5); 
     109    } 
     110    while (credentials.server.startsWith("/")) { 
     111      credentials.server = credentials.server.substring(1); 
     112    } 
     113    int slash = credentials.server.indexOf("/"); 
     114    if (slash >= 0) credentials.server = credentials.server.substring(0, slash); 
     115    int colon = credentials.server.indexOf(":"); 
     116    if (colon >= 0) credentials.server = credentials.server.substring(0, colon); 
     117 
     118    currentId = credentials.server + ":" + credentials.imageID; 
     119 
     120    String omeis = "http://" + credentials.server + "/cgi-bin/omeis"; 
     121    credentials.server = "http://" + credentials.server + "/shoola/"; 
     122    credentials.isOMERO = false; 
     123 
     124    String user = credentials.username; 
     125    String pass = credentials.password; 
     126 
     127    try { 
     128      r.exec("c = new Criteria()"); 
     129      r.setVar("ID", "id"); 
     130      r.setVar("DEFAULT_PIXELS", "default_pixels"); 
     131      r.setVar("PIXEL_TYPE", "PixelType"); 
     132      r.setVar("SIZE_X", "SizeX"); 
     133      r.setVar("SIZE_Y", "SizeY"); 
     134      r.setVar("SIZE_Z", "SizeZ"); 
     135      r.setVar("SIZE_C", "SizeC"); 
     136      r.setVar("SIZE_T", "SizeT"); 
     137      r.setVar("IMAGE_SERVER_ID", "ImageServerID"); 
     138      r.setVar("REPOSITORY", "Repository"); 
     139      r.setVar("IMAGE_SERVER_URL", "ImageServerURL"); 
     140      r.setVar("DEFAULT_PIXELS_REPOSITORY", "default_pixels.Repository"); 
     141      r.setVar("EQUALS", "="); 
     142      r.setVar("IMAGE_ID", String.valueOf(credentials.imageID)); 
     143      r.exec("c.addWantedField(ID)"); 
     144      r.exec("c.addWantedField(DEFAULT_PIXELS)"); 
     145      r.exec("c.addWantedField(DEFAULT_PIXELS, PIXEL_TYPE)"); 
     146      r.exec("c.addWantedField(DEFAULT_PIXELS, SIZE_X)"); 
     147      r.exec("c.addWantedField(DEFAULT_PIXELS, SIZE_Y)"); 
     148      r.exec("c.addWantedField(DEFAULT_PIXELS, SIZE_Z)"); 
     149      r.exec("c.addWantedField(DEFAULT_PIXELS, SIZE_C)"); 
     150      r.exec("c.addWantedField(DEFAULT_PIXELS, SIZE_T)"); 
     151      r.exec("c.addWantedField(DEFAULT_PIXELS, IMAGE_SERVER_ID)"); 
     152      r.exec("c.addWantedField(DEFAULT_PIXELS, REPOSITORY)"); 
     153      r.exec("c.addWantedField(DEFAULT_PIXELS_REPOSITORY, IMAGE_SERVER_URL)"); 
     154      r.exec("c.addFilter(ID, EQUALS, IMAGE_ID)"); 
     155 
     156      r.exec("fs = new FieldsSpecification()"); 
     157      r.exec("fs.addWantedField(REPOSITORY)"); 
     158      r.exec("fs.addWantedField(REPOSITORY, IMAGE_SERVER_URL)"); 
     159      r.exec("c.addWantedFields(DEFAULT_PIXELS, fs)"); 
     160 
     161      r.setVar("server", credentials.server); 
     162      r.exec("rs = DataServer.getDefaultServices(server)"); 
     163      r.exec("rc = rs.getRemoteCaller()"); 
     164 
     165      r.setVar("user", user); 
     166      r.setVar("pass", pass); 
     167      r.exec("rc.login(user, pass)"); 
     168 
     169      r.setVar("DATA_FACTORY_CLASS", "org.openmicroscopy.ds.DataFactory"); 
     170      r.exec("DATA_FACTORY_CLASS = Class.forName(DATA_FACTORY_CLASS)"); 
     171      r.setVar("PIXELS_FACTORY_CLASS", "org.openmicroscopy.is.PixelsFactory"); 
     172      r.exec("PIXELS_FACTORY_CLASS = Class.forName(PIXELS_FACTORY_CLASS)"); 
     173      r.exec("df = rs.getService(DATA_FACTORY_CLASS)"); 
     174      r.exec("pf = rs.getService(PIXELS_FACTORY_CLASS)"); 
     175 
     176      r.setVar("omeis", omeis); 
     177      r.setVar("IMAGE_CLASS", "org.openmicroscopy.ds.dto.Image"); 
     178      r.exec("IMAGE_CLASS = Class.forName(IMAGE_CLASS)"); 
     179      r.setVar("zero", 0); 
     180 
     181      r.exec("images = df.retrieveList(IMAGE_CLASS, c)"); 
     182      r.exec("img = images.get(zero)"); 
     183      r.exec("pixels = img.getDefaultPixels()"); 
     184      r.exec("repository = pixels.getRepository()"); 
     185      r.exec("repository.setImageServerURL(omeis)"); 
     186 
     187      r.exec("thumb = pf.getThumbnail(pixels)"); 
     188 
     189      r.exec("sizeX = pixels.getSizeX()"); 
     190      r.exec("sizeY = pixels.getSizeY()"); 
     191      r.exec("sizeZ = pixels.getSizeZ()"); 
     192      r.exec("sizeC = pixels.getSizeC()"); 
     193      r.exec("sizeT = pixels.getSizeT()"); 
     194      r.exec("pixelType = pixels.getPixelType()"); 
     195 
     196      core.sizeX[0] = ((Integer) r.getVar("sizeX")).intValue(); 
     197      core.sizeY[0] = ((Integer) r.getVar("sizeY")).intValue(); 
     198      core.sizeZ[0] = ((Integer) r.getVar("sizeZ")).intValue(); 
     199      core.sizeC[0] = ((Integer) r.getVar("sizeC")).intValue(); 
     200      core.sizeT[0] = ((Integer) r.getVar("sizeT")).intValue(); 
     201      core.pixelType[0] = 
     202        FormatTools.pixelTypeFromString((String) r.getVar("pixelType")); 
     203      core.currentOrder[0] = "XYZCT"; 
     204 
     205      core.imageCount[0] = core.sizeZ[0] * core.sizeC[0] * core.sizeT[0]; 
     206      core.rgb[0] = false; 
     207 
     208      r.exec("thumbX = thumb.getWidth()"); 
     209      r.exec("thumbY = thumb.getHeight()"); 
     210 
     211      core.thumbSizeX[0] = ((Integer) r.getVar("thumbX")).intValue(); 
     212      core.thumbSizeY[0] = ((Integer) r.getVar("thumbY")).intValue(); 
    110213    } 
    111214    catch (ReflectException e) { 
     
    113216    } 
    114217 
    115     String user = cred.username; 
    116     String pass = cred.password; 
    117  
    118     Criteria c = new Criteria(); 
    119     c.addWantedField("id"); 
    120     c.addWantedField("default_pixels"); 
    121     c.addWantedField("default_pixels", "PixelType"); 
    122     c.addWantedField("default_pixels", "SizeX"); 
    123     c.addWantedField("default_pixels", "SizeY"); 
    124     c.addWantedField("default_pixels", "SizeZ"); 
    125     c.addWantedField("default_pixels", "SizeC"); 
    126     c.addWantedField("default_pixels", "SizeT"); 
    127     c.addWantedField("default_pixels", "ImageServerID"); 
    128     c.addWantedField("default_pixels", "Repository"); 
    129     c.addWantedField("default_pixels.Repository", "ImageServerURL"); 
    130     c.addFilter("id", "=", String.valueOf(cred.imageID)); 
    131  
    132     FieldsSpecification fs = new FieldsSpecification(); 
    133     fs.addWantedField("Repository"); 
    134     fs.addWantedField("Repository", "ImageServerURL"); 
    135     c.addWantedFields("default_pixels", fs); 
    136  
    137     rs = DataServer.getDefaultServices(cred.server); 
    138  
    139     rc = rs.getRemoteCaller(); 
    140  
    141     if (user != null && pass != null) rc.login(user, pass); 
    142     else if (sessionKey != null) rc.setSessionKey(sessionKey); 
    143  
    144     df = (DataFactory) rs.getService(DataFactory.class); 
    145     pf = (PixelsFactory) rs.getService(PixelsFactory.class); 
    146  
    147     Image img = (Image) df.retrieveList(Image.class, c).get(0); 
    148     pixels = img.getDefaultPixels(); 
    149     pixels.getRepository().setImageServerURL(omeis); 
    150  
    151     try { 
    152       thumb = pf.getThumbnail(pixels); 
    153     } 
    154     catch (ImageServerException exc) { 
    155       if (debug) trace(exc); 
    156     } 
    157  
    158     core.sizeX[0] = pixels.getSizeX().intValue(); 
    159     core.sizeY[0] = pixels.getSizeY().intValue(); 
    160     core.sizeZ[0] = pixels.getSizeZ().intValue(); 
    161     core.sizeC[0] = pixels.getSizeC().intValue(); 
    162     core.sizeT[0] = pixels.getSizeT().intValue(); 
    163     core.pixelType[0] = FormatTools.pixelTypeFromString(pixels.getPixelType()); 
    164     core.currentOrder[0] = "XYZCT"; 
    165  
    166     core.imageCount[0] = core.sizeZ[0] * core.sizeC[0] * core.sizeT[0]; 
    167     core.rgb[0] = false; 
    168  
    169     core.thumbSizeX[0] = thumb.getWidth(); 
    170     core.thumbSizeY[0] = thumb.getHeight(); 
    171  
    172218    core.littleEndian[0] = true; 
    173219    core.interleaved[0] = false; 
    174220 
    175221    MetadataStore store = getMetadataStore(); 
    176     store.setPixels( 
    177       new Integer(core.sizeX[0]), 
    178       new Integer(core.sizeY[0]), 
    179       new Integer(core.sizeZ[0]), 
    180       new Integer(core.sizeC[0]), 
    181       new Integer(core.sizeT[0]), 
    182       new Integer(core.pixelType[0]), 
    183       new Boolean(!core.littleEndian[0]), 
    184       core.currentOrder[0], 
    185       null, 
    186       null); 
     222    FormatTools.populatePixels(store, this); 
    187223    for (int i=0; i<core.sizeC[0]; i++) { 
    188224      store.setLogicalChannel(i, null, null, null, null, null, null, null, 
     
    207243    FormatTools.checkBufferSize(this, buf.length); 
    208244    int[] indices = getZCTCoords(no); 
    209     try { 
    210       buf = pf.getPlane(pixels, indices[0], indices[1], indices[2], false); 
    211       return buf; 
    212     } 
    213     catch (ImageServerException e) { 
     245 
     246    r.setVar("zIndex", indices[0]); 
     247    r.setVar("cIndex", indices[1]); 
     248    r.setVar("tIndex", indices[2]); 
     249    r.setVar("bigEndian", false); 
     250    try { 
     251      r.exec("buf = pf.getPlane(pixels, zIndex, cIndex, tIndex, bigEndian)"); 
     252      buf = (byte[]) r.getVar("buf"); 
     253    } 
     254    catch (ReflectException e) { 
    214255      throw new FormatException(e); 
    215256    } 
     257    return buf; 
    216258  } 
    217259 
     
    233275    FormatTools.assertId(currentId, true, 1); 
    234276    FormatTools.checkPlaneNumber(this, no); 
    235     return thumb; 
     277    try { 
     278      return (BufferedImage) r.getVar("thumb"); 
     279    } 
     280    catch (ReflectException e) { 
     281      if (debug) LogTools.trace(e); 
     282    } 
     283    return super.openThumbImage(no); 
    236284  } 
    237285 
    238286  /* @see loci.formats.IFormatReader#close(boolean) */ 
    239287  public void close(boolean fileOnly) throws IOException { 
    240     if (fileOnly) { 
    241       if (rc != null) rc.logout(); 
    242     } 
    243     else close(); 
     288    try { 
     289      r.exec("rc.logout()"); 
     290    } 
     291    catch (ReflectException e) { } 
     292    if (!fileOnly) currentId = null; 
    244293  } 
    245294 
    246295  /* @see loci.formats.IFormatReader#close() */ 
    247296  public void close() throws IOException { 
    248     if (rc != null) rc.logout(); 
    249     thumb = null; 
    250     rs = null; 
    251     rc = null; 
    252     df = null; 
    253     pf = null; 
    254     pixels = null; 
    255     currentId = null; 
    256     loginString = null; 
     297    close(false); 
    257298  } 
    258299 
  • trunk/loci/formats/ome/OMEUtils.java

    r3495 r3503  
    144144      int ndx = s.indexOf("&"); 
    145145      credentials.username = s.substring(s.lastIndexOf("?") + 6, ndx); 
    146       credentials.password = s.substring(ndx + 10, s.indexOf("&", ndx + 1)); 
     146      int end = s.indexOf("&", ndx + 1); 
     147      if (end == -1) end = s.length(); 
     148      credentials.password = s.substring(ndx + 10, end); 
    147149      ndx = s.indexOf("&", ndx + 1); 
    148       credentials.imageID = Long.parseLong(s.substring(ndx + 4)); 
     150      if (ndx > 0) credentials.imageID = Long.parseLong(s.substring(ndx + 4)); 
    149151    } 
    150152    return credentials; 
     
    250252  /** Filter available pixels to match given criteria. */ 
    251253  public static void filterPixels(String firstName, String lastName, 
    252     String created, String id, boolean isOMERO) 
     254    String imageName, String created, String id, boolean isOMERO) 
    253255    throws ReflectException 
    254256  { 
     
    261263    for (int i=0; i<len; i++) { 
    262264      r.setVar("obj", results.get(i)); 
    263       String fname = null, lname = null, create = null, pid = null; 
     265      String fname = null, lname = null, iname = null, 
     266        create = null, pid = null; 
    264267      if (isOMERO) { 
    265268        r.exec("pix = new PixelsData(obj)"); 
     
    267270        pid = r.getVar("v").toString(); 
    268271        r.exec("img = pix.getImage()"); 
     272        r.exec("imageName = img.getName()"); 
     273        iname = (String) r.getVar("imageName"); 
    269274        r.exec("owner = pix.getOwner()"); 
    270275        r.exec("fname = owner.getFirstName()"); 
     
    287292        r.exec("id = obj.getID()"); 
    288293        pid = r.getVar("id").toString(); 
     294        r.exec("imageName = obj.getName()"); 
     295        iname = (String) r.getVar("imageName"); 
    289296        r.exec("owner = obj.getOwner()"); 
    290297        r.exec("fname = owner.getFirstName()"); 
     
    296303      if ((firstName == null || firstName.equals(fname)) && 
    297304        (lastName == null || lastName.equals(lname)) && 
     305        (imageName == null || 
     306        iname.toLowerCase().indexOf(imageName.toLowerCase()) != -1) && 
    298307        (created == null || created.equals(create) || 
    299308        created.startsWith(create)) && (id == null || id.equals(pid))) 
     
    539548      } 
    540549 
    541       gd.addCheckbox(names[i], false); 
     550      gd.addCheckbox(names[i] + " (" + ids[i] + ")", false); 
    542551      p[i] = new Panel(); 
    543552      if (cred.isOMERO) { 
  • trunk/loci/formats/ome/OMEWriter.java

    r3431 r3503  
    2828import java.net.MalformedURLException; 
    2929import loci.formats.*; 
    30 import org.openmicroscopy.ds.*; 
    31 import org.openmicroscopy.ds.dto.*; 
    32 import org.openmicroscopy.ds.managers.*; 
    33 import org.openmicroscopy.ds.st.*; 
    34 import org.openmicroscopy.is.*; 
    3530 
    3631/** 
     
    4338public class OMEWriter extends FormatWriter { 
    4439 
     40  // -- Constants -- 
     41 
     42  /** Message to display if OME-Java is not found. */ 
     43  private static final String NO_OME_JAVA = "OME-Java not found.  Please " + 
     44    "download ome-java.jar from http://www.loci.wisc.edu/ome/formats.html"; 
     45 
     46  // -- Static fields -- 
     47 
     48  private static boolean hasOMEJava = true; 
     49  private static ReflectedUniverse r = createReflectedUniverse(); 
     50 
     51  private static ReflectedUniverse createReflectedUniverse() { 
     52    r = null; 
     53    try { 
     54      r = new ReflectedUniverse(); 
     55      r.exec("import java.lang.Class"); 
     56      r.exec("import org.openmicroscopy.ds.DataFactory"); 
     57      r.exec("import org.openmicroscopy.ds.DataServer"); 
     58      r.exec("import org.openmicroscopy.ds.DataServices"); 
     59      r.exec("import org.openmicroscopy.ds.FieldsSpecification"); 
     60      r.exec("import org.openmicroscopy.ds.RemoteCaller"); 
     61      r.exec("import org.openmicroscopy.ds.dto.ModuleExecution"); 
     62      r.exec("import org.openmicroscopy.ds.dto.UserState"); 
     63      r.exec("import org.openmicroscopy.ds.managers.ImportManager"); 
     64      r.exec("import org.openmicroscopy.ds.st.Experimenter"); 
     65      r.exec("import org.openmicroscopy.ds.st.LogicalChannel"); 
     66      r.exec("import org.openmicroscopy.ds.st.Pixels"); 
     67      r.exec("import org.openmicroscopy.ds.st.Repository"); 
     68      r.exec("import org.openmicroscopy.is.CompositingSettings"); 
     69      r.exec("import org.openmicroscopy.is.ImageServer"); 
     70      r.exec("import org.openmicroscopy.is.PixelsFactory"); 
     71    } 
     72    catch (ReflectException e) { 
     73      if (debug) LogTools.trace(e); 
     74      hasOMEJava = false; 
     75    } 
     76    return r; 
     77  } 
     78 
    4579  // -- Fields -- 
    4680 
    47   /** Data server. */ 
    48   private String server; 
     81  /** Authentication credentials. */ 
     82  private OMECredentials credentials; 
    4983 
    5084  /** Image server. */ 
    5185  private String omeis; 
    5286 
    53   /** User name. */ 
    54   private String user; 
    55  
    56   /** Password. */ 
    57   private String pass; 
    58  
    59   /** Unique key for this session. */ 
    60   private String sessionKey; 
    61  
    62   /** Flag indicating the current session is valid. */ 
    63   private boolean validLogin = false; 
    64  
    65   /** ID of pixels. */ 
    66   private long pixelsId = -1; 
    67  
    6887  /** Number of planes written. */ 
    6988  private int planesWritten = 0; 
    7089 
    7190  private MetadataRetrieve metadata; 
    72  
    73   private DataServices rs; 
    74   private RemoteCaller rc; 
    75   private DataFactory df; 
    76   private ImportManager im; 
    77   private PixelsFactory pf; 
    78   private Experimenter exp; 
    79   private Repository r; 
    8091 
    8192  // -- Constructor -- 
     
    125136    throws FormatException, IOException 
    126137  { 
    127     if (!validLogin) { 
     138    if (!hasOMEJava) throw new FormatException(NO_OME_JAVA); 
     139    if (currentId != null && credentials == null) { 
    128140      // parse the ID string to get the server, user name and password 
    129141 
    130       server = currentId.substring(0, currentId.lastIndexOf("?")); 
    131       int ndx = currentId.indexOf("&"); 
    132       if (currentId.indexOf("user") != -1) { 
    133         user = currentId.substring(currentId.lastIndexOf("?") + 6, ndx); 
    134         pass = currentId.substring(ndx + 10); 
    135       } 
    136       else { 
    137         throw new FormatException("Invalid ID - must be of the form " + 
    138           "<server>?user=<username>&password=<password>"); 
    139       } 
     142      credentials = OMEUtils.parseCredentials(currentId); 
    140143      login(); 
     144      credentials.imageID = -1; 
    141145 
    142146      // initialize necessary services 
    143147 
    144       df = (DataFactory) rs.getService(DataFactory.class); 
    145       im = (ImportManager) rs.getService(ImportManager.class); 
    146       pf = (PixelsFactory) rs.getService(PixelsFactory.class); 
    147  
    148       FieldsSpecification fields = new FieldsSpecification(); 
    149       fields.addWantedField("id"); 
    150       fields.addWantedField("experimenter"); 
    151       fields.addWantedField("experimenter", "id"); 
    152       UserState userState = df.getUserState(fields); 
    153       exp = userState.getExperimenter(); 
    154  
    155148      try { 
    156         r = pf.findRepository(0); 
    157         r.setImageServerURL(omeis); 
    158       } 
    159       catch (ImageServerException e) { 
    160         throw new FormatException("Could not find repository.", e); 
    161       } 
    162  
    163       im.startImport(exp); 
     149        r.setVar("DATA_FACTORY_CLASS", "org.openmicroscopy.ds.DataFactory"); 
     150        r.exec("DATA_FACTORY_CLASS = Class.forName(DATA_FACTORY_CLASS)"); 
     151        r.setVar("PIXELS_FACTORY_CLASS", "org.openmicroscopy.is.PixelsFactory"); 
     152        r.exec("PIXELS_FACTORY_CLASS = Class.forName(PIXELS_FACTORY_CLASS)"); 
     153        r.setVar("IMPORT_MANAGER_CLASS", 
     154          "org.openmicroscopy.ds.managers.ImportManager"); 
     155        r.exec("IMPORT_MANAGER_CLASS = Class.forName(IMPORT_MANAGER_CLASS)"); 
     156        r.exec("df = rs.getService(DATA_FACTORY_CLASS)"); 
     157        r.exec("im = rs.getService(IMPORT_MANAGER_CLASS)"); 
     158        r.exec("pf = rs.getService(PIXELS_FACTORY_CLASS)"); 
     159 
     160        r.setVar("ID", "id"); 
     161        r.setVar("EXPERIMENTER", "experimenter"); 
     162        r.exec("fields = new FieldsSpecification()"); 
     163        r.exec("fields.addWantedField(ID)"); 
     164        r.exec("fields.addWantedField(EXPERIMENTER)"); 
     165        r.exec("fields.addWantedField(EXPERIMENTER, ID)"); 
     166        r.exec("userState = df.getUserState(fields)"); 
     167        r.exec("exp = userState.getExperimenter()"); 
     168 
     169        r.setVar("zero", 0l); 
     170        r.setVar("omeis", omeis); 
     171        r.exec("repository = pf.findRepository(zero)"); 
     172        r.exec("repository.setImageServerURL(omeis)"); 
     173 
     174        r.exec("im.startImport(exp)"); 
     175      } 
     176      catch (ReflectException e) { 
     177        throw new FormatException(e); 
     178      } 
    164179 
    165180      if (metadata == null) { 
     
    168183    } 
    169184 
     185    int x = metadata.getSizeX(null).intValue(); 
     186    int y = metadata.getSizeY(null).intValue(); 
    170187    int z = metadata.getSizeZ(null).intValue(); 
    171188    int c = metadata.getSizeC(null).intValue(); 
    172189    int t = metadata.getSizeT(null).intValue(); 
    173190    String order = metadata.getDimensionOrder(null); 
    174  
    175     ImageServer is = ImageServer.getHTTPImageServer(omeis, sessionKey); 
    176     if (pixelsId == -1) { 
    177       try { 
    178         String pixelTypeString = metadata.getPixelType(null); 
    179         int pixelType = FormatTools.pixelTypeFromString(pixelTypeString); 
    180         pixelsId = is.newPixels(metadata.getSizeX(null).intValue(), 
    181           metadata.getSizeY(null).intValue(), z, c, t, 
    182           FormatTools.getBytesPerPixel(pixelType), false, 
    183           pixelTypeString.equals("float")); 
    184       } 
    185       catch (ImageServerException e) { 
    186         throw new FormatException("Failed to create new pixels file.", e); 
    187       } 
    188     } 
     191    String pixelTypeString = metadata.getPixelType(null); 
     192    int pixelType = FormatTools.pixelTypeFromString(pixelTypeString); 
     193    int bpp = FormatTools.getBytesPerPixel(pixelType); 
    189194 
    190195    try { 
    191       String pixelTypeString = metadata.getPixelType(null); 
    192       int pixelType = FormatTools.pixelTypeFromString(pixelTypeString); 
    193       int planeLength = metadata.getSizeX(null).intValue() * 
    194         metadata.getSizeY(null).intValue() * 
    195         FormatTools.getBytesPerPixel(pixelType); 
     196      r.exec("sessionKey = rc.getSessionKey()"); 
     197      r.exec("is = ImageServer.getHTTPImageServer(omeis, sessionKey)"); 
     198      if (credentials.imageID == -1) { 
     199        r.setVar("x", x); 
     200        r.setVar("y", y); 
     201        r.setVar("z", z); 
     202        r.setVar("c", c); 
     203        r.setVar("t", t); 
     204        r.setVar("bpp", bpp); 
     205        r.setVar("bigEndian", false); 
     206        r.setVar("float", pixelTypeString.equals("float")); 
     207        r.setVar("pixelType", pixelTypeString); 
     208        r.exec("pixelsId = is.newPixels(x, y, z, c, t, bpp, bigEndian, float)"); 
     209        credentials.imageID = ((Long) r.getVar("pixelsId")).longValue(); 
     210      } 
     211    } 
     212    catch (ReflectException e) { 
     213      throw new FormatException(e); 
     214    } 
     215 
     216    try { 
     217      int planeLength = x * y * bpp; 
    196218      byte[][] b = ImageTools.splitChannels(bytes, bytes.length / planeLength, 
    197         FormatTools.getBytesPerPixel(pixelType), false, true); 
     219        bpp, false, true); 
    198220 
    199221      for (int ch=0; ch<b.length; ch++) { 
     
    201223          planesWritten); 
    202224 
    203         is.setPlane(pixelsId, coords[0], coords[1], coords[2], b[ch], 
    204           metadata.getBigEndian(null).booleanValue()); 
     225        r.setVar("zndx", coords[0]); 
     226        r.setVar("cndx", coords[1]); 
     227        r.setVar("tndx", coords[2]); 
     228        r.setVar("bytes", b[ch]); 
     229        r.setVar("bigEndian", metadata.getBigEndian(null).booleanValue()); 
     230 
     231        r.setVar("pixelsId", credentials.imageID); 
     232        r.exec("is.setPlane(pixelsId, zndx, cndx, tndx, bytes, bigEndian)"); 
    205233        planesWritten++; 
    206234      } 
    207235    } 
    208     catch (ImageServerException e) { 
     236    catch (ReflectException e) { 
    209237      throw new FormatException("Failed to upload plane.", e); 
    210238    } 
     
    212240    if (last) { 
    213241      try { 
    214         pixelsId = is.finishPixels(pixelsId); 
    215       } 
    216       catch (ImageServerException e) { 
    217         throw new FormatException("Failed to close pixels file.", e); 
    218       } 
    219  
    220       Image img = (Image) df.createNew(Image.class); 
    221       img.setOwner(exp); 
    222       img.setInserted("now"); 
    223       img.setCreated(metadata.getCreationDate(null)); 
    224       if (metadata.getImageName(null) != null) { 
    225         img.setName(metadata.getImageName(null)); 
    226       } 
    227       else img.setName("new image " + pixelsId); 
    228       img.setDescription(metadata.getDescription(null)); 
    229  
    230       df.update(img); 
    231  
    232       ModuleExecution ii = im.getImageImportMEX(img); 
    233       ii.setExperimenter(exp); 
    234       df.update(ii); 
    235  
    236       Pixels pixels = (Pixels) df.createNew("Pixels"); 
    237       pixels.setRepository(r); 
    238       pixels.setImage(img); 
    239       pixels.setModuleExecution(ii); 
    240       pixels.setImageServerID(new Long(pixelsId)); 
    241       pixels.setSizeX(metadata.getSizeX(null)); 
    242       pixels.setSizeY(metadata.getSizeY(null)); 
    243       pixels.setSizeZ(metadata.getSizeZ(null)); 
    244       pixels.setSizeC(metadata.getSizeC(null)); 
    245       pixels.setSizeT(metadata.getSizeT(null)); 
    246       pixels.setPixelType(metadata.getPixelType(null)); 
    247  
    248       try { 
    249         pf.setThumbnail(pixels, 
    250           CompositingSettings.createDefaultPGISettings(z, c, t)); 
    251       } 
    252       catch (ImageServerException e) { 
    253         throw new FormatException("Failed to create thumbnail.", e); 
    254       } 
    255  
    256       df.update(pixels); 
    257  
    258       LogicalChannel logical = (LogicalChannel) df.createNew("LogicalChannel"); 
    259       logical.setImage(img); 
    260       logical.setModuleExecution(ii); 
    261       logical.setFluor("Gray 00"); 
    262       logical.setPhotometricInterpretation("monochrome"); 
    263       df.update(logical); 
    264  
    265       PixelChannelComponent physical = 
    266         (PixelChannelComponent) df.createNew("PixelChannelComponent"); 
    267       physical.setImage(img); 
    268       physical.setPixels(pixels); 
    269       physical.setIndex(new Integer(0)); 
    270       physical.setLogicalChannel(logical); 
    271       physical.setModuleExecution(ii); 
    272       df.update(physical); 
    273  
    274       ii.setStatus("FINISHED"); 
    275       df.update(ii); 
    276  
    277       img.setDefaultPixels(pixels); 
    278       df.update(img); 
    279  
    280       close(); 
     242        r.exec("pixelsId = is.finishPixels(pixelsId)"); 
     243        credentials.imageID = ((Long) r.getVar("pixelsId")).longValue(); 
     244 
     245        r.setVar("NOW", "now"); 
     246        r.setVar("creationDate", metadata.getCreationDate(null)); 
     247        if (metadata.getImageName(null) != null) { 
     248          r.setVar("imageName", metadata.getImageName(null)); 
     249        } 
     250        else r.setVar("imageName", "new image " + credentials.imageID); 
     251        r.setVar("imageDescription", metadata.getDescription(null)); 
     252 
     253        r.setVar("IMAGE_CLASS", "org.openmicroscopy.ds.dto.Image"); 
     254        r.exec("IMAGE_CLASS = Class.forName(IMAGE_CLASS)"); 
     255        r.exec("img = df.createNew(IMAGE_CLASS)"); 
     256        r.exec("img.setOwner(exp)"); 
     257        r.exec("img.setInserted(NOW)"); 
     258        r.exec("img.setCreated(creationDate)"); 
     259        r.exec("img.setName(imageName)"); 
     260        r.exec("img.setDescription(imageDescription)"); 
     261        r.exec("df.update(img)"); 
     262 
     263        r.exec("ii = im.getImageImportMEX(img)"); 
     264        r.exec("ii.setExperimenter(exp)"); 
     265        r.exec("df.update(ii)"); 
     266 
     267        r.setVar("PIXELS", "Pixels"); 
     268        r.exec("pixels = df.createNew(PIXELS)"); 
     269        r.exec("pixels.setRepository(repository)"); 
     270        r.exec("pixels.setImage(img)"); 
     271        r.exec("pixels.setModuleExecution(ii)"); 
     272        r.setVar("pixelsIdObj", new Long(credentials.imageID)); 
     273        r.exec("pixels.setImageServerID(pixelsIdObj)"); 
     274        r.exec("pixels.setSizeX(x)"); 
     275        r.exec("pixels.setSizeY(y)"); 
     276        r.exec("pixels.setSizeZ(z)"); 
     277        r.exec("pixels.setSizeC(c)"); 
     278        r.exec("pixels.setSizeT(t)"); 
     279        r.exec("pixels.setPixelType(pixelType)"); 
     280 
     281        r.exec("settings = " + 
     282          "CompositingSettings.createDefaultPGISettings(z, c, t)"); 
     283        r.exec("pf.setThumbnail(pixels, settings)"); 
     284        r.exec("df.update(pixels)"); 
     285 
     286        r.setVar("GRAY", "Gray 00"); 
     287        r.setVar("LOGICAL_CHANNEL", "LogicalChannel"); 
     288        r.setVar("PHOTOMETRIC_INTERPRETATION", "monochrome"); 
     289        r.exec("logical = df.createNew(LOGICAL_CHANNEL)"); 
     290        r.exec("logical.setImage(img)"); 
     291        r.exec("logical.setModuleExecution(ii)"); 
     292        r.exec("logical.setFluor(GRAY)"); 
     293        r.exec("logical.setPhotometricInterpretation(" + 
     294          "PHOTOMETRIC_INTERPRETATION)"); 
     295        r.exec("df.update(logical)"); 
     296 
     297        r.setVar("PIXEL_CHANNEL_COMPONENT", "PixelChannelComponent"); 
     298        r.setVar("zeroObj", new Integer(0)); 
     299        r.exec("physical = df.createNew(PIXEL_CHANNEL_COMPONENT)"); 
     300        r.exec("physical.setImage(img)"); 
     301        r.exec("physical.setPixels(pixels)"); 
     302        r.exec("physical.setIndex(zeroObj)"); 
     303        r.exec("physical.setLogicalChannel(logical)"); 
     304        r.exec("physical.setModuleExecution(ii)"); 
     305        r.exec("df.update(physical)"); 
     306 
     307        r.setVar("FINISHED", "FINISHED"); 
     308        r.exec("ii.setStatus(FINISHED)"); 
     309        r.exec("df.update(ii)"); 
     310 
     311        r.exec("img.setDefaultPixels(pixels)"); 
     312        r.exec("df.update(img)"); 
     313 
     314        close(); 
     315      } 
     316      catch (ReflectException e) { 
     317        throw new FormatException(e); 
     318      } 
    281319    } 
    282320  } 
     
    289327  /* @see loci.formats.IFormatHandler#close() */ 
    290328  public void close() throws IOException { 
    291     if (rc != null) rc.logout(); 
    292     pixelsId = -1; 
    293     validLogin = false; 
     329    try { 
     330      r.exec("rc.logout()"); 
     331    } 
     332    catch (ReflectException e) { } 
     333    credentials = null; 
    294334    planesWritten = 0; 
    295335    metadata = null; 
     
    324364 
    325365  private void login() throws FormatException { 
    326     while (server.lastIndexOf("/") > 7) { 
    327       server = server.substring(0, server.lastIndexOf("/")); 
    328     } 
    329     omeis = server + "/cgi-bin/omeis"; 
    330     server += "/shoola"; 
    331     if (!server.startsWith("http://")) { 
    332       server = "http://" + server; 
     366    while (credentials.server.lastIndexOf("/") > 7) { 
     367      int slash = credentials.server.lastIndexOf("/"); 
     368      credentials.server = credentials.server.substring(0, slash); 
     369    } 
     370    omeis = credentials.server + "/cgi-bin/omeis"; 
     371    credentials.server += "/shoola"; 
     372    if (!credentials.server.startsWith("http://")) { 
     373      credentials.server = "http://" + credentials.server; 
    333374      omeis = "http://" + omeis; 
    334375    } 
    335376 
    336     status("Logging in to " + server); 
     377    status("Logging in to " + credentials.server); 
    337378 
    338379    try { 
    339       rs = DataServer.getDefaultServices(server); 
    340       rc = rs.getRemoteCaller(); 
    341       rc.login(user, pass); 
    342       sessionKey = rc.getSessionKey(); 
    343  
    344       validLogin = true; 
    345     } 
    346     catch (MalformedURLException e) { 
    347       validLogin = false; 
     380      r.setVar("server", credentials.server); 
     381      r.setVar("user", credentials.username); 
     382      r.setVar("pass", credentials.password); 
     383      r.exec("rs = DataServer.getDefaultServices(server)"); 
     384      r.exec("rc = rs.getRemoteCaller()"); 
     385      r.exec("rc.login(user, pass)"); 
     386    } 
     387    catch (ReflectException e) { 
    348388      throw new FormatException("Login failed", e); 
    349389    } 
  • trunk/loci/plugins/OMEPlugin.java

    r3495 r3503  
    5252  private OMECredentials cred; 
    5353  private static boolean cancelPlugin; 
     54  private String arg; 
    5455 
    5556  // -- PlugIn API methods -- 
     
    6465    Checker.checkLibrary(Checker.FORMS, missing); 
    6566    if (!Checker.checkMissing(missing)) return; 
     67    this.arg = arg; 
    6668    runPlugin(); 
    6769  } 
     
    7476   */ 
    7577  private void getInput() { 
    76     GenericDialog gd = new GenericDialog("OME Login"); 
    77  
    7878    String server = Prefs.get("downloader.server", ""); 
    7979    String user = Prefs.get("downloader.user", ""); 
    8080    String port = Prefs.get("downloader.port", ""); 
    8181    String type = Prefs.get("downloader.type", "OME"); 
    82  
    83     if (server.startsWith("http:")) server = server.substring(5); 
    84     while (server.startsWith("/")) server = server.substring(1); 
    85     int slash = server.indexOf("/"); 
    86     if (slash >= 0) server = server.substring(0, slash); 
    87     int colon = server.indexOf(":"); 
    88     if (colon >= 0) server = server.substring(0, colon); 
    89  
    90     gd.addChoice("Server type: ", new String[] {"OME", "OMERO"}, type); 
    91     gd.addStringField("Server:      ", server, 30); 
    92     gd.addStringField("Port:        ", port, 30); 
    93     gd.addStringField("Username:    ", user, 30); 
    94     gd.addStringField("Password:    ", "", 30); 
    95  
    96     // star out the password field 
    97  
    98     Vector v = gd.getStringFields(); 
    99     ((TextField) v.get(3)).setEchoChar('*'); 
    100  
    101     gd.showDialog(); 
    102     if (gd.wasCanceled()) { 
    103       cancelPlugin = true; 
    104       return; 
    105     } 
    106  
    107     type = gd.getNextChoice(); 
    108     server = gd.getNextString(); 
     82    String pass = null; 
     83    if (arg == null || arg.trim().equals("")) { 
     84      GenericDialog gd = new GenericDialog("OME Login"); 
     85 
     86      server = formatServerName(server); 
     87 
     88      gd.addChoice("Server_type: ", new String[] {"OME", "OMERO"}, type); 
     89      gd.addStringField("Server:      ", server, 30); 
     90      gd.addStringField("Port:        ", port, 30); 
     91      gd.addStringField("Username:    ", user, 30); 
     92      gd.addStringField("Password:    ", "", 30); 
     93 
     94      // star out the password field 
     95 
     96      Vector v = gd.getStringFields(); 
     97      ((TextField) v.get(3)).setEchoChar('*'); 
     98 
     99      gd.showDialog(); 
     100      if (gd.wasCanceled()) { 
     101        cancelPlugin = true; 
     102        return; 
     103      } 
     104 
     105      type = gd.getNextChoice(); 
     106      server = gd.getNextString(); 
     107      port = gd.getNextString(); 
     108      user = gd.getNextString(); 
     109      pass = gd.getNextString(); 
     110    } 
     111    else { 
     112      server = Macro.getValue(arg, "server", server); 
     113      user = Macro.getValue(arg, "username", user); 
     114      port = Macro.getValue(arg, "port", port); 
     115      type = Macro.getValue(arg, "server_type", type); 
     116      pass = Macro.getValue(arg, "password", ""); 
     117    } 
    109118 
    110119    // do sanity check on server name 
    111120    if (type.equals("OME")) { 
    112       if (server.startsWith("http:")) { 
    113         server = server.substring(5); 
    114       } 
    115       while (server.startsWith("/")) server = server.substring(1); 
    116       slash = server.indexOf("/"); 
    117       if (slash >= 0) server = server.substring(0, slash); 
    118       colon = server.indexOf(":"); 
    119       if (colon >= 0) server = server.substring(0, colon); 
    120       server = "http://" + server + "/shoola/"; 
     121      server = "http://" + formatServerName(server) + "/shoola/"; 
    121122    } 
    122123 
    123124    cred = new OMECredentials(); 
    124125    cred.server = server; 
    125     cred.port = gd.getNextString(); 
    126     cred.username = gd.getNextString(); 
    127     cred.password = gd.getNextString(); 
     126    cred.port = port; 
     127    cred.username = user; 
     128    cred.password = pass; 
    128129    cred.isOMERO = type.equals("OMERO"); 
    129130    try { 
     
    137138 
    138139    Prefs.set("downloader.server", server); 
    139     Prefs.set("downloader.user", cred.username); 
    140     Prefs.set("downloader.port", cred.port); 
     140    Prefs.set("downloader.user", user); 
     141    Prefs.set("downloader.port", port); 
    141142    Prefs.set("downloader.type", type); 
    142143  } 
     
    167168      // prompt for search criteria 
    168169 
    169       GenericDialog searchBox = new GenericDialog("Image search..."); 
    170       if (!cred.isOMERO) { 
    171         String[] names = OMEUtils.getAllExperimenters(cred.isOMERO); 
    172         String[] tmp = names; 
    173         names = new String[tmp.length + 1]; 
    174         names[0] = ""; 
    175         System.arraycopy(tmp, 0, names, 1, tmp.length); 
    176         searchBox.addChoice("Experimenter: ", names, names[0]); 
    177       } 
    178       searchBox.addStringField("Creation date (yyyy-mm-dd): ", ""); 
    179       searchBox.addStringField("Image ID: ", ""); 
    180       searchBox.showDialog(); 
    181  
    182       if (searchBox.wasCanceled()) { 
    183         cancelPlugin = true; 
    184         return; 
    185       } 
    186  
    187       String name = cred.isOMERO ? null : searchBox.getNextChoice(); 
    188       String created = searchBox.getNextString(); 
    189       String id = searchBox.getNextString(); 
    190  
    191       String firstName = null, lastName = null; 
     170      String name = null, firstName = null, lastName = null, iname = null, 
     171        created = null, id = null; 
     172      if (arg == null || arg.trim().equals("")) { 
     173        GenericDialog searchBox = new GenericDialog("Image search..."); 
     174        if (!cred.isOMERO) { 
     175          String[] names = OMEUtils.getAllExperimenters(cred.isOMERO); 
     176          String[] tmp = names; 
     177          names = new String[tmp.length + 1]; 
     178          names[0] = ""; 
     179          System.arraycopy(tmp, 0, names, 1, tmp.length); 
     180          searchBox.addChoice("Experimenter: ", names, names[0]); 
     181        } 
     182        searchBox.addStringField("Image_name: ", ""); 
     183        searchBox.addStringField("Creation date (yyyy-mm-dd): ", ""); 
     184        searchBox.addStringField("Image_ID: ", ""); 
     185        searchBox.showDialog(); 
     186 
     187        if (searchBox.wasCanceled()) { 
     188          cancelPlugin = true; 
     189          return; 
     190        } 
     191 
     192        name = cred.isOMERO ? null : searchBox.getNextChoice(); 
     193        iname = searchBox.getNextString(); 
     194        created = searchBox.getNextString(); 
     195        id = searchBox.getNextString(); 
     196      } 
     197      else { 
     198        name = Macro.getValue(arg, "owner_name", ""); 
     199        iname = Macro.getValue(arg, "image_name", ""); 
     200        created = Macro.getValue(arg, "creation", ""); 
     201        id = Macro.getValue(arg, "image_id", ""); 
     202      } 
    192203      if (name != null && name.indexOf(",") != -1) { 
    193204        lastName = name.substring(0, name.indexOf(",")).trim(); 
    194205        firstName = name.substring(name.indexOf(",") + 2).trim(); 
    195206      } 
     207 
    196208      if (firstName != null && firstName.trim().equals("")) firstName = null; 
    197209      if (lastName != null && lastName.trim().equals("")) lastName = null; 
     210      if (iname != null && iname.trim().equals("")) iname = null; 
    198211      if (created != null && created.trim().equals("")) created = null; 
    199212      if (id != null && id.trim().equals("")) id = null; 
    200213 
    201214      // filter images based on search terms 
    202       OMEUtils.filterPixels(firstName, lastName, created, id, cred.isOMERO); 
     215      OMEUtils.filterPixels(firstName, lastName, iname, created, id, 
     216        cred.isOMERO); 
    203217 
    204218      // retrieve image selection(s) 
    205219 
    206       long[] images = new OMEUtils().showTable(cred); 
     220      long[] images = null; 
     221      if (arg == null || arg.trim().equals("")) { 
     222        images = new OMEUtils().showTable(cred); 
     223      } 
     224 
    207225      if (images == null || images.length == 0) { 
    208226        logout(); 
     
    215233        String file = "location=[" + type + "] open=[" + cred.server + 
    216234          (cred.isOMERO ? ":" + cred.port : "") + "?user=" + cred.username + 
    217           "&password=" + cred.password + "&id=" + images[i] + "]"; 
     235          "&password=" + cred.password + "&id=" + images[i] + "] "  + arg; 
    218236        IJ.runPlugIn("loci.plugins.LociImporter", file); 
    219237 
     
    239257  } 
    240258 
     259  // -- Helper methods -- 
     260 
     261  private static String formatServerName(String server) { 
     262    String rtn = server; 
     263    if (rtn.startsWith("http:")) rtn = rtn.substring(5); 
     264    while (rtn.startsWith("/")) rtn = rtn.substring(1); 
     265    int slash = rtn.indexOf("/"); 
     266    if (slash >= 0) rtn = rtn.substring(0, slash); 
     267    int colon = rtn.indexOf(":"); 
     268    if (colon >= 0) rtn = rtn.substring(0, colon); 
     269    return rtn; 
     270  } 
     271 
    241272} 
Note: See TracChangeset for help on using the changeset viewer.