Changeset 5711


Ignore:
Timestamp:
11/22/09 11:27:44 (11 years ago)
Author:
melissa
Message:

Bug fixes.

Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/4.1/components/bio-formats/src/loci/formats/FileStitcher.java

    r5709 r5711  
    925925    fp = findPattern(currentId); 
    926926 
    927     if (reader.fileGroupOption(id) == FormatTools.MUST_GROUP) { 
     927    boolean mustGroup = false; 
     928    if (patternIds) { 
     929      mustGroup = fp.isValid() && 
     930        reader.fileGroupOption(fp.getFiles()[0]) == FormatTools.MUST_GROUP; 
     931    } 
     932    else { 
     933      mustGroup = reader.fileGroupOption(id) == FormatTools.MUST_GROUP; 
     934    } 
     935 
     936    if (mustGroup) { 
    928937      // reader subclass is handling file grouping 
    929938      noStitch = true; 
  • branches/4.1/components/bio-formats/src/loci/formats/in/MetamorphReader.java

    r5664 r5711  
    10631063    long lastOffset; 
    10641064    for (int i=0; i<uic1count; i++) { 
     1065      if (in.getFilePointer() >= in.length()) break; 
    10651066      currentID = in.readInt(); 
    10661067      valOrOffset = in.readInt(); 
  • branches/4.1/components/bio-formats/src/loci/formats/in/OMEXMLReader.java

    r5564 r5711  
    127127      index += core[i].imageCount; 
    128128    } 
     129    if (index >= binDataOffsets.size()) { 
     130      index = binDataOffsets.size() - 1; 
     131    } 
    129132 
    130133    long offset = binDataOffsets.get(index).longValue(); 
     
    145148      n += r; 
    146149      String checkString = new String(check); 
    147       if (checkString.indexOf("<Bin") != -1) { 
    148         int idx = checkString.indexOf("<Bin") + 4; 
     150      int pos = 0; 
     151      while (checkString.indexOf("BinData", pos) != -1 && 
     152        pos < checkString.length() && pos >= 0) 
     153      { 
     154        int idx = checkString.indexOf("BinData", pos) + 7; 
     155        pos = idx + 1; 
     156        boolean foundBeginning = false; 
     157        int openBracket = idx; 
     158        while (!foundBeginning && openBracket >= 1) { 
     159          openBracket--; 
     160          foundBeginning = checkString.charAt(openBracket) == '<'; 
     161        } 
     162        if (checkString.charAt(openBracket + 1) == '/') continue; 
    149163        foundBinData = true; 
    150164        in.seek(in.getFilePointer() - n + idx); 
     
    156170          if (r == '>') break; 
    157171        } 
    158       } 
    159       else { 
     172        if (foundBinData) break; 
     173      } 
     174      if (!foundBinData) { 
    160175        System.arraycopy(check, check.length - overlap, check, 0, overlap); 
    161176        n = overlap; 
  • trunk/components/bio-formats/src/loci/formats/FileStitcher.java

    r5709 r5711  
    925925    fp = findPattern(currentId); 
    926926 
    927     if (reader.fileGroupOption(id) == FormatTools.MUST_GROUP) { 
     927    boolean mustGroup = false; 
     928    if (patternIds) { 
     929      mustGroup = fp.isValid() && 
     930        reader.fileGroupOption(fp.getFiles()[0]) == FormatTools.MUST_GROUP; 
     931    } 
     932    else { 
     933      mustGroup = reader.fileGroupOption(id) == FormatTools.MUST_GROUP; 
     934    } 
     935 
     936    if (mustGroup) { 
    928937      // reader subclass is handling file grouping 
    929938      noStitch = true; 
  • trunk/components/bio-formats/src/loci/formats/in/MetamorphReader.java

    r5668 r5711  
    10631063    long lastOffset; 
    10641064    for (int i=0; i<uic1count; i++) { 
     1065      if (in.getFilePointer() >= in.length()) break; 
    10651066      currentID = in.readInt(); 
    10661067      valOrOffset = in.readInt(); 
  • trunk/components/bio-formats/src/loci/formats/in/OMEXMLReader.java

    r5564 r5711  
    127127      index += core[i].imageCount; 
    128128    } 
     129    if (index >= binDataOffsets.size()) { 
     130      index = binDataOffsets.size() - 1; 
     131    } 
    129132 
    130133    long offset = binDataOffsets.get(index).longValue(); 
     
    145148      n += r; 
    146149      String checkString = new String(check); 
    147       if (checkString.indexOf("<Bin") != -1) { 
    148         int idx = checkString.indexOf("<Bin") + 4; 
     150      int pos = 0; 
     151      while (checkString.indexOf("BinData", pos) != -1 && 
     152        pos < checkString.length() && pos >= 0) 
     153      { 
     154        int idx = checkString.indexOf("BinData", pos) + 7; 
     155        pos = idx + 1; 
     156        boolean foundBeginning = false; 
     157        int openBracket = idx; 
     158        while (!foundBeginning && openBracket >= 1) { 
     159          openBracket--; 
     160          foundBeginning = checkString.charAt(openBracket) == '<'; 
     161        } 
     162        if (checkString.charAt(openBracket + 1) == '/') continue; 
    149163        foundBinData = true; 
    150164        in.seek(in.getFilePointer() - n + idx); 
     
    156170          if (r == '>') break; 
    157171        } 
    158       } 
    159       else { 
     172        if (foundBinData) break; 
     173      } 
     174      if (!foundBinData) { 
    160175        System.arraycopy(check, check.length - overlap, check, 0, overlap); 
    161176        n = overlap; 
Note: See TracChangeset for help on using the changeset viewer.