+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;
+ }
+
+}