
com.jaeksoft.searchlib.renderer.RendererResult Maven / Gradle / Ivy
/**
* License Agreement for OpenSearchServer
*
* Copyright (C) 2013-2014 Emmanuel Keller / Jaeksoft
*
* http://www.open-search-server.com
*
* This file is part of OpenSearchServer.
*
* OpenSearchServer is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* OpenSearchServer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenSearchServer.
* If not, see .
**/
package com.jaeksoft.searchlib.renderer;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import com.jaeksoft.searchlib.Client;
import com.jaeksoft.searchlib.SearchLibException;
import com.jaeksoft.searchlib.ocr.HocrPdf;
import com.jaeksoft.searchlib.renderer.field.RendererWidget;
import com.jaeksoft.searchlib.renderer.plugin.AuthPluginInterface;
import com.jaeksoft.searchlib.result.ResultDocument;
import com.jaeksoft.searchlib.schema.FieldValueItem;
import com.jaeksoft.searchlib.util.LinkUtils;
public class RendererResult {
public class Item {
final private String url;
final private HocrPdf hocrPdf;
private Item(String url, HocrPdf hocrPdf) {
this.url = url;
this.hocrPdf = hocrPdf;
}
public String getUrl() {
return url;
}
public HocrPdf getHocrPdf() {
return hocrPdf;
}
}
private final long creationTime;
final private Client client;
final private StringBuilder sbUrl;
final private String keywords;
private List- items;
final private String contentTypeField;
private String filenameField;
private String hocrField;
final private AuthPluginInterface.User loggedUser;
final private String authDomain;
final private String authUsername;
final private String authPassword;
public RendererResult(Client client, Renderer renderer, String keywords,
AuthPluginInterface.User loggedUser) {
this.client = client;
this.keywords = keywords;
this.contentTypeField = renderer.getContentTypeField();
this.filenameField = renderer.getFilenameField();
this.hocrField = renderer.getHocrField();
this.loggedUser = loggedUser;
this.authDomain = renderer.getAuthDomain();
this.authUsername = renderer.getAuthUsername();
this.authPassword = renderer.getAuthPassword();
sbUrl = new StringBuilder("viewer.zul?h=");
sbUrl.append(hashCode());
sbUrl.append("&p=");
items = new ArrayList
- (0);
creationTime = System.currentTimeMillis();
}
final private String addItemGetUrl(String url, HocrPdf hocrPdf) {
int pos = items.size();
items.add(new Item(url, hocrPdf));
return sbUrl.toString() + pos;
}
final public String getViewerUrl(ResultDocument resultDocument, String url)
throws SearchLibException {
if (url == null)
return null;
HocrPdf hocrPdf = null;
if (hocrField != null) {
List
fieldValueItem = resultDocument
.getValues(hocrField);
if (fieldValueItem != null)
hocrPdf = new HocrPdf(fieldValueItem);
}
if (contentTypeField != null) {
String ct = resultDocument.getValueContent(contentTypeField, 0);
if ("application/pdf".equalsIgnoreCase(ct))
return addItemGetUrl(url, hocrPdf);
} else if (filenameField != null) {
String fn = resultDocument.getValueContent(filenameField, 0);
if ("pdf".equalsIgnoreCase(FilenameUtils.getExtension(fn)))
return addItemGetUrl(url, hocrPdf);
}
return null;
}
final public String getOpenFolderUrl(ResultDocument resultDocument,
String url) {
if (url == null)
return null;
if (!url.startsWith(("file:/")))
return null;
if (url.endsWith("/"))
return null;
int i = url.lastIndexOf('/');
if (i == -1)
return null;
return url.substring(0, i + 1);
}
final public String getOpenMailboxUrl(RendererWidget rendererWidget,
String[] values, String url) throws UnsupportedEncodingException {
if (url == null)
return null;
if (!url.startsWith("mailto:"))
return null;
String link = rendererWidget.getProperty("mailboxlink");
if (link == null)
return null;
if (values == null || values.length == 0)
return link;
return StringUtils.replace(link, "{field}",
LinkUtils.UTF8_URL_Encode(values[0]));
}
final public Client getClient() {
return client;
}
final public String getKeywords() {
return keywords;
}
final public Item getItem(int pos) {
return items.get(pos);
}
final public long getCreationTime() {
return creationTime;
}
/**
* @return the loggedUser
*/
public AuthPluginInterface.User getLoggedUser() {
return loggedUser;
}
/**
* @return the authDomain
*/
public String getAuthDomain() {
return authDomain;
}
/**
* @return the authUsername
*/
public String getAuthUsername() {
return authUsername;
}
/**
* @return the authPassword
*/
public String getAuthPassword() {
return authPassword;
}
public boolean isAuthCredential() {
return !StringUtils.isEmpty(authDomain)
&& !StringUtils.isEmpty(authUsername);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy