4e3b6eb3fb7f421471091814ba16887cfd0dc3b5
[meviz.git] / src / main / java / eu / svjatoslav / meviz / htmlindexer / AbstractIndexer.java
1 package eu.svjatoslav.meviz.htmlindexer;
2
3 import eu.svjatoslav.meviz.htmlindexer.metadata.Dimension;
4 import eu.svjatoslav.meviz.htmlindexer.metadata.DirectoryMetadata;
5 import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.AbstractFile;
6 import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.DirectoryFile;
7 import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.GeneralFile;
8 import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Picture;
9
10 import java.io.File;
11 import java.io.UnsupportedEncodingException;
12
13 public abstract class AbstractIndexer {
14
15     public static boolean isImage(final String fileExtension) {
16         for (final String ext : Constants.SUPPORTED_IMAGE_EXTENSIONS)
17             if (ext.equals(fileExtension))
18                 return true;
19         return false;
20     }
21
22     public static boolean isOgv(final String fileExtension) {
23         return fileExtension.equalsIgnoreCase("ogv");
24     }
25
26     static boolean shallFileBeIndexed(final File file) {
27
28         if (file.getName().startsWith("."))
29             return false;
30         if (file.getName().startsWith("index"))
31             if (file.getName().endsWith(".html"))
32                 return false;
33
34         return true;
35     }
36
37     void compileHtml(final Layout layout,
38                      final DirectoryMetadata directory)
39             throws UnsupportedEncodingException {
40
41         for (final AbstractFile file : directory.getFiles())
42             if (file instanceof GeneralFile) {
43                 final String fileExtension = file.getFileExtension();
44
45                 if (isVideo(fileExtension))
46                     layout.enlistVideo(file);
47                 else
48                     layout.enlistFile(file, directory);
49
50             } else if (file instanceof Picture)
51                 layout.enlistImage((Picture) file, directory);
52             else if (file instanceof DirectoryFile)
53                 layout.enlistDirectory(file, directory);
54
55     }
56
57     public abstract String getDirectoryUrl(final AbstractFile directory,
58                                            IndexingContext context);
59
60     public abstract String getParentDirectoryUrl(IndexingContext context);
61
62     public abstract String getThumbnailUrl(Picture picture,
63                                            final Dimension desiredDimension, IndexingContext context);
64
65     public static String getVideoType(String fileExtension) {
66         switch (fileExtension){
67             case "ogv":
68                 return "video/ogg";
69             case "webm":
70                 return "video/webm";
71             case "mp4":
72                 return "video/mp4";
73             default:
74                 return null;
75         }
76     }
77
78     public boolean isVideo(String fileExtension){
79         return getVideoType(fileExtension) != null;
80     }
81 }