Code refactoring
[meviz.git] / src / main / java / eu / svjatoslav / meviz / htmlindexer / indexer / AbstractIndexer.java
diff --git a/src/main/java/eu/svjatoslav/meviz/htmlindexer/indexer/AbstractIndexer.java b/src/main/java/eu/svjatoslav/meviz/htmlindexer/indexer/AbstractIndexer.java
new file mode 100644 (file)
index 0000000..0329989
--- /dev/null
@@ -0,0 +1,65 @@
+package eu.svjatoslav.meviz.htmlindexer.indexer;
+
+import eu.svjatoslav.meviz.htmlindexer.IndexingContext;
+import eu.svjatoslav.meviz.htmlindexer.layouts.Layout;
+import eu.svjatoslav.meviz.htmlindexer.metadata.Dimension;
+import eu.svjatoslav.meviz.htmlindexer.metadata.DirectoryMetadata;
+import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.*;
+
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+
+import static eu.svjatoslav.meviz.htmlindexer.Constants.SUPPORTED_IMAGE_EXTENSIONS;
+import static eu.svjatoslav.meviz.htmlindexer.Constants.SUPPORTED_VIDEO_EXTENSIONS;
+
+public abstract class AbstractIndexer {
+
+    public static boolean isImage(final String fileExtension) {
+        for (final String ext : SUPPORTED_IMAGE_EXTENSIONS)
+            if (ext.equals(fileExtension))
+                return true;
+        return false;
+    }
+
+    public static boolean isVideo(final String fileExtension) {
+        for (final String ext : SUPPORTED_VIDEO_EXTENSIONS)
+            if (ext.equals(fileExtension))
+                return true;
+        return false;
+    }
+
+    static boolean shallFileBeIndexed(final File file) {
+
+        if (file.getName().startsWith("."))
+            return false;
+        if (file.getName().startsWith("index"))
+            if (file.getName().endsWith(".html"))
+                return false;
+
+        return true;
+    }
+
+    void compileHtml(final Layout layout,
+                     final DirectoryMetadata directory)
+            throws UnsupportedEncodingException {
+
+        for (final AbstractFile file : directory.getFiles())
+            if (file instanceof GeneralFile) {
+                layout.enlistFile(file, directory);
+            } else if (file instanceof Picture){
+                layout.enlistImage((Picture) file, directory);
+            } else if (file instanceof Video){
+                layout.enlistVideo((Video) file);
+            } else if (file instanceof DirectoryFile)
+                layout.enlistDirectory(file, directory);
+    }
+
+    public abstract String getDirectoryUrl(final AbstractFile directory,
+                                           IndexingContext context);
+
+    public abstract String getParentDirectoryUrl(IndexingContext context);
+
+    public abstract String getThumbnailUrl(Picture picture,
+                                           final Dimension desiredDimension, IndexingContext context);
+
+}