001 /*
002 * Copyright 2002-2004 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package org.springframework.rules.reporting;
017
018 import org.springframework.util.Assert;
019
020 public class DefaultBeanPropertyNameRenderer implements BeanPropertyNameRenderer {
021
022 /**
023 * Renders a unqualified bean property string in the format:
024 * "parentProperty.myBeanProperty" like "ParentProperty.MyBeanProperty".
025 * @param qualifiedName
026 * @return the formatted string
027 */
028 public String renderQualifiedName(String qualifiedName) {
029 Assert.notNull(qualifiedName, "No qualified name specified");
030 StringBuffer sb = new StringBuffer(qualifiedName.length() + 5);
031 char[] chars = qualifiedName.toCharArray();
032 sb.append(Character.toUpperCase(chars[0]));
033 boolean foundDot = false;
034 for (int i = 1; i < chars.length; i++) {
035 char c = chars[i];
036 if (Character.isLetter(c)) {
037 if (Character.isLowerCase(c)) {
038 if (foundDot) {
039 sb.append(Character.toUpperCase(c));
040 foundDot = false;
041 }
042 else {
043 sb.append(c);
044 }
045 }
046 else {
047 sb.append(c);
048 }
049 }
050 else if (c == '.') {
051 sb.append(c);
052 foundDot = true;
053 }
054 }
055 return sb.toString();
056 }
057
058 /**
059 * Renders a unqualified bean property string in the format:
060 * "myBeanProperty" like "My Bean Property".
061 * @return the formatted string
062 */
063 public String renderShortName(String shortName) {
064 Assert.notNull(shortName, "No short name specified");
065 StringBuffer sb = new StringBuffer(shortName.length() + 5);
066 char[] chars = shortName.toCharArray();
067 sb.append(Character.toUpperCase(chars[0]));
068 for (int i = 1; i < chars.length; i++) {
069 char c = chars[i];
070 if (Character.isUpperCase(c)) {
071 sb.append(' ');
072 }
073 sb.append(c);
074 }
075 return sb.toString();
076 }
077 }