X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fhtmlindexer%2Fmetadata%2FDirectoryMetadata.java;h=5c560b0054231af1bbfb01d33922fe3646dceaa9;hb=1d9057cc722b349a0bc370c0860344f59c42fd0f;hp=574da98633f5b37ae4e88524aa072f1d0d567c18;hpb=50cb7085d553fdd82cd06806cd27b1675299f719;p=meviz.git diff --git a/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/DirectoryMetadata.java b/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/DirectoryMetadata.java index 574da98..5c560b0 100755 --- a/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/DirectoryMetadata.java +++ b/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/DirectoryMetadata.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. @@ -26,6 +26,7 @@ import eu.svjatoslav.meviz.htmlindexer.ImageFormatError; import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.AbstractFile; import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.DirectoryFile; import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.GeneralFile; +import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.MevizSpecialFile; import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Picture; /** @@ -56,7 +57,7 @@ public class DirectoryMetadata implements Serializable { } public void ensureFileMetainfoIsUpToDate(final File parentDirectory, - final File file) throws IOException, ImageFormatError { + final File file) throws Exception { final String fileName = file.getName(); @@ -71,6 +72,29 @@ public class DirectoryMetadata implements Serializable { } + private AbstractFile getAbstractFile(final File parentDirectory, + final File file, final String fileName) throws Exception { + + if (file.isDirectory()) + return new DirectoryFile(parentDirectory, fileName); + + final String fileExtension = FilePathParser.getFileExtension(fileName) + .toLowerCase(); + + if (AbstractIndexer.isImage(fileExtension)) + try { + return new Picture(parentDirectory, fileName); + } catch (final Exception exception) { + // in case image decoding failed, handle image as general file + return new GeneralFile(parentDirectory, fileName); + } + + if (fileExtension.equals("meviz")) + return new MevizSpecialFile(parentDirectory, fileName); + + return new GeneralFile(parentDirectory, fileName); + } + public AbstractFile getFile(final String fileName) throws IOException { return fileNameToFileMap.get(fileName); } @@ -92,23 +116,12 @@ public class DirectoryMetadata implements Serializable { } public AbstractFile registerFile(final File parentDirectory, final File file) - throws IOException, ImageFormatError { + throws Exception { final String fileName = file.getName(); - final AbstractFile abstractFile; - - if (file.isDirectory()) - abstractFile = new DirectoryFile(parentDirectory, fileName); - else { - final String fileExtension = FilePathParser.getFileExtension( - fileName).toLowerCase(); - - if (AbstractIndexer.isImage(fileExtension)) - abstractFile = new Picture(parentDirectory, fileName); - else - abstractFile = new GeneralFile(parentDirectory, fileName); - } + final AbstractFile abstractFile = getAbstractFile(parentDirectory, + file, fileName); fileNameToFileMap.put(fileName, abstractFile);