X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fhtmlindexer%2FWebIndexer.java;h=acc1a28ad350636a7b21b0056f7936b06bf4ea09;hb=bc2cdc4cc3316a5fb66f4372e3708b610c8f68b0;hp=29ceac1b607979fb3d7ebdc60887b65e94416578;hpb=f826af1cdb62425a975cd174ecd0905100d3a2dc;p=meviz.git diff --git a/src/main/java/eu/svjatoslav/meviz/htmlindexer/WebIndexer.java b/src/main/java/eu/svjatoslav/meviz/htmlindexer/WebIndexer.java index 29ceac1..acc1a28 100644 --- a/src/main/java/eu/svjatoslav/meviz/htmlindexer/WebIndexer.java +++ b/src/main/java/eu/svjatoslav/meviz/htmlindexer/WebIndexer.java @@ -16,21 +16,27 @@ import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Picture; public class WebIndexer extends AbstractIndexer { + private static final int METADATA_LOAD_TRY_COUNT = 10; private final String globalPrefix; + private final String jspPath; - public WebIndexer(final String globalPrefix) { + public WebIndexer(final String globalPrefix, final String jspPath) { this.globalPrefix = globalPrefix; + this.jspPath = jspPath; } @Override public String getDirectoryUrl(final AbstractFile directory, final IndexingContext context) { - return "photos.jsp?path=" + context.getLocalUrl() + "/" + return jspPath + context.getLocalUrl() + "/" + UrlParamEncoder.encode(directory.fileName); } public String getHtml(String requestPath) throws MalformedURLException, - IOException, ClassNotFoundException { + IOException, ClassNotFoundException { + + if (requestPath == null) + requestPath = ""; if (requestPath.equals("/")) requestPath = ""; @@ -40,15 +46,15 @@ public class WebIndexer extends AbstractIndexer { 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(); + return layout.getHtml(false, false, directory); } public DirectoryMetadata getMetadataForPath(final String requestPath) - throws IOException, MalformedURLException, ClassNotFoundException { + throws ClassNotFoundException, IOException { final StringBuffer urlStringBuffer = new StringBuffer(); @@ -58,22 +64,32 @@ public class WebIndexer extends AbstractIndexer { 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 public String getParentDirectoryUrl(final IndexingContext context) { final StringBuffer result = new StringBuffer(); - result.append("photos.jsp?path="); + result.append(jspPath); final List components = context.getLocalPathComponents(); @@ -94,14 +110,14 @@ public class WebIndexer extends AbstractIndexer { // file path if (picture.getDimensions().equals(desiredDimension)) return context.getGlobalUrl() + context.getLocalUrl() + "/" - + picture.fileName; + + picture.fileName; final String thumbnailFileName = picture .getRelativeThumbnailFileName(desiredDimension); return context.getGlobalUrl() + context.getLocalUrl() + "/" - + Constants.THUMBNAILS_DIRECTORY_NAME + "/" - + UrlParamEncoder.encode(thumbnailFileName); + + Constants.THUMBNAILS_DIRECTORY_NAME + "/" + + UrlParamEncoder.encode(thumbnailFileName); } }