Changeset 3046
- Timestamp:
- 01/17/12 14:35:00 (4 months ago)
- Location:
- AnalyzerBeans/trunk
- Files:
-
- 9 edited
-
core/src/main/java/org/eobjects/analyzer/job/AbstractFilterOutcome.java (modified) (1 diff)
-
core/src/main/java/org/eobjects/analyzer/job/ImmutableFilterOutcome.java (modified) (1 diff)
-
core/src/main/java/org/eobjects/analyzer/job/ImmutableMergedOutcome.java (modified) (1 diff)
-
core/src/main/java/org/eobjects/analyzer/job/LazyMergedOutcome.java (modified) (3 diffs)
-
core/src/main/java/org/eobjects/analyzer/job/Outcome.java (modified) (1 diff)
-
core/src/main/java/org/eobjects/analyzer/job/builder/AbstractBeanWithInputColumnsBuilder.java (modified) (2 diffs)
-
core/src/main/java/org/eobjects/analyzer/job/builder/LazyFilterOutcome.java (modified) (2 diffs)
-
core/src/test/java/org/eobjects/analyzer/job/builder/AnalysisJobBuilderTest.java (modified) (2 diffs)
-
env/xml-config/src/main/java/org/eobjects/analyzer/job/JaxbJobReader.java (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
AnalyzerBeans/trunk/core/src/main/java/org/eobjects/analyzer/job/AbstractFilterOutcome.java
r3031 r3046 47 47 protected final void decorateIdentity(List<Object> identifiers) { 48 48 identifiers.add(getCategory()); 49 identifiers.add(get FilterJob());49 identifiers.add(getSourceJob()); 50 50 } 51 51 -
AnalyzerBeans/trunk/core/src/main/java/org/eobjects/analyzer/job/ImmutableFilterOutcome.java
r3031 r3046 31 31 _category = category; 32 32 } 33 34 @Override 35 public FilterJob getFilterJob() { 36 return _filterJob; 37 } 33 38 34 39 @Override 35 public FilterJob get FilterJob() {40 public FilterJob getSourceJob() { 36 41 return _filterJob; 37 42 } -
AnalyzerBeans/trunk/core/src/main/java/org/eobjects/analyzer/job/ImmutableMergedOutcome.java
r3031 r3046 49 49 return false; 50 50 } 51 52 @Override 53 public OutcomeSourceJob getSourceJob() { 54 return _mergedOutcomeJob; 55 } 51 56 } -
AnalyzerBeans/trunk/core/src/main/java/org/eobjects/analyzer/job/LazyMergedOutcome.java
r3031 r3046 23 23 24 24 public final class LazyMergedOutcome extends AbstractMergedOutcome implements MergedOutcome { 25 25 26 26 private static final long serialVersionUID = 1L; 27 27 … … 30 30 public LazyMergedOutcome(MergedOutcomeJobBuilder mergedOutcomeJobBuilder) { 31 31 _mergedOutcomeJobBuilder = mergedOutcomeJobBuilder; 32 }33 34 public MergedOutcomeJobBuilder getBuilder() {35 return _mergedOutcomeJobBuilder;36 32 } 37 33 … … 45 41 return _mergedOutcomeJobBuilder.toMergedOutcomeJob(); 46 42 } 43 44 @Override 45 public MergedOutcomeJobBuilder getSourceJob() { 46 return _mergedOutcomeJobBuilder; 47 } 47 48 } -
AnalyzerBeans/trunk/core/src/main/java/org/eobjects/analyzer/job/Outcome.java
r3031 r3046 35 35 36 36 /** 37 * Gets the source job for this outcome 38 * 39 * @return the source job for this outcome 40 */ 41 public OutcomeSourceJob getSourceJob(); 42 43 /** 37 44 * Requests whether or not a specific requirement is satisfied by this 38 45 * outcome -
AnalyzerBeans/trunk/core/src/main/java/org/eobjects/analyzer/job/builder/AbstractBeanWithInputColumnsBuilder.java
r3045 r3046 35 35 import org.eobjects.analyzer.job.Outcome; 36 36 import org.eobjects.analyzer.job.OutcomeSinkJob; 37 import org.eobjects.analyzer.job.OutcomeSourceJob; 37 38 import org.eobjects.analyzer.util.CollectionUtils2; 38 39 import org.eobjects.metamodel.util.CollectionUtils; … … 180 181 } 181 182 182 public void setRequirement(Outcome requirement) { 183 public void setRequirement(Outcome requirement) throws IllegalArgumentException { 184 if (!validateRequirementCandidate(requirement)) { 185 throw new IllegalArgumentException("Cyclic dependency detected when setting requirement: " + requirement); 186 } 183 187 if (_requirement != requirement) { 184 188 _requirement = requirement; 185 189 onRequirementChanged(); 186 190 } 191 } 192 193 public boolean validateRequirementCandidate(Outcome requirement) { 194 if (requirement == null) { 195 return true; 196 } 197 OutcomeSourceJob sourceJob = requirement.getSourceJob(); 198 if (sourceJob == this) { 199 return false; 200 } 201 if (sourceJob instanceof OutcomeSinkJob) { 202 Outcome[] requirements = ((OutcomeSinkJob) sourceJob).getRequirements(); 203 for (Outcome transitiveRequirement : requirements) { 204 boolean transitiveValidation = validateRequirementCandidate(transitiveRequirement); 205 if (!transitiveValidation) { 206 return false; 207 } 208 } 209 } 210 return true; 187 211 } 188 212 -
AnalyzerBeans/trunk/core/src/main/java/org/eobjects/analyzer/job/builder/LazyFilterOutcome.java
r3031 r3046 25 25 import org.eobjects.analyzer.job.ImmutableBeanConfiguration; 26 26 import org.eobjects.analyzer.job.ImmutableFilterJob; 27 import org.eobjects.analyzer.job.OutcomeSourceJob; 27 28 28 29 public final class LazyFilterOutcome extends AbstractFilterOutcome { 29 30 30 31 private static final long serialVersionUID = 1L; 31 32 … … 36 37 _filterJobBuilder = filterJobBuilder; 37 38 _category = category; 39 } 40 41 @Override 42 public OutcomeSourceJob getSourceJob() { 43 return _filterJobBuilder; 38 44 } 39 45 -
AnalyzerBeans/trunk/core/src/test/java/org/eobjects/analyzer/job/builder/AnalysisJobBuilderTest.java
r3000 r3046 39 39 import org.eobjects.analyzer.beans.stringpattern.PatternFinderAnalyzer; 40 40 import org.eobjects.analyzer.configuration.AnalyzerBeansConfigurationImpl; 41 import org.eobjects.analyzer.connection.DatastoreConnection;42 41 import org.eobjects.analyzer.connection.Datastore; 43 42 import org.eobjects.analyzer.connection.DatastoreCatalogImpl; 43 import org.eobjects.analyzer.connection.DatastoreConnection; 44 44 import org.eobjects.analyzer.connection.JdbcDatastore; 45 45 import org.eobjects.analyzer.data.DataTypeFamily; … … 78 78 } 79 79 80 public void testPreventCyclicFilterDependencies() throws Exception { 81 analysisJobBuilder.addSourceColumns("PUBLIC.EMPLOYEES.REPORTSTO"); 82 FilterJobBuilder<MaxRowsFilter, ValidationCategory> filter1 = analysisJobBuilder.addFilter(MaxRowsFilter.class); 83 FilterJobBuilder<NotNullFilter, ValidationCategory> filter2 = analysisJobBuilder.addFilter(NotNullFilter.class); 84 filter2.addInputColumn(analysisJobBuilder.getSourceColumnByName("reportsto")); 85 filter1.setRequirement(filter2.getOutcome(ValidationCategory.VALID)); 86 87 try { 88 filter2.setRequirement(filter1.getOutcome(ValidationCategory.VALID)); 89 fail("Exception expected"); 90 } catch (IllegalArgumentException e) { 91 assertEquals("Cyclic dependency detected when setting requirement: FilterOutcome[category=VALID]", 92 e.getMessage()); 93 } 94 } 95 80 96 public void testGetDatastore() throws Exception { 81 97 assertNotNull(analysisJobBuilder.getDatastore()); -
AnalyzerBeans/trunk/env/xml-config/src/main/java/org/eobjects/analyzer/job/JaxbJobReader.java
r2749 r3046 647 647 LazyMergedOutcome outcome = (LazyMergedOutcome) outcomeMapping 648 648 .get(id); 649 MergedOutcomeJobBuilder builder = outcome.get Builder();649 MergedOutcomeJobBuilder builder = outcome.getSourceJob(); 650 650 651 651 // map the input requirements and columns
Note: See TracChangeset
for help on using the changeset viewer.
