Merge branch 'master' of github.com:f1ori/yacy

pull/1/head
Florian Richter 14 years ago
commit adbdabb5e7

@ -18,6 +18,7 @@ COMMAND LINE OPTIONS (case sensitive):
!include MUI2.nsh
!include x64.nsh
!include FileFunc.nsh
; ----------------------------------------
; GENERAL
@ -36,6 +37,9 @@ OutFile "RELEASE\WINDOWS\yacy_v@REPL_VERSION@_@REPL_DATE@_@REPL_REVISION_NR@.exe
InstallDir "$PROFILE\YaCy"
InstallDirRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\YaCy" "UninstallString"
;recommend free space in GB for YaCy
!define RecommendSpace "30"
;requested execution level on Vista / 7
RequestExecutionLevel admin
@ -48,7 +52,7 @@ SetCompressor /SOLID LZMA
!define JRE_VERSION6 "1.6"
;!define JRE_32 "http://javadl.sun.com/webapps/download/AutoDL?BundleId=37718" ;jre-6u18-windows-i586.exe
;!define JRE_64 "http://javadl.sun.com/webapps/download/AutoDL?BundleId=37401" ;jre-6u18-windows-x64.exe
;!define JRE_64 "http://javadl.sun.com/webapps/download/AutoDL?BundleId=37401" ;jre-6u18-windows-x64.exe
!define JRE_32 "http://yacy.berlios.de/download.php?what=jre&version=32&yacyrevnr=@REPL_REVISION_NR@"
!define JRE_64 "http://yacy.berlios.de/download.php?what=jre&version=64&yacyrevnr=@REPL_REVISION_NR@"
@ -79,6 +83,7 @@ BrandingText "yacy.net"
!insertmacro MUI_PAGE_COMPONENTS
ComponentText "YaCy v@REPL_VERSION@ (Build @REPL_DATE@)"
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE CheckDriveSpace
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
@ -105,16 +110,22 @@ LangString stillRunning ${LANG_ENGLISH} "YaCy is still active. Please stop YaCy
LangString keepData 0 "Do you want to keep the data?"
LangString noAdminForJava 0 "You need Administrator privileges to install Java. Java will now be downloaded to the shared documents folder. YaCy won't run without Java."
LangString finishPage 0 "Show how to configure the Windows Firewall for YaCy."
LangString yacyNoHd 0 "YaCy should be installed on a hard disk. Continue with selected folder?"
LangString yacyNeedSpace 0 "We recommend ${RecommendSpace} GB free space for YaCy. There are only $TempDriveFree GB left. Continue anyway?"
LangString stillRunning ${LANG_FRENCH} "YaCy is still active. Please stop YaCy first."
LangString keepData 0 "Do you want to keep the data?"
LangString noAdminForJava 0 "You need Administrator privileges to install Java. Java will now be downloaded to the shared documents folder. YaCy won't run without Java."
LangString finishPage 0 "Show how to configure the Windows Firewall for YaCy."
LangString yacyNoHd 0 "YaCy should be installed on a hard disk. Continue with selected folder?"
LangString yacyNeedSpace 0 "We recommend ${RecommendSpace} GB free space for YaCy. There are only $TempDriveFree GB left. Continue anyway?"
LangString stillRunning ${LANG_GERMAN} "YaCy ist noch aktiv. Bitte beenden Sie YaCy."
LangString keepData 0 "Moechten Sie die Daten behalten?"
LangString noAdminForJava 0 "Sie benoetigen Administrator-Rechte um Java zu installieren. Java wird nun in 'Gemeinsame Dokumente' gespeichert. YaCy benoetigt Java zur Ausfuehrung."
LangString finishPage 0 "Zeige die Windows Firewall Konfiguration fuer YaCy."
LangString yacyNoHd 0 "YaCy sollte auf einer Festplatte installiert werden. Soll der gewaehlte Ordner trotzdem verwendet werden?"
LangString yacyNeedSpace 0 "Wir empfehlen ${RecommendSpace} GB fuer YaCy. Es sind noch $TempDriveFree GB frei. Trotzdem fortfahren?"
; ----------------------------------------
; INSTALLABLE MODULES
@ -213,6 +224,7 @@ SectionEnd
; FUNCTIONS
Function GetJRE
; based on http://nsis.sourceforge.net/Simple_Java_Runtime_Download_Script
${If} ${RunningX64}
StrCpy $3 ${JRE_64}
@ -249,4 +261,60 @@ Function DetectJRE
StrCmp $2 ${JRE_VERSION6} doneDetectJRE
Call GetJRE
doneDetectJRE:
FunctionEnd
FunctionEnd
Function CheckDriveSpace
var /global RootFolder
var /global TempDriveFree
var /global RootFolderType
; If "\\Folder" it's a Network-Folder
StrCpy $RootFolder $InstDir 2
StrCmp $RootFolder "\\" NetworkFolder Driveletter
Networkfolder:
; prepare String for DriveSpace
${GetRoot} $RootFolder $InstDir
goto NoHDD
; Now check drive-letters
Driveletter:
StrCpy $RootFolder $InstDir 3
; prepare for {GetDrives-Loop}
StrCpy $RootFolderType "invalid"
${GetDrives} "ALL" "CheckDriveType"
; jump if error
StrCmp $RootFolderType "invalid" CheckSpace
; jump if HDD
StrCmp $RootFolderType "HDD" CheckSpace
NoHDD:
; Stay on folder-selection if user wants to give another folder, else check free space
MessageBox MB_ICONEXCLAMATION|MB_YESNO "$(yacyNoHd)" IDYES NextPage
Abort
CheckSpace:
ClearErrors
${DriveSpace} $RootFolder "/D=F /S=G" $TempDriveFree
; If DriveSpace fails for any reason -> jump ahead
IfErrors NextPage
${If} $TempDriveFree < ${RecommendSpace}
MessageBox MB_ICONEXCLAMATION|MB_YESNO "$(yacyNeedSpace)" IDYES NextPage
Abort
${EndIf}
NextPage:
FunctionEnd
Function CheckDriveType
; based on http://nsis.sourceforge.net/GetDrives
StrCmp $9 $RootFolder 0 +3
StrCpy $RootFolderType $8
StrCpy $0 StopGetDrives
Push $0
FunctionEnd

@ -64,19 +64,14 @@ public class ViewLog_p {
json = post.containsKey("json");
if(post.containsKey("lines")){
try {
lines = Integer.parseInt(post.get("lines"));
} catch (NumberFormatException e) {
Log.logException(e);
}
lines = post.getInt("lines", lines);
}
if(post.containsKey("filter")){
filter = post.get("filter");
}
}
final Logger logger = Logger.getLogger("");
final Handler[] handlers = logger.getHandlers();
boolean displaySubmenu = false;
@ -104,7 +99,6 @@ public class ViewLog_p {
} catch (final PatternSyntaxException e) {
Log.logException(e);
}
int level = 0;
int lc = 0;

@ -29,6 +29,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.yacy.cora.document.UTF8;
@ -95,7 +96,7 @@ public class WebStructurePicture_p {
// find domain with most references
host = sb.webStructure.hostWithMaxReferences();
}
RasterPlotter graphPicture;
final RasterPlotter graphPicture;
if (host == null) {
// probably no information available
graphPicture = new RasterPlotter(width, height, RasterPlotter.DrawMode.MODE_SUB, color_back);
@ -132,9 +133,9 @@ public class WebStructurePicture_p {
GraphPlotter.coordinate center = graph.getPoint(centerhost);
int mynodes = 0;
if (center == null) {
/*center =*/ graph.addPoint(centerhost, x, y, nextlayer);
maxnodes--;
mynodes++;
graph.addPoint(centerhost, x, y, nextlayer);
maxnodes--;
mynodes++;
}
if (nextlayer == maxlayer) return mynodes;
nextlayer++;
@ -145,7 +146,7 @@ public class WebStructurePicture_p {
String targethash, targethost;
// first set points to next hosts
final Iterator<Map.Entry<String, Integer>> i = next.entrySet().iterator();
final ArrayList<String[]> targets = new ArrayList<String[]>();
final List<String[]> targets = new ArrayList<String[]>();
int maxtargetrefs = 8, maxthisrefs = 8;
int targetrefs, thisrefs;
double rr, re;

@ -85,10 +85,11 @@ public class getpageinfo_p {
prop.putXML("lang", (languages == null) ? "unknown" : languages.iterator().next());
// get links and put them into a semicolon-separated list
StringBuilder links = new StringBuilder();
StringBuilder filter = new StringBuilder();
Set<MultiProtocolURI> uris = scraper.getAnchors().keySet();
StringBuilder links = new StringBuilder(uris.size() * 80);
StringBuilder filter = new StringBuilder(uris.size() * 40);
count = 0;
for (MultiProtocolURI uri: scraper.getAnchors().keySet()) {
for (MultiProtocolURI uri: uris) {
links.append(';').append(uri.toNormalform(true, false));
filter.append('|').append(uri.getProtocol()).append("://").append(uri.getHost()).append(".*");
prop.putXML("links_" + count + "_link", uri.toNormalform(true, false));

@ -1,8 +1,12 @@
// suggestionsjava
// suggest.java
// -----------------------
// (C) 2010 by Michael Peter Christen; mc@yacy.net
// first published 11.10.2010 in Frankfurt, Germany on http://yacy.net
//
// $LastChangedDate$
// $LastChangedRevision$
// $LastChangedBy$
//
// This program 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 2 of the License, or
@ -60,17 +64,20 @@ public class suggest {
final boolean more = post != null && post.containsKey("more");
// get query
String originalquerystring = (post == null) ? "" : post.get("query", post.get("q", "")).trim();
String querystring = originalquerystring.replace('+', ' ');
int timeout = (post == null) ? 300 : post.getInt("timeout", 300);
int count = (post == null) ? 20 : post.getInt("count", 20);
final String originalquerystring = (post == null) ? "" : post.get("query", post.get("q", "")).trim();
final String querystring = originalquerystring.replace('+', ' ');
final int timeout = (post == null) ? 300 : post.getInt("timeout", 300);
final int count = (post == null) ? 20 : post.getInt("count", 20);
// get segment
Segment indexSegment = null;
final Segment indexSegment;
if (post != null && post.containsKey("segment")) {
String segmentName = post.get("segment");
if (sb.indexSegments.segmentExist(segmentName)) {
indexSegment = sb.indexSegments.segment(segmentName);
} else {
// take default segment
indexSegment = sb.indexSegments.segment(Segments.Process.PUBLIC);
}
} else {
// take default segment
@ -78,26 +85,39 @@ public class suggest {
}
int c = 0;
if (more || !indexSegment.termIndex().has(Word.word2hash(querystring))) {
DidYouMean didYouMean = new DidYouMean(indexSegment.termIndex(), querystring);
Iterator<String> meanIt = didYouMean.getSuggestions(timeout, count).iterator();
if (more ||
(indexSegment != null &&
!indexSegment.termIndex().has(Word.word2hash(querystring))))
{
final DidYouMean didYouMean = new DidYouMean(indexSegment.termIndex(), querystring);
final Iterator<String> meanIt = didYouMean.getSuggestions(timeout, count).iterator();
String suggestion;
//[#[query]#,[#{suggestions}##[text]##(eol)#,::#(/eol)##{/suggestions}#]]
while (c < meanMax && meanIt.hasNext()) {
suggestion = meanIt.next();
if (json) prop.putJSON("suggestions_" + c + "_text", suggestion);
else if (xml) prop.putXML("suggestions_" + c + "_text", suggestion);
else prop.putHTML("suggestions_" + c + "_text", suggestion);
if (json) {
prop.putJSON("suggestions_" + c + "_text", suggestion);
} else if (xml) {
prop.putXML("suggestions_" + c + "_text", suggestion);
} else {
prop.putHTML("suggestions_" + c + "_text", suggestion);
}
prop.put("suggestions_" + c + "_eol", 0);
c++;
}
}
if (c > 0) prop.put("suggestions_" + (c - 1) + "_eol", 1);
if (c > 0) {
prop.put("suggestions_" + (c - 1) + "_eol", 1);
}
prop.put("suggestions", c);
if (json) prop.putJSON("query", originalquerystring);
else if (xml) prop.putXML("query", originalquerystring);
else prop.putHTML("query", originalquerystring);
if (json) {
prop.putJSON("query", originalquerystring);
} else if (xml) {
prop.putXML("query", originalquerystring);
} else {
prop.putHTML("query", originalquerystring);
}
// Adding CORS Access header for xml output
if (xml) {

@ -38,13 +38,15 @@ public class yacyinteractive {
final Switchboard sb = (Switchboard) env;
final serverObjects prop = new serverObjects();
prop.put("topmenu", sb.getConfigBool("publicTopmenu", true) ? 1 : 0);
String promoteSearchPageGreeting = env.getConfig(SwitchboardConstants.GREETING, "");
if (env.getConfigBool(SwitchboardConstants.GREETING_NETWORK_NAME, false)) promoteSearchPageGreeting = env.getConfig("network.unit.description", "");
final String promoteSearchPageGreeting =
(env.getConfigBool(SwitchboardConstants.GREETING_NETWORK_NAME, false)) ?
env.getConfig("network.unit.description", "") :
env.getConfig(SwitchboardConstants.GREETING, "");
prop.put("promoteSearchPageGreeting", promoteSearchPageGreeting);
prop.put("promoteSearchPageGreeting.homepage", sb.getConfig(SwitchboardConstants.GREETING_HOMEPAGE, ""));
prop.put("promoteSearchPageGreeting.smallImage", sb.getConfig(SwitchboardConstants.GREETING_SMALL_IMAGE, ""));
String query = (post == null) ? "" : post.get("query", "");
final String query = (post == null) ? "" : post.get("query", "");
prop.putHTML("query", query);
prop.putHTML("querys", query.replaceAll(" ", "+"));
return prop;

@ -30,6 +30,7 @@
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
@ -87,12 +88,14 @@ public class yacysearch {
final boolean authenticated = sb.adminAuthenticated(header) >= 2;
final boolean localhostAccess = sb.accessFromLocalhost(header);
String promoteSearchPageGreeting = env.getConfig(SwitchboardConstants.GREETING, "");
if (env.getConfigBool(SwitchboardConstants.GREETING_NETWORK_NAME, false)) promoteSearchPageGreeting = env.getConfig("network.unit.description", "");
final String promoteSearchPageGreeting =
(env.getConfigBool(SwitchboardConstants.GREETING_NETWORK_NAME, false)) ?
env.getConfig("network.unit.description", "") :
env.getConfig(SwitchboardConstants.GREETING, "");
final String client = header.get(HeaderFramework.CONNECTION_PROP_CLIENTIP); // the search client who initiated the search
// get query
String originalquerystring = (post == null) ? "" : post.get("query", post.get("search", "")).trim();
final String originalquerystring = (post == null) ? "" : post.get("query", post.get("search", "")).trim();
String querystring = originalquerystring.replace('+', ' ').replace('*', ' ').trim();
CrawlProfile.CacheStrategy snippetFetchStrategy = (post == null) ? null : CrawlProfile.CacheStrategy.parse(post.get("verify", "cacheonly"));
final servletProperties prop = new servletProperties();
@ -101,7 +104,7 @@ public class yacysearch {
// get segment
Segment indexSegment = null;
if (post != null && post.containsKey("segment")) {
String segmentName = post.get("segment");
final String segmentName = post.get("segment");
if (sb.indexSegments.segmentExist(segmentName)) {
indexSegment = sb.indexSegments.segment(segmentName);
}
@ -166,19 +169,18 @@ public class yacysearch {
}
// collect search attributes
boolean newsearch = post.hasValue("query") && post.hasValue("former") && !post.get("query","").equalsIgnoreCase(post.get("former","")); //new search term
final boolean newsearch =post.hasValue("query") && post.hasValue("former") && !post.get("query","").equalsIgnoreCase(post.get("former","")); //new search term
int itemsPerPage = Math.min((authenticated) ? (snippetFetchStrategy != null && snippetFetchStrategy.isAllowedToFetchOnline() ? 100 : 1000) : (snippetFetchStrategy != null && snippetFetchStrategy.isAllowedToFetchOnline() ? 20 : 500), post.getInt("maximumRecords", post.getInt("count", 10))); // SRU syntax with old property as alternative
int offset = (newsearch) ? 0 : post.getInt("startRecord", post.getInt("offset", 0));
int newcount;
final int newcount;
if ( authenticated && (newcount = post.getInt("count", 0)) > 0 ) sb.setConfig(SwitchboardConstants.SEARCH_ITEMS, newcount); // set new default maximumRecords if search with "more options"
boolean global = post.get("resource", "local").equals("global") && sb.peers.sizeConnected() > 0;
final boolean indexof = (post != null && post.get("indexof","").equals("on"));
String urlmask = null;
String originalUrlMask = null;
final String originalUrlMask;
if (post.containsKey("urlmask") && post.get("urlmask").equals("no")) { // option search all
originalUrlMask = ".*";
} else if (!newsearch && post.containsKey("urlmaskfilter")) {
@ -188,7 +190,9 @@ public class yacysearch {
}
String prefermask = (post == null) ? "" : post.get("prefermaskfilter", "");
if (prefermask.length() > 0 && prefermask.indexOf(".*") < 0) prefermask = ".*" + prefermask + ".*";
if (prefermask.length() > 0 && prefermask.indexOf(".*") < 0) {
prefermask = ".*" + prefermask + ".*";
}
Bitfield constraint = (post != null && post.containsKey("constraint") && post.get("constraint", "").length() > 0) ? new Bitfield(4, post.get("constraint", "______")) : null;
if (indexof) {
@ -198,14 +202,12 @@ public class yacysearch {
// SEARCH
final boolean indexReceiveGranted = sb.getConfigBool(SwitchboardConstants.INDEX_RECEIVE_ALLOW, true) ||
sb.getConfigBool(SwitchboardConstants.INDEX_RECEIVE_AUTODISABLED, true);
sb.getConfigBool(SwitchboardConstants.INDEX_RECEIVE_AUTODISABLED, true);
global = global && indexReceiveGranted; // if the user does not want indexes from remote peers, it cannot be a global search
//final boolean offline = yacyCore.seedDB.mySeed().isVirgin();
final boolean clustersearch = sb.isRobinsonMode() &&
(sb.getConfig("cluster.mode", "").equals("privatecluster") ||
sb.getConfig("cluster.mode", "").equals("publiccluster"));
//if (offline || !indexDistributeGranted || !indexReceiveGranted) { global = false; }
(sb.getConfig("cluster.mode", "").equals("privatecluster") ||
sb.getConfig("cluster.mode", "").equals("publiccluster"));
if (clustersearch) global = true; // switches search on, but search target is limited to cluster nodes
// increase search statistic counter
@ -269,6 +271,7 @@ public class yacysearch {
}
if ((!block) && (post == null || post.get("cat", "href").equals("href"))) {
String urlmask = null;
// check available memory and clean up if necessary
if (!MemoryControl.request(8000000L, false)) {
@ -289,12 +292,14 @@ public class yacysearch {
int lrp = querystring.indexOf("/language/");
String lr = "";
if (lrp >= 0) {
if (querystring.length() >= (lrp + 11))
lr = querystring.substring(lrp + 9, lrp + 11);
if (querystring.length() >= (lrp + 11)) {
lr = querystring.substring(lrp + 9, lrp + 11);
}
querystring = querystring.replace("/language/" + lr, "");
lr = lr.toLowerCase();
}
int inurl = querystring.indexOf("inurl:");
final int inurl = querystring.indexOf("inurl:");
if (inurl >= 0) {
int ftb = querystring.indexOf(' ', inurl);
if (ftb == -1) ftb = querystring.length();
@ -302,7 +307,7 @@ public class yacysearch {
querystring = querystring.replace("inurl:" + urlstr, "");
if(urlstr.length() > 0) urlmask = ".*" + urlstr + ".*";
}
int filetype = querystring.indexOf("filetype:");
final int filetype = querystring.indexOf("filetype:");
if (filetype >= 0) {
int ftb = querystring.indexOf(' ', filetype);
if (ftb == -1) ftb = querystring.length();
@ -338,39 +343,36 @@ public class yacysearch {
sitehash = DigestURI.domhash(sitehost);
}
int heuristicScroogle = querystring.indexOf("heuristic:scroogle");
final int heuristicScroogle = querystring.indexOf("heuristic:scroogle");
if (heuristicScroogle >= 0) {
querystring = querystring.replace("heuristic:scroogle", "");
}
int heuristicBlekko = querystring.indexOf("heuristic:blekko");
final int heuristicBlekko = querystring.indexOf("heuristic:blekko");
if (heuristicBlekko >= 0) {
querystring = querystring.replace("heuristic:blekko", "");
}
int authori = querystring.indexOf("author:");
final int authori = querystring.indexOf("author:");
String authorhash = null;
if (authori >= 0) {
// check if the author was given with single quotes or without
boolean quotes = false;
if (querystring.charAt(authori + 7) == (char) 39) {
quotes = true;
}
final boolean quotes = (querystring.charAt(authori + 7) == (char) 39);
String author;
if (quotes) {
int ftb = querystring.indexOf((char) 39, authori + 8);
int ftb = querystring.indexOf((char) 39, authori + 8);
if (ftb == -1) ftb = querystring.length() + 1;
author = querystring.substring(authori + 8, ftb);
querystring = querystring.replace("author:'" + author + "'", "");
} else {
int ftb = querystring.indexOf(' ', authori);
if (ftb == -1) ftb = querystring.length();
author = querystring.substring(authori + 7, ftb);
int ftb = querystring.indexOf(' ', authori);
if (ftb == -1) ftb = querystring.length();
author = querystring.substring(authori + 7, ftb);
querystring = querystring.replace("author:" + author, "");
}
authorhash = UTF8.String(Word.word2hash(author));
}
int tld = querystring.indexOf("tld:");
final int tld = querystring.indexOf("tld:");
if (tld >= 0) {
int ftb = querystring.indexOf(' ', tld);
if (ftb == -1) ftb = querystring.length();
@ -401,7 +403,7 @@ public class yacysearch {
}
// navigation
String navigation = (post == null) ? "" : post.get("nav", "");
final String navigation = (post == null) ? "" : post.get("nav", "");
// the query
final TreeSet<String>[] query = QueryParams.cleanQuery(querystring.trim()); // converts also umlaute
@ -427,7 +429,7 @@ public class yacysearch {
// make new news message with negative voting
if (!sb.isRobinsonMode()) {
final HashMap<String, String> map = new HashMap<String, String>();
final Map<String, String> map = new HashMap<String, String>();
map.put("urlhash", delHash);
map.put("vote", "negative");
map.put("refid", "");
@ -455,7 +457,7 @@ public class yacysearch {
}
if (documents != null) {
// create a news message
final HashMap<String, String> map = new HashMap<String, String>();
final Map<String, String> map = new HashMap<String, String>();
map.put("url", metadata.url().toNormalform(false, true).replace(',', '|'));
map.put("title", metadata.dc_title().replace(',', ' '));
map.put("description", documents[0].dc_title().replace(',', ' '));
@ -468,17 +470,16 @@ public class yacysearch {
}
// prepare search properties
//final boolean yacyonline = ((sb.webIndex.seedDB != null) && (sb.webIndex.seedDB.mySeed() != null) && (sb.webIndex.seedDB.mySeed().getPublicAddress() != null));
final boolean globalsearch = (global) && indexReceiveGranted; /* && (yacyonline)*/
// do the search
final HandleSet queryHashes = Word.words2hashesHandles(query[0]);
final QueryParams theQuery = new QueryParams(
originalquerystring,
queryHashes,
Word.words2hashesHandles(query[1]),
Word.words2hashesHandles(query[2]),
tenant,
originalquerystring,
queryHashes,
Word.words2hashesHandles(query[1]),
Word.words2hashesHandles(query[2]),
tenant,
maxDistance,
prefermask,
contentdom,
@ -522,25 +523,20 @@ public class yacysearch {
offset = 0;
}
final SearchEvent theSearch = SearchEventCache.getEvent(
theQuery, sb.peers, sb.tables, (sb.isRobinsonMode()) ? sb.clusterhashes : null, false, sb.loader,
(int) sb.getConfigLong(SwitchboardConstants.REMOTESEARCH_MAXCOUNT_USER, sb.getConfigLong(SwitchboardConstants.REMOTESEARCH_MAXCOUNT_DEFAULT, 10)),
sb.getConfigLong(SwitchboardConstants.REMOTESEARCH_MAXTIME_USER, sb.getConfigLong(SwitchboardConstants.REMOTESEARCH_MAXTIME_DEFAULT, 3000)),
(int) sb.getConfigLong(SwitchboardConstants.DHT_BURST_ROBINSON, 0),
(int) sb.getConfigLong(SwitchboardConstants.DHT_BURST_MULTIWORD, 0));
try {Thread.sleep(global ? 100 : 10);} catch (InterruptedException e1) {} // wait a little time to get first results in the search
theQuery, sb.peers, sb.tables, (sb.isRobinsonMode()) ? sb.clusterhashes : null, false, sb.loader,
(int) sb.getConfigLong(SwitchboardConstants.REMOTESEARCH_MAXCOUNT_USER, sb.getConfigLong(SwitchboardConstants.REMOTESEARCH_MAXCOUNT_DEFAULT, 10)),
sb.getConfigLong(SwitchboardConstants.REMOTESEARCH_MAXTIME_USER, sb.getConfigLong(SwitchboardConstants.REMOTESEARCH_MAXTIME_DEFAULT, 3000)),
(int) sb.getConfigLong(SwitchboardConstants.DHT_BURST_ROBINSON, 0),
(int) sb.getConfigLong(SwitchboardConstants.DHT_BURST_MULTIWORD, 0));
try {
Thread.sleep(global ? 100 : 10);
} catch (InterruptedException e1) {} // wait a little time to get first results in the search
if (offset == 0) {
if (sitehost != null && sb.getConfigBool("heuristic.site", false) && authenticated) sb.heuristicSite(theSearch, sitehost);
if ((heuristicScroogle >= 0 || sb.getConfigBool("heuristic.scroogle", false)) && authenticated) sb.heuristicScroogle(theSearch);
if ((heuristicBlekko >= 0 || sb.getConfigBool("heuristic.blekko", false)) && authenticated) sb.heuristicRSS("http://blekko.com/ws/$+/rss", theSearch, "blekko");
}
// generate result object
//serverLog.logFine("LOCAL_SEARCH", "SEARCH TIME AFTER ORDERING OF SEARCH RESULTS: " + (System.currentTimeMillis() - timestamp) + " ms");
//serverLog.logFine("LOCAL_SEARCH", "SEARCH TIME AFTER RESULT PREPARATION: " + (System.currentTimeMillis() - timestamp) + " ms");
// calc some more cross-reference
//serverLog.logFine("LOCAL_SEARCH", "SEARCH TIME AFTER XREF PREPARATION: " + (System.currentTimeMillis() - timestamp) + " ms");
// log
Log.logInfo("LOCAL_SEARCH", "EXIT WORD SEARCH: " + theQuery.queryString + " - " +
@ -565,18 +561,18 @@ public class yacysearch {
}
prop.put("meanCount", meanMax);
if (meanMax > 0) {
DidYouMean didYouMean = new DidYouMean(indexSegment.termIndex(), querystring);
Iterator<String> meanIt = didYouMean.getSuggestions(100, 5).iterator();
final DidYouMean didYouMean = new DidYouMean(indexSegment.termIndex(), querystring);
final Iterator<String> meanIt = didYouMean.getSuggestions(100, 5).iterator();
int meanCount = 0;
String suggestion;
while(meanCount<meanMax && meanIt.hasNext()) {
suggestion = meanIt.next();
prop.put("didYouMean_suggestions_"+meanCount+"_word", suggestion);
prop.put("didYouMean_suggestions_"+meanCount+"_url",
QueryParams.navurl("html", 0, theQuery, suggestion, originalUrlMask.toString(), theQuery.navigators)
suggestion = meanIt.next();
prop.put("didYouMean_suggestions_"+meanCount+"_word", suggestion);
prop.put("didYouMean_suggestions_"+meanCount+"_url",
QueryParams.navurl("html", 0, theQuery, suggestion, originalUrlMask.toString(), theQuery.navigators)
);
prop.put("didYouMean_suggestions_"+meanCount+"_sep","|");
meanCount++;
prop.put("didYouMean_suggestions_"+meanCount+"_sep","|");
meanCount++;
}
prop.put("didYouMean_suggestions_"+(meanCount-1)+"_sep","");
prop.put("didYouMean", meanCount>0 ? 1:0);
@ -605,8 +601,10 @@ public class yacysearch {
// update the search tracker
try {
synchronized (trackerHandles) {
trackerHandles.add(theQuery.time);
while (trackerHandles.size() > 600) if (!trackerHandles.remove(trackerHandles.first())) break;
trackerHandles.add(theQuery.time);
while (trackerHandles.size() > 600) {
if (!trackerHandles.remove(trackerHandles.first())) break;
}
}
sb.localSearchTracker.put(client, trackerHandles);
if (sb.localSearchTracker.size() > 1000) sb.localSearchTracker.remove(sb.localSearchTracker.keys().nextElement());
@ -614,7 +612,7 @@ public class yacysearch {
Log.logException(e);
}
int indexcount = theSearch.getRankingResult().getLocalIndexCount() - theSearch.getRankingResult().getMissCount() + theSearch.getRankingResult().getRemoteIndexCount();
final int indexcount = theSearch.getRankingResult().getLocalIndexCount() - theSearch.getRankingResult().getMissCount() + theSearch.getRankingResult().getRemoteIndexCount();
prop.put("num-results_offset", offset);
prop.put("num-results_itemscount", Formatter.number(0, true));
prop.put("num-results_itemsPerPage", itemsPerPage);
@ -643,16 +641,16 @@ public class yacysearch {
resnav.append("<img src=\"env/grafics/navs");
resnav.append(i + 1);
resnav.append(".gif\" alt=\"page");
resnav.append(i + 1);
resnav.append("\" width=\"16\" height=\"16\" />&nbsp;");
resnav.append(i + 1);
resnav.append("\" width=\"16\" height=\"16\" />&nbsp;");
} else {
resnav.append("<a href=\"");
resnav.append(QueryParams.navurl("html", i, theQuery, null, originalUrlMask, navigation));
resnav.append("\"><img src=\"env/grafics/navd");
resnav.append(i + 1);
resnav.append(".gif\" alt=\"page");
resnav.append(i + 1);
resnav.append("\" width=\"16\" height=\"16\" /></a>&nbsp;");
resnav.append(i + 1);
resnav.append(".gif\" alt=\"page");
resnav.append(i + 1);
resnav.append("\" width=\"16\" height=\"16\" /></a>&nbsp;");
}
}
if (thispage >= numberofpages) {
@ -662,7 +660,7 @@ public class yacysearch {
resnav.append(QueryParams.navurl("html", thispage + 1, theQuery, null, originalUrlMask, navigation));
resnav.append("\"><img src=\"env/grafics/navdr.gif\" alt=\"arrowright\" width=\"16\" height=\"16\" /></a>");
}
String resnavs = resnav.toString();
final String resnavs = resnav.toString();
prop.put("num-results_resnav", resnavs);
prop.put("pageNavBottom", (indexcount - offset > 6) ? 1 : 0); // if there are more results than may fit on the page we add a navigation at the bottom
prop.put("pageNavBottom_resnav", resnavs);
@ -685,7 +683,7 @@ public class yacysearch {
}
if (prop == null || prop.isEmpty()) {
if (post == null || post.get("query", post.get("search", "")).length() < 3) {
if (post.get("query", post.get("search", "")).length() < 3) {
prop.put("num-results", "2"); // no results - at least 3 chars
} else {
prop.put("num-results", "1"); // no results

@ -26,7 +26,7 @@
import java.net.MalformedURLException;
import java.util.List;
import java.util.TreeSet;
import java.util.Set;
import net.yacy.cora.date.GenericFormatter;
import net.yacy.cora.document.UTF8;
@ -56,10 +56,13 @@ import de.anomic.yacy.graphics.ProfilingGraph;
public class yacysearchitem {
private static final String SHORTEN_SUFFIX = "...";
private static final int SHORTEN_SUFFIX_LENGTH = SHORTEN_SUFFIX.length();
private static final int MAX_NAME_LENGTH = 60;
private static final int MAX_URL_LENGTH = 120;
private static boolean col = true;
private static final int namelength = 60;
private static final int urllength = 120;
public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) {
final Switchboard sb = (Switchboard) env;
@ -69,16 +72,16 @@ public class yacysearchitem {
final boolean authenticated = sb.adminAuthenticated(header) >= 2;
final int item = post.getInt("item", -1);
final boolean auth = (header.get(HeaderFramework.CONNECTION_PROP_CLIENTIP, "")).equals("localhost") || sb.verifyAuthentication(header, true);
final String path = header.get(HeaderFramework.CONNECTION_PROP_PATH);
final boolean isHtml = path.endsWith(".html");
final boolean isJson = path.endsWith(".json");
// default settings for blank item
prop.put("content", "0");
prop.put("rss", "0");
prop.put("references", "0");
prop.put("rssreferences", "0");
prop.put("dynamic", "0");
String p = header.get(HeaderFramework.CONNECTION_PROP_PATH);
boolean isHtml = p.endsWith(".html");
boolean isJson = p.endsWith(".json");
// find search event
final SearchEvent theSearch = SearchEventCache.getEvent(eventID);
@ -100,7 +103,7 @@ public class yacysearchitem {
prop.put("remoteIndexCount", Formatter.number(theSearch.getRankingResult().getRemoteIndexCount(), true));
prop.put("remotePeerCount", Formatter.number(theSearch.getRankingResult().getRemotePeerCount(), true));
String target = sb.getConfig(SwitchboardConstants.SEARCH_TARGET, "_self");
final String target = sb.getConfig(SwitchboardConstants.SEARCH_TARGET, "_self");
if (theQuery.contentdom == ContentDomain.TEXT) {
// text search
@ -108,7 +111,7 @@ public class yacysearchitem {
final ResultEntry result = theSearch.oneResult(item, theQuery.isLocal() ? 1000 : 5000);
if (result == null) return prop; // no content
DigestURI resultURL = result.url();
final DigestURI resultURL = result.url();
final int port = resultURL.getPort();
DigestURI faviconURL = null;
if ((isHtml || isJson) && !sb.isIntranetMode() && !resultURL.isLocal()) try {
@ -142,7 +145,7 @@ public class yacysearchitem {
prop.put("content_showMetadata_urlhash", resulthashString);
prop.put("content_showParser_urlhash", resulthashString);
prop.put("content_urlhexhash", yacySeed.b64Hash2hexHash(resulthashString));
prop.putHTML("content_urlname", nxTools.shortenURLString(result.urlname(), urllength));
prop.putHTML("content_urlname", nxTools.shortenURLString(result.urlname(), MAX_URL_LENGTH));
prop.put("content_showDate_date", GenericFormatter.RFC1123_SHORT_FORMATTER.format(result.modified()));
prop.put("content_date822", HeaderFramework.formatRFC1123(result.modified()));
//prop.put("content_ybr", RankingProcess.ybr(result.hash()));
@ -156,11 +159,14 @@ public class yacysearchitem {
prop.putHTML("content_publisher", result.publisher());
prop.putHTML("content_creator", result.creator());// author
prop.putHTML("content_subject", result.subject());
final TreeSet<String>[] query = theQuery.queryWords();
String s = ""; for (String t: query[0]) s += "+" + t;
if (s.length() > 0) s = s.substring(1);
prop.putHTML("content_words", s);
prop.putHTML("content_showParser_words", s);
final Set<String>[] query = theQuery.queryWords();
final StringBuilder s = new StringBuilder(query[0].size() * 20);
for (final String t: query[0]) {
s.append('+').append(t);
}
final String words = (s.length() > 0) ? s.substring(1) : "";
prop.putHTML("content_words", words);
prop.putHTML("content_showParser_words", words);
prop.putHTML("content_former", theQuery.queryString);
prop.putHTML("content_showPictures_former", theQuery.queryString);
final TextSnippet snippet = result.textSnippet();
@ -180,7 +186,7 @@ public class yacysearchitem {
prop.put("content_heuristic_name", heuristic.heuristicName);
}
EventTracker.update(EventTracker.EClass.SEARCH, new ProfilingGraph.searchEvent(theQuery.id(true), SearchEvent.Type.FINALIZATION, "" + item, 0, 0), false);
String ext = resultURL.getFileExtension().toLowerCase();
final String ext = resultURL.getFileExtension().toLowerCase();
if (ext.equals("png") || ext.equals("jpg") || ext.equals("gif")) {
String license = sb.licensedURLs.aquireLicense(resultURL);
prop.put("content_code", license);
@ -190,8 +196,7 @@ public class yacysearchitem {
theQuery.transmitcount = item + 1;
return prop;
}
if (theQuery.contentdom == ContentDomain.IMAGE) {
// image search; shows thumbnails
@ -200,12 +205,12 @@ public class yacysearchitem {
if (ms == null) {
prop.put("content_item", "0");
} else {
String license = sb.licensedURLs.aquireLicense(ms.href);
final String license = sb.licensedURLs.aquireLicense(ms.href);
sb.loader.loadIfNotExistBackground(ms.href.toNormalform(true, false), 1024 * 1024 * 10);
prop.putHTML("content_item_hrefCache", (auth) ? "/ViewImage.png?url=" + ms.href.toNormalform(true, false) : ms.href.toNormalform(true, false));
prop.putHTML("content_item_href", ms.href.toNormalform(true, false));
prop.put("content_item_code", license);
prop.putHTML("content_item_name", shorten(ms.name, namelength));
prop.putHTML("content_item_name", shorten(ms.name, MAX_NAME_LENGTH));
prop.put("content_item_mimetype", ms.mime);
prop.put("content_item_fileSize", ms.fileSize);
prop.put("content_item_width", ms.width);
@ -238,9 +243,9 @@ public class yacysearchitem {
int c = 0;
for (final MediaSnippet ms : media) {
prop.putHTML("content_items_" + c + "_href", ms.href.toNormalform(true, false));
prop.putHTML("content_items_" + c + "_hrefshort", nxTools.shortenURLString(ms.href.toNormalform(true, false), urllength));
prop.putHTML("content_items_" + c + "_hrefshort", nxTools.shortenURLString(ms.href.toNormalform(true, false), MAX_URL_LENGTH));
prop.putHTML("content_items_" + c + "_target", target);
prop.putHTML("content_items_" + c + "_name", shorten(ms.name, namelength));
prop.putHTML("content_items_" + c + "_name", shorten(ms.name, MAX_NAME_LENGTH));
prop.put("content_items_" + c + "_col", (col) ? "0" : "1");
c++;
col = !col;
@ -257,13 +262,24 @@ public class yacysearchitem {
}
private static String shorten(final String s, final int length) {
if (s.length() <= length) return s;
final int p = s.lastIndexOf('.');
if (p < 0) return s.substring(0, length - 3) + "...";
assert p >= 0;
String ext = s.substring(p + 1);
if (ext.length() > 4) return s.substring(0, length / 2 - 2) + "..." + s.substring(s.length() - (length / 2 - 2));
return s.substring(0, length - ext.length() - 3) + "..." + ext;
final String ret;
if (s.length() <= length) {
ret = s;
} else {
final int p = s.lastIndexOf('.');
if (p < 0) {
ret = s.substring(0, length - SHORTEN_SUFFIX_LENGTH) + SHORTEN_SUFFIX;
} else {
assert p >= 0;
final String ext = s.substring(p + 1);
if (ext.length() > 4) {
ret = s.substring(0, length / 2 - 2) + SHORTEN_SUFFIX + s.substring(s.length() - (length / 2 - 2));
} else {
ret = s.substring(0, length - ext.length() - SHORTEN_SUFFIX_LENGTH) + SHORTEN_SUFFIX + ext;
}
}
}
return ret;
}
private static String sizename(int size) {

@ -123,13 +123,13 @@ public class ListManager {
* @return String with elements from set separated by comma.
*/
public static String collection2string(final Collection<String> col){
final StringBuilder str = new StringBuilder();
final StringBuilder str = new StringBuilder(col.size() * 40);
if (col != null && !col.isEmpty()) {
final Iterator<String> it = col.iterator();
str.append(it.next());
while(it.hasNext()) {
str.append(",").append(it.next());
str.append(',').append(it.next());
}
}

@ -56,7 +56,7 @@ public class URLLicense {
public String aquireLicense(final DigestURI url) {
// generate license key
StringBuilder stringBuilder = new StringBuilder();
StringBuilder stringBuilder = new StringBuilder(keylen * 2);
if (url == null) return stringBuilder.toString();
while (stringBuilder.length() < keylen) stringBuilder.append(Integer.toHexString(random.nextInt()));
String license = stringBuilder.substring(0, keylen);

@ -472,7 +472,7 @@ public final class QueryParams {
final String ext, final int page, final QueryParams theQuery,
String newQueryString, final String originalUrlMask, final String nav) {
final StringBuilder sb = new StringBuilder();
final StringBuilder sb = new StringBuilder(120);
sb.append("/yacysearch.");
sb.append(ext);
sb.append("?query=");

@ -27,7 +27,6 @@
package de.anomic.search;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import net.yacy.kelondro.logging.Log;
@ -241,15 +240,13 @@ public class RankingProfile {
}
public String toExternalURLGet(final String prefix) {
final Iterator<Map.Entry<String, String>> i = toExternalMap("").entrySet().iterator();
Map.Entry<String, String> entry;
final StringBuilder ext = new StringBuilder();
while (i.hasNext()) {
entry = i.next();
ext.append("&");
final Map<String, String> emap = toExternalMap("");
final StringBuilder ext = new StringBuilder(emap.size() * 40);
for (Map.Entry<String, String> entry: emap.entrySet()) {
ext.append('&');
ext.append(prefix);
ext.append(entry.getKey());
ext.append("=");
ext.append('=');
ext.append(entry.getValue());
}
return ext.toString();

@ -350,8 +350,8 @@ public class TextSnippet implements Comparable<TextSnippet>, Comparator<TextSnip
//especially p. 123 and p. 390/391 (in the German version of the 2nd edition)
StringBuilder theWord = new StringBuilder(word);
StringBuilder prefix = new StringBuilder();
StringBuilder postfix = new StringBuilder();
StringBuilder prefix = new StringBuilder(40);
StringBuilder postfix = new StringBuilder(40);
int len = 0;
// cut off prefix if it contains of non-characters or non-numbers
@ -372,7 +372,7 @@ public class TextSnippet implements Comparable<TextSnippet>, Comparator<TextSnip
StringBuilder out = null;
String temp = "";
for(int k=0; k < theWord.length(); k++) {
out = new StringBuilder();
out = new StringBuilder(80);
//is character a special character?
if(p4.matcher(theWord.substring(k,k+1)).find()) {
if (UTF8.String(Word.word2hash(temp)).equals(UTF8.String(h))) temp = "<b>" + CharacterCoding.unicode2html(temp, false) + "</b>";

@ -373,7 +373,7 @@ public class serverObjects extends HashMap<String, String> implements Cloneable
*/
public String toString() {
if (this.size() == 0) return "";
StringBuilder param = new StringBuilder();
StringBuilder param = new StringBuilder(this.size() * 40);
for (Map.Entry<String, String> entry: this.entrySet()) {
param.append(MultiProtocolURI.escape(entry.getKey()));
param.append('=');

@ -261,7 +261,7 @@ public class yacyPeerActions {
try {
final long mins = millis / 60000;
final StringBuilder uptime = new StringBuilder();
final StringBuilder uptime = new StringBuilder(40);
final int uptimeDays = (int) (Math.floor(mins/1440.0));
final int uptimeHours = (int) (Math.floor(mins/60.0)%24);
@ -271,7 +271,7 @@ public class yacyPeerActions {
.append(((uptimeDays == 1)?" day ":" days "))
.append((uptimeHours < 10)?"0":"")
.append(uptimeHours)
.append(":")
.append(':')
.append((uptimeMins < 10)?"0":"")
.append(uptimeMins);

@ -131,7 +131,7 @@ public class yacySearch extends Thread {
}
public static String set2string(final HandleSet hashes) {
StringBuilder wh = new StringBuilder();
StringBuilder wh = new StringBuilder(hashes.size() * 12);
final Iterator<byte[]> iter = hashes.iterator();
while (iter.hasNext()) { wh.append(UTF8.String(iter.next())); }
return wh.toString();

@ -70,7 +70,7 @@ public class YaCySearchClient {
public SearchResult() throws IOException {
URL url;
Document doc;
String u = new StringBuilder().append("http://")
String u = new StringBuilder(120).append("http://")
.append(host)
.append(":")
.append(port)
@ -89,7 +89,7 @@ public class YaCySearchClient {
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
StringBuilder sb = new StringBuilder(this.size() * 80 + 1);
for (RSSEntry entry: this) sb.append(entry.toString());
return sb.toString();
}
@ -111,7 +111,7 @@ public class YaCySearchClient {
@Override
public String toString() {
return new StringBuilder().append("Title : ")
return new StringBuilder(80).append("Title : ")
.append(title)
.append("\nLink : ")
.append(link)

@ -284,7 +284,7 @@ public class JSONArray {
*/
private String join(String separator) throws JSONException {
int len = length();
StringBuilder sb = new StringBuilder();
StringBuilder sb = new StringBuilder(len * 20);
for (int i = 0; i < len; i += 1) {
if (i > 0) {

@ -298,18 +298,18 @@ public class MultiProtocolURI implements Serializable, Comparable<MultiProtocolU
// handle international domains
if (!Punycode.isBasic(host)) try {
final String[] domainParts = patternDot.split(host, 0);
StringBuilder buffer = new StringBuilder();
StringBuilder buffer = new StringBuilder(80);
// encode each domain-part separately
for(int i=0; i<domainParts.length; i++) {
final String part = domainParts[i];
if(!Punycode.isBasic(part)) {
buffer.append("xn--").append(Punycode.encode(part));
} else {
buffer.append(part);
}
if(i != domainParts.length-1) {
buffer.append('.');
}
for(int i = 0; i < domainParts.length; i++) {
final String part = domainParts[i];
if (!Punycode.isBasic(part)) {
buffer.append("xn--").append(Punycode.encode(part));
} else {
buffer.append(part);
}
if (i != domainParts.length-1) {
buffer.append('.');
}
}
host = buffer.toString();
} catch (final PunycodeException e) {}

@ -45,16 +45,16 @@ public class Punycode {
int n = INITIAL_N;
int delta = 0;
int bias = INITIAL_BIAS;
final StringBuilder output = new StringBuilder();
final StringBuilder output = new StringBuilder(input.length() + 1);
// Copy all basic code points to the output
int b = 0;
for (int i = 0; i < input.length(); i++) {
final char c = input.charAt(i);
if (isBasic(c)) {
output.append(c);
b++;
}
final char c = input.charAt(i);
if (isBasic(c)) {
output.append(c);
b++;
}
}
// Append delimiter
@ -133,20 +133,20 @@ public class Punycode {
int n = INITIAL_N;
int i = 0;
int bias = INITIAL_BIAS;
final StringBuilder output = new StringBuilder();
int d = input.lastIndexOf(DELIMITER);
final StringBuilder output = new StringBuilder(d + 1);
if (d > 0) {
for (int j = 0; j < d; j++) {
final char c = input.charAt(j);
if (!isBasic(c)) {
throw new PunycodeException(PunycodeException.BAD_INPUT);
}
output.append(c);
}
d++;
for (int j = 0; j < d; j++) {
final char c = input.charAt(j);
if (!isBasic(c)) {
throw new PunycodeException(PunycodeException.BAD_INPUT);
}
output.append(c);
}
d++;
} else {
d = 0;
d = 0;
}
while (d < input.length()) {

@ -46,7 +46,7 @@ public class RSSReader extends DefaultHandler {
private RSSReader(int maxsize) {
theChannel = new RSSFeed(maxsize);
buffer = new StringBuilder();
buffer = new StringBuilder(300);
item = null;
parsingChannel = false;
parsingImage = false;

@ -644,11 +644,11 @@ dc_rights
long docTextLength = 0;
final ByteBuffer content = new ByteBuffer();
final StringBuilder authors = new StringBuilder();
final StringBuilder publishers = new StringBuilder();
final StringBuilder subjects = new StringBuilder();
final StringBuilder title = new StringBuilder();
final StringBuilder description = new StringBuilder();
final StringBuilder authors = new StringBuilder(80);
final StringBuilder publishers = new StringBuilder(80);
final StringBuilder subjects = new StringBuilder(80);
final StringBuilder title = new StringBuilder(80);
final StringBuilder description = new StringBuilder(80);
final LinkedList<String> sectionTitles = new LinkedList<String>();
final Map<MultiProtocolURI, String> anchors = new HashMap<MultiProtocolURI, String>();

@ -165,6 +165,7 @@ public class SnippetExtractor {
// so cut it here at both ends at once
assert maxpos >= minpos;
final int newlen = Math.max(10, maxpos - minpos + 10);
assert maxLength >= newlen: "maxLength = " + maxLength + ", newlen = " + newlen;
final int around = (maxLength - newlen) / 2;
assert minpos - around < sentence.length() : "maxpos = " + maxpos + ", minpos = " + minpos + ", around = " + around + ", sentence.length() = " + sentence.length() + ", maxLength = " + maxLength + ", newlen = " + newlen; //maxpos = 435, minpos = 17, around = -124, sentence.length() = 44
sentence = "[..] " + sentence.substring(minpos - around, ((maxpos + around) > sentence.length()) ? sentence.length() : (maxpos + around)).trim() + " [..]";

@ -58,7 +58,7 @@ public class SurrogateReader extends DefaultHandler implements Runnable {
private final InputStream stream;
public SurrogateReader(final InputStream stream, int queueSize) throws IOException {
this.buffer = new StringBuilder();
this.buffer = new StringBuilder(300);
this.parsingValue = false;
this.surrogate = null;
this.elementName = null;

@ -64,12 +64,12 @@ public class docParser extends AbstractParser implements Parser {
throw new Parser.Failure("error in docParser, WordTextExtractorFactory: " + e.getMessage(), location);
}
final StringBuilder contents = new StringBuilder();
final StringBuilder contents = new StringBuilder(80);
try {
contents.append(extractor.getText().trim());
contents.append(" ");
contents.append(' ');
contents.append(extractor.getHeaderText());
contents.append(" ");
contents.append(' ');
contents.append(extractor.getFooterText());
} catch (Exception e) {
throw new Parser.Failure("error in docParser, getText: " + e.getMessage(), location);

@ -66,7 +66,7 @@ public class psParser extends AbstractParser implements Parser {
private boolean testForPs2Ascii() {
try {
String procOutputLine = null;
final StringBuilder procOutput = new StringBuilder();
final StringBuilder procOutput = new StringBuilder(80);
final Process ps2asciiProc = Runtime.getRuntime().exec(new String[]{"ps2ascii", "--version"});
final BufferedReader stdOut = new BufferedReader(new InputStreamReader(ps2asciiProc.getInputStream()));

@ -175,7 +175,7 @@ public class sitemapParser extends AbstractParser implements Parser {
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
final StringBuilder sb = new StringBuilder(300);
for (final URLEntry entry: this) {
sb.append(entry.toString());
}

@ -72,7 +72,7 @@ public class torrentParser extends AbstractParser implements Parser {
final String comment = (commento == null) ? "" : UTF8.String(commento.getString());
//Date creation = new Date(map.get("creation date").getInteger());
final BObject infoo = map.get("info");
final StringBuilder filenames = new StringBuilder();
final StringBuilder filenames = new StringBuilder(80);
String title = "";
if (infoo != null) {
final Map<String, BObject> info = infoo.getMap();

@ -459,7 +459,7 @@ public class Tables {
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
StringBuilder sb = new StringBuilder(this.size() * 40);
sb.append('{');
for (Map.Entry<String, byte[]> entry: this.entrySet()) {
sb.append(entry.getKey()).append('=').append(UTF8.String(entry.getValue())).append(", ");

@ -194,7 +194,7 @@ public final class Column {
@Override
public final String toString() {
final StringBuilder s = new StringBuilder();
final StringBuilder s = new StringBuilder(20);
switch (celltype) {
case celltype_undefined:
s.append(nickname);

@ -136,7 +136,7 @@ public final class Row {
@Override
public final String toString() {
final StringBuilder s = new StringBuilder();
final StringBuilder s = new StringBuilder(80);
s.append(row[0].toString());
for (int i = 1; i < row.length; i++) {
s.append(", ");

@ -1018,7 +1018,7 @@ public class RowCollection implements Iterable<Row.Entry>, Cloneable {
}
public synchronized String toString() {
final StringBuilder s = new StringBuilder();
final StringBuilder s = new StringBuilder(80);
final Iterator<Row.Entry> i = iterator();
if (i.hasNext()) s.append(i.next().toString());
while (i.hasNext()) s.append(", " + (i.next()).toString());

@ -32,7 +32,7 @@ import java.util.logging.SimpleFormatter;
public final class MiniLogFormatter extends SimpleFormatter {
private final StringBuilder buffer = new StringBuilder();
private final StringBuilder buffer = new StringBuilder(80);
public MiniLogFormatter() {
super();

@ -45,7 +45,7 @@ public final class SimpleLogFormatter extends SimpleFormatter {
// e.g. 2005/05/25 11:22:53
private final SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.US);
private final StringBuffer buffer = new StringBuffer();
private final StringBuffer buffer = new StringBuffer(80);
public SimpleLogFormatter() {
super();

@ -147,7 +147,7 @@ public class BDecoder {
}
@Override
public String toString() {
StringBuilder s = new StringBuilder();
StringBuilder s = new StringBuilder(l.size() * 40 + 1);
s.append("[");
for (BObject o: l) s.append(o.toString()).append(",");
s.setLength(s.length() - 1);
@ -176,11 +176,11 @@ public class BDecoder {
}
@Override
public String toString() {
StringBuilder s = new StringBuilder();
s.append("{");
for (Map.Entry<String, BObject> e: m.entrySet()) s.append(e.getKey()).append(":").append(e.getValue().toString()).append(",");
StringBuilder s = new StringBuilder(m.size() * 40 + 1);
s.append('{');
for (Map.Entry<String, BObject> e: m.entrySet()) s.append(e.getKey()).append(':').append(e.getValue().toString()).append(',');
s.setLength(s.length() - 1);
s.append("}");
s.append('}');
return s.toString();
}
public void toStream(OutputStream os) throws IOException {

@ -602,7 +602,7 @@ public final class FileUtils {
* @return String representation of the file content.
*/
public static String getListString(final File listFile, final boolean withcomments){
final StringBuilder temp = new StringBuilder();
final StringBuilder temp = new StringBuilder(300);
BufferedReader br = null;
try{
@ -726,7 +726,7 @@ public final class FileUtils {
* @return returns <code>true</code> if successful, <code>false</code> otherwise
*/
public static boolean writeList(final File listFile, final String[] list){
final StringBuilder out = new StringBuilder();
final StringBuilder out = new StringBuilder(list.length * 40 + 1);
for(int i=0;i < list.length; i++){
out.append(list[i]).append(CR).append(LF);
}

@ -109,8 +109,8 @@ public final class MapTools {
}
public static String set2string(final Set<String> s, final String separator, final boolean braces) {
final StringBuilder buf = new StringBuilder();
if (braces) buf.append("{");
final StringBuilder buf = new StringBuilder(s.size() * 40 + 1);
if (braces) buf.append('{');
final Iterator<String> i = s.iterator();
boolean hasNext = i.hasNext();
while (hasNext) {
@ -118,7 +118,7 @@ public final class MapTools {
hasNext = i.hasNext();
if (hasNext) buf.append(separator);
}
if (braces) buf.append("}");
if (braces) buf.append('}');
return new String(buf);
}

@ -218,7 +218,7 @@ public class WorkflowProcessor<J extends WorkflowJob> {
}
public String getChilds() {
StringBuilder s = new StringBuilder();
StringBuilder s = new StringBuilder(this.childs.length * 40 + 1);
for (int i = 0; i < this.childs.length; i++) {
s.append(this.childs[i]);
s.append(' ');

Loading…
Cancel
Save