public class DoxiaUtils
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
private static java.text.ParsePosition |
DATE_PARSE_POSITION |
private static java.text.SimpleDateFormat |
DATE_PARSER |
private static java.lang.String[] |
DATE_PATTERNS |
private static int |
MINUS_ONE |
| Modifier | Constructor and Description |
|---|---|
private |
DoxiaUtils() |
| Modifier and Type | Method and Description |
|---|---|
static java.lang.String |
byteToHex(byte b)
Convert a byte to it's hexadecimal equivalent.
|
static java.lang.String |
encodeId(java.lang.String id)
Construct a valid Doxia id.
|
static java.lang.String |
encodeId(java.lang.String id,
boolean chop)
Construct a valid Doxia id.
|
static javax.swing.text.MutableAttributeSet |
getImageAttributes(java.lang.String logo)
Determine width and height of an image.
|
private static boolean |
isAsciiDigit(char c) |
private static boolean |
isAsciiLetter(char c) |
static boolean |
isExternalLink(java.lang.String link)
Checks if the given string corresponds to an external URI,
ie is not a link within the same document nor a relative link
to another document (a local link) of the same site.
|
static boolean |
isInternalLink(java.lang.String link)
Checks if the given string corresponds to an internal link,
ie it is a link to an anchor within the same document.
|
static boolean |
isLocalLink(java.lang.String link)
|
static boolean |
isValidId(java.lang.String text)
Determines if the specified text is a valid id according to the rules
laid out in
encodeId(String). |
static java.util.Date |
parseDate(java.lang.String str)
Parses a string representing a date by trying different date patterns.
|
private static final int MINUS_ONE
private static final java.text.SimpleDateFormat DATE_PARSER
private static final java.text.ParsePosition DATE_PARSE_POSITION
private static final java.lang.String[] DATE_PATTERNS
public static boolean isInternalLink(java.lang.String link)
isInternalLink(java.lang.String), isExternalLink(java.lang.String) and
isLocalLink(java.lang.String) will return true.link - The link to check. Not null.java.lang.NullPointerException - if link is null.isExternalLink(String),
isLocalLink(String)public static boolean isExternalLink(java.lang.String link)
isInternalLink(java.lang.String), isExternalLink(java.lang.String) and
isLocalLink(java.lang.String) will return true.link - The link to check. Not null.java.lang.NullPointerException - if link is null.isInternalLink(String),
isLocalLink(String)public static boolean isLocalLink(java.lang.String link)
internal
nor an external link.
If link is not null, then exactly one of the three methods
isInternalLink(java.lang.String), isExternalLink(java.lang.String) and
isLocalLink(java.lang.String) will return true.link - The link to check. Not null.java.lang.NullPointerException - if link is null.isExternalLink(String),
isInternalLink(String)public static java.lang.String encodeId(java.lang.String id)
This method is equivalent to encodeId( id, false ).
id - The id to be encoded.
May be null in which case null is returned.encodeId(java.lang.String, boolean)public static java.lang.String encodeId(java.lang.String id,
boolean chop)
A valid Doxia id obeys the same constraints as an HTML ID or NAME token. According to the HTML 4.01 specification section 6.2 SGML basic types:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
According to XHTML 1.0 section C.8. Fragment Identifiers:
When defining fragment identifiers to be backward-compatible, only strings matching the pattern [A-Za-z][A-Za-z0-9:_.-]* should be used.
To achieve this we need to convert the id String. Two conversions are necessary and one is done to get prettier ids:
For letters, the case is preserved in the conversion.
Here are some examples:
DoxiaUtils.encodeId( null ) = null DoxiaUtils.encodeId( "" ) = "a" DoxiaUtils.encodeId( " " ) = "a" DoxiaUtils.encodeId( " _ " ) = "a_" DoxiaUtils.encodeId( "1" ) = "a1" DoxiaUtils.encodeId( "1anchor" ) = "a1anchor" DoxiaUtils.encodeId( "_anchor" ) = "a_anchor" DoxiaUtils.encodeId( "a b-c123 " ) = "a_b-c123" DoxiaUtils.encodeId( " anchor" ) = "anchor" DoxiaUtils.encodeId( "myAnchor" ) = "myAnchor"
id - The id to be encoded.
May be null in which case null is returned.chop - true if non-ASCII characters should be ignored.
If false, any non-ASCII characters will be replaced as specified above.isValidId(java.lang.String)public static java.lang.String byteToHex(byte b)
b - the byte value.public static boolean isValidId(java.lang.String text)
encodeId(String).text - The text to be tested.
May be null in which case false is returned.true if the text is a valid id, otherwise false.encodeId(String)public static java.util.Date parseDate(java.lang.String str)
throws java.text.ParseException
Parses a string representing a date by trying different date patterns.
The following date patterns are tried (in the given order):
"yyyy-MM-dd", "yyyy/MM/dd", "yyyyMMdd", "yyyy", "dd.MM.yyyy", "dd MMM yyyy", "dd MMM. yyyy", "MMMM yyyy", "MMM. dd, yyyy", "MMM. yyyy", "MMMM dd, yyyy", "MMM d, ''yy", "MMM. ''yy", "MMMM ''yy"
A parse is only sucessful if it parses the whole of the input string. If no parse patterns match, a ParseException is thrown.
As a special case, the strings "today" and "now"
(ignoring case) return the current date.
str - the date to parse, not null."today" or "now".java.text.ParseException - if no pattern matches.java.lang.NullPointerException - if str is null.private static boolean isAsciiLetter(char c)
private static boolean isAsciiDigit(char c)
public static javax.swing.text.MutableAttributeSet getImageAttributes(java.lang.String logo)
throws java.io.IOException
logo - a String containing either a URL or a path to an image file. Not null.java.io.IOException - if an error occurs during reading.java.lang.NullPointerException - if logo is null.