X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fhtmlindexer%2FFilesystemIndexer.java;h=61b9027b28cee8868d61548bbebe548f821f58f3;hb=1d9057cc722b349a0bc370c0860344f59c42fd0f;hp=4e1b2f2df9912d39ed9ead4931e1d22382fa1509;hpb=5e584219e79d72ef09c461dca4b2ab9ebffaede6;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 4e1b2f2..61b9027 100755 --- a/src/main/java/eu/svjatoslav/meviz/htmlindexer/FilesystemIndexer.java +++ b/src/main/java/eu/svjatoslav/meviz/htmlindexer/FilesystemIndexer.java @@ -1,7 +1,7 @@ /* * Meviz - Various tools collection to work with multimedia. * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu - * + * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. @@ -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,22 @@ 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 List pathElements) throws IOException, - ImageFormatError { + final CommandlineHandler commandlineHandler, + final List pathElements) throws Exception { this.directoryToIndex = directoryToIndex; - this.indexingOptions = indexingOptions; + this.commandlineHandler = commandlineHandler; this.pathElements = pathElements; if (!directoryToIndex.canRead()) @@ -92,53 +86,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); - - 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); + if (!indexFile.exists()) + return true; - 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 +108,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 +145,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()) { @@ -197,7 +159,7 @@ public class FilesystemIndexer extends AbstractIndexer { desiredDimension.getAwtDimension()); } return Constants.THUMBNAILS_DIRECTORY_NAME + "/" - + UrlParamEncoder.encode(thumbnailFileName); + + UrlParamEncoder.encode(thumbnailFileName); } public void indexForLayout(final Layout layout) @@ -212,59 +174,58 @@ public class FilesystemIndexer extends AbstractIndexer { layout.enlistFile(abstractFile); } else if (abstractFile instanceof Picture) - layout.enlistImage(abstractFile); + layout.enlistImage((Picture) abstractFile); else if (abstractFile instanceof DirectoryFile) layout.enlistDirectory(abstractFile); } 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(); } - public void updateMetadata() throws IOException, ImageFormatError { - - final File[] directoryContent = directoryToIndex.listFiles(); + public void updateMetadata() throws Exception { - for (final File file : directoryContent) + for (final File file : directoryToIndex.listFiles()) if (shallFileBeIndexed(file)) { metadata.ensureFileMetainfoIsUpToDate(directoryToIndex, file); if (file.isDirectory()) - new FilesystemIndexer(file, indexingOptions, + new FilesystemIndexer(file, commandlineHandler, getChildPath(file)); } }