X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fhtmlindexer%2FWebIndexer.java;h=f659a35fcbfb4e2109e2dff3b7d76c07fdd882b6;hb=f04df1585efd9809760c52c3b689e0f38885d7be;hp=20ec8d191a8636447bed7122d74c56c0c24ee9b4;hpb=2456c6f80f725ffbf6278f4834d131f73cd295f7;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 20ec8d1..f659a35 100644 --- a/src/main/java/eu/svjatoslav/meviz/htmlindexer/WebIndexer.java +++ b/src/main/java/eu/svjatoslav/meviz/htmlindexer/WebIndexer.java @@ -5,7 +5,9 @@ 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; @@ -14,38 +16,52 @@ import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Picture; public class WebIndexer extends AbstractIndexer { - private final MixedLayout layout = new MixedLayout(); - private final String localPrefix; private final String globalPrefix; + private final String jspPath; - public WebIndexer(final String globalPrefix, final String localPrefix) { + public WebIndexer(final String globalPrefix, final String jspPath) { this.globalPrefix = globalPrefix; - this.localPrefix = localPrefix; + this.jspPath = jspPath; } @Override - public String getDirectoryUrl(final AbstractFile directory) { - return "photos.jsp?path=/" + directory.fileName; + public String getDirectoryUrl(final AbstractFile directory, + final IndexingContext context) { + return jspPath + context.getLocalUrl() + "/" + + UrlParamEncoder.encode(directory.fileName); } - public String getHtml(final String path) throws MalformedURLException, + public String getHtml(String requestPath) throws MalformedURLException, IOException, ClassNotFoundException { - layout.init("Photos", new String[] {}, this, localPrefix); + if (requestPath.equals("/")) + requestPath = ""; - final DirectoryMetadata metadata = getMetadataForPath(); + final MixedLayout layout = new MixedLayout(); + final IndexingContext context = new IndexingContext(globalPrefix, + requestPath); + layout.init("Photos", context.getLocalPathComponents(), this, context); + + final DirectoryMetadata metadata = getMetadataForPath(requestPath); compileHtml(layout, metadata); - return layout.getHtml(); + return layout.getHtml(false, false); } - public DirectoryMetadata getMetadataForPath() throws IOException, - MalformedURLException, ClassNotFoundException { + public DirectoryMetadata getMetadataForPath(final String requestPath) + throws IOException, MalformedURLException, ClassNotFoundException { + + final StringBuffer urlStringBuffer = new StringBuffer(); + + urlStringBuffer.append(globalPrefix); + urlStringBuffer.append(UrlParamEncoder.encode(requestPath)); + urlStringBuffer.append("/.thumbnails/metadata_6.dat"); - final BufferedInputStream in = new BufferedInputStream( - new URL(globalPrefix + localPrefix - + ".thumbnails/metadata_6.dat").openStream()); + final String urlString = urlStringBuffer.toString(); + + final BufferedInputStream in = new BufferedInputStream(new URL( + urlString).openStream()); final ObjectInputStream oin = new ObjectInputStream(in); final DirectoryMetadata directory = (DirectoryMetadata) oin @@ -56,19 +72,38 @@ public class WebIndexer extends AbstractIndexer { } @Override - public String getThumbnailPath(final Picture picture, - final Dimension desiredDimension) { + public String getParentDirectoryUrl(final IndexingContext context) { + final StringBuffer result = new StringBuffer(); + + result.append(jspPath); + + final List components = context.getLocalPathComponents(); + + for (final String pathComponent : components.subList(0, + components.size() - 1)) { + result.append("/"); + result.append(pathComponent); + } + + return result.toString(); + } + + @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 localPrefix + picture.fileName; + return context.getGlobalUrl() + context.getLocalUrl() + "/" + + picture.fileName; final String thumbnailFileName = picture .getRelativeThumbnailFileName(desiredDimension); - return localPrefix + Constants.THUMBNAILS_DIRECTORY_NAME + "/" - + thumbnailFileName; + return context.getGlobalUrl() + context.getLocalUrl() + "/" + + Constants.THUMBNAILS_DIRECTORY_NAME + "/" + + UrlParamEncoder.encode(thumbnailFileName); } }