Class ArchiveUtils
java.lang.Object
org.archive.util.ArchiveUtils
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic StringGiven a string that may be a plain host or host/path (without URI scheme), add an implied http:// if necessary.static booleanbyteArrayEquals(byte[] lhs, byte[] rhs) check that two byte arrays are equal.static longbyteArrayIntoLong(byte[] bytearray) static longbyteArrayIntoLong(byte[] bytearray, int offset) Byte array into long.static voidcloseQuietly(Object input) static voidPerform checks as to whether normal execution should proceed.static StringdateToTimestamp(String input) Convert a user-entered date into a timestampstatic StringdoubleToString(double val, int maxFractionDigits) Converts a double to a string.static StringdoubleToString(double val, int maxFractionDigits, int minFractionDigits) static StringformatBytesForDisplay(long amount) Takes a byte size and formats it for display with 'friendly' units.static StringformatMillisecondsToConventional(long time) Convert milliseconds value to a human-readable durationstatic StringformatMillisecondsToConventional(long duration, int unitCount) Convert milliseconds value to a human-readable duration of mixed units, using units no larger than days.static StringUtility function for creating arc-style date stamps in the format yyyyMMddHHmm.static Stringget12DigitDate(long date) Utility function for creating arc-style date stamps in the format yyyyMMddHHmm.static Stringstatic StringUtility function for creating arc-style date stamps in the format yyyyMMddHHmmss.static Stringget14DigitDate(long date) Utility function for creating arc-style date stamps in the format yyyyMMddHHmmss.static Stringstatic StringUtility function for creating arc-style date stamps in the format yyyMMddHHmmssSSS.static Stringget17DigitDate(long date) Utility function for creating arc-style date stamps in the format yyyyMMddHHmmssSSS.static Stringget17DigitDate(Date date) static BufferedReadergetBufferedReader(File source) Get a BufferedReader on the crawler journal given TODO: move to a general utils classstatic BufferedReadergetBufferedReader(URL source) Get a BufferedReader on the crawler journal given.static DateParses an ARC-style date.static DateA version of getDate which returns the default instead of throwing an exception if parsing failsstatic StringUtility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC.static StringgetLog14Date(long date) Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC.static StringgetLog14Date(Date date) Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC.static StringUtility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC.static StringgetLog17Date(long date) Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC.static DategetSecondsSinceEpoch(String timestamp) static StringUtility function for creating UNIQUE-from-this-class arc-style date stamps in the format yyyMMddHHmmss.static StringUtility function for creating UNIQUE-from-this-class arc-style date stamps in the format yyyMMddHHmmssSSS.static byte[]gzip(byte[] bytes) Gzip passed bytes.static booleanisGzipped(InputStream is) Tests passed stream is gzip stream by reading in the HEAD.static booleanReturn whether the given string represents a known top-level-domain (like "com", "org", etc.) per IANA as of 20100419static voidlongIntoByteArray(long l, byte[] array, int offset) Copy the raw bytes of a long into a byte array, starting at the specified offset.static StringpadTo(int i, int pad) Convert anintto aString, and pad it topadspaces.static StringPad the givenStringtopadcharacters wide by pre-pending spaces.static StringPad the givenStringtopadcharacters wide by pre-pendingpadChar.static Dateparse12DigitDate(String date) Utility function for parsing arc-style date stamps in the format yyyMMddHHmm.static Dateparse14DigitDate(String date) Utility function for parsing arc-style date stamps in the format yyyMMddHHmmss.static Dateparse14DigitISODate(String datetime, Date defaultVal) static Dateparse17DigitDate(String date) Utility function for parsing arc-style date stamps in the format yyyMMddHHmmssSSS.static StringprettyString(Object obj) Enhance given object's default String display for appearing nested in a pretty Map String.static StringprettyString(Object[] array) Provide a slightly-improved String of Object[]static StringprettyString(Map<?, ?> map) Provide a improved String of a Map's entriesstatic intreadFully(InputStream input, byte[] buf) Read stream into buf until EOF or buf full.static StringsecondsSinceEpoch(String timestamp) static booleanstartsWith(byte[] array, byte[] prefix) Verify that the array begins with the prefix.static StringzeroPadInteger(int i)
-
Field Details
-
VERSION
-
MAX_INT_CHAR_WIDTH
public static int MAX_INT_CHAR_WIDTH -
LAST_UNIQUE_NOW17
protected static long LAST_UNIQUE_NOW17 -
LAST_TIMESTAMP17
-
LAST_UNIQUE_NOW14
protected static long LAST_UNIQUE_NOW14 -
LAST_TIMESTAMP14
-
TLDS
-
GZIP_SUFFIX
-
-
Constructor Details
-
ArchiveUtils
public ArchiveUtils()
-
-
Method Details
-
get17DigitDate
Utility function for creating arc-style date stamps in the format yyyMMddHHmmssSSS. Date stamps are in the UTC time zone- Returns:
- the date stamp
-
getUnique17DigitDate
Utility function for creating UNIQUE-from-this-class arc-style date stamps in the format yyyMMddHHmmssSSS. Rather than giving a duplicate datestamp on a subsequent call, will increment the milliseconds until a unique value is returned. Date stamps are in the UTC time zone- Returns:
- the date stamp
-
get14DigitDate
Utility function for creating arc-style date stamps in the format yyyyMMddHHmmss. Date stamps are in the UTC time zone- Returns:
- the date stamp
-
getUnique14DigitDate
Utility function for creating UNIQUE-from-this-class arc-style date stamps in the format yyyMMddHHmmss. Rather than giving a duplicate datestamp on a subsequent call, will increment the seconds until a unique value is returned. Date stamps are in the UTC time zone- Returns:
- the date stamp
-
get12DigitDate
Utility function for creating arc-style date stamps in the format yyyyMMddHHmm. Date stamps are in the UTC time zone- Returns:
- the date stamp
-
getLog17Date
Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC. Use current time. Format is yyyy-MM-dd'T'HH:mm:ss.SSS'Z'- Returns:
- the date stamp
-
getLog17Date
Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC. Format is yyyy-MM-dd'T'HH:mm:ss.SSS'Z'- Parameters:
date- Date to format.- Returns:
- the date stamp
-
getLog14Date
Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC. Use current time. Format is yyyy-MM-dd'T'HH:mm:ss'Z'- Returns:
- the date stamp
-
getLog14Date
Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC. Format is yyyy-MM-dd'T'HH:mm:ss'Z'- Parameters:
date- long timestamp to format.- Returns:
- the date stamp
-
getLog14Date
-
parse14DigitISODate
-
get17DigitDate
Utility function for creating arc-style date stamps in the format yyyyMMddHHmmssSSS. Date stamps are in the UTC time zone- Parameters:
date- milliseconds since epoc- Returns:
- the date stamp
-
get17DigitDate
-
get14DigitDate
Utility function for creating arc-style date stamps in the format yyyyMMddHHmmss. Date stamps are in the UTC time zone- Parameters:
date- milliseconds since epoc- Returns:
- the date stamp
-
get14DigitDate
-
get12DigitDate
Utility function for creating arc-style date stamps in the format yyyyMMddHHmm. Date stamps are in the UTC time zone- Parameters:
date- milliseconds since epoc- Returns:
- the date stamp
-
get12DigitDate
-
getDate
-
getDate
Parses an ARC-style date. If passed String is < 12 characters in length, we pad. At a minimum, String should contain a year (>=4 characters). Parse will also fail if day or month are incompletely specified. Depends on the above getXXDigitDate methods.- Parameters:
d- A 4-17 digit date in ARC style (yyyytoyyyyMMddHHmmssSSS) formatting.- Returns:
- A Date object representing the passed String.
- Throws:
ParseException
-
dateToTimestamp
-
parse17DigitDate
Utility function for parsing arc-style date stamps in the format yyyMMddHHmmssSSS. Date stamps are in the UTC time zone. The whole string will not be parsed, only the first 17 digits.- Parameters:
date- an arc-style formatted date stamp- Returns:
- the Date corresponding to the date stamp string
- Throws:
ParseException- if the inputstring was malformed
-
parse14DigitDate
Utility function for parsing arc-style date stamps in the format yyyMMddHHmmss. Date stamps are in the UTC time zone. The whole string will not be parsed, only the first 14 digits.- Parameters:
date- an arc-style formatted date stamp- Returns:
- the Date corresponding to the date stamp string
- Throws:
ParseException- if the inputstring was malformed
-
parse12DigitDate
Utility function for parsing arc-style date stamps in the format yyyMMddHHmm. Date stamps are in the UTC time zone. The whole string will not be parsed, only the first 12 digits.- Parameters:
date- an arc-style formatted date stamp- Returns:
- the Date corresponding to the date stamp string
- Throws:
ParseException- if the inputstring was malformed
-
secondsSinceEpoch
- Parameters:
timestamp- A 14-digit timestamp or the suffix for a 14-digit timestamp: E.g. '20010909014640' or '20010101' or '1970'.- Returns:
- Seconds since the epoch as a string zero-pre-padded so always Integer.MAX_VALUE wide (Makes it so sorting of resultant string works properly).
- Throws:
ParseException
-
getSecondsSinceEpoch
- Parameters:
timestamp- A 14-digit timestamp or the suffix for a 14-digit timestamp: E.g. '20010909014640' or '20010101' or '1970'.- Returns:
- A date.
- Throws:
ParseException- See Also:
-
zeroPadInteger
- Parameters:
i- Integer to add prefix of zeros too. If passed 2005, will return the String0000002005. String width is the width of Integer.MAX_VALUE as a string (10 digits).- Returns:
- Padded String version of
i.
-
padTo
Convert anintto aString, and pad it topadspaces.- Parameters:
i- the intpad- the width to pad to.- Returns:
- String w/ padding.
-
padTo
-
padTo
Pad the givenStringtopadcharacters wide by pre-pendingpadChar.sshould not benull. Ifsis already wider thanpadno change is done.- Parameters:
s- the String to padpad- the width to pad to.padChar- The pad character to use.- Returns:
- String w/ padding.
-
byteArrayEquals
public static boolean byteArrayEquals(byte[] lhs, byte[] rhs) check that two byte arrays are equal. They may benull.- Parameters:
lhs- a byte arrayrhs- another byte array.- Returns:
trueif they are both equal (or bothnull)
-
doubleToString
Converts a double to a string.- Parameters:
val- The double to convertmaxFractionDigits- How many characters to include after '.'- Returns:
- the double as a string.
-
doubleToString
-
formatBytesForDisplay
Takes a byte size and formats it for display with 'friendly' units.This involves converting it to the largest unit (of B, KiB, MiB, GiB, TiB) for which the amount will be > 1.
Additionally, at least 2 significant digits are always displayed.
Negative numbers will be returned as '0 B'.
- Parameters:
amount- the amount of bytes- Returns:
- A string containing the amount, properly formated.
-
formatMillisecondsToConventional
Convert milliseconds value to a human-readable duration- Parameters:
time-- Returns:
- Human readable string version of passed
time
-
formatMillisecondsToConventional
Convert milliseconds value to a human-readable duration of mixed units, using units no larger than days. For example, "5d12h13m12s113ms" or "19h51m".- Parameters:
duration-unitCount- how many significant units to show, at most for example, a value of 2 would show days+hours or hours+seconds but not hours+second+milliseconds- Returns:
- Human readable string version of passed
time
-
longIntoByteArray
public static void longIntoByteArray(long l, byte[] array, int offset) Copy the raw bytes of a long into a byte array, starting at the specified offset.- Parameters:
l-array-offset-
-
byteArrayIntoLong
public static long byteArrayIntoLong(byte[] bytearray) -
byteArrayIntoLong
public static long byteArrayIntoLong(byte[] bytearray, int offset) Byte array into long.- Parameters:
bytearray- Array to convert to a long.offset- Offset into array at which we start decoding the long.- Returns:
- Long made of the bytes of
arraybeginning at offsetoffset. - See Also:
-
addImpliedHttpIfNecessary
-
startsWith
public static boolean startsWith(byte[] array, byte[] prefix) Verify that the array begins with the prefix.- Parameters:
array-prefix-- Returns:
- true if array is identical to prefix for the first prefix.length positions
-
prettyString
-
prettyString
-
prettyString
-
isTld
Return whether the given string represents a known top-level-domain (like "com", "org", etc.) per IANA as of 20100419- Parameters:
dom- candidate string- Returns:
- boolean true if recognized as TLD
-
closeQuietly
-
continueCheck
Perform checks as to whether normal execution should proceed. If an external interrupt is detected, throw an interrupted exception. Used before anything that should not be attempted by a 'zombie' thread that the Frontier/Crawl has given up on.- Throws:
InterruptedException
-
readFully
Read stream into buf until EOF or buf full.- Parameters:
input-buf-- Throws:
IOException
-
getBufferedReader
Get a BufferedReader on the crawler journal given TODO: move to a general utils class- Parameters:
source- File journal- Returns:
- journal buffered reader.
- Throws:
IOException
-
getBufferedReader
Get a BufferedReader on the crawler journal given.- Parameters:
source- URL journal- Returns:
- journal buffered reader.
- Throws:
IOException
-
gzip
Gzip passed bytes. Use only when bytes is small.- Parameters:
bytes- What to gzip.- Returns:
- A gzip member of bytes.
- Throws:
IOException
-
isGzipped
Tests passed stream is gzip stream by reading in the HEAD. Does not mark/reset stream -- so this test actually makes stream unopenable within GZIP streams, unless reset.- Parameters:
is- An InputStream.- Returns:
- True if compressed stream.
- Throws:
IOException
-