Added try/catch to ignore problems when reading the header of the cbf

...
This commit is contained in:
ebner 2014-03-28 16:27:55 +01:00
parent 95d13f0a20
commit e2c0404e0c
2 changed files with 21 additions and 6 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>ch.psi.imagej</groupId> <groupId>ch.psi.imagej</groupId>
<artifactId>ch.psi.imagej.cbf</artifactId> <artifactId>ch.psi.imagej.cbf</artifactId>
<version>0.0.2</version> <version>0.0.3</version>
<dependencies> <dependencies>
<dependency> <dependency>

View File

@ -34,6 +34,8 @@ import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -53,6 +55,10 @@ import javax.imageio.stream.ImageInputStream;
* types. * types.
*/ */
public class CbfImageReader extends ImageReader { public class CbfImageReader extends ImageReader {
private static final Logger logger = Logger.getLogger(CbfImageReader.class.getName());
private CbfMetadata metadata; private CbfMetadata metadata;
public CbfImageReader(ImageReaderSpi originatingProvider) { public CbfImageReader(ImageReaderSpi originatingProvider) {
@ -557,7 +563,13 @@ public class CbfImageReader extends ImageReader {
CbfMetadata mdata = new CbfMetadata(); CbfMetadata mdata = new CbfMetadata();
readMetadataIdentifier(stream, mdata); readMetadataIdentifier(stream, mdata);
readMetadataDataBlockName(stream, mdata); readMetadataDataBlockName(stream, mdata);
try{
readMetadataHeader(stream, mdata); readMetadataHeader(stream, mdata);
}
catch(Exception e){
// We actuall do not care about the header content ...
logger.log(Level.INFO, "Problem reading header ... continue with mini header", e);
}
readMetadataMimeMiniHeader(stream, mdata); readMetadataMimeMiniHeader(stream, mdata);
metadata = mdata; metadata = mdata;
} }
@ -593,9 +605,10 @@ public class CbfImageReader extends ImageReader {
throw new IIOException("Expected _array_data.header_convention tag"); throw new IIOException("Expected _array_data.header_convention tag");
} }
String convention = trimQuotes(line.substring("_array_data.header_convention ".length())); String convention = trimQuotes(line.substring("_array_data.header_convention ".length()));
if (!convention.startsWith("SLS_1.")) { // FIXME
throw new IIOException("Unrecognized header convention: " + convention); // if (!convention.startsWith("SLS_1.")) {
} // throw new IIOException("Unrecognized header convention: " + convention);
// }
mdata.setHeaderConvention(convention); mdata.setHeaderConvention(convention);
if (!convention.equals("SLS_1.0")) { if (!convention.equals("SLS_1.0")) {
processWarningOccurred("Unrecognized header convention: " + convention); processWarningOccurred("Unrecognized header convention: " + convention);
@ -618,8 +631,9 @@ public class CbfImageReader extends ImageReader {
String value = line.substring("# Detector:".length()); String value = line.substring("# Detector:".length());
mdata.setHeaderDetector(parseHeaderDetector(value)); mdata.setHeaderDetector(parseHeaderDetector(value));
} else if (datePattern.matcher(line).lookingAt()) { } else if (datePattern.matcher(line).lookingAt()) {
String value = line.substring("# ".length()); // FIXME
mdata.setHeaderDate(parseHeaderDate(value)); // String value = line.substring("# ".length());
// mdata.setHeaderDate(parseHeaderDate(value));
} else if (line.startsWith("# Pixel_size ")) { } else if (line.startsWith("# Pixel_size ")) {
String value = line.substring("# Pixel_size ".length()); String value = line.substring("# Pixel_size ".length());
mdata.setHeaderPixelSize(parseHeaderPixelSize(value)); mdata.setHeaderPixelSize(parseHeaderPixelSize(value));
@ -717,6 +731,7 @@ public class CbfImageReader extends ImageReader {
} }
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace();
throw new IIOException("Error reading header", e); throw new IIOException("Error reading header", e);
} }
} }