possilibity to generate HTML while embedded on the web site
[meviz.git] / src / main / java / eu / svjatoslav / meviz / htmlindexer / WebIndexer.java
diff --git a/src/main/java/eu/svjatoslav/meviz/htmlindexer/WebIndexer.java b/src/main/java/eu/svjatoslav/meviz/htmlindexer/WebIndexer.java
new file mode 100644 (file)
index 0000000..20ec8d1
--- /dev/null
@@ -0,0 +1,74 @@
+package eu.svjatoslav.meviz.htmlindexer;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import eu.svjatoslav.meviz.htmlindexer.layouts.MixedLayout;
+import eu.svjatoslav.meviz.htmlindexer.metadata.Dimension;
+import eu.svjatoslav.meviz.htmlindexer.metadata.DirectoryMetadata;
+import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.AbstractFile;
+import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Picture;
+
+public class WebIndexer extends AbstractIndexer {
+
+       private final MixedLayout layout = new MixedLayout();
+       private final String localPrefix;
+       private final String globalPrefix;
+
+       public WebIndexer(final String globalPrefix, final String localPrefix) {
+               this.globalPrefix = globalPrefix;
+               this.localPrefix = localPrefix;
+       }
+
+       @Override
+       public String getDirectoryUrl(final AbstractFile directory) {
+               return "photos.jsp?path=/" + directory.fileName;
+       }
+
+       public String getHtml(final String path) throws MalformedURLException,
+                       IOException, ClassNotFoundException {
+
+               layout.init("Photos", new String[] {}, this, localPrefix);
+
+               final DirectoryMetadata metadata = getMetadataForPath();
+
+               compileHtml(layout, metadata);
+
+               return layout.getHtml();
+       }
+
+       public DirectoryMetadata getMetadataForPath() throws IOException,
+                       MalformedURLException, ClassNotFoundException {
+
+               final BufferedInputStream in = new BufferedInputStream(
+                               new URL(globalPrefix + localPrefix
+                                               + ".thumbnails/metadata_6.dat").openStream());
+
+               final ObjectInputStream oin = new ObjectInputStream(in);
+               final DirectoryMetadata directory = (DirectoryMetadata) oin
+                               .readObject();
+               in.close();
+
+               return directory;
+       }
+
+       @Override
+       public String getThumbnailPath(final Picture picture,
+                       final Dimension desiredDimension) {
+
+               // in case thumbnail size was equal to original, then return original
+               // file path
+               if (picture.getDimensions().equals(desiredDimension))
+                       return localPrefix + picture.fileName;
+
+               final String thumbnailFileName = picture
+                               .getRelativeThumbnailFileName(desiredDimension);
+
+               return localPrefix + Constants.THUMBNAILS_DIRECTORY_NAME + "/"
+                               + thumbnailFileName;
+       }
+
+}