--- /dev/null
+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);
+
+}