Changeset 3383


Ignore:
Timestamp:
11/19/07 11:19:43 (12 years ago)
Author:
curtis
Message:

Add notation for 2003/CA-style ID reference path chains.

Location:
trunk/loci/formats/auto
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/auto/MetadataAutogen.java

    r3364 r3383  
    5757  private static String omexmlHeader; 
    5858  private static OutFiles out = new OutFiles(); 
     59  private static HashSet getters = new HashSet(); 
     60  private static HashSet setters = new HashSet(); 
     61  private static HashSet helpers = new HashSet(); 
     62  private static Hashtable paramMap = new Hashtable(); 
    5963 
    6064  // -- Main method -- 
     
    159163    Vector nodes = new Vector(); 
    160164    Node node = null; 
     165    Param param = null; 
    161166    BufferedReader in = new BufferedReader(new InputStreamReader( 
    162167      MetadataAutogen.class.getResourceAsStream(NODES_SRC))); 
     
    176181        node.name = line.substring(1, line.length() - 1); 
    177182        node.desc = in.readLine(); 
     183        node.extra = in.readLine(); 
     184        continue; 
     185      } 
     186 
     187      if (line.startsWith("*")) { 
     188        int colon = line.indexOf(":"); 
     189        if (colon < 0) { 
     190          System.err.println("Warning: invalid line: " + line); 
     191          continue; 
     192        } 
     193        String version = line.substring(1, colon).trim(); 
     194        String paramName = line.substring(colon + 1).trim(); 
     195        paramMap.put(version + "/" + param.name, paramName); 
    178196        continue; 
    179197      } 
     
    197215 
    198216      // parameter 
    199       Param param = new Param(); 
     217      param = new Param(); 
    200218      param.type = st.nextToken(); 
    201219      param.name = st.nextToken(); 
     
    222240      if (first) { 
    223241        // MetadataRetrieve interface 
    224         doGetters("MetadataRetrieve.java", value, node, true); 
     242        doGetters("MetadataRetrieve.java", value, node, null); 
    225243        first = false; 
    226244      } 
    227245      // OME-XML implementations 
    228       doGetters("ome/OMEXML" + key + "Metadata.java", value, node, false); 
     246      doGetters("ome/OMEXML" + key + "Metadata.java", value, node, key); 
    229247    } 
    230248  } 
     
    239257      if (first) { 
    240258        // MetadataStore interface 
    241         doSetters("MetadataStore.java", value, node, true); 
     259        doSetters("MetadataStore.java", value, node, null); 
    242260        first = false; 
    243261      } 
    244262      // OME-XML implementation 
    245       doSetters("ome/OMEXML" + key + "Metadata.java", value, node, false); 
     263      doSetters("ome/OMEXML" + key + "Metadata.java", value, node, key); 
    246264    } 
    247265  } 
     
    254272      String value = (String) node.paths.get(key); 
    255273      // OME-XML implementation 
    256       doHelpers("ome/OMEXML" + key + "Metadata.java", value, node); 
     274      doHelpers("ome/OMEXML" + key + "Metadata.java", value); 
    257275    } 
    258276  } 
     
    260278  /** Generates getter methods for the given node and source file. */ 
    261279  private static void doGetters(String id, String path, Node node, 
    262     boolean iface) throws IOException 
     280    String version) throws IOException 
    263281  { 
    264     String end = iface ? ");" : ")"; 
     282    String end = version == null ? ");" : ")"; 
    265283    LineTracker lt = new LineTracker(); 
    266284 
     285    // prepend getters section comment 
     286    if (version != null && !getters.contains(id)) { 
     287      getters.add(id); 
     288      lt.add("  // -- MetadataRetrieve API methods --"); 
     289      lt.newline(); 
     290      lt.newline(); 
     291    } 
     292 
    267293    // parse path 
     294    String last = getLastPathElement(path); 
    268295    Vector indices = getIndices(path); 
    269296    int psize = node.params.size(); 
    270297    int isize = indices.size(); 
    271298 
    272     lt.add("  // -- " + node.name + " attribute retrieval methods --"); 
     299    lt.add("  // - " + node.name + " attribute retrieval -"); 
    273300    lt.newline(); 
    274301    lt.newline(); 
     
    279306 
    280307      // javadoc 
    281       if (iface) { 
     308      if (version == null) { 
    282309        lt.add("  /**"); 
    283310        lt.newline(); 
     
    295322      } 
    296323      else { 
     324        String lead = "@see loci.formats.MetadataRetrieve#get" + 
     325          node.name + pi.name + "("; 
    297326        StringBuffer sb = new StringBuffer(); 
    298         sb.append("@see loci.formats.MetadataRetrieve#get" + 
    299           node.name + pi.name + "("); 
    300327        for (int j=0; j<isize; j++) { 
    301328          Param pj = (Param) indices.get(j); 
     
    303330          sb.append(j < isize - 1 ? ", " : ")"); 
    304331        } 
    305         if (sb.length() <= 72) { 
    306           lt.add("  /* " + sb.toString() + " */"); 
     332        if (lead.length() + sb.length() <= 72) { 
     333          lt.add("  /* "); 
     334          lt.addTokens(lead + sb.toString(), null); 
     335          lt.add(" */"); 
    307336          lt.newline(); 
    308337        } 
     
    311340          lt.newline(); 
    312341          lt.add("   * "); 
    313           lt.addTokens(sb.toString(), "   *   "); 
     342          lt.addTokens(lead + " " + sb.toString(), "   *   "); 
    314343          lt.newline(); 
    315344          lt.add("   */"); 
     
    319348      // method signature 
    320349      lt.add("  "); 
    321       if (!iface) lt.add("public "); 
     350      if (version != null) lt.add("public "); 
    322351      lt.add(pi.type + " get" + node.name + pi.name + "("); 
    323352      for (int j=0; j<isize; j++) { 
    324353        // parameters 
    325354        Param pj = (Param) indices.get(j); 
    326         lt.add(pj.getArg(true, true, j == 0, j == isize - 1, end)); 
    327       } 
    328       if (!iface) { 
     355        lt.add(pj.getArg(true, true, j == 0, j == isize - 1, end), "    "); 
     356      } 
     357      if (version != null) { 
    329358        // opening brace 
    330359        if (lt.hasWrapped()) { 
     
    335364      } 
    336365      lt.newline(); 
     366 
    337367      // method body 
    338       if (!iface) { 
    339         lt.add("    // TODO"); 
     368      if (version != null) { 
     369        String mappedName = getParamName(pi.name, version); 
     370        if (mappedName.equals("-")) { 
     371          Hashtable vars = (Hashtable) versions.get(version); 
     372          lt.add("    // NB: " + pi.name + 
     373            " unsupported for schema version " + vars.get("version")); 
     374          lt.newline(); 
     375          lt.add("    return null;"); 
     376          lt.newline(); 
     377        } 
     378        else { 
     379          String varName = toVarName(last); 
     380          lt.add("    " + last + "Node " + varName + 
     381            " = get" + last + "("); 
     382          for (int j=0; j<isize; j++) { 
     383            Param pj = (Param) indices.get(j); 
     384            lt.add(pj.getArg(true, false, j == 0, false, null), "      "); 
     385          } 
     386          lt.add(" false);", "      "); 
     387          lt.newline(); 
     388          String ante = "    return " + varName + " == null ? null :"; 
     389          String cons = varName + ".get" + pi.name + "();"; 
     390          if (ante.length() + cons.length() <= 79) { 
     391            lt.add(ante + " " + cons); 
     392            lt.newline(); 
     393          } 
     394          else { 
     395            lt.add(ante); 
     396            lt.newline(); 
     397            lt.add("      " + cons); 
     398            lt.newline(); 
     399          } 
     400        } 
    340401        // closing brace 
    341         lt.newline(); 
    342         lt.add("    return null;"); 
    343         lt.newline(); 
    344402        lt.add("  }"); 
    345403        lt.newline(); 
     
    353411  /** Generates setter methods for the given node and source file. */ 
    354412  private static void doSetters(String id, String path, Node node, 
    355     boolean iface) throws IOException 
     413    String version) throws IOException 
    356414  { 
    357     String end = iface ? ");" : ")"; 
     415    String end = version == null ? ");" : ")"; 
    358416    LineTracker lt = new LineTracker(); 
    359417 
     418    // prepend setters section comment 
     419    if (version != null && !setters.contains(id)) { 
     420      setters.add(id); 
     421      lt.add("  // -- MetadataStore API methods --"); 
     422      lt.newline(); 
     423      lt.newline(); 
     424    } 
     425 
    360426    // parse path 
     427    String last = getLastPathElement(path); 
    361428    Vector indices = getIndices(path); 
    362429    int psize = node.params.size(); 
     
    365432 
    366433    // javadoc 
    367     if (iface) { 
     434    if (version == null) { 
    368435      lt.add("  /**"); 
    369436      lt.newline(); 
    370437      lt.add("   * Sets "); 
    371438      lt.addTokens(node.desc + ".", "   * "); 
     439      if (!node.extra.equals("-")) { 
     440        lt.add(" ", "   *"); 
     441        lt.addTokens(node.extra, "   * "); 
     442      } 
    372443      lt.newline(); 
    373444      for (int i=0; i<total; i++) { 
     
    382453    } 
    383454    else { 
     455      String lead = "@see loci.formats.MetadataStore#set" + node.name + "("; 
    384456      StringBuffer sb = new StringBuffer(); 
    385       sb.append("@see loci.formats.MetadataStore#set" + node.name + "("); 
    386457      for (int i=0; i<total; i++) { 
    387458        Param p = (Param) 
     
    390461        sb.append(i < total - 1 ? ", " : ")"); 
    391462      } 
    392       if (sb.length() <= 72) { 
    393         lt.add("  /* " + sb.toString() + " */"); 
     463      if (lead.length() + sb.length() <= 72) { 
     464        lt.add("  /* " + lead + sb.toString() + " */"); 
    394465        lt.newline(); 
    395466      } 
     
    398469        lt.newline(); 
    399470        lt.add("   * "); 
    400         lt.addTokens(sb.toString(), "   *   "); 
     471        lt.addTokens(lead + " " + sb.toString(), "   *   "); 
    401472        lt.newline(); 
    402473        lt.add("   */"); 
     
    406477    // method signature 
    407478    lt.add("  "); 
    408     if (!iface) lt.add("public "); 
     479    if (version != null) lt.add("public "); 
    409480    lt.add("void set" + node.name + "("); 
    410481    for (int i=0; i<total; i++) { 
     
    414485      lt.add(p.getArg(true, true, i == 0, i == total - 1, end), "    "); 
    415486    } 
    416     if (!iface) { 
     487    if (version != null) { 
    417488      // opening brace 
    418489      if (lt.hasWrapped()) { 
     
    423494    } 
    424495    lt.newline(); 
     496 
    425497    // method body 
    426     if (!iface) { 
    427       String varName = toVarName(node.name); 
    428       lt.add("    " + node.name + "Node " + varName + 
    429         " = get" + node.name + "("); 
     498    if (version != null) { 
     499      String varName = toVarName(last); 
     500      lt.add("    " + last + "Node " + varName + 
     501        " = get" + last + "("); 
    430502      for (int i=0; i<isize; i++) { 
    431503        Param p = (Param) indices.get(i); 
    432504        lt.add(p.getArg(true, false, i == 0, false, null), "    "); 
    433505      } 
    434       lt.add(" true);", "    "); 
     506      lt.add(" true);", "      "); 
    435507      lt.newline(); 
    436508      for (int i=0; i<psize; i++) { 
    437509        Param p = (Param) node.params.get(i); 
    438         lt.add("    if (" + toVarName(p.name) + " != null) {"); 
    439         lt.newline(); 
    440         lt.add("      " + varName + 
    441           ".set" + p.name + "(" + toVarName(p.name) + ");"); 
    442         lt.newline(); 
    443         lt.add("    }"); 
    444         lt.newline(); 
     510        String mappedName = getParamName(p.name, version); 
     511        if (mappedName.equals("-")) { 
     512          Hashtable vars = (Hashtable) versions.get(version); 
     513          lt.add("    // NB: " + p.name + 
     514            " unsupported for schema version " + vars.get("version")); 
     515          lt.newline(); 
     516        } 
     517        else { 
     518          String ante = "    if (" + toVarName(p.name) + " != null) "; 
     519          String cons = varName + ".set" + mappedName + 
     520            "(" + toVarName(p.name) + ");"; 
     521          if (ante.length() + cons.length() <= 80) { 
     522            lt.add(ante + cons); 
     523            lt.newline(); 
     524          } 
     525          else { 
     526            lt.add(ante + "{"); 
     527            lt.newline(); 
     528            lt.add("      " + cons); 
     529            lt.newline(); 
     530            lt.add("    }"); 
     531            lt.newline(); 
     532          } 
     533        } 
    445534      } 
    446535      // closing brace 
    447       lt.newline(); 
    448536      lt.add("  }"); 
    449537      lt.newline(); 
    450538    } 
     539 
    451540    // output results 
    452541    out.write(id, lt.toString()); 
     
    454543 
    455544  /** Generates helper methods for the given node and source file. */ 
    456   private static void doHelpers(String id, String path, Node node) 
    457     throws IOException 
    458   { 
     545  private static void doHelpers(String id, String path) throws IOException { 
     546    // only generate each path's helper method once 
     547    if (helpers.contains(id + ":" + path)) return; 
     548    helpers.add(id + ":" + path); 
     549 
    459550    String end = ")"; 
    460551    LineTracker lt = new LineTracker(); 
    461552 
     553    // prepend helpers section comment 
     554    if (!helpers.contains(id)) { 
     555      helpers.add(id); 
     556      lt.add("  // -- Helper methods --"); 
     557      lt.newline(); 
     558      lt.newline(); 
     559    } 
     560 
    462561    // parse path 
     562    String last = getLastPathElement(path); 
    463563    Vector indices = getIndices(path); 
    464     int psize = node.params.size(); 
    465564    int isize = indices.size(); 
    466565 
     
    468567    lt.add("  // " + path); 
    469568    lt.newline(); 
    470     lt.add("  private " + node.name + "Node get" + node.name + "("); 
     569    lt.add("  private " + last + "Node get" + last + "("); 
    471570    for (int i=0; i<isize; i++) { 
    472571      // parameters 
     
    488587    lt.add(" {", "  "); 
    489588    lt.newline(); 
     589 
    490590    // method body 
    491     int n = 0; 
     591    lt.add("    int ndx, count;"); 
     592    lt.newline(); 
    492593    lt.add("    List list;"); 
    493594    lt.newline(); 
    494     lt.add("    int ndx, count;"); 
    495     lt.newline(); 
     595    lt.add("    // get OME node"); 
     596    lt.newline(); 
     597    lt.add("    OMENode ome = (OMENode) root;"); 
     598    lt.newline(); 
     599 
     600    String var = "ome"; 
     601    String pVar = "ome", pToken = "OME"; 
     602    String endElement = null, endVar = null; 
    496603    StringTokenizer st = new StringTokenizer(path, "/"); 
    497     lt.add("    // get OME node"); 
    498     lt.newline(); 
    499     lt.add("    OMENode ome = (OMENode) root;"); 
    500     lt.newline(); 
    501     String var = "ome"; 
    502604    while (st.hasMoreTokens()) { 
    503605      String token = st.nextToken(); 
     606      boolean ref = false; 
     607      if (token.startsWith("@")) { 
     608        token = token.substring(1); 
     609        ref = true; 
     610      } 
    504611      boolean multi = false; 
    505612      if (token.endsWith("+")) { 
     613        token = token.substring(0, token.length() - 1); 
    506614        multi = true; 
    507         token = token.substring(0, token.length() - 1); 
    508       } 
     615      } 
     616      var = toVarName(token); 
    509617      lt.add("    // get " + token + " node"); 
    510618      lt.newline(); 
    511       String varToken = toVarName(token); 
    512       String nextVar = token.equals("CustomAttributes") ? "ca" : varToken; 
     619      if (token.equals("CA")) token = "CustomAttributes"; 
    513620      if (multi) { 
    514         lt.add("    ndx = i2i(" + varToken + "Index);"); 
    515         lt.newline(); 
    516         lt.add("    count = " + var + ".count" + token + "s();"); 
     621        lt.add("    ndx = i2i(" + var + "Index);"); 
     622        lt.newline(); 
     623        lt.add("    count = " + pVar + ".count" + token + "List();"); 
    517624        lt.newline(); 
    518625        lt.add("    if (!create && ndx >= count) return null;"); 
    519626        lt.newline(); 
    520         lt.add("    for (int i=count; i<=ndx; i++) " + 
    521            "new " + token + "Node(" + var + ");"); 
    522         lt.newline(); 
    523         lt.add("    list = " + var + ".get" + token + "s();"); 
    524         lt.newline(); 
    525         lt.add("    " + token + "Node " + nextVar + 
     627        if (ref) { 
     628          lt.add("    for (int i=count; i<=ndx; i++) {"); 
     629          lt.newline(); 
     630          lt.add("      new " + token + 
     631            "Node(ca).set" + pToken + "(" + pVar + ");"); 
     632          lt.newline(); 
     633          lt.add("    }"); 
     634          lt.newline(); 
     635        } 
     636        else { 
     637          lt.add("    for (int i=count; i<=ndx; i++) new " + 
     638            token + "Node(" + pVar + ");"); 
     639          lt.newline(); 
     640        } 
     641        lt.add("    list = " + pVar + ".get" + token + "List();"); 
     642        lt.newline(); 
     643        lt.add("    " + token + "Node " + var + 
    526644          " = (" + token + "Node) list.get(ndx);"); 
    527645        lt.newline(); 
    528646      } 
    529647      else { 
    530         lt.add("    " + token + "Node " + nextVar + 
    531           " = " + var + ".get" + token + "();"); 
    532         lt.newline(); 
    533         lt.add("    if (" + nextVar + " == null) {"); 
     648        lt.add("    " + token + "Node " + var + 
     649          " = " + pVar + ".get" + token + "();"); 
     650        lt.newline(); 
     651        lt.add("    if (" + var + " == null) {"); 
    534652        lt.newline(); 
    535653        lt.add("      if (!create) return null;"); 
    536654        lt.newline(); 
    537         lt.add("      " + nextVar + " = new " + token + "Node(" + var + ");"); 
    538         lt.newline(); 
     655        lt.add("      " + var + " = new " + token + 
     656          "Node(" + (ref ? "ca" : pVar) + ");"); 
     657        lt.newline(); 
     658        if (ref) { 
     659          lt.add("      " + var + ".set" + pToken + "(" + pVar + ");"); 
     660          lt.newline(); 
     661        } 
    539662        lt.add("    }"); 
    540663        lt.newline(); 
    541664      } 
    542       var = nextVar; 
     665      pToken = token; 
     666      pVar = var; 
    543667    } 
    544668    lt.add("    return " + var + ";"); 
    545669    lt.newline(); 
     670 
    546671    // closing brace 
    547672    lt.add("  }"); 
     
    565690    Vector indices = new Vector(); 
    566691    if (path != null) { 
    567       StringTokenizer st = new StringTokenizer(path, "/"); 
     692      StringTokenizer st = new StringTokenizer(path, "/>"); 
    568693      int tokens = st.countTokens(); 
    569694      for (int i=0; i<tokens; i++) { 
     
    571696        if (t.endsWith("+")) { 
    572697          Param p = new Param(); 
    573           t = t.substring(0, t.length() - 1); 
     698          t = t.substring(t.startsWith("@") ? 1 : 0, t.length() - 1); 
    574699          p.name = toVarName(t) + "Index"; 
    575700          p.type = "Integer"; 
     
    623748  } 
    624749 
     750  /** Gets overridden parameter name for the given version, if any. */ 
     751  private static String getParamName(String name, String version) { 
     752    String paramName = (String) paramMap.get(version + "/" + name); 
     753    return paramName == null ? name : paramName; 
     754  } 
     755 
     756  /** Gets last element of a node path. */ 
     757  private static String getLastPathElement(String path) { 
     758    int first = path.lastIndexOf("/") + 1; 
     759    if (path.charAt(first) == '@') first++; 
     760    int last = path.length(); 
     761    if (path.endsWith("+")) last--; 
     762    return path.substring(first, last); 
     763  } 
     764 
    625765  // -- Helper classes -- 
    626766 
    627767  /** A helper class for storing information about a node. */ 
    628768  private static class Node { 
    629     private String name = null, desc = null; 
     769    private String name = null, desc = null, extra = null; 
    630770    private Hashtable paths = new Hashtable(); 
    631771    private Vector params = new Vector(); 
     
    670810    public void addTokens(String s, String lead) { 
    671811      StringTokenizer st = new StringTokenizer(s); 
    672       if (st.hasMoreTokens()) add(st.nextToken()); 
    673       while (st.hasMoreTokens()) add(" " + st.nextToken(), lead); 
     812      String lastToken = st.hasMoreTokens() ? st.nextToken() : null; 
     813      if (lastToken != null) add(lastToken); 
     814      while (st.hasMoreTokens()) { 
     815        String token = st.nextToken(); 
     816        if (!lastToken.endsWith("(")) token = " " + token; 
     817        add(token, lead); 
     818        lastToken = token; 
     819      } 
    674820    } 
    675821    public boolean hasWrapped() { return wrapped; } 
  • trunk/loci/formats/auto/MetadataAutogenGlobal.txt

    r3364 r3383  
    1 [2004] 
    2 class = OMEXML2004Metadata 
    3 id = OMEXML2004Metadata.java 
    4 basePackage = org.openmicroscopy.xml 
    5 subPackage = st 
    6 version = 2004 (FC) 
     1# 
     2# MetadataAutogenGlobal.txt 
     3# 
     4 
     5# LOCI Bio-Formats package for reading and converting biological file formats. 
     6# Copyright (C) 2005-@year@ Melissa Linkert, Curtis Rueden, Chris Allan, 
     7# Eric Kjellman and Brian Loranger. 
     8# 
     9# This program is free software; you can redistribute it and/or modify 
     10# it under the terms of the GNU Library General Public License as published by 
     11# the Free Software Foundation; either version 2 of the License, or 
     12# (at your option) any later version. 
     13# 
     14# This program is distributed in the hope that it will be useful, 
     15# but WITHOUT ANY WARRANTY; without even the implied warranty of 
     16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     17# GNU Library General Public License for more details. 
     18# 
     19# You should have received a copy of the GNU Library General Public License 
     20# along with this program; if not, write to the Free Software 
     21# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
    722 
    823[200706] 
     
    1328version = 2007-06 
    1429 
     30[2003FC] 
     31class = OMEXML2003FCMetadata 
     32id = OMEXML2003FCMetadata.java 
     33basePackage = org.openmicroscopy.xml 
     34subPackage = st 
     35version = 2003 (FC) 
     36 
    1537[-] 
  • trunk/loci/formats/auto/MetadataAutogenNodes.txt

    r3364 r3383  
     1# 
     2# MetadataAutogenNodes.txt 
     3# 
     4 
     5# LOCI Bio-Formats package for reading and converting biological file formats. 
     6# Copyright (C) 2005-@year@ Melissa Linkert, Curtis Rueden, Chris Allan, 
     7# Eric Kjellman and Brian Loranger. 
     8# 
     9# This program is free software; you can redistribute it and/or modify 
     10# it under the terms of the GNU Library General Public License as published by 
     11# the Free Software Foundation; either version 2 of the License, or 
     12# (at your option) any later version. 
     13# 
     14# This program is distributed in the hope that it will be useful, 
     15# but WITHOUT ANY WARRANTY; without even the implied warranty of 
     16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     17# GNU Library General Public License for more details. 
     18# 
     19# You should have received a copy of the GNU Library General Public License 
     20# along with this program; if not, write to the Free Software 
     21# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
     22 
    123[Image] 
    224an image in the metadata store with a particular index 
    3 2004: Image+ 
     25- 
    426200706: Image+ 
     272003FC: Image+ 
    528String Name          the full name of the image 
    629String CreationDate  the creation date of the image 
     
    932[Experimenter] 
    1033an experimenter in the metadata store with a particular index 
    11 2004: CustomAttributes/Experimenter+ 
     34- 
    1235200706: Experimenter+ 
     362003FC: CA/Experimenter+ 
    1337String FirstName      the first name of the experimenter 
    1438String LastName       the last name of the experimenter 
     
    2044[Group] 
    2145a group in the metadata store with a particular index 
    22 2004: CustomAttributes/Group+ 
     46- 
    2347200706: Group+ 
     482003FC: CA/Group+ 
    2449String Name     the name of the group 
    2550Object Leader   the leader of the group 
     
    2853[Instrument] 
    2954an instrument in the metadata store with a particular index 
    30 2004: CustomAttributes/Instrument+ 
     55- 
    3156200706: Instrument+ 
     572003FC: CA/Instrument+ 
    3258String Manufacturer  the name of the manufacturer 
    3359String Model         the model number of the instrument 
     
    3662 
    3763[Dimensions] 
    38 a set of pixel dimensions in the metadata store with a particular index. Unless both values are non-null, the MetadataStore should assume pixelSizeX equals pixelSizeY (i.e., should populate the null field with the other field's value) 
    39 2004: Image+/CustomAttributes/Dimensions 
     64a set of pixel dimensions in the metadata store with a particular index 
     65Unless both values are non-null, the MetadataStore should assume pixelSizeX equals pixelSizeY (i.e., should populate the null field with the other field's value). 
    4066200706: Image+ 
    41 Float PixelSizeX  size of an individual pixel's X axis in microns 
    42 Float PixelSizeY  size of an individual pixel's Y axis in microns 
    43 Float PixelSizeZ  size of an individual pixel's Z axis in microns 
    44 Float PixelSizeC  distance between adjacent wavelengths in nanometers 
    45 Float PixelSizeT  distance between adjacent time points in seconds 
     672003FC: Image+/CA/Dimensions 
     68Float PhysicalSizeX  size of an individual pixel's X axis in microns 
     69*2003FC: PixelSizeX 
     70Float PhysicalSizeY  size of an individual pixel's Y axis in microns 
     71*2003FC: PixelSizeY 
     72Float PhysicalSizeZ  size of an individual pixel's Z axis in microns 
     73*2003FC: PixelSizeZ 
     74Float TimeIncrement  distance between adjacent time points in seconds 
     75*2003FC: PixelSizeT 
     76Integer WaveStart    starting wavelength in nanometers 
     77*2003FC: - 
     78Float WaveIncrement  distance between adjacent wavelengths in nanometers 
     79*2003FC: PixelSizeC 
    4680 
    4781[DisplayROI] 
    4882a 5D bounding box region of interest and a set of display options in the metadata store with a particular index 
    49 2004: Image+/CustomAttributes/DisplayROI 
     83- 
     84200706: Image+/ROI 
     852003FC: Image+/CA/DisplayROI 
    5086Integer X0             the starting X coordinate 
    5187Integer Y0             the starting Y coordinate 
    5288Integer Z0             the starting Z coordinate 
     89Integer T0             the starting timepoint 
    5390Integer X1             the ending X coordinate 
    5491Integer Y1             the ending Y coordinate 
    5592Integer Z1             the ending Z coordinate 
    56 Integer T0             the starting timepoint 
    5793Integer T1             the ending timepoint 
    5894Object DisplayOptions  the display options to attach to this region of interest 
     
    6096[Pixels] 
    6197a pixels set in the metadata store with a particular image and pixels index 
    62 2004: Image+/CustomAttributes/Pixels+ 
     98- 
     99200706: Image+/Pixels+ 
     1002003FC: Image+/CA/Pixels+ 
    63101Integer SizeX          size of an individual plane or section's X axis (width) 
    64102Integer SizeY          size of an individual plane of section's Y axis (height) 
     
    66104Integer SizeC          number of channels per timepoint 
    67105Integer SizeT          number of timepoints 
    68 Integer PixelType      the pixel type; one of the enumerated static values present in {@link FormatReader} 
     106String PixelType       the pixel type 
    69107Boolean BigEndian      if the pixels set is big endian or not 
    70108String DimensionOrder  the dimension order of the pixels set 
     
    72110[StageLabel] 
    73111a stage label in the metadata store with a particular index 
    74 2004: Image+/CustomAttributes/StageLabel+ 
     112200706: Image+/StageLabel+ 
     1132003FC: Image+/CA/StageLabel+ 
    75114String Name  a name for the stage label 
    76115Float X      x coordinate of the stage 
     
    80119[LogicalChannel] 
    81120a logical channel and physical channel in the metadata store for a particular pixels 
    82 2004: Image+/CustomAttributes/LogicalChannel+ 
     121- 
     122200706: Image+/LogicalChannel+ 
     1232003FC: Image+/CA/LogicalChannel+ 
    83124String Name                       the logical channel's name 
    84125Integer SamplesPerPixel           CTR TODO 
     
    105146Float NdFilter                    the neutral-density filter value 
    106147 
    107 #TODO 200706 only 
    108 #[PlaneInfo] 
    109 #the plane information for a particular X-Y plane (section) within a particular pixels set.<br><br>NOTE: The implementation of this method is optional as this is a transitional type. More information about the PlaneInfo type can be found <a href="http://cvs.openmicroscopy.org.uk/tiki/tiki-index.php?page=DataModelProposal#id119301">here</a>. 
    110 #int TheZ            the optical section index 
    111 #int TheC            the channel index 
    112 #int TheT            the timepoint 
    113 #Float Timestamp     the time of acquisition in seconds of the plane (section) with zero being the start of acquisition 
    114 #Float ExposureTime  exposureTime exposure time in seconds. 
     148[PlaneInfo] 
     149the plane information for a particular X-Y plane (section) within a particular pixels set 
     150NOTE: The implementation of this method is optional as this is a transitional type. More information about the PlaneInfo type can be found <a href="http://cvs.openmicroscopy.org.uk/tiki/tiki-index.php?page=DataModelProposal#id119301">here</a>. 
     151200706: Image+/Pixels+/Plane 
     152#2003FC: - 
     153int TheZ            the optical section index 
     154int TheC            the channel index 
     155int TheT            the timepoint 
     156Float Timestamp     the time of acquisition in seconds of the plane (section) with zero being the start of acquisition 
     157Float ExposureTime  exposureTime exposure time in seconds. 
    115158 
    116159[ImagingEnvironment] 
    117160the imaging environment for a particular image 
    118 2004: Image+/CustomAttributes/ImagingEnvironment 
     161- 
     162200706: Image+/ImagingEnvironment 
     1632003FC: Image+/CA/ImagingEnvironment 
    119164Float Temperature  CTR TODO 
    120165Float AirPressure  CTR TODO 
     
    122167Float Co2Percent   CTR TODO 
    123168 
    124 #TODO these go with DisplayOptions 
     169#TODO figure out how to solve problem with multiple subtypes of ChannelSpecType  
    125170#[DisplayChannel] 
    126171#information about the specified channel for a particular image 
    127 #2004: Image+/CustomAttributes/DisplayChannel+ 
     172#- 
     173#200706: ChannelSpecType 
     174#2003FC: Image+/CA/DisplayChannel+ 
    128175#Integer ChannelNumber  CTR TODO 
    129176#Double BlackLevel      CTR TODO 
     
    133180[DisplayOptions] 
    134181various display options for a particular pixels set 
    135 2004: Image+/CustomAttributes/DisplayOptions 
     182- 
     183200706: Image+/DisplayOptions 
     1842003FC: Image+/CA/DisplayOptions 
    136185Float Zoom              CTR TODO 
    137186Boolean RedChannelOn    CTR TODO 
     
    147196[LightSource] 
    148197a light source for a particular instrument 
    149 2004: CustomAttributes/LightSource+ 
     198- 
     199200706: Instrument+/LightSource+ 
     2002003FC: CA/Instrument+/@LightSource+ 
    150201String Manufacturer  CTR TODO 
    151202String Model         CTR TODO 
     
    154205[Laser] 
    155206a laser for a particular instrument 
    156 2004: CustomAttributes/Laser+ 
     207- 
     208200706: Instrument+/LightSource+/Laser 
     2092003FC: CA/Instrument+/@LightSource+/@Laser 
    157210String Type               CTR TODO 
    158211String Medium             CTR TODO 
     
    165218[Filament] 
    166219a filament for a particular instrument 
    167 2004: CustomAttributes/Filament+ 
     220- 
     221200706: Instrument+/LightSource+/Filament 
     2222003FC: CA/Instrument+/@LightSource+/@Filament 
    168223String Type  CTR TODO 
    169224Float Power  CTR TODO 
     
    171226[Arc] 
    172227an arc for a particular instrument 
    173 2004: CustomAttributes/Arc+ 
     228- 
     229200706: Instrument+/LightSource+/Arc 
     2302003FC: CA/Instrument+/@LightSource+/@Arc 
    174231String Type  CTR TODO 
    175232Float Power  CTR TODO 
     
    177234[Detector] 
    178235a detector for a particular instrument 
    179 2004: CustomAttributes/Detector+ 
     236- 
     237200706: Instrument+/Detector+ 
     2382003FC: CA/Instrument+/@Detector+ 
    180239String Manufacturer  CTR TODO 
    181240String Model         CTR TODO 
     
    188247[Objective] 
    189248an objective for a particular instrument 
    190 2004: CustomAttributes/Objective+ 
     249- 
     250200706: Instrument+/Objective+ 
     2512003FC: CA/Instrument+/@Objective+ 
    191252String Manufacturer  CTR TODO 
    192253String Model         CTR TODO 
     
    195256Float Magnification  CTR TODO 
    196257 
    197 #TODO maybe combine this filter stuff better 
    198 #[ExcitationFilter]  
    199 #an excitation filter for a particular instrument 
    200 #2004: CustomAttributes/ExcitationFilter+ 
    201 #String Manufacturer  CTR TODO 
    202 #String Model         CTR TODO 
    203 #String LotNumber     CTR TODO 
    204 #String Type          CTR TODO 
    205  
     258#TODO figure out how to reconcile the two filter models 
     259[ExcitationFilter]  
     260an excitation filter for a particular instrument 
     261- 
     262#200706: ? 
     2632003FC: CA/ExcitationFilter+ 
     264String Manufacturer  CTR TODO 
     265String Model         CTR TODO 
     266String LotNumber     CTR TODO 
     267String Type          CTR TODO 
     268 
     269#TODO figure out how to reconcile the two filter models 
    206270[Dichroic] 
    207271a dichroic for a particular instrument 
    208 2004: CustomAttributes/Dichroic+ 
     272- 
     273#200706: ? 
     2742003FC: CA/Dichroic+ 
    209275String Manufacturer  CTR TODO 
    210276String Model         CTR TODO 
    211277String LotNumber     CTR TODO 
    212278 
     279#TODO figure out how to reconcile the two filter models 
    213280[EmissionFilter] 
    214281an emission filter for a particular instrument 
    215 2004: CustomAttributes/EmissionFilter+ 
     282- 
     283#200706: ? 
     2842003FC: CA/EmissionFilter+ 
    216285String Manufacturer  CTR TODO 
    217286String Model         CTR TODO 
     
    219288String Type          CTR TODO 
    220289 
     290#TODO figure out how to reconcile the two filter models 
    221291[FilterSet] 
    222292a filter set for a particular instrument 
    223 2004: CustomAttributes/FilterSet+ 
     293- 
     294#200706: ? 
     2952003FC: CA/FilterSet+ 
    224296String Manufacturer  CTR TODO 
    225297String Model         CTR TODO 
     
    227299 
    228300[OTF] 
    229 an OTF for a particular instrument 
    230 2004: CustomAttributes/OTF+ 
    231 Integer SizeX               CTR TODO 
    232 Integer SizeY               CTR TODO 
    233 String PixelType            CTR TODO 
    234 String Path                 CTR TODO 
    235 Boolean OpticalAxisAverage  CTR TODO 
     301an optical transfer function for a particular instrument 
     302- 
     303200706: Instrument+/OTF+ 
     3042003FC: CA/Instrument+/@OTF+ 
     305Integer SizeX                CTR TODO 
     306Integer SizeY                CTR TODO 
     307String PixelType             CTR TODO 
     308String Path                  CTR TODO 
     309*200706: - 
     310Boolean OpticalAxisAveraged  CTR TODO 
     311*2003FC: OpticalAxisAverage 
    236312 
    237313[-] 
Note: See TracChangeset for help on using the changeset viewer.