import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
+import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
+import java.net.URLEncoder;
import java.util.List;
-import eu.svjatoslav.commons.network.UrlParamEncoder;
import eu.svjatoslav.meviz.htmlindexer.layouts.MixedLayout;
import eu.svjatoslav.meviz.htmlindexer.metadata.Dimension;
import eu.svjatoslav.meviz.htmlindexer.metadata.DirectoryMetadata;
public class WebIndexer extends AbstractIndexer {
+ private static final int METADATA_LOAD_TRY_COUNT = 10;
private final String globalPrefix;
private final String jspPath;
this.jspPath = jspPath;
}
+ @Override
+ public void compileHtml(final Layout layout,
+ final DirectoryMetadata directory)
+ throws UnsupportedEncodingException {
+ super.compileHtml(layout, directory);
+ }
+
@Override
public String getDirectoryUrl(final AbstractFile directory,
final IndexingContext context) {
- return jspPath + context.getLocalUrl() + "/"
- + UrlParamEncoder.encode(directory.fileName);
+
+ try {
+ return jspPath + context.getLocalUrl() + "/"
+ + URLEncoder.encode(directory.fileName, "UTF-8");
+ } catch (final UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
}
public String getHtml(String requestPath) throws MalformedURLException,
IOException, ClassNotFoundException {
+ if (requestPath == null)
+ requestPath = "";
+
if (requestPath.equals("/"))
requestPath = "";
requestPath);
layout.init("Photos", context.getLocalPathComponents(), this, context);
- final DirectoryMetadata metadata = getMetadataForPath(requestPath);
+ final DirectoryMetadata directory = getMetadataForPath(requestPath);
- compileHtml(layout, metadata);
+ compileHtml(layout, directory);
- return layout.getHtml(false, false);
+ return layout.getHtml(false, false, directory);
}
public DirectoryMetadata getMetadataForPath(final String requestPath)
- throws IOException, MalformedURLException, ClassNotFoundException {
+ throws ClassNotFoundException, IOException {
final StringBuffer urlStringBuffer = new StringBuffer();
urlStringBuffer.append(globalPrefix);
- urlStringBuffer.append(UrlParamEncoder.encode(requestPath));
+ urlStringBuffer.append(Utils.urlEncode(requestPath));
urlStringBuffer.append("/.thumbnails/metadata_6.dat");
final String urlString = urlStringBuffer.toString();
- final BufferedInputStream in = new BufferedInputStream(new URL(
- urlString).openStream());
+ IOException exception = null;
+
+ for (int i = 0; i < METADATA_LOAD_TRY_COUNT; i++)
+ try {
+
+ final BufferedInputStream in = new BufferedInputStream(new URL(
+ urlString).openStream());
+
+ final ObjectInputStream oin = new ObjectInputStream(in);
+ final DirectoryMetadata directory = (DirectoryMetadata) oin
+ .readObject();
+ in.close();
- final ObjectInputStream oin = new ObjectInputStream(in);
- final DirectoryMetadata directory = (DirectoryMetadata) oin
- .readObject();
- in.close();
+ return directory;
+ } catch (final IOException e) {
+ exception = e;
+ }
- return directory;
+ throw exception;
}
@Override
return context.getGlobalUrl() + context.getLocalUrl() + "/"
+ Constants.THUMBNAILS_DIRECTORY_NAME + "/"
- + UrlParamEncoder.encode(thumbnailFileName);
+ + Utils.urlEncode(thumbnailFileName);
}
}