Class Utils

  • All Implemented Interfaces:
    XMPConst

    public class Utils
    extends java.lang.Object
    implements XMPConst
    Utility functions for the XMPToolkit implementation.
    Since:
    06.06.2006
    • Field Detail

      • UUID_SEGMENT_COUNT

        public static final int UUID_SEGMENT_COUNT
        segments of a UUID
        See Also:
        Constant Field Values
      • xmlNameStartChars

        private static boolean[] xmlNameStartChars
        table of XML name start chars (<= 0xFF)
      • xmlNameChars

        private static boolean[] xmlNameChars
        table of XML name chars (<= 0xFF)
    • Constructor Detail

      • Utils

        private Utils()
        Private constructor
    • Method Detail

      • normalizeLangValue

        public static java.lang.String normalizeLangValue​(java.lang.String value)
        Normalize an xml:lang value so that comparisons are effectively case insensitive as required by RFC 3066 (which superceeds RFC 1766). The normalization rules:
        • The primary subtag is lower case, the suggested practice of ISO 639.
        • All 2 letter secondary subtags are upper case, the suggested practice of ISO 3166.
        • All other subtags are lower case.
        Parameters:
        value - raw value
        Returns:
        Returns the normalized value.
      • splitNameAndValue

        static java.lang.String[] splitNameAndValue​(java.lang.String selector)
        Split the name and value parts for field and qualifier selectors:
        • [qualName="value"] - An element in an array of structs, chosen by a field value.
        • [?qualName="value"] - An element in an array, chosen by a qualifier value.
        The value portion is a string quoted by ''' or '"'. The value may contain any character including a doubled quoting character. The value may be empty. Note: It is assumed that the expression is formal correct
        Parameters:
        selector - the selector
        Returns:
        Returns an array where the first entry contains the name and the second the value.
      • isInternalProperty

        static boolean isInternalProperty​(java.lang.String schema,
                                          java.lang.String prop)
        Parameters:
        schema - a schema namespace
        prop - an XMP Property
        Returns:
        Returns true if the property is defined as "Internal Property", see XMP Specification.
      • checkUUIDFormat

        static boolean checkUUIDFormat​(java.lang.String uuid)
        Check some requirements for an UUID:
        • Length of the UUID is 32
        • The Delimiter count is 4 and all the 4 delimiter are on their right position (8,13,18,23)
        Parameters:
        uuid - uuid to test
        Returns:
        true - this is a well formed UUID, false - UUID has not the expected format
      • isXMLName

        public static boolean isXMLName​(java.lang.String name)
        Simple check for valid XMLNames. Within ASCII range
        ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6]
        are accepted, above all characters (which is not entirely correct according to the XML Spec.
        Parameters:
        name - an XML Name
        Returns:
        Return true if the name is correct.
      • isXMLNameNS

        public static boolean isXMLNameNS​(java.lang.String name)
        Checks if the value is a legal "unqualified" XML name, as defined in the XML Namespaces proposed recommendation. These are XML names, except that they must not contain a colon.
        Parameters:
        name - the value to check
        Returns:
        Returns true if the name is a valid "unqualified" XML name.
      • isControlChar

        static boolean isControlChar​(char c)
        Parameters:
        c - a char
        Returns:
        Returns true if the char is an ASCII control char.
      • escapeXML

        public static java.lang.String escapeXML​(java.lang.String value,
                                                 boolean forAttribute,
                                                 boolean escapeWhitespaces)
        Serializes the node value in XML encoding. Its used for tag bodies and attributes.
        Note: The attribute is always limited by quotes, thats why &apos; is never serialized.
        Note: Control chars are written unescaped, but if the user uses others than tab, LF and CR the resulting XML will become invalid.
        Parameters:
        value - a string
        forAttribute - flag if string is attribute value (need to additional escape quotes)
        escapeWhitespaces - Decides if LF, CR and TAB are escaped.
        Returns:
        Returns the value ready for XML output.
      • removeControlChars

        static java.lang.String removeControlChars​(java.lang.String value)
        Replaces the ASCII control chars with a space.
        Parameters:
        value - a node value
        Returns:
        Returns the cleaned up value
      • isNameStartChar

        private static boolean isNameStartChar​(char ch)
        Simple check if a character is a valid XML start name char. All characters according to the XML Spec 1.1 are accepted: http://www.w3.org/TR/xml11/#NT-NameStartChar
        Parameters:
        ch - a character
        Returns:
        Returns true if the character is a valid first char of an XML name.
      • isNameChar

        private static boolean isNameChar​(char ch)
        Simple check if a character is a valid XML name char (every char except the first one), according to the XML Spec 1.1: http://www.w3.org/TR/xml11/#NT-NameChar
        Parameters:
        ch - a character
        Returns:
        Returns true if the character is a valid char of an XML name.
      • initCharTables

        private static void initCharTables()
        Initializes the char tables for the chars 0x00-0xFF for later use, according to the XML 1.1 specification http://www.w3.org/TR/xml11