[ 
https://issues.apache.org/jira/browse/LANG-415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12574781#action_12574781
 ] 

jwcarman edited comment on LANG-415 at 3/3/08 3:12 PM:
-----------------------------------------------------------

The fact that this is how you wanted to do property/column mappings in your 
project doesn't necessarily mean that it's the way everyone would want to do 
it.  As suggested in email, we might want to allow for a separator character 
(or string) to be passed in.  Also, a set of unit tests that exhibit the 
behavior of the methods would be nice for a patch like this.  I'm not saying 
this method isn't useful (I could use it), I just think that to put it into a 
library like Commons Lang, we need to make it applicable to more use cases 
(such as wanting to use '-' as the separator for instance).  Also, wouldn't 
this maybe belong in WordUtils instead, since you're separating a string of 
concatenated, capitalized words into a string of separated, uncapitalized, 
delimited words.

      was (Author: jwcarman):
    The fact that this is how you wanted to do property -> column mappings in 
your project doesn't necessarily mean that it's the way everyone would want to 
do it.  As suggested in email, we might want to allow for a separator character 
(or string) to be passed in.  Also, a set of unit tests that exhibit the 
behavior of the methods would be nice for a patch like this.  I'm not saying 
this method isn't useful (I could use it), I just think that to put it into a 
library like Commons Lang, we need to make it applicable to more use cases 
(such as wanting to use '-' as the separator for instance).  Also, wouldn't 
this maybe belong in WordUtils instead, since you're separating a string of 
concatenated, capitalized words into a string of separated, uncapitalized, 
delimited words.
  
> Two new static methods in StringUtils: camelCaseToUnderscoreSeparated(String) 
> and underscoreSeparatedToCamelCase(String)
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: LANG-415
>                 URL: https://issues.apache.org/jira/browse/LANG-415
>             Project: Commons Lang
>          Issue Type: New Feature
>    Affects Versions: 2.3
>            Reporter: Grzegorz Błaszczyk
>             Fix For: 2.4
>
>         Attachments: LANG-415.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> Index: /CommonsLang/src/java/org/apache/commons/lang/StringUtils.java
> ===================================================================
> --- /CommonsLang/src/java/org/apache/commons/lang/StringUtils.java    
> (revision 633306)
> +++ /CommonsLang/src/java/org/apache/commons/lang/StringUtils.java    
> (working copy)
> @@ -2782,6 +2782,60 @@
>          list.add(new String(c, tokenStart, c.length - tokenStart));
>          return (String[]) list.toArray(new String[list.size()]);
>      }
> +    /**
> +     * Changes a camelCase string value to underscore separated
> +     * @param input
> +     * @param toLowerCase - if output string should be lower case
> +     * @return underscore separated string
> +     */
> +    public static String camelCaseToUnderscoreSeparated(String input,
> +                     boolean toLowerCase) {
> +             StringBuilder s = new StringBuilder();
> +             if (input == null) {
> +                     return "";
> +             }
> +             int length = input.length();
> +             for (int i = 0; i < length; i++) {
> +                     char ch = input.charAt(i);
> +                     if (Character.isUpperCase(ch) && i > 0) {
> +                             s.append("_");
> +                     }
> +                     if (ch == '.') {
> +                             s.append("_");
> +                     } else {
> +                             s.append(toLowerCase ? 
> Character.toLowerCase(ch) : Character
> +                                             .toUpperCase(ch));
> +                     }
> +             }
> +             return s.toString();
> +     }
> +     
> +    /**
> +     * Changes a underscore separated string value to camelCase
> +     * @param input
> +     * @return camelScape string
> +     */
> +     public static String underscoreSeparatedToCamelCase(String input) {
> +             StringBuilder s = new StringBuilder();
> +             if (input == null) {
> +                     return "";
> +             }
> +             int length = input.length();
> +             boolean upperCase = false;
> +             
> +             for (int i = 0; i < length; i++) {
> +                     char ch = input.charAt(i);
> +                     if (ch == '_') {
> +                             upperCase = true;
> +                     } else if (upperCase) {
> +                             s.append(Character.toUpperCase(ch));
> +                             upperCase = false;
> +                     } else {
> +                             s.append(ch);
> +                     }
> +             }
> +             return s.toString();
> +     }
>  
>      // Joining
>      //-----------------------------------------------------------------------

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to