import java.io.ObjectInputStream;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.List;
import eu.svjatoslav.commons.network.UrlParamEncoder;
import eu.svjatoslav.meviz.htmlindexer.layouts.MixedLayout;
public class WebIndexer extends AbstractIndexer {
- private final String localPrefix;
private final String globalPrefix;
- public WebIndexer(final String globalPrefix, final String localPrefix) {
+ public WebIndexer(final String globalPrefix) {
this.globalPrefix = globalPrefix;
- this.localPrefix = localPrefix;
}
@Override
- public String getDirectoryUrl(final AbstractFile directory) {
- return "photos.jsp?path=/" + UrlParamEncoder.encode(directory.fileName);
+ public String getDirectoryUrl(final AbstractFile directory,
+ final IndexingContext context) {
+ return "photos.jsp?path=" + context.getLocalUrl() + "/"
+ + UrlParamEncoder.encode(directory.fileName);
}
- public String getHtml(final String requestPath)
- throws MalformedURLException, IOException, ClassNotFoundException {
+ public String getHtml(String requestPath) throws MalformedURLException,
+ IOException, ClassNotFoundException {
+
+ if (requestPath.equals("/"))
+ requestPath = "";
final MixedLayout layout = new MixedLayout();
- layout.init("Photos", new String[] {}, this, localPrefix + requestPath);
+ final IndexingContext context = new IndexingContext(globalPrefix,
+ requestPath);
+ layout.init("Photos", context.getLocalPathComponents(), this, context);
final DirectoryMetadata metadata = getMetadataForPath(requestPath);
final StringBuffer urlStringBuffer = new StringBuffer();
urlStringBuffer.append(globalPrefix);
- urlStringBuffer.append(UrlParamEncoder.encode(localPrefix));
urlStringBuffer.append(UrlParamEncoder.encode(requestPath));
- if (!requestPath.equals("/"))
- urlStringBuffer.append("/");
- urlStringBuffer.append(".thumbnails/metadata_6.dat");
+ urlStringBuffer.append("/.thumbnails/metadata_6.dat");
final String urlString = urlStringBuffer.toString();
}
@Override
- public String getThumbnailPath(final Picture picture,
- final Dimension desiredDimension) {
+ public String getParentDirectoryUrl(final IndexingContext context) {
+ final StringBuffer result = new StringBuffer();
+
+ result.append("photos.jsp?path=");
+
+ final List<String> components = context.getLocalPathComponents();
+
+ for (final String pathComponent : components.subList(0,
+ components.size() - 1)) {
+ result.append("/");
+ result.append(pathComponent);
+ }
+
+ return result.toString();
+ }
+
+ @Override
+ public String getThumbnailUrl(final Picture picture,
+ final Dimension desiredDimension, final IndexingContext context) {
// in case thumbnail size was equal to original, then return original
// file path
if (picture.getDimensions().equals(desiredDimension))
- return localPrefix + picture.fileName;
+ return context.getGlobalUrl() + context.getLocalUrl() + "/"
+ + picture.fileName;
final String thumbnailFileName = picture
.getRelativeThumbnailFileName(desiredDimension);
- return localPrefix + "/" + Constants.THUMBNAILS_DIRECTORY_NAME + "/"
- + thumbnailFileName;
+ return context.getGlobalUrl() + context.getLocalUrl() + "/"
+ + Constants.THUMBNAILS_DIRECTORY_NAME + "/"
+ + UrlParamEncoder.encode(thumbnailFileName);
}
}