Changeset 980
- Timestamp:
- 08/28/10 14:22:32 (18 months ago)
- Location:
- AnalyzerBeans/trunk/src
- Files:
-
- 1 added
- 5 edited
-
main/java/org/eobjects/analyzer/job/JaxbJobFactory.java (modified) (1 diff)
-
main/java/org/eobjects/analyzer/result/Crosstab.java (modified) (3 diffs)
-
main/java/org/eobjects/analyzer/result/CrosstabResult.java (modified) (1 diff)
-
test/java/org/eobjects/analyzer/job/JaxbJobFactoryTest.java (modified) (3 diffs)
-
test/resources/example-job-missing-descriptor.xml (added)
-
test/resources/example-job-valid.xml (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/JaxbJobFactory.java
r978 r980 307 307 AbstractBeanJobBuilder<? extends BeanDescriptor<?>, ?, ?> builder, 308 308 ConfiguredPropertiesType configuredPropertiesType) { 309 List<Property> properties = configuredPropertiesType.getProperty(); 310 BeanDescriptor<?> descriptor = builder.getDescriptor(); 311 for (Property property : properties) { 312 String name = property.getName(); 313 String value = property.getValue(); 314 315 ConfiguredPropertyDescriptor configuredProperty = descriptor 316 .getConfiguredProperty(name); 317 318 // TODO: Convert value according to configuredProperty's type 319 builder.setConfiguredProperty(configuredProperty, value); 309 if (configuredPropertiesType != null) { 310 List<Property> properties = configuredPropertiesType.getProperty(); 311 BeanDescriptor<?> descriptor = builder.getDescriptor(); 312 for (Property property : properties) { 313 String name = property.getName(); 314 String value = property.getValue(); 315 316 ConfiguredPropertyDescriptor configuredProperty = descriptor 317 .getConfiguredProperty(name); 318 319 // TODO: Convert value according to configuredProperty's type 320 builder.setConfiguredProperty(configuredProperty, value); 321 } 320 322 } 321 323 } -
AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/result/Crosstab.java
r961 r980 9 9 import java.util.List; 10 10 import java.util.Map; 11 import java.util.Map.Entry; 12 import java.util.Set; 11 13 12 14 import org.apache.commons.lang.ArrayUtils; … … 22 24 private transient Map<String, ResultProducer> transientResultProducers; 23 25 private Class<E> valueClass; 24 26 25 27 public Crosstab(Class<E> valueClass, CrosstabDimension... dimensions) { 26 28 this.valueClass = valueClass; … … 196 198 return resultProducer; 197 199 } 200 201 @Override 202 public String toString() { 203 StringBuilder sb = new StringBuilder("Crosstab:"); 204 205 Set<Entry<String, E>> entrySet = values.entrySet(); 206 for (Entry<String, E> entry : entrySet) { 207 sb.append('\n'); 208 sb.append(entry.getKey().replaceAll("\\^", ",")); 209 sb.append(": "); 210 sb.append(entry.getValue()); 211 } 212 213 return sb.toString(); 214 } 198 215 } -
AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/result/CrosstabResult.java
r957 r980 23 23 return crosstab; 24 24 } 25 26 @Override 27 public String toString() { 28 return crosstab.toString(); 29 } 25 30 } -
AnalyzerBeans/trunk/src/test/java/org/eobjects/analyzer/job/JaxbJobFactoryTest.java
r978 r980 2 2 3 3 import java.io.File; 4 import java.util.Arrays; 5 import java.util.List; 4 6 7 import org.eobjects.analyzer.data.MetaModelInputColumn; 8 import org.eobjects.analyzer.job.runner.AnalysisRunnerImpl; 9 import org.eobjects.analyzer.result.AnalyzerResult; 10 import org.eobjects.analyzer.result.CrosstabResult; 5 11 import org.eobjects.analyzer.test.TestHelper; 6 12 … … 44 50 JaxbJobFactory factory = new JaxbJobFactory(configuration); 45 51 try { 46 factory.create(new File("src/test/resources/example-job-valid.xml")); 52 factory.create(new File( 53 "src/test/resources/example-job-missing-descriptor.xml")); 47 54 fail("Exception expected"); 48 55 } catch (IllegalStateException e) { … … 51 58 } 52 59 } 60 61 public void testValidJob() throws Exception { 62 AnalyzerBeansConfiguration configuration = TestHelper 63 .createAnalyzerBeansConfiguration(TestHelper 64 .createSampleDatabaseDatastore("my database")); 65 JaxbJobFactory factory = new JaxbJobFactory(configuration); 66 AnalysisJobBuilder builder = factory.create(new File( 67 "src/test/resources/example-job-valid.xml")); 68 assertTrue(builder.isConfigured()); 69 70 List<MetaModelInputColumn> sourceColumns = builder.getSourceColumns(); 71 assertEquals(3, sourceColumns.size()); 72 assertEquals( 73 "MetaModelInputColumn[JdbcColumn[name=FIRSTNAME,columnNumber=2,type=VARCHAR,nullable=false,indexed=false,nativeType=VARCHAR,columnSize=50]]", 74 sourceColumns.get(0).toString()); 75 assertEquals( 76 "MetaModelInputColumn[JdbcColumn[name=LASTNAME,columnNumber=1,type=VARCHAR,nullable=false,indexed=false,nativeType=VARCHAR,columnSize=50]]", 77 sourceColumns.get(1).toString()); 78 assertEquals( 79 "MetaModelInputColumn[JdbcColumn[name=EMAIL,columnNumber=4,type=VARCHAR,nullable=false,indexed=false,nativeType=VARCHAR,columnSize=100]]", 80 sourceColumns.get(2).toString()); 81 82 assertEquals(1, builder.getTransformerJobBuilders().size()); 83 assertEquals( 84 "[TransformedInputColumn[id=trans-1,name=username,type=STRING], " 85 + "TransformedInputColumn[id=trans-2,name=domain,type=STRING]]", 86 builder.getTransformerJobBuilders().get(0).getOutputColumns() 87 .toString()); 88 assertEquals( 89 "[TransformedInputColumn[id=trans-1,name=username,type=STRING], " 90 + "TransformedInputColumn[id=trans-2,name=domain,type=STRING], " 91 + "MetaModelInputColumn[JdbcColumn[name=FIRSTNAME,columnNumber=2,type=VARCHAR,nullable=false,indexed=false,nativeType=VARCHAR,columnSize=50]], " 92 + "MetaModelInputColumn[JdbcColumn[name=LASTNAME,columnNumber=1,type=VARCHAR,nullable=false,indexed=false,nativeType=VARCHAR,columnSize=50]]]", 93 Arrays.toString(builder.getAnalyzerJobBuilders().get(0) 94 .toAnalyzerJob().getInput())); 95 96 List<AnalyzerResult> results = new AnalysisRunnerImpl(configuration) 97 .run(builder.toAnalysisJob()).getResults(); 98 assertEquals(1, results.size()); 99 CrosstabResult crosstabResult = (CrosstabResult) results.get(0); 100 assertEquals("Crosstab:|" + "domain,Lowercase chars: 95%|" 101 + "domain,Uppercase chars: 0%|" + "domain,Avg white spaces: 0|" 102 + "username,Max chars: 10|" + "FIRSTNAME,Word count: 24|" 103 + "domain,Word count: 23|" + "username,Max white spaces: 0|" 104 + "FIRSTNAME,Max words: 2|" + "LASTNAME,Min words: 1|" 105 + "FIRSTNAME,Max white spaces: 1|" 106 + "username,Char count: 172|" + "username,Avg chars: 7,48|" 107 + "LASTNAME,Word count: 23|" + "username,Min white spaces: 0|" 108 + "LASTNAME,Max white spaces: 0|" + "LASTNAME,Char count: 147|" 109 + "FIRSTNAME,Avg chars: 5,39|" + "domain,Min white spaces: 0|" 110 + "domain,Max chars: 20|" + "LASTNAME,Avg chars: 6,39|" 111 + "username,Uppercase chars: 0%|" 112 + "username,Lowercase chars: 100%|" + "LASTNAME,Max words: 1|" 113 + "LASTNAME,Avg white spaces: 0|" + "LASTNAME,Min chars: 3|" 114 + "domain,Min chars: 20|" + "FIRSTNAME,Min white spaces: 0|" 115 + "username,Avg white spaces: 0|" 116 + "FIRSTNAME,Char count: 124|" 117 + "LASTNAME,Min white spaces: 0|" + "domain,Avg chars: 20|" 118 + "FIRSTNAME,Non-letter chars: 0%|" + "domain,Max words: 1|" 119 + "FIRSTNAME,Uppercase chars: 19%|" + "username,Max words: 1|" 120 + "FIRSTNAME,Min words: 1|" + "username,Min chars: 5|" 121 + "LASTNAME,Lowercase chars: 84%|" + "username,Min words: 1|" 122 + "FIRSTNAME,Max chars: 8|" + "domain,Min words: 1|" 123 + "FIRSTNAME,Avg white spaces: 0,04|" 124 + "username,Word count: 23|" + "LASTNAME,Uppercase chars: 15%|" 125 + "LASTNAME,Non-letter chars: 0%|" + "domain,Char count: 460|" 126 + "username,Non-letter chars: 0%|" + "FIRSTNAME,Min chars: 3|" 127 + "domain,Non-letter chars: 5%|" 128 + "domain,Max white spaces: 0|" 129 + "FIRSTNAME,Lowercase chars: 79%|" + "LASTNAME,Max chars: 9", 130 crosstabResult.toString().replaceAll("\n", "|")); 131 } 53 132 } -
AnalyzerBeans/trunk/src/test/resources/example-job-valid.xml
r978 r980 9 9 <data-context ref="my database" /> 10 10 <columns> 11 <column id="col 1" path="PUBLIC.EMPLOYEES.EMPLOYEENUMBER" />12 <column id="col 2" path="PUBLIC.EMPLOYEES.FIRSTNAME" />13 <column id="col 3" path="PUBLIC.EMPLOYEES.LASTNAME" />11 <column id="col_fn" path="PUBLIC.EMPLOYEES.FIRSTNAME" /> 12 <column id="col_ln" path="PUBLIC.EMPLOYEES.LASTNAME" /> 13 <column id="col_email" path="PUBLIC.EMPLOYEES.EMAIL" /> 14 14 </columns> 15 15 </source> … … 17 17 <transformation> 18 18 <transformer> 19 <descriptor ref="tokenizerDescriptor" /> 20 <input ref="col3" /> 21 <output id="pp1" /> 22 <output id="pp2" /> 23 <output id="pp3" /> 24 </transformer> 25 26 <transformer> 27 <descriptor ref="trimDescriptor" /> 28 <input ref="col2" /> 29 <output id="pp4" /> 30 </transformer> 31 32 <transformer> 33 <descriptor ref="replaceEmptyStringWithNullDescriptor" /> 34 <input ref="pp4" /> 35 <output id="pp5" /> 19 <descriptor ref="Email standardizer" /> 20 <input ref="col_email" /> 21 <output id="col_username" name="username" /> 22 <output id="col_domain" name="domain" /> 36 23 </transformer> 37 24 </transformation> … … 40 27 <analyzer> 41 28 <descriptor ref="String analyzer" /> 42 <input ref="col1" /> 43 <input ref="col2" /> 44 <input ref="pp1" /> 45 <input ref="pp2" /> 46 <input ref="pp3" /> 47 <input ref="pp5" /> 29 <input ref="col_username" /> 30 <input ref="col_domain" /> 31 <input ref="col_fn" /> 32 <input ref="col_ln" /> 48 33 </analyzer> 49 34 </analysis>
Note: See TracChangeset
for help on using the changeset viewer.
