Package org.jibx.schema.codegen.extend
Class DefaultNameConverter
- java.lang.Object
-
- org.jibx.schema.codegen.extend.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.
-
Constructor Summary
Constructors Constructor Description DefaultNameConverter()
Constructor.DefaultNameConverter(DefaultNameConverter base)
Copy constructor.
-
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.
-
-
-
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 interfaceNameConverter
- 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 interfaceNameConverter
- 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 interfaceNameConverter
- 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 interfaceNameConverter
- 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 injava.lang
, to avoid conflicts with the import handling in generated code.- Specified by:
toJavaClassName
in interfaceNameConverter
- 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 interfaceNameConverter
- 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 interfaceNameConverter
- 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 nameprefix
- text to be added at start of namesuffix
- 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 interfaceNameConverter
- 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 interfaceNameConverter
- 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 interfaceNameConverter
- 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 interfaceNameConverter
- 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 interfaceNameConverter
- 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 interfaceNameConverter
- 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 interfaceNameConverter
- Parameters:
prop
- property name in initial-upper camelcase form- Returns:
- if set access method name
-
-