Skip to content
Snippets Groups Projects
Commit 9e266b39 authored by Tobias Pietzsch's avatar Tobias Pietzsch
Browse files

remember baseFilename (dataset name without .xml), split metadataJson...

remember baseFilename (dataset name without .xml), split metadataJson computation into separate method
parent 48bc5721
Branches
Tags
No related merge requests found
......@@ -12,10 +12,13 @@ import bdv.spimdata.SequenceDescriptionMinimal;
import bdv.spimdata.SpimDataMinimal;
import bdv.spimdata.XmlIoSpimDataMinimal;
import bdv.util.Thumbnail;
import com.google.gson.GsonBuilder;
import mpicbg.spim.data.SpimDataException;
import net.imglib2.img.basictypeaccess.volatiles.array.VolatileShortArray;
import net.imglib2.realtransform.AffineTransform3D;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.jdom2.Document;
......@@ -28,6 +31,7 @@ import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.*;
......@@ -35,13 +39,18 @@ public class CellHandler extends ContextHandler
{
private final VolatileGlobalCellCache< VolatileShortArray > cache;
private final String metadataJson;
private final RemoteImageLoaderMetaData metadata;
private final CacheHints cacheHints;
private final String xmlFile;
/**
* Full path of the dataset xml file this {@link CellHandler} is serving.
*/
private final String xmlFilename;
/**
* Full path of the dataset xml file this {@link CellHandler} is serving,
* without the ".xml" suffix.
*/
private final String baseFilename;
private final String dataSetURL;
......@@ -53,23 +62,23 @@ public class CellHandler extends ContextHandler
private String remoteSettingsString = null;
private final String metadataJson;
public CellHandler( final String baseUrl, final String xmlFilename ) throws SpimDataException
{
final SpimDataMinimal spimData = new XmlIoSpimDataMinimal().load( xmlFilename );
final SequenceDescriptionMinimal seq = spimData.getSequenceDescription();
final Hdf5ImageLoader imgLoader = ( Hdf5ImageLoader ) seq.getImgLoader();
cache = imgLoader.getCache();
metadata = new RemoteImageLoaderMetaData( imgLoader, seq );
final GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter( AffineTransform3D.class, new AffineTransform3DJsonSerializer() );
gsonBuilder.enableComplexMapKeySerialization();
metadataJson = gsonBuilder.create().toJson( metadata );
cache = imgLoader.getCache();
cacheHints = new CacheHints( LoadingStrategy.BLOCKING, 0, false );
metadataJson = buildMetadataJsonString( imgLoader, seq );
// dataSetURL property is used for providing the XML file by replace
// SequenceDescription>ImageLoader>baseUrl
xmlFile = xmlFilename;
this.xmlFilename = xmlFilename;
baseFilename = xmlFilename.endsWith( ".xml" ) ? xmlFilename.substring( 0, xmlFilename.length() - ".xml".length() ) : xmlFilename;
dataSetURL = baseUrl;
}
......@@ -152,7 +161,7 @@ public class CellHandler extends ContextHandler
try
{
final XmlIoSpimDataMinimal io = new XmlIoSpimDataMinimal();
final SpimDataMinimal spimData = io.load( xmlFile );
final SpimDataMinimal spimData = io.load( xmlFilename );
final SequenceDescriptionMinimal seq = spimData.getSequenceDescription();
seq.setImgLoader( new RemoteImageLoader( dataSetURL ) );
final Document doc = new Document( io.toXml( spimData, spimData.getBasePath() ) );
......@@ -190,7 +199,7 @@ public class CellHandler extends ContextHandler
{
final SAXBuilder sax = new SAXBuilder();
final String settings = xmlFile.substring( 0, xmlFile.length() - ".xml".length() ) + ".settings" + ".xml";
final String settings = baseFilename + ".settings" + ".xml";
final Document doc = sax.build( settings );
final XMLOutputter xout = new XMLOutputter( Format.getPrettyFormat() );
......@@ -235,7 +244,7 @@ public class CellHandler extends ContextHandler
public void provideThumbnail( final Request baseRequest, final HttpServletResponse response )
{
// Just check it once
final File pngFile = new File( xmlFile.replace( ".xml", ".png" ) );
final File pngFile = new File( baseFilename + ".png" );
if ( pngFile.exists() )
{
......@@ -279,7 +288,7 @@ public class CellHandler extends ContextHandler
public String getXmlFile()
{
return xmlFile;
return xmlFilename;
}
public String getDataSetURL()
......@@ -289,7 +298,7 @@ public class CellHandler extends ContextHandler
public String getThumbnailUrl()
{
final File pngFile = new File( xmlFile.replace( ".xml", ".png" ) );
final File pngFile = new File( baseFilename + ".png" );
if ( pngFile.exists() )
return dataSetURL + "png";
......@@ -297,7 +306,7 @@ public class CellHandler extends ContextHandler
// Trigger to generate thumbnail here
try
{
final Thumbnail thumb = new Thumbnail( xmlFile, 800, 600 );
final Thumbnail thumb = new Thumbnail( xmlFilename, 800, 600 );
}
catch ( final Exception e )
{
......@@ -311,5 +320,18 @@ public class CellHandler extends ContextHandler
{
throw new UnsupportedOperationException();
}
/**
* Create a JSON representation of the {@link RemoteImageLoaderMetaData}
* (image sizes and resolutions) provided by the given
* {@link Hdf5ImageLoader}.
*/
private static String buildMetadataJsonString( final Hdf5ImageLoader imgLoader, final SequenceDescriptionMinimal seq )
{
final RemoteImageLoaderMetaData metadata = new RemoteImageLoaderMetaData( imgLoader, seq );
final GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter( AffineTransform3D.class, new AffineTransform3DJsonSerializer() );
gsonBuilder.enableComplexMapKeySerialization();
return gsonBuilder.create().toJson( metadata );
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment