X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fhtmlindexer%2FFilesystemIndexer.java;h=58244f094920e74eaeb5f2011d2bb10f9a2802cd;hb=dd6a4d4e4dd46ca95be11ae91c633d69f085472c;hp=c103b689e649c11f1674a27a5be788e2429a6923;hpb=b5f8e5dc9f74de4cc17f8924a599e57c5c62f492;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 c103b68..58244f0 100755 --- a/src/main/java/eu/svjatoslav/meviz/htmlindexer/FilesystemIndexer.java +++ b/src/main/java/eu/svjatoslav/meviz/htmlindexer/FilesystemIndexer.java @@ -9,10 +9,8 @@ package eu.svjatoslav.meviz.htmlindexer; -import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; -import java.io.FileReader; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; @@ -23,7 +21,6 @@ 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; import eu.svjatoslav.meviz.htmlindexer.metadata.MetadadaHelper; @@ -45,25 +42,23 @@ public class FilesystemIndexer extends AbstractIndexer { private final File directoryToIndex; - private String thumbnailsPath; - private File metadataFile; private DirectoryMetadata metadata; - private final IndexingOptions indexingOptions; - private final List pathElements; private HashSet layouts; + private final CommandlineHandler commandlineHandler; + public FilesystemIndexer(final File directoryToIndex, - final IndexingOptions indexingOptions, + final CommandlineHandler commandlineHandler, final List pathElements) throws IOException, ImageFormatError { this.directoryToIndex = directoryToIndex; - this.indexingOptions = indexingOptions; + this.commandlineHandler = commandlineHandler; this.pathElements = pathElements; if (!directoryToIndex.canRead()) @@ -92,53 +87,20 @@ public class FilesystemIndexer extends AbstractIndexer { public boolean canWriteIndexFile(final File indexFile) throws FileNotFoundException, IOException { - boolean canWriteIndexFile = false; - if (indexFile.exists()) { - // if file already exists, make sure that we can overwrite - // it - final FileReader fileReader = new FileReader(indexFile); - final BufferedReader reader = new BufferedReader(fileReader); + if (!indexFile.exists()) + return true; - parseFile: { - while (true) { - final String line = reader.readLine(); - - if (line == null) - break parseFile; - - if (line.contains(Constants.HTML_MAGIC_STRING)) { - canWriteIndexFile = true; - break parseFile; - } - } - } - - reader.close(); - fileReader.close(); - } else - canWriteIndexFile = true; - return canWriteIndexFile; - } - - public void cleanupUnusedMetadataFiles() { - final File thumbnailsDirectory = new File(thumbnailsPath); - - for (final File file : thumbnailsDirectory.listFiles()) - if (!validMetadataFiles.contains(file.getName())) - file.delete(); + return Utils.isMevizGeneratedIndexFile(indexFile); } public void generateHtmlFromMetadata(final HashSet layouts) { // Generate HTML from metadata - for (final Layout layout : layouts) { - - final String indexFilePath = directoryToIndex.getAbsolutePath() - + "/index" + layout.getFileNameSuffix() + ".html"; - + for (final Layout layout : layouts) try { + final File indexFile = Utils.getLayoutIndexFile(layout, + directoryToIndex); - final File indexFile = new File(indexFilePath); if (canWriteIndexFile(indexFile)) { indexForLayout(layout); @@ -147,9 +109,8 @@ public class FilesystemIndexer extends AbstractIndexer { .getHtml(true, true).getBytes()); } } catch (final Exception e) { - logger.error("Error writing index file to:" + indexFilePath, e); + logger.error("Error writing index file. ", e); } - } } public List getChildPath(final File file) { @@ -185,7 +146,9 @@ public class FilesystemIndexer extends AbstractIndexer { .getRelativeThumbnailFileName(desiredDimension); validMetadataFiles.add(thumbnailFileName); - final File thumbnailFile = new File(thumbnailsPath + thumbnailFileName); + final File thumbnailFile = new File( + Utils.getThumbnailsDirectoryPath(directoryToIndex) + + thumbnailFileName); if (!thumbnailFile.exists()) { @@ -219,36 +182,37 @@ public class FilesystemIndexer extends AbstractIndexer { } public void initializeLayouts() { - layouts = new HashSet(); - layouts.add(new MixedLayout()); + + layouts = Utils.getLayouts(); + + final String galleryTitle = commandlineHandler.getGalleryTitle(); for (final Layout layout : layouts) - layout.init(indexingOptions.galleryTitle, pathElements, this, - new IndexingContext("", ".")); + layout.init(galleryTitle, pathElements, this, new IndexingContext( + "", ".")); } public void initializeThumbnailsDirectory() { - // initialize thumbnails directory - thumbnailsPath = directoryToIndex.getAbsolutePath() + "/" - + Constants.THUMBNAILS_DIRECTORY_NAME + "/"; + final File thumbnailsDirectory = Utils + .getThumbnailsDirectory(directoryToIndex); - // ensure thumbnails directory exists - final File thumbnailsDirectory = new File(thumbnailsPath); if (!thumbnailsDirectory.exists()) thumbnailsDirectory.mkdirs(); } public void loadOrCreateMetadata() { - metadataFile = new File(thumbnailsPath + Constants.METADATA_FILE_NAME); + + metadataFile = new File( + Utils.getThumbnailsDirectoryPath(directoryToIndex) + + Constants.METADATA_FILE_NAME); metadata = MetadadaHelper.initDirectoryMetadata(metadataFile); } private void removeUnusedThumbnailFiles() { - final File thumbnailsDirectory = new File(thumbnailsPath); - - for (final File file : thumbnailsDirectory.listFiles()) + for (final File file : Utils.getThumbnailsDirectory(directoryToIndex) + .listFiles()) if (!validMetadataFiles.contains(file.getName())) file.delete(); @@ -264,7 +228,7 @@ public class FilesystemIndexer extends AbstractIndexer { metadata.ensureFileMetainfoIsUpToDate(directoryToIndex, file); if (file.isDirectory()) - new FilesystemIndexer(file, indexingOptions, + new FilesystemIndexer(file, commandlineHandler, getChildPath(file)); } }