add-on to latest commit

pull/1/head
Michael Peter Christen 13 years ago
parent cf47d94888
commit c15fcde1c8

@ -36,8 +36,8 @@ import net.yacy.cora.document.UTF8;
import net.yacy.cora.protocol.HeaderFramework;
import net.yacy.cora.protocol.RequestHeader;
import net.yacy.cora.services.federated.yacy.CacheStrategy;
import net.yacy.cora.util.NumberTools;
import net.yacy.kelondro.data.meta.DigestURI;
import net.yacy.kelondro.util.NumberTools;
import net.yacy.search.Switchboard;
import net.yacy.search.index.Segment;
import net.yacy.search.index.Segments;

@ -29,7 +29,7 @@
import net.yacy.cora.protocol.HeaderFramework;
import net.yacy.cora.protocol.RequestHeader;
import net.yacy.kelondro.util.NumberTools;
import net.yacy.cora.util.NumberTools;
import net.yacy.search.Switchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;

@ -29,7 +29,7 @@
import net.yacy.cora.protocol.HeaderFramework;
import net.yacy.cora.protocol.RequestHeader;
import net.yacy.kelondro.util.NumberTools;
import net.yacy.cora.util.NumberTools;
import net.yacy.search.SwitchboardConstants;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;

@ -36,11 +36,11 @@ import net.yacy.cora.document.UTF8;
import net.yacy.cora.protocol.HeaderFramework;
import net.yacy.cora.protocol.RequestHeader;
import net.yacy.cora.protocol.ResponseHeader;
import net.yacy.cora.util.NumberTools;
import net.yacy.document.Document;
import net.yacy.document.Parser;
import net.yacy.document.TextParser;
import net.yacy.kelondro.data.meta.DigestURI;
import net.yacy.kelondro.util.NumberTools;
import de.anomic.crawler.CrawlProfile;
import de.anomic.crawler.ResultURLs.EventOrigin;

@ -97,6 +97,7 @@ import net.yacy.cora.protocol.Domains;
import net.yacy.cora.protocol.HeaderFramework;
import net.yacy.cora.protocol.RequestHeader;
import net.yacy.cora.protocol.ResponseHeader;
import net.yacy.cora.util.NumberTools;
import net.yacy.document.parser.htmlParser;
import net.yacy.document.parser.html.ContentScraper;
import net.yacy.document.parser.html.ScraperInputStream;
@ -1155,7 +1156,7 @@ public final class HTTPDFileHandler {
final String rangesVal = rangeHeaderVal.substring("bytes=".length());
final String[] ranges = rangesVal.split(",");
if ((ranges.length == 1)&&(ranges[0].endsWith("-"))) {
rangeStartOffset = Integer.parseInt(ranges[0].substring(0,ranges[0].length()-1));
rangeStartOffset = NumberTools.parseIntDecSubstring(ranges[0], 0, ranges[0].length() - 1);
statusCode = 206;
header.put(HeaderFramework.CONTENT_RANGE, "bytes " + rangeStartOffset + "-" + (targetFile.length()-1) + "/" + targetFile.length());
}

@ -77,6 +77,7 @@ import net.yacy.cora.protocol.RequestHeader;
import net.yacy.cora.protocol.ResponseHeader;
import net.yacy.cora.protocol.http.HTTPClient;
import net.yacy.cora.protocol.http.ProxySettings;
import net.yacy.cora.util.NumberTools;
import net.yacy.document.TextParser;
import net.yacy.document.parser.html.ContentTransformer;
import net.yacy.document.parser.html.Transformer;
@ -84,7 +85,6 @@ import net.yacy.kelondro.data.meta.DigestURI;
import net.yacy.kelondro.io.ByteCountOutputStream;
import net.yacy.kelondro.logging.Log;
import net.yacy.kelondro.util.FileUtils;
import net.yacy.kelondro.util.NumberTools;
import net.yacy.repository.Blacklist;
import net.yacy.search.Switchboard;
import net.yacy.search.SwitchboardConstants;

@ -58,6 +58,7 @@ import net.yacy.cora.protocol.Domains;
import net.yacy.cora.protocol.HeaderFramework;
import net.yacy.cora.protocol.RequestHeader;
import net.yacy.cora.protocol.ResponseHeader;
import net.yacy.cora.util.NumberTools;
import net.yacy.document.parser.html.CharacterCoding;
import net.yacy.kelondro.data.meta.DigestURI;
import net.yacy.kelondro.logging.Log;
@ -65,7 +66,6 @@ import net.yacy.kelondro.order.Base64Order;
import net.yacy.kelondro.util.ByteBuffer;
import net.yacy.kelondro.util.FileUtils;
import net.yacy.kelondro.util.MemoryControl;
import net.yacy.kelondro.util.NumberTools;
import net.yacy.search.Switchboard;
import org.apache.commons.fileupload.FileItem;
@ -796,7 +796,7 @@ public final class HTTPDemon implements serverHandler, Cloneable {
for (int i = 0, len = s.length(); i < len; i++) {
if (s.charAt(i) == '&' && (end = s.indexOf(';', i + 1)) > i) {
if (s.charAt(i + 1) == '#') { // &#1234; symbols
b.write(Integer.parseInt(s.substring(i + 2, end)));
b.write(NumberTools.parseIntDecSubstring(s, i + 2, end));
i += end - i;
} else { // 'named' smybols
if (log.isFine()) log.logFine("discovered yet unimplemented HTML entity '" + s.substring(i, end + 1) + "'");

@ -31,7 +31,7 @@ import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import net.yacy.kelondro.util.NumberTools;
import net.yacy.cora.util.NumberTools;
public class GenericFormatter extends AbstractFormatter implements DateFormatter {
@ -148,7 +148,7 @@ public class GenericFormatter extends AbstractFormatter implements DateFormatter
if (diffString.length() > 0 && diffString.charAt(0) == '+') ahead = true;
else if (diffString.length() > 0 && diffString.charAt(0) == '-') ahead = false;
else throw new IllegalArgumentException("UTC String malformed (wrong sign):" + diffString);
final long oh = Long.parseLong(diffString.substring(1, 3));
final long oh = NumberTools.parseLongDecSubstring(diffString, 1, 3);
final long om = NumberTools.parseLongDecSubstring(diffString, 3);
return ((ahead) ? (long) 1 : (long) -1) * (oh * AbstractFormatter.hourMillis + om * AbstractFormatter.minuteMillis);
}

@ -42,7 +42,7 @@ import java.util.concurrent.ConcurrentHashMap;
import net.yacy.cora.document.ASCII;
import net.yacy.cora.document.MultiProtocolURI;
import net.yacy.cora.document.UTF8;
import net.yacy.kelondro.util.NumberTools;
import net.yacy.cora.util.NumberTools;
/**

@ -19,7 +19,9 @@
*/
package net.yacy.kelondro.util;
package net.yacy.cora.util;
import java.util.Random;
public class NumberTools {
@ -31,14 +33,18 @@ public class NumberTools {
* @return the number
* @throws NumberFormatException
*/
public static final long parseLongDecSubstring(String s) throws NumberFormatException {
if (s == null) throw new NumberFormatException(s);
return parseLongDecSubstring(s, 0, s.length());
}
public static final long parseLongDecSubstring(String s, int startPos) throws NumberFormatException {
if (s == null) {
throw new NumberFormatException("null");
}
final int len = s.length();
if (len <= startPos) {
throw new NumberFormatException(s);
}
if (s == null) throw new NumberFormatException(s);
return parseLongDecSubstring(s, startPos, s.length());
}
public static final long parseLongDecSubstring(String s, int startPos, final int endPos) throws NumberFormatException {
if (s == null || endPos > s.length() || endPos <= startPos) throw new NumberFormatException(s);
long result = 0;
boolean negative = false;
@ -54,15 +60,14 @@ public class NumberTools {
negative = true;
limit = Long.MIN_VALUE;
} else if (firstChar != '+') throw new NumberFormatException(s);
if (len == 1) throw new NumberFormatException(s);
i++;
if (endPos == i) throw new NumberFormatException(s);
}
multmin = limit / 10;
while (i < len) {
while (i < endPos) {
c = s.charAt(i++);
if (c == ' ') break;
digit = c - 48;
digit = c - '0';
if (digit < 0 || digit > 9 || result < multmin) throw new NumberFormatException(s);
result *= 10;
if (result < limit + digit) throw new NumberFormatException(s);
@ -71,15 +76,18 @@ public class NumberTools {
return negative ? result : -result;
}
public static final int parseIntDecSubstring(String s) throws NumberFormatException {
if (s == null) throw new NumberFormatException(s);
return parseIntDecSubstring(s, 0, s.length());
}
public static final int parseIntDecSubstring(String s, int startPos) throws NumberFormatException {
if (s == null) {
throw new NumberFormatException("null");
}
if (s == null) throw new NumberFormatException(s);
return parseIntDecSubstring(s, startPos, s.length());
}
final int len = s.length();
if (len <= startPos) {
throw new NumberFormatException(s);
}
public static final int parseIntDecSubstring(String s, int startPos, final int endPos) throws NumberFormatException {
if (s == null || endPos > s.length() || endPos <= startPos) throw new NumberFormatException(s);
int result = 0;
boolean negative = false;
@ -95,17 +103,17 @@ public class NumberTools {
negative = true;
limit = Integer.MIN_VALUE;
} else if (firstChar != '+') throw new NumberFormatException(s);
if (len == 1) throw new NumberFormatException(s);
i++;
if (endPos == i) throw new NumberFormatException(s);
}
multmin = limit / 10;
while (i < len) {
while (i < endPos) {
c = s.charAt(i++);
if (c == ' ') break;
digit = c - 48;
digit = c - '0';
if (digit < 0 || digit > 9 || result < multmin) throw new NumberFormatException(s);
result *= 10;
//result = (result << 3) + (result << 1);
if (result < limit + digit) throw new NumberFormatException(s);
result -= digit;
}
@ -114,5 +122,37 @@ public class NumberTools {
public static void main(String[] args) {
System.out.println("the number is " + parseLongDecSubstring("number=78 ", 7));
System.out.println("the number is " + parseIntDecSubstring("number=78x ", 7, 9));
Random r = new Random(1);
String[] s = new String[1000000];
for (int i = 0; i < s.length; i++) s[i] = "abc " + Integer.toString(r.nextInt()) + " ";
long d = 0;
long t0 = System.currentTimeMillis();
for (String element : s) {
d += Integer.parseInt(element.substring(4).trim());
}
System.out.println("java: " + d + " - " + (System.currentTimeMillis() - t0) + " millis");
d = 0;
t0 = System.currentTimeMillis();
for (String element : s) {
d += parseIntDecSubstring(element, 4);
}
System.out.println("cora: " + d + " - " + (System.currentTimeMillis() - t0) + " millis");
r = new Random(1);
for (int i = 0; i < s.length; i++) s[i] = Integer.toString(r.nextInt());
d = 0;
t0 = System.currentTimeMillis();
for (String element : s) {
d += Integer.parseInt(element);
}
System.out.println("java: " + d + " - " + (System.currentTimeMillis() - t0) + " millis");
d = 0;
t0 = System.currentTimeMillis();
for (String element : s) {
d += parseIntDecSubstring(element);
}
System.out.println("cora: " + d + " - " + (System.currentTimeMillis() - t0) + " millis");
}
}

@ -51,6 +51,7 @@ import java.util.concurrent.TimeoutException;
import java.util.zip.GZIPInputStream;
import net.yacy.cora.document.UTF8;
import net.yacy.cora.util.NumberTools;
import net.yacy.document.Document;
import net.yacy.document.Parser;
import net.yacy.document.TextParser;
@ -611,13 +612,13 @@ public class MediawikiImporter extends Thread implements Importer {
p += 7;
int q = s.indexOf('"', p + 1);
if (q < 0) return null;
start = Long.parseLong(s.substring(p, q));
start = NumberTools.parseLongDecSubstring(s, p, q);
p = s.indexOf("length=\"", q);
if (p < 0) return null;
p += 8;
q = s.indexOf('"', p + 1);
if (q < 0) return null;
final int length = Integer.parseInt(s.substring(p, q));
final int length = NumberTools.parseIntDecSubstring(s, p, q);
//Log.logInfo("WIKITRANSLATION", "start = " + start + ", length = " + length);
return new wikisourcerecord(title, start, start + length);
}

@ -47,6 +47,7 @@ import javax.swing.event.EventListenerList;
import net.yacy.cora.document.MultiProtocolURI;
import net.yacy.cora.sorting.ClusteredScoreMap;
import net.yacy.cora.util.NumberTools;
import net.yacy.document.SentenceReader;
import net.yacy.document.parser.htmlParser;
import net.yacy.document.parser.html.Evaluation.Element;
@ -780,7 +781,7 @@ public class ContentScraper extends AbstractScraper implements Scraper {
try {
final int pos = s.indexOf(';');
if (pos < 0) return 9999;
final int i = Integer.parseInt(s.substring(0, pos));
final int i = NumberTools.parseIntDecSubstring(s, 0, pos);
return i;
} catch (final NumberFormatException e) {
return 9999;

@ -29,7 +29,7 @@ package net.yacy.kelondro.index;
import java.io.Serializable;
import net.yacy.kelondro.util.NumberTools;
import net.yacy.cora.util.NumberTools;
import net.yacy.kelondro.util.kelondroException;
public final class Column implements Cloneable, Serializable {
@ -142,7 +142,7 @@ public final class Column implements Cloneable, Serializable {
celldef = "";
} else {
try {
this.cellwidth = Integer.parseInt(celldef.substring(p + 1, q));
this.cellwidth = NumberTools.parseIntDecSubstring(celldef, p + 1, q);
} catch (final NumberFormatException e) {
throw new kelondroException("kelondroColumn - cellwidth description wrong:" + celldef.substring(p + 1, q));
}

@ -41,12 +41,12 @@ import net.yacy.cora.document.UTF8;
import net.yacy.cora.order.AbstractOrder;
import net.yacy.cora.order.ByteOrder;
import net.yacy.cora.order.Order;
import net.yacy.cora.util.NumberTools;
import net.yacy.kelondro.logging.Log;
import net.yacy.kelondro.order.Base64Order;
import net.yacy.kelondro.order.Bitfield;
import net.yacy.kelondro.order.NaturalOrder;
import net.yacy.kelondro.util.ByteBuffer;
import net.yacy.kelondro.util.NumberTools;
import net.yacy.kelondro.util.kelondroException;

@ -31,12 +31,12 @@ import java.io.IOException;
import java.util.HashMap;
import net.yacy.cora.document.UTF8;
import net.yacy.cora.util.NumberTools;
import net.yacy.kelondro.index.Index;
import net.yacy.kelondro.index.Row;
import net.yacy.kelondro.index.RowSpaceExceededException;
import net.yacy.kelondro.logging.Log;
import net.yacy.kelondro.order.NaturalOrder;
import net.yacy.kelondro.util.NumberTools;
public class Relations {

@ -27,14 +27,16 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.management.ManagementFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Vector;
import net.yacy.cora.document.UTF8;
import net.yacy.cora.util.NumberTools;
import net.yacy.kelondro.logging.Log;
import de.anomic.server.serverCore;
import java.util.*;
public final class OS {
@ -168,7 +170,7 @@ public final class OS {
public static int getPID() {
final String pids = ManagementFactory.getRuntimeMXBean().getName();
final int p = pids.indexOf('@');
return p >= 0 ? Integer.parseInt(pids.substring(0, p)) : -1;
return p >= 0 ? NumberTools.parseIntDecSubstring(pids, 0, p) : -1;
}
public static void execAsynchronous(final File scriptFile) throws IOException {

@ -32,8 +32,8 @@ import java.util.Map;
import net.yacy.cora.document.Classification;
import net.yacy.cora.document.Classification.ContentDomain;
import net.yacy.cora.util.NumberTools;
import net.yacy.kelondro.logging.Log;
import net.yacy.kelondro.util.NumberTools;
public class RankingProfile {

@ -40,6 +40,7 @@ import net.yacy.cora.document.Classification;
import net.yacy.cora.document.Classification.ContentDomain;
import net.yacy.cora.document.MultiProtocolURI;
import net.yacy.cora.services.federated.yacy.CacheStrategy;
import net.yacy.cora.util.NumberTools;
import net.yacy.document.Document;
import net.yacy.document.Parser;
import net.yacy.document.WordTokenizer;
@ -50,7 +51,6 @@ import net.yacy.kelondro.index.RowSpaceExceededException;
import net.yacy.kelondro.logging.Log;
import net.yacy.kelondro.order.Base64Order;
import net.yacy.kelondro.util.ByteArray;
import net.yacy.kelondro.util.NumberTools;
import net.yacy.repository.Blacklist;
import net.yacy.search.Switchboard;
import de.anomic.crawler.ZURL.FailCategory;
@ -77,7 +77,7 @@ public class MediaSnippet implements Comparable<MediaSnippet>, Comparator<MediaS
this.height = -1;
int p = 0;
if (attr != null && (p = attr.indexOf(" x ",0)) > 0) {
this.width = Integer.parseInt(attr.substring(0, p).trim());
this.width = NumberTools.parseIntDecSubstring(attr, 0, p);
this.height = NumberTools.parseIntDecSubstring(attr, p + 3);
}
this.ranking = ranking; // the smaller the better! small values should be shown first

Loading…
Cancel
Save