Class DefaultNameConverter

  • All Implemented Interfaces:
    NameConverter

    public class DefaultNameConverter
    extends java.lang.Object
    implements NameConverter
    Converter for working with Java names.
    Author:
    Dennis M. Sosnoski
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private boolean m_camelCase
      Camelcase field names flag.
      private java.lang.String m_fieldPrefix
      Prefix used for normal field names (non-null, may be empty).
      private java.lang.String m_fieldSuffix
      Suffix used for normal field names (non-null, may be empty).
      private java.lang.String m_staticPrefix
      Prefix used for static field names (non-null, may be empty).
      private java.lang.String m_staticSuffix
      Suffix used for static field names (non-null, may be empty).
      private java.lang.String[] m_stripPrefixes
      Set of XML name prefixes to be discarded in conversions.
      private java.lang.String[] m_stripSuffixes
      Set of XML name suffixes to be discarded in conversions.
      private boolean m_underscore
      Use underscores in field names flag (as substitute for special characters, and to split words).
      private boolean m_upperInitial
      Uppercase initial letter of field names flag.
      private java.util.ArrayList m_wordList
      Reusable array for words in name.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private java.lang.String buildFieldName​(java.lang.String base, java.lang.String prefix, java.lang.String suffix)
      Build a field name using supplied prefix and/or suffix.
      java.lang.String depluralize​(java.lang.String name)
      Convert potentially plural name to singular form.
      java.lang.String getFieldPrefix()
      Get prefix text for normal field names.
      java.lang.String getFieldSuffix()
      Get suffix text for normal field names.
      java.lang.String getStaticPrefix()
      Get prefix text for static field names.
      java.lang.String getStaticSuffix()
      Get suffix text for static field names.
      java.lang.String[] getStripPrefixes()
      Get the prefixes to be stripped when converting XML names.
      java.lang.String[] getStripSuffixes()
      Get the suffixes to be stripped when converting XML names.
      protected static boolean isConversionNeeded​(java.lang.String name)
      Check if a name needs to be converted from XML form due to invalid characters or embedded underscores.
      java.lang.String pluralize​(java.lang.String name)
      Convert singular name to plural form.
      void setFieldPrefix​(java.lang.String pref)
      Set prefix text for normal field names.
      void setFieldSuffix​(java.lang.String suff)
      Set suffix text for normal field names.
      void setStaticPrefix​(java.lang.String pref)
      Set prefix text for static field names.
      void setStaticSuffix​(java.lang.String suff)
      Set suffix text for static field names.
      void setStripPrefixes​(java.lang.String[] prefixes)
      Set the prefixes to be stripped when converting XML names.
      void setStripSuffixes​(java.lang.String[] suffixes)
      Set the suffixes to be stripped when converting XML names.
      java.lang.String[] splitXMLWords​(java.lang.String name)
      Split an XML name into words.
      java.lang.String toBaseName​(java.lang.String xname)
      Convert an XML name to a Java value base name.
      java.lang.String toConstantName​(java.lang.String text)
      Convert text to constant name.
      java.lang.String toFieldName​(java.lang.String base)
      Convert base name to normal field name.
      java.lang.String toIfSetAccessMethodName​(java.lang.String prop)
      Convert property name to if set access method name (for value in set of alternatives).
      java.lang.String toJavaClassName​(java.lang.String name)
      Convert a base name to a legal Java class name.
      java.lang.String toPropertyName​(java.lang.String base)
      Convert base name to property name (used for all method names).
      java.lang.String toReadAccessMethodName​(java.lang.String prop)
      Convert property name to read access method name.
      java.lang.String toStaticFieldName​(java.lang.String base)
      Convert base name to static field name.
      java.lang.String toTestAccessMethodName​(java.lang.String prop)
      Convert property name to write access method name.
      java.lang.String toWriteAccessMethodName​(java.lang.String prop)
      Convert property name to write access method name.
      java.lang.String trimXName​(java.lang.String xname)
      Trim specified prefixes and/or suffixes from an XML name.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • m_camelCase

        private boolean m_camelCase
        Camelcase field names flag.
      • m_fieldPrefix

        private java.lang.String m_fieldPrefix
        Prefix used for normal field names (non-null, may be empty).
      • m_fieldSuffix

        private java.lang.String m_fieldSuffix
        Suffix used for normal field names (non-null, may be empty).
      • m_staticPrefix

        private java.lang.String m_staticPrefix
        Prefix used for static field names (non-null, may be empty).
      • m_staticSuffix

        private java.lang.String m_staticSuffix
        Suffix used for static field names (non-null, may be empty).
      • m_underscore

        private boolean m_underscore
        Use underscores in field names flag (as substitute for special characters, and to split words).
      • m_upperInitial

        private boolean m_upperInitial
        Uppercase initial letter of field names flag.
      • m_stripPrefixes

        private java.lang.String[] m_stripPrefixes
        Set of XML name prefixes to be discarded in conversions.
      • m_stripSuffixes

        private java.lang.String[] m_stripSuffixes
        Set of XML name suffixes to be discarded in conversions.
      • m_wordList

        private java.util.ArrayList m_wordList
        Reusable array for words in name.
    • Constructor Detail

      • DefaultNameConverter

        public DefaultNameConverter()
        Constructor.
      • DefaultNameConverter

        public DefaultNameConverter​(DefaultNameConverter base)
        Copy constructor.
        Parameters:
        base - instance used to initialize settings
    • Method Detail

      • pluralize

        public java.lang.String pluralize​(java.lang.String name)
        Convert singular name to plural form.
        Specified by:
        pluralize in interface NameConverter
        Parameters:
        name - base name
        Returns:
        plural name
      • depluralize

        public java.lang.String depluralize​(java.lang.String name)
        Convert potentially plural name to singular form.
        Specified by:
        depluralize in interface NameConverter
        Parameters:
        name - base name
        Returns:
        singularized name
      • getFieldPrefix

        public java.lang.String getFieldPrefix()
        Get prefix text for normal field names.
        Returns:
        field prefix (non-null, may be empty)
      • setFieldPrefix

        public void setFieldPrefix​(java.lang.String pref)
        Set prefix text for normal field names.
        Parameters:
        pref - field prefix (non-null, may be empty)
      • getFieldSuffix

        public java.lang.String getFieldSuffix()
        Get suffix text for normal field names.
        Returns:
        field suffix (non-null, may be empty)
      • setFieldSuffix

        public void setFieldSuffix​(java.lang.String suff)
        Set suffix text for normal field names.
        Parameters:
        suff - field suffix (non-null, may be empty)
      • getStaticPrefix

        public java.lang.String getStaticPrefix()
        Get prefix text for static field names.
        Returns:
        field prefix (non-null, may be empty)
      • setStaticPrefix

        public void setStaticPrefix​(java.lang.String pref)
        Set prefix text for static field names.
        Parameters:
        pref - field prefix (non-null, may be empty)
      • getStaticSuffix

        public java.lang.String getStaticSuffix()
        Get suffix text for static field names.
        Returns:
        field suffix (non-null, may be empty)
      • setStaticSuffix

        public void setStaticSuffix​(java.lang.String suff)
        Set suffix text for static field names.
        Parameters:
        suff - field suffix (non-null, may be empty)
      • getStripPrefixes

        public java.lang.String[] getStripPrefixes()
        Get the prefixes to be stripped when converting XML names.
        Returns:
        prefixes
      • setStripPrefixes

        public void setStripPrefixes​(java.lang.String[] prefixes)
        Set the prefixes to be stripped when converting XML names.
        Parameters:
        prefixes -
      • getStripSuffixes

        public java.lang.String[] getStripSuffixes()
        Get the suffixes to be stripped when converting XML names.
        Returns:
        suffixes
      • setStripSuffixes

        public void setStripSuffixes​(java.lang.String[] suffixes)
        Set the suffixes to be stripped when converting XML names.
        Parameters:
        suffixes -
      • trimXName

        public java.lang.String trimXName​(java.lang.String xname)
        Trim specified prefixes and/or suffixes from an XML name.
        Specified by:
        trimXName in interface NameConverter
        Parameters:
        xname - XML name
        Returns:
        trimmed name, with specified prefixes and/or suffixes removed
      • splitXMLWords

        public java.lang.String[] splitXMLWords​(java.lang.String name)
        Split an XML name into words. This splits first on the basis of separator characters ('.', '-', and '_') in the name, and secondly based on case (an uppercase character immediately followed by one or more lowercase characters is considered a word, and multiple uppercase characters not followed immediately by a lowercase character are also considered a word). Characters which are not valid as parts of identifiers in Java are dropped from the XML name before it is split, and words starting with initial uppercase characters have the upper case dropped for consistency. Note that this method is not threadsafe.
        Specified by:
        splitXMLWords in interface NameConverter
        Parameters:
        name -
        Returns:
        array of words
      • isConversionNeeded

        protected static boolean isConversionNeeded​(java.lang.String name)
        Check if a name needs to be converted from XML form due to invalid characters or embedded underscores.
        Parameters:
        name -
        Returns:
        true if invalid name, false if valid
      • toJavaClassName

        public java.lang.String toJavaClassName​(java.lang.String name)
        Convert a base name to a legal Java class name. This implementation avoids using class names from the default import classes in java.lang, to avoid conflicts with the import handling in generated code.
        Specified by:
        toJavaClassName in interface NameConverter
        Parameters:
        name - base name
        Returns:
        converted name
      • toBaseName

        public java.lang.String toBaseName​(java.lang.String xname)
        Convert an XML name to a Java value base name. The base name is in normalized camelcase form with leading lower case (unless the first word of the name is all uppercase).
        Specified by:
        toBaseName in interface NameConverter
        Parameters:
        xname - XML name
        Returns:
        converted name
      • toConstantName

        public java.lang.String toConstantName​(java.lang.String text)
        Convert text to constant name. The returned name is guaranteed not to match a Java keyword.
        Specified by:
        toConstantName in interface NameConverter
        Parameters:
        text - raw text to be converted
        Returns:
        constant name
      • buildFieldName

        private java.lang.String buildFieldName​(java.lang.String base,
                                                java.lang.String prefix,
                                                java.lang.String suffix)
        Build a field name using supplied prefix and/or suffix.
        Parameters:
        base - normalized camelcase base name
        prefix - text to be added at start of name
        suffix - text to be added at end of name
        Returns:
        field name
      • toFieldName

        public java.lang.String toFieldName​(java.lang.String base)
        Convert base name to normal field name. The returned name is guaranteed not to match a Java keyword.
        Specified by:
        toFieldName in interface NameConverter
        Parameters:
        base - normalized camelcase base name
        Returns:
        field name
      • toStaticFieldName

        public java.lang.String toStaticFieldName​(java.lang.String base)
        Convert base name to static field name. The returned name is guaranteed not to match a Java keyword.
        Specified by:
        toStaticFieldName in interface NameConverter
        Parameters:
        base - normalized camelcase base name
        Returns:
        field name
      • toPropertyName

        public java.lang.String toPropertyName​(java.lang.String base)
        Convert base name to property name (used for all method names). The property name is always in initial-upper camelcase form.
        Specified by:
        toPropertyName in interface NameConverter
        Parameters:
        base - normalized camelcase base name
        Returns:
        property name in initial-upper camelcase form
      • toReadAccessMethodName

        public java.lang.String toReadAccessMethodName​(java.lang.String prop)
        Convert property name to read access method name.
        Specified by:
        toReadAccessMethodName in interface NameConverter
        Parameters:
        prop - property name in initial-upper camelcase form
        Returns:
        read access method name
      • toWriteAccessMethodName

        public java.lang.String toWriteAccessMethodName​(java.lang.String prop)
        Convert property name to write access method name.
        Specified by:
        toWriteAccessMethodName in interface NameConverter
        Parameters:
        prop - property name in initial-upper camelcase form
        Returns:
        write access method name
      • toTestAccessMethodName

        public java.lang.String toTestAccessMethodName​(java.lang.String prop)
        Convert property name to write access method name.
        Specified by:
        toTestAccessMethodName in interface NameConverter
        Parameters:
        prop - property name in initial-upper camelcase form
        Returns:
        write access method name
      • toIfSetAccessMethodName

        public java.lang.String toIfSetAccessMethodName​(java.lang.String prop)
        Convert property name to if set access method name (for value in set of alternatives).
        Specified by:
        toIfSetAccessMethodName in interface NameConverter
        Parameters:
        prop - property name in initial-upper camelcase form
        Returns:
        if set access method name