X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fhtmlindexer%2FFilesystemIndexer.java;h=c103b689e649c11f1674a27a5be788e2429a6923;hb=976e0089a639f652c7a6f1f713ce806bdce34023;hp=9c8c8779f2a9e531773f2580b76ae1de2a115b0b;hpb=50cb7085d553fdd82cd06806cd27b1675299f719;p=meviz.git diff --git a/src/main/java/eu/svjatoslav/meviz/htmlindexer/FilesystemIndexer.java b/src/main/java/eu/svjatoslav/meviz/htmlindexer/FilesystemIndexer.java index 9c8c877..c103b68 100755 --- a/src/main/java/eu/svjatoslav/meviz/htmlindexer/FilesystemIndexer.java +++ b/src/main/java/eu/svjatoslav/meviz/htmlindexer/FilesystemIndexer.java @@ -15,11 +15,14 @@ import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import org.apache.log4j.Logger; import eu.svjatoslav.commons.file.IOHelper; +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; @@ -50,13 +53,14 @@ public class FilesystemIndexer extends AbstractIndexer { private final IndexingOptions indexingOptions; - private final String[] pathElements; + private final List pathElements; private HashSet layouts; public FilesystemIndexer(final File directoryToIndex, - final IndexingOptions indexingOptions, final String[] pathElements) - throws IOException, ImageFormatError { + final IndexingOptions indexingOptions, + final List pathElements) throws IOException, + ImageFormatError { this.directoryToIndex = directoryToIndex; this.indexingOptions = indexingOptions; @@ -140,7 +144,7 @@ public class FilesystemIndexer extends AbstractIndexer { indexForLayout(layout); IOHelper.overwriteFileIfContentDiffers(indexFile, layout - .getHtml().getBytes()); + .getHtml(true, true).getBytes()); } } catch (final Exception e) { logger.error("Error writing index file to:" + indexFilePath, e); @@ -148,20 +152,29 @@ public class FilesystemIndexer extends AbstractIndexer { } } - public String[] getSubPath(final File file) { + public List getChildPath(final File file) { - final String[] subPath = new String[pathElements.length + 1]; + final List result = new ArrayList(); + result.addAll(pathElements); + result.add(file.getName()); - for (int i = 0; i < pathElements.length; i++) - subPath[i] = pathElements[i]; + return result; + } - subPath[pathElements.length] = file.getName(); - return subPath; + @Override + public String getDirectoryUrl(final AbstractFile directory, + final IndexingContext context) { + return directory.fileName + "/index.html"; + } + + @Override + public String getParentDirectoryUrl(final IndexingContext context) { + return "../index.html"; } @Override - public String getThumbnailPath(final Picture picture, - final Dimension desiredDimension) { + 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 @@ -183,7 +196,8 @@ public class FilesystemIndexer extends AbstractIndexer { Picture.makeThumbnail(originalFile, thumbnailFile, desiredDimension.getAwtDimension()); } - return Constants.THUMBNAILS_DIRECTORY_NAME + "/" + thumbnailFileName; + return Constants.THUMBNAILS_DIRECTORY_NAME + "/" + + UrlParamEncoder.encode(thumbnailFileName); } public void indexForLayout(final Layout layout) @@ -209,7 +223,8 @@ public class FilesystemIndexer extends AbstractIndexer { layouts.add(new MixedLayout()); for (final Layout layout : layouts) - layout.init(indexingOptions.galleryTitle, pathElements, this); + layout.init(indexingOptions.galleryTitle, pathElements, this, + new IndexingContext("", ".")); } public void initializeThumbnailsDirectory() { @@ -250,7 +265,7 @@ public class FilesystemIndexer extends AbstractIndexer { if (file.isDirectory()) new FilesystemIndexer(file, indexingOptions, - getSubPath(file)); + getChildPath(file)); } } }