use latest svjatoslavcommons
[meviz.git] / src / main / java / eu / svjatoslav / meviz / htmlindexer / layouts / MixedLayout.java
index ddacb56..cf1285e 100755 (executable)
@@ -16,11 +16,11 @@ import java.util.List;
 import org.apache.log4j.Logger;
 
 import eu.svjatoslav.commons.file.FilePathParser;
-import eu.svjatoslav.commons.network.UrlParamEncoder;
 import eu.svjatoslav.meviz.htmlindexer.AbstractIndexer;
 import eu.svjatoslav.meviz.htmlindexer.Constants;
 import eu.svjatoslav.meviz.htmlindexer.IndexingContext;
 import eu.svjatoslav.meviz.htmlindexer.Layout;
+import eu.svjatoslav.meviz.htmlindexer.Utils;
 import eu.svjatoslav.meviz.htmlindexer.metadata.Dimension;
 import eu.svjatoslav.meviz.htmlindexer.metadata.DirectoryMetadata;
 import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.AbstractFile;
@@ -29,6 +29,8 @@ import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Picture;
 
 public class MixedLayout implements Layout {
 
+       public static final String encoding = "UTF-8";
+
        Logger logger = Logger.getLogger(MixedLayout.class);
 
        StringBuffer dirHtml = new StringBuffer();
@@ -39,8 +41,6 @@ public class MixedLayout implements Layout {
 
        List<String> path;
 
-       public static final String encoding = "UTF-8";
-
        private AbstractIndexer indexer;
 
        private IndexingContext indexingContext;
@@ -64,7 +64,7 @@ public class MixedLayout implements Layout {
 
                filesHtml.append("<div style=\"clear: both;\"><a href=\""
                                + indexingContext.getGlobalUrl()
-                               + UrlParamEncoder.encode(indexingContext.getLocalUrl() + "/"
+                               + Utils.urlEncode(indexingContext.getLocalUrl() + "/"
                                                + fullFileName) + "\">" + fullFileName + "</a>\n");
                filesHtml.append("&nbsp;&nbsp;("
                                + FilePathParser.getFileSizeDescription(file.getFileLength())
@@ -82,7 +82,7 @@ public class MixedLayout implements Layout {
                                        "Error generating thumbnails for image file: "
                                                        + e.toString()
                                                        + ", thumbnail generation skipped, enlisting as ordinary file instead.",
-                                                       e);
+                                       e);
                        enlistFile(picture, parentDirectoryMetadata);
                }
        }
@@ -115,8 +115,9 @@ public class MixedLayout implements Layout {
                // clickable image thumbnail
                filesHtml.append("<a href=\""
                                + indexingContext.getGlobalUrl()
-                               + UrlParamEncoder.encode(indexingContext.getLocalUrl() + "/"
+                               + Utils.urlEncode(indexingContext.getLocalUrl() + "/"
                                                + picture.fileName) + "\">\n");
+
                filesHtml.append("<img border=\"0\" src=\""
                                + getImageThumbnailUrl(picture) + "\"/></a><br/>\n");
 
@@ -135,7 +136,7 @@ public class MixedLayout implements Layout {
        @Override
        public void enlistOgv(final AbstractFile abstractFile,
                        final DirectoryMetadata parentDirectoryMetadata)
-                                       throws UnsupportedEncodingException {
+                       throws UnsupportedEncodingException {
 
                final GeneralFile file = (GeneralFile) abstractFile;
 
@@ -143,28 +144,28 @@ public class MixedLayout implements Layout {
 
                // watchable video
                filesHtml
-               .append("<video preload=\"metadata\" controls=\"controls\" tabindex=\"0\">\n");
+                               .append("<video preload=\"metadata\" controls=\"controls\" tabindex=\"0\">\n");
                filesHtml
-               .append("<source type=\"video/ogg\" codecs=\"theora, vorbis\" src=\""
-                               + indexingContext.getGlobalUrl()
-                               + UrlParamEncoder.encode(indexingContext.getLocalUrl()
-                                               + "/" + file.fileName) + "\">\n");
+                               .append("<source type=\"video/ogg\" codecs=\"theora, vorbis\" src=\""
+                                               + indexingContext.getGlobalUrl()
+                                               + Utils.urlEncode(indexingContext.getLocalUrl() + "/"
+                                                               + file.fileName) + "\">\n");
                filesHtml.append("</source>\n");
                filesHtml.append("</video>\n");
                filesHtml.append("<br/>\n");
 
                // video title
                filesHtml
-               .append("Video: <b>"
-                               + FilePathParser
-                               .getFileNameWithoutExtension(file.fileName)
-                               + "<b/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
+                               .append("Video: <b>"
+                                               + FilePathParser
+                                                               .getFileNameWithoutExtension(file.fileName)
+                                               + "<b/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
 
                // video download link
                filesHtml.append("<a href=\""
                                + indexingContext.getGlobalUrl()
-                               + UrlParamEncoder.encode(indexingContext.getLocalUrl() + "/"
-                                               + file.fileName) + "\">download as OGV</a>");
+                               + Utils.urlEncode(indexingContext.getLocalUrl() + "/"
+                                               + file.fileName) + "\">download as OGV file</a>");
 
                filesHtml.append("</div>\n");
 
@@ -272,4 +273,40 @@ public class MixedLayout implements Layout {
                return html.toString();
        }
 
+       @Override
+       public void enlistWebm(AbstractFile abstractFile,
+                       DirectoryMetadata directory) {
+               final GeneralFile file = (GeneralFile) abstractFile;
+
+               filesHtml.append("<div style=\"margin: 30px; clear: both;\">");
+
+               // watchable video
+
+               String fileUrl = indexingContext.getGlobalUrl()
+                               + Utils.urlEncode(indexingContext.getLocalUrl() + "/"
+                                               + file.fileName);
+
+               filesHtml.append("<video controls>\n");
+               filesHtml.append("  <source src=\"" + fileUrl
+                               + "\" type='video/webm;codecs=\"vp8, opus\"'/>\n");
+               filesHtml.append("</video>\n");
+               filesHtml.append("<br/>\n");
+
+               // video title
+               filesHtml
+                               .append("Video: <b>"
+                                               + FilePathParser
+                                                               .getFileNameWithoutExtension(file.fileName)
+                                               + "<b/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
+
+               // video download link
+               filesHtml.append("<a href=\""
+                               + indexingContext.getGlobalUrl()
+                               + Utils.urlEncode(indexingContext.getLocalUrl() + "/"
+                                               + file.fileName) + "\">download as WebM file</a>");
+
+               filesHtml.append("</div>\n");
+
+               filesHtml.append("\n");
+       }
 }