Changeset 3495


Ignore:
Timestamp:
12/20/07 13:52:31 (12 years ago)
Author:
melissa
Message:

Re-added search functionality to OME/OMERO downloader - allows searching by experimenter, creation date and image ID.

Location:
trunk/loci
Files:
2 edited

Legend:

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

    r3487 r3495  
    2121package loci.formats.ome; 
    2222 
     23import ij.IJ; 
    2324import ij.gui.GenericDialog; 
    2425import java.awt.Dimension; 
     
    208209  } 
    209210 
     211  /** Get the names of every experimenter in the database. */ 
     212  public static String[] getAllExperimenters(boolean isOMERO) 
     213    throws ReflectException 
     214  { 
     215    List exps = null; 
     216    if (isOMERO) { 
     217      String[] rtn = new String[1]; 
     218      r.exec("uid = eventContext.getCurrentUserId()"); 
     219      r.exec("exp = admin.getExperimenter(uid)"); 
     220      r.exec("fname = exp.getFirstName()"); 
     221      r.exec("lname = exp.getLastName()"); 
     222      rtn[0] = r.getVar("lname") + ", " + r.getVar("fname"); 
     223      return rtn; 
     224    } 
     225 
     226    getAllImages(); 
     227    r.exec("c = new Criteria()"); 
     228    r.setVar("OME_ID", "id"); 
     229    r.setVar("OME_FIRST_NAME", "FirstName"); 
     230    r.setVar("OME_LAST_NAME", "LastName"); 
     231    r.exec("c.addWantedField(OME_ID)"); 
     232    r.exec("c.addWantedField(OME_FIRST_NAME)"); 
     233    r.exec("c.addWantedField(OME_LAST_NAME)"); 
     234 
     235    r.setVar("exp", "Experimenter"); 
     236    r.exec("exps = df.retrieveList(exp, c)"); 
     237 
     238    exps = (List) r.getVar("exps"); 
     239    String[] rtn = new String[exps.size()]; 
     240    for (int i=0; i<exps.size(); i++) { 
     241      r.setVar("exp", exps.get(i)); 
     242      if (isOMERO) r.exec("exp = new ExperimenterData(exp)"); 
     243      r.exec("fname = exp.getFirstName()"); 
     244      r.exec("lname = exp.getLastName()"); 
     245      rtn[i] = r.getVar("lname") + ", " + r.getVar("fname"); 
     246    } 
     247    return rtn; 
     248  } 
     249 
     250  /** Filter available pixels to match given criteria. */ 
     251  public static void filterPixels(String firstName, String lastName, 
     252    String created, String id, boolean isOMERO) 
     253    throws ReflectException 
     254  { 
     255    if (isOMERO) getAllPixels(); 
     256    else getAllImages(); 
     257 
     258    int len = ((Integer) r.getVar("len")).intValue(); 
     259    List results = (List) r.getVar(isOMERO ? "results" : "l"); 
     260    List newResults = new Vector(); 
     261    for (int i=0; i<len; i++) { 
     262      r.setVar("obj", results.get(i)); 
     263      String fname = null, lname = null, create = null, pid = null; 
     264      if (isOMERO) { 
     265        r.exec("pix = new PixelsData(obj)"); 
     266        r.exec("v = obj.getId()"); 
     267        pid = r.getVar("v").toString(); 
     268        r.exec("img = pix.getImage()"); 
     269        r.exec("owner = pix.getOwner()"); 
     270        r.exec("fname = owner.getFirstName()"); 
     271        r.exec("lname = owner.getLastName()"); 
     272 
     273        try { 
     274          r.exec("created = img.getInserted()"); 
     275          create = ((Timestamp) r.getVar("created")).toString(); 
     276        } 
     277        catch (Exception e) { 
     278          create = null; 
     279        } 
     280 
     281        fname = (String) r.getVar("fname"); 
     282        lname = (String) r.getVar("lname"); 
     283      } 
     284      else { 
     285        r.exec("created = obj.getCreated()"); 
     286        create = (String) r.getVar("created"); 
     287        r.exec("id = obj.getID()"); 
     288        pid = r.getVar("id").toString(); 
     289        r.exec("owner = obj.getOwner()"); 
     290        r.exec("fname = owner.getFirstName()"); 
     291        r.exec("lname = owner.getLastName()"); 
     292        fname = (String) r.getVar("fname"); 
     293        lname = (String) r.getVar("lname"); 
     294      } 
     295 
     296      if ((firstName == null || firstName.equals(fname)) && 
     297        (lastName == null || lastName.equals(lname)) && 
     298        (created == null || created.equals(create) || 
     299        created.startsWith(create)) && (id == null || id.equals(pid))) 
     300      { 
     301        newResults.add(results.get(i)); 
     302      } 
     303    } 
     304 
     305    if (isOMERO) { 
     306      r.setVar("results", newResults); 
     307      r.exec("len = results.size()"); 
     308    } 
     309    else { 
     310      r.setVar("l", newResults); 
     311      r.exec("len = l.size()"); 
     312    } 
     313  } 
     314 
    210315  /** Get the width of every accessible image on the server. */ 
    211316  public static int[] getAllWidths(boolean isOMERO) throws ReflectException { 
     
    262367 
    263368    getAllImages(); 
    264     r.exec("len = l.size()"); 
    265369    int len = ((Integer) r.getVar("len")).intValue(); 
    266370    String[] rtn = new String[len]; 
     
    294398 
    295399    getAllImages(); 
    296     r.exec("len = l.size()"); 
    297400    int len = ((Integer) r.getVar("len")).intValue(); 
    298401    String[] rtn = new String[len]; 
     
    317420        r.exec("obj = new PixelsData(obj)"); 
    318421        r.exec("image = obj.getImage()"); 
    319         try {  
    320           r.exec("name = image.getInserted()");  
     422        try { 
     423          r.exec("name = image.getInserted()"); 
    321424          rtn[i] = ((Timestamp) r.getVar("name")).toString(); 
    322425        } 
    323         catch (Exception e) {  
     426        catch (Exception e) { 
    324427          rtn[i] = new Timestamp(System.currentTimeMillis()).toString(); 
    325428        } 
     
    329432 
    330433    getAllImages(); 
    331     r.exec("len = l.size()"); 
    332434    int len = ((Integer) r.getVar("len")).intValue(); 
    333435    String[] rtn = new String[len]; 
     
    350452 
    351453    getAllImages(); 
    352     r.exec("len = l.size()"); 
    353454    int len = ((Integer) r.getVar("len")).intValue(); 
    354455    BufferedImage[] rtn = new BufferedImage[len]; 
     
    368469 
    369470    getAllImages(); 
    370     r.exec("len = l.size()"); 
    371471    int len = ((Integer) r.getVar("len")).intValue(); 
    372472    long[] rtn = new long[len]; 
     
    392492    String[] created = getAllDates(cred.isOMERO); 
    393493    BufferedImage[] thumbs = getAllThumbnails(cred.isOMERO); 
     494 
     495    if (ids.length == 0) { 
     496      IJ.error("No images found!"); 
     497      return ids; 
     498    } 
    394499 
    395500    // TODO : consolidate this with ImporterOptions.promptSeries logic. 
     
    486591    } 
    487592    r.exec("l = df.retrieveList(imageClass, c)"); 
     593    r.exec("len = l.size()"); 
    488594    omePixelsInitialized = true; 
    489595  } 
     
    491597  private static int[] getOMEIntValues(String func) throws ReflectException { 
    492598    getAllImages(); 
    493     r.exec("len = l.size()"); 
    494599    int len = ((Integer) r.getVar("len")).intValue(); 
    495600    int[] rtn = new int[len]; 
     
    508613  { 
    509614    getAllImages(); 
    510     r.exec("len = l.size()"); 
    511615    int len = ((Integer) r.getVar("len")).intValue(); 
    512616    String[] rtn = new String[len]; 
     
    593697      } 
    594698    } 
    595  
    596699    r.exec("len = results.size()"); 
    597700    omeroPixelsInitialized = true; 
  • trunk/loci/plugins/OMEPlugin.java

    r3487 r3495  
    7979    String user = Prefs.get("downloader.user", ""); 
    8080    String port = Prefs.get("downloader.port", ""); 
     81    String type = Prefs.get("downloader.type", "OME"); 
    8182 
    8283    if (server.startsWith("http:")) server = server.substring(5); 
     
    8788    if (colon >= 0) server = server.substring(0, colon); 
    8889 
    89     gd.addChoice("Server type: ", new String[] {"OME", "OMERO"}, "OME"); 
     90    gd.addChoice("Server type: ", new String[] {"OME", "OMERO"}, type); 
    9091    gd.addStringField("Server:      ", server, 30); 
    9192    gd.addStringField("Port:        ", port, 30); 
     
    104105    } 
    105106 
    106     String type = gd.getNextChoice(); 
    107  
     107    type = gd.getNextChoice(); 
    108108    server = gd.getNextString(); 
    109109 
     
    132132    catch (ReflectException e) { 
    133133      IJ.error("Login failed"); 
    134       e.printStackTrace();  
     134      e.printStackTrace(); 
    135135      getInput(); 
    136136    } 
     
    139139    Prefs.set("downloader.user", cred.username); 
    140140    Prefs.set("downloader.port", cred.port); 
     141    Prefs.set("downloader.type", type); 
    141142  } 
    142143 
     
    164165      } 
    165166 
     167      // prompt for search criteria 
     168 
     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; 
     192      if (name != null && name.indexOf(",") != -1) { 
     193        lastName = name.substring(0, name.indexOf(",")).trim(); 
     194        firstName = name.substring(name.indexOf(",") + 2).trim(); 
     195      } 
     196      if (firstName != null && firstName.trim().equals("")) firstName = null; 
     197      if (lastName != null && lastName.trim().equals("")) lastName = null; 
     198      if (created != null && created.trim().equals("")) created = null; 
     199      if (id != null && id.trim().equals("")) id = null; 
     200 
     201      // filter images based on search terms 
     202      OMEUtils.filterPixels(firstName, lastName, created, id, cred.isOMERO); 
     203 
     204      // retrieve image selection(s) 
     205 
    166206      long[] images = new OMEUtils().showTable(cred); 
    167207      if (images == null || images.length == 0) { 
Note: See TracChangeset for help on using the changeset viewer.