X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fhtmlindexer%2FWebIndexer.java;h=d2aabcdd3e6317157d2f0ddf3efc5ed24b319f26;hb=3a1c5919a7780346ae8deb302046234ed9e07997;hp=6530e70c03aac885d6233cccad849ebf896051c8;hpb=bf820ba57621f024316a6a4550738ba58fda79ee;p=meviz.git diff --git a/src/main/java/eu/svjatoslav/meviz/htmlindexer/WebIndexer.java b/src/main/java/eu/svjatoslav/meviz/htmlindexer/WebIndexer.java index 6530e70..d2aabcd 100644 --- a/src/main/java/eu/svjatoslav/meviz/htmlindexer/WebIndexer.java +++ b/src/main/java/eu/svjatoslav/meviz/htmlindexer/WebIndexer.java @@ -1,123 +1,121 @@ package eu.svjatoslav.meviz.htmlindexer; -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.List; - -import eu.svjatoslav.commons.network.UrlParamEncoder; import eu.svjatoslav.meviz.htmlindexer.layouts.MixedLayout; import eu.svjatoslav.meviz.htmlindexer.metadata.Dimension; import eu.svjatoslav.meviz.htmlindexer.metadata.DirectoryMetadata; import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.AbstractFile; import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Picture; -public class WebIndexer extends AbstractIndexer { - - private static final int METADATA_LOAD_TRY_COUNT = 10; - private final String globalPrefix; - private final String jspPath; - - public WebIndexer(final String globalPrefix, final String jspPath) { - this.globalPrefix = globalPrefix; - this.jspPath = jspPath; - } +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.UnsupportedEncodingException; +import java.net.URL; +import java.util.List; - @Override - public String getDirectoryUrl(final AbstractFile directory, - final IndexingContext context) { - return jspPath + context.getLocalUrl() + "/" - + UrlParamEncoder.encode(directory.fileName); - } +public class WebIndexer extends AbstractIndexer { - public String getHtml(String requestPath) throws MalformedURLException, - IOException, ClassNotFoundException { + private static final int METADATA_LOAD_TRY_COUNT = 10; + private final String globalPrefix; + private final String jspPath; - if (requestPath == null) - requestPath = ""; + public WebIndexer(final String globalPrefix, final String jspPath) { + this.globalPrefix = globalPrefix; + this.jspPath = jspPath; + } - if (requestPath.equals("/")) - requestPath = ""; + @Override + public void compileHtml(final Layout layout, + final DirectoryMetadata directory) + throws UnsupportedEncodingException { + super.compileHtml(layout, directory); + } - final MixedLayout layout = new MixedLayout(); - final IndexingContext context = new IndexingContext(globalPrefix, - requestPath); - layout.init("Photos", context.getLocalPathComponents(), this, context); + @Override + public String getDirectoryUrl(final AbstractFile directory, + final IndexingContext context) { + return jspPath + context.getLocalUrl() + "/" + directory.fileName; + } - final DirectoryMetadata metadata = getMetadataForPath(requestPath); + public String getHtml(String requestPath) throws + IOException, ClassNotFoundException { - compileHtml(layout, metadata); + if (requestPath == null) + requestPath = ""; - return layout.getHtml(false, false); - } + if (requestPath.equals("/")) + requestPath = ""; - public DirectoryMetadata getMetadataForPath(final String requestPath) - throws ClassNotFoundException, IOException { + final MixedLayout layout = new MixedLayout(); + final IndexingContext context = new IndexingContext(globalPrefix, + requestPath); + layout.init("Photos", context.getLocalPathComponents(), this, context); - final StringBuffer urlStringBuffer = new StringBuffer(); + final DirectoryMetadata directory = getMetadataForPath(requestPath); - urlStringBuffer.append(globalPrefix); - urlStringBuffer.append(UrlParamEncoder.encode(requestPath)); - urlStringBuffer.append("/.thumbnails/metadata_6.dat"); + compileHtml(layout, directory); - final String urlString = urlStringBuffer.toString(); + return layout.getHtml(false, false, directory); + } - IOException exception = null; + private DirectoryMetadata getMetadataForPath(final String requestPath) + throws ClassNotFoundException, IOException { - for (int i = 0; i < METADATA_LOAD_TRY_COUNT; i++) - try { + final String urlString = globalPrefix + Utils.urlEncode(requestPath) + "/.thumbnails/metadata_6.dat"; - final BufferedInputStream in = new BufferedInputStream(new URL( - urlString).openStream()); + for (int i = 0; true; i++) + try { + return attemptDirectoryMetadataDownload(urlString); + } catch (final IOException e) { + if (i > METADATA_LOAD_TRY_COUNT) throw e; + } + } - final ObjectInputStream oin = new ObjectInputStream(in); - final DirectoryMetadata directory = (DirectoryMetadata) oin - .readObject(); - in.close(); + private DirectoryMetadata attemptDirectoryMetadataDownload(String urlString) throws IOException, ClassNotFoundException { + final BufferedInputStream inputStream = new BufferedInputStream(new URL( + urlString).openStream()); - return directory; - } catch (final IOException e) { - exception = e; - } + final ObjectInputStream objectInputStream = new ObjectInputStream(inputStream); + final DirectoryMetadata directory = (DirectoryMetadata) objectInputStream + .readObject(); + inputStream.close(); - throw exception; - } + return directory; + } - @Override - public String getParentDirectoryUrl(final IndexingContext context) { - final StringBuffer result = new StringBuffer(); + @Override + public String getParentDirectoryUrl(final IndexingContext context) { + final StringBuilder result = new StringBuilder(); - result.append(jspPath); + result.append(jspPath); - final List components = context.getLocalPathComponents(); + final List components = context.getLocalPathComponents(); - for (final String pathComponent : components.subList(0, - components.size() - 1)) { - result.append("/"); - result.append(pathComponent); - } + for (final String pathComponent : components.subList(0, + components.size() - 1)) { + result.append("/"); + result.append(pathComponent); + } - return result.toString(); - } + return result.toString(); + } - @Override - public String getThumbnailUrl(final Picture picture, - final Dimension desiredDimension, final IndexingContext context) { + @Override + public String getThumbnailUrl(final Picture picture, + final Dimension desiredDimension, final IndexingContext context) { - // in case thumbnail size was equal to original, then return original - // file path - if (picture.getDimensions().equals(desiredDimension)) - return context.getGlobalUrl() + context.getLocalUrl() + "/" - + picture.fileName; + // in case thumbnail size was equal to original, then return original + // file path + if (picture.getDimensions().equals(desiredDimension)) + return context.getGlobalUrl() + context.getLocalUrl() + "/" + + picture.fileName; - final String thumbnailFileName = picture - .getRelativeThumbnailFileName(desiredDimension); + final String thumbnailFileName = picture + .getRelativeThumbnailFileName(desiredDimension); - return context.getGlobalUrl() + context.getLocalUrl() + "/" - + Constants.THUMBNAILS_DIRECTORY_NAME + "/" - + UrlParamEncoder.encode(thumbnailFileName); - } + return context.getGlobalUrl() + context.getLocalUrl() + "/" + + Constants.THUMBNAILS_DIRECTORY_NAME + "/" + + Utils.urlEncode(thumbnailFileName); + } }