Clover Coverage Report - kns-test 2.0.0-SNAPSHOT
Coverage timestamp: Wed Dec 31 1969 19:00:00 EST
../../../../../img/srcFileCovDistChart0.png 0% of files have more coverage
133   272   20   22.17
28   223   0.15   6
6     3.33  
1    
 
  BeanDDCreator       Line # 23 133 0% 20 167 0% 0.0
 
No Tests
 
1    /*
2    * Copyright 2008 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10    * Unless required by applicable law or agreed to in writing, software
11    * distributed under the License is distributed on an "AS IS" BASIS,
12    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13    * See the License for the specific language governing permissions and
14    * limitations under the License.
15    */
16    package org.kuali.rice.kns.util;
17   
18    import java.beans.PropertyDescriptor;
19   
20    import org.apache.commons.beanutils.PropertyUtils;
21    import org.kuali.rice.kns.bo.BusinessObject;
22   
 
23    public class BeanDDCreator {
24   
25    /**
26    * This method...
27    * @param args
28    */
 
29  0 toggle public static void main(String[] args) throws Exception {
30  0 String className = args[0];
31  0 Class<? extends BusinessObject> boClass = (Class<? extends BusinessObject>)Class.forName( className );
32  0 PropertyDescriptor[] props = PropertyUtils.getPropertyDescriptors( boClass );
33   
34  0 StringBuffer sb = new StringBuffer( 4000 );
35  0 sb.append( "<beans xmlns=\"http://www.springframework.org/schema/beans\"\r\n" +
36    " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n" +
37    " xmlns:p=\"http://www.springframework.org/schema/p\"\r\n" +
38    " xsi:schemaLocation=\"http://www.springframework.org/schema/beans\r\n" +
39    " http://www.springframework.org/schema/beans/spring-beans-2.0.xsd\">\r\n" +
40    "\r\n" +
41    " <bean id=\"" );
42  0 sb.append( boClass.getSimpleName() );
43  0 sb.append( "\" parent=\"" );
44  0 sb.append( boClass.getSimpleName() );
45  0 sb.append( "-parentBean\" />\r\n" +
46    "\r\n" +
47    " <bean id=\"" );
48  0 sb.append( boClass.getSimpleName() );
49  0 sb.append( "-parentBean\" abstract=\"true\" parent=\"BusinessObjectEntry\"\r\n" +
50    " p:businessObjectClass=\"" );
51  0 sb.append( boClass.getName() );
52  0 sb.append( "\"\r\n" );
53  0 sb.append( " p:titleAttribute=\"" );
54  0 sb.append( "FILL ME IN" );
55  0 sb.append( "\"\r\n" );
56  0 sb.append( " p:objectLabel=\"" );
57  0 sb.append( camelCaseToString( boClass.getSimpleName() ) );
58  0 sb.append( "\"\r\n" );
59  0 sb.append( " p:inquiryDefinition-ref=\"" );
60  0 sb.append( boClass.getSimpleName() );
61  0 sb.append( "-inquiryDefinition\"\r\n" );
62  0 sb.append( " p:lookupDefinition-ref=\"" );
63  0 sb.append( boClass.getSimpleName() );
64  0 sb.append( "-lookupDefinition\" >\r\n" );
65  0 sb.append( " <property name=\"attributes\" >\r\n" +
66    " <list>\r\n" );
67  0 for ( PropertyDescriptor p : props ) {
68  0 if ( isNormalProperty(p) ) {
69  0 sb.append( " <ref bean=\"" ).append( boClass.getSimpleName() ).append( '-' );
70  0 sb.append( p.getName() );
71  0 sb.append( "\" />\r\n" );
72    }
73    }
74   
75  0 sb.append( " </list>\r\n" +
76    " </property>\r\n" +
77    " </bean>\r\n" +
78    "\r\n" );
79  0 for ( PropertyDescriptor p : props ) {
80  0 if ( isNormalProperty(p) ) {
81   
82  0 if ( p.getName().equals( "versionNumber" ) ) {
83  0 sb.append( getSimpleParentBeanReference( boClass, p.getName() ) );
84  0 sb.append( getSimpleAbstractInheritanceBean(boClass, p.getName(), "GenericAttributes-versionNumber" ) );
85   
86  0 } else if ( p.getName().endsWith("chartOfAccountsCode" ) ) {
87  0 sb.append( getSimpleParentBeanReference( boClass, p.getName() ) );
88  0 sb.append( getSimpleAbstractInheritanceBean(boClass, p.getName(), "Chart-chartOfAccountsCode" ) );
89   
90  0 } else if ( p.getName().endsWith("organizationCode" ) ) {
91  0 sb.append( getSimpleParentBeanReference( boClass, p.getName() ) );
92  0 sb.append( getSimpleAbstractInheritanceBean(boClass, p.getName(), "Org-organizationCode" ) );
93   
94  0 } else if ( p.getName().endsWith("accountNumber" ) ) {
95  0 sb.append( getSimpleParentBeanReference( boClass, p.getName() ) );
96  0 sb.append( getSimpleAbstractInheritanceBean(boClass, p.getName(), "Account-accountNumber" ) );
97   
98  0 } else if ( p.getName().equals("active" ) ) {
99  0 sb.append( getSimpleParentBeanReference( boClass, p.getName() ) );
100  0 sb.append( getSimpleAbstractInheritanceBean(boClass, p.getName(), "GenericAttributes-activeIndicator" ) );
101   
102  0 } else if ( p.getName().equals("codeAndDescription" ) ) {
103  0 sb.append( getSimpleParentBeanReference( boClass, p.getName() ) );
104  0 sb.append( getSimpleAbstractInheritanceBeanWithLabel(boClass, p.getName(), "CommonField-CodeAndDescription", camelCaseToString(boClass.getSimpleName()) ) );
105   
106  0 } else if ( p.getPropertyType() == Boolean.TYPE ) {
107  0 sb.append( getSimpleParentBeanReference( boClass, p.getName() ) );
108  0 sb.append( getSimpleAbstractInheritanceBean(boClass, p.getName(), "GenericAttributes-genericBoolean" ) );
109   
110    } else {
111    // attribute bean
112  0 sb.append( getSimpleParentBeanReference( boClass, p.getName() ) );
113    // attribute parent bean
114  0 sb.append( " <bean id=\"" ).append( boClass.getSimpleName() ).append( '-' );
115  0 sb.append( p.getName() ).append( "-parentBean\" parent=\"AttributeDefinition\" abstract=\"true\"\r\n" );
116  0 sb.append( " p:name=\"" ).append( p.getName() ).append( "\"\r\n" );
117  0 sb.append( " p:forceUppercase=\"false\"\r\n" );
118  0 sb.append( " p:label=\"" ).append( camelCaseToString(p.getName()) ).append( "\"\r\n" );
119  0 sb.append( " p:shortLabel=\"" ).append( camelCaseToString(p.getName()) ).append( "\"\r\n" );
120  0 sb.append( " p:maxLength=\"10\"\r\n" );
121  0 sb.append( " p:required=\"false\" >\r\n" );
122  0 sb.append( " <property name=\"validationPattern\" >\r\n" +
123    " <bean parent=\"AnyCharacterValidationPattern\"\r\n" +
124    " p:allowWhitespace=\"true\" />\r\n" +
125    " </property>\r\n" +
126    " <property name=\"control\" >\r\n" +
127    " <bean parent=\"TextControlDefinition\"\r\n" +
128    " p:size=\"10\" />\r\n" +
129    " </property>\r\n" +
130    " </bean>\r\n" );
131   
132    }
133  0 sb.append( "\r\n" );
134    }
135    }
136    // inquiry definition
137   
138  0 sb.append( getSimpleParentBeanReference( boClass, "inquiryDefinition" ) );
139  0 sb.append( "\r\n" );
140  0 sb.append( " <bean id=\"" );
141  0 sb.append( boClass.getSimpleName() );
142  0 sb.append( "-inquiryDefinition-parentBean\" abstract=\"true\" parent=\"InquiryDefinition\"\r\n" +
143    " p:title=\"" );
144  0 sb.append( camelCaseToString(boClass.getSimpleName() ) );
145  0 sb.append( " Inquiry\" >\r\n" +
146    " <property name=\"inquirySections\" >\r\n" +
147    " <list>\r\n" +
148    " <bean parent=\"InquirySectionDefinition\"\r\n" +
149    " p:title=\"" );
150  0 sb.append( camelCaseToString(boClass.getSimpleName() ) );
151  0 sb.append( " Attributes\"\r\n" +
152    " p:numberOfColumns=\"1\" >\r\n" +
153    " <property name=\"inquiryFields\" >\r\n" +
154    " <list>\r\n" );
155  0 for ( PropertyDescriptor p : props ) {
156  0 if ( isNormalProperty(p) ) {
157  0 sb.append(" <bean parent=\"FieldDefinition\" p:attributeName=\"" );
158  0 sb.append( p.getName() ).append( "\" />\r\n" );
159    }
160    }
161  0 sb.append( " </list>\r\n" +
162    " </property>\r\n" +
163    " </bean>\r\n" +
164    " </list>\r\n" +
165    " </property>\r\n" +
166    " </bean>\r\n" +
167    "\r\n" );
168   
169  0 sb.append( getSimpleParentBeanReference( boClass, "lookupDefinition" ) );
170  0 sb.append( "\r\n" );
171  0 sb.append( " <bean id=\"" );
172  0 sb.append( boClass.getSimpleName() );
173  0 sb.append( "-lookupDefinition-parentBean\" abstract=\"true\" parent=\"LookupDefinition\"\r\n" +
174    " p:title=\"" );
175  0 sb.append( camelCaseToString(boClass.getSimpleName() ) );
176  0 sb.append( " Lookup\" \r\n" );
177    //sb.append( " p:instructions=\"Lookup a " );
178    //sb.append( camelCaseToString(boClass.getSimpleName() ) );
179  0 sb.append( "\" >\r\n" );
180  0 sb.append( " <property name=\"defaultSort\" >\r\n" +
181    " <bean parent=\"SortDefinition\">\r\n" +
182    " <property name=\"attributeNames\" >\r\n" +
183    " <list>\r\n" +
184    " <value>FILL ME IN</value>\r\n" +
185    " </list>\r\n" +
186    " </property>\r\n" +
187    " <property name=\"sortAscending\" value=\"true\" />\r\n" +
188    " </bean>\r\n" +
189    " </property>\r\n" +
190    " <property name=\"lookupFields\" >\r\n" +
191    " <list>\r\n" );
192  0 for ( PropertyDescriptor p : props ) {
193  0 if ( isNormalProperty(p) ) {
194  0 sb.append(" <bean parent=\"FieldDefinition\" p:attributeName=\"" );
195  0 sb.append( p.getName() ).append( "\" />\r\n" );
196    }
197    }
198  0 sb.append( " </list>\r\n" +
199    " </property>\r\n" +
200    " <property name=\"resultFields\" >\r\n" +
201    " <list>\r\n" );
202  0 for ( PropertyDescriptor p : props ) {
203  0 if ( isNormalProperty(p) ) {
204  0 sb.append(" <bean parent=\"FieldDefinition\" p:attributeName=\"" );
205  0 sb.append( p.getName() ).append( "\" />\r\n" );
206    }
207    }
208  0 sb.append( " </list>\r\n" +
209    " </property>\r\n" +
210    " </bean>\r\n" );
211  0 sb.append( "\r\n</beans>" );
212  0 System.out.println( sb.toString() );
213    }
214   
 
215  0 toggle public static String getSimpleAbstractInheritanceBean( Class<? extends BusinessObject> boClass, String propertyName, String parentBean ) {
216  0 StringBuffer sb = new StringBuffer( 100 );
217  0 sb.append( " <bean id=\"" );
218  0 sb.append( boClass.getSimpleName() );
219  0 sb.append( "-" ).append( propertyName ).append( "-parentBean\" abstract=\"true\" parent=\"" );
220  0 sb.append( parentBean ).append( "\" \r\n" );
221  0 sb.append( " p:name=\"" ).append( propertyName ).append( "\"\r\n" );
222  0 sb.append( " p:required=\"false\" />\r\n" );
223  0 return sb.toString();
224    }
225   
 
226  0 toggle public static String getSimpleAbstractInheritanceBeanWithLabel( Class<? extends BusinessObject> boClass, String propertyName, String parentBean, String label ) {
227  0 StringBuffer sb = new StringBuffer( 100 );
228  0 sb.append( " <bean id=\"" );
229  0 sb.append( boClass.getSimpleName() );
230  0 sb.append( "-" ).append( propertyName ).append( "-parentBean\" abstract=\"true\" parent=\"" );
231  0 sb.append( parentBean ).append( "\" \r\n" );
232  0 sb.append( " p:name=\"" ).append( propertyName ).append( "\"\r\n" );
233  0 sb.append( " p:label=\"" ).append( label ).append( "\"\r\n" );
234  0 sb.append( " p:required=\"false\" />\r\n" );
235  0 return sb.toString();
236    }
237   
 
238  0 toggle public static String getSimpleParentBeanReference( Class<? extends BusinessObject> boClass, String propertyName ) {
239  0 StringBuffer sb = new StringBuffer( 100 );
240  0 sb.append( " <bean id=\"" );
241  0 sb.append( boClass.getSimpleName() );
242  0 sb.append( "-" ).append( propertyName ).append( "\" parent=\"" );
243  0 sb.append( boClass.getSimpleName() );
244  0 sb.append( "-" ).append( propertyName ).append( "-parentBean\" />\r\n" );
245  0 return sb.toString();
246    }
247   
 
248  0 toggle public static boolean isNormalProperty( PropertyDescriptor p ) {
249  0 return p.getPropertyType()!= null
250    && !BusinessObject.class.isAssignableFrom( p.getPropertyType() )
251    && !p.getName().equals( "objectId" )
252    && !p.getName().equals( "class" )
253    && !p.getName().startsWith( "boNote" )
254    && !p.getName().startsWith( "autoIncrementSet" )
255    && !p.getName().equals( "newCollectionRecord" );
256    }
257   
 
258  0 toggle public static String camelCaseToString( String className ) {
259  0 StringBuffer newName = new StringBuffer( className );
260    // upper case the 1st letter
261  0 newName.replace(0, 1, newName.substring(0, 1).toUpperCase());
262    // loop through, inserting spaces when cap
263  0 for ( int i = 0; i < newName.length(); i++ ) {
264  0 if ( Character.isUpperCase(newName.charAt(i)) ) {
265  0 newName.insert(i, ' ');
266  0 i++;
267    }
268    }
269   
270  0 return newName.toString().trim().replace( "Uc", "UC" );
271    }
272    }