+ 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 (fileName.endsWith(".meviz.org"))
+ return new MevizSpecialFile(parentDirectory, fileName);
+
+ if (fileName.endsWith(".meviz.html"))
+ return new MevizSpecialFile(parentDirectory, fileName);
+
+ return new GeneralFile(parentDirectory, fileName);
+ }
+
+ public AbstractFile getFile(final String fileName) {