Changeset 982


Ignore:
Timestamp:
08/28/10 21:55:08 (18 months ago)
Author:
kasper
Message:

Ticket #382: Added CLI for executing jobs

Location:
AnalyzerBeans/trunk
Files:
29 added
40 edited
2 moved

Legend:

Unmodified
Added
Removed
  • AnalyzerBeans/trunk/generate_jaxb_model.sh

    r979 r982  
    11#!/bin/sh 
    22xjc -d src/main/java -p org.eobjects.analyzer.job.jaxb src/main/resources/job.xsd 
     3xjc -d src/main/java -p org.eobjects.analyzer.configuration.jaxb src/main/resources/configuration.xsd 
  • AnalyzerBeans/trunk/pom.xml

    r978 r982  
    6262                                </configuration> 
    6363                        </plugin> 
     64                        <plugin> 
     65                                <groupId>org.apache.maven.plugins</groupId> 
     66                                <artifactId>maven-jar-plugin</artifactId> 
     67                                <configuration> 
     68                                        <archive> 
     69                                                <manifest> 
     70                                                        <addClasspath>true</addClasspath> 
     71                                                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
     72                                                        <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> 
     73                                                        <classpathPrefix>lib</classpathPrefix> 
     74                                                        <mainClass>org.eobjects.analyzer.cli.Main</mainClass> 
     75                                                </manifest> 
     76                                        </archive> 
     77                                </configuration> 
     78                        </plugin> 
     79                        <plugin> 
     80                                <groupId>org.apache.maven.plugins</groupId> 
     81                                <artifactId>maven-dependency-plugin</artifactId> 
     82                                <executions> 
     83                                        <execution> 
     84                                                <id>copy-dependencies</id> 
     85                                                <phase>package</phase> 
     86                                                <goals> 
     87                                                        <goal>copy-dependencies</goal> 
     88                                                </goals> 
     89                                                <configuration> 
     90                                                        <includeScope>runtime</includeScope> 
     91                                                        <outputDirectory>${project.build.directory}/lib</outputDirectory> 
     92                                                </configuration> 
     93                                        </execution> 
     94                                </executions> 
     95                        </plugin> 
    6496                </plugins> 
    6597        </build> 
     
    112144                </dependency> 
    113145                <dependency> 
     146                        <groupId>args4j</groupId> 
     147                        <artifactId>args4j</artifactId> 
     148                        <version>2.0.12</version> 
     149                </dependency> 
     150                <dependency> 
    114151                        <groupId>org.slf4j</groupId> 
    115152                        <artifactId>slf4j-jcl</artifactId> 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/beans/EmailStandardizerTransformer.java

    r966 r982  
    2323 
    2424        public static enum EmailPart implements HasGroupLiteral { 
    25                 USERNAME("([a-zA-Z0-9\\._%+-]+)"), DOMAIN("([a-zA-Z0-9\\._%+-]+\\.[a-zA-Z0-9\\._%+-]{2,4})"); 
     25                USERNAME("([a-zA-Z0-9\\._%+-]+)"), DOMAIN( 
     26                                "([a-zA-Z0-9\\._%+-]+\\.[a-zA-Z0-9\\._%+-]{2,4})"); 
    2627 
    2728                private String groupLiteral; 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/configuration/AnalyzerBeansConfiguration.java

    r926 r982  
    1 package org.eobjects.analyzer.job; 
     1package org.eobjects.analyzer.configuration; 
    22 
    33import java.io.Serializable; 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/configuration/AnalyzerBeansConfigurationImpl.java

    r967 r982  
    1 package org.eobjects.analyzer.job; 
     1package org.eobjects.analyzer.configuration; 
    22 
    33import org.eobjects.analyzer.connection.DatastoreCatalog; 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/connection/DataSourceDataContextProvider.java

    r968 r982  
    1212        private final DataContext dataContext; 
    1313        private final SchemaNavigator schemaNavigator; 
    14  
    15         // TODO: Lazy load datacontext based on JNDI name? 
    1614 
    1715        public DataSourceDataContextProvider(DataSource ds) { 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/connection/JdbcDatastore.java

    r947 r982  
    55import java.sql.DriverManager; 
    66import java.sql.SQLException; 
     7 
     8import javax.naming.InitialContext; 
     9import javax.sql.DataSource; 
     10 
     11import org.eobjects.analyzer.util.StringUtils; 
    712 
    813import dk.eobjects.metamodel.DataContext; 
     
    1419 
    1520        private String _name; 
    16         private String _url; 
     21        private String _jdbcUrl; 
    1722        private String _username; 
    1823        private String _password; 
    1924        private String _driverClass; 
     25        private String _datasourceJndiUrl; 
    2026        private transient DataContextProvider _dataContextProvider; 
    2127        private transient Connection _connection; 
    2228 
    23         public JdbcDatastore(String name, String url, String driverClass) { 
     29        public JdbcDatastore(String name, String jdbcUrl, String driverClass) { 
    2430                _name = name; 
    25                 _url = url; 
     31                _jdbcUrl = jdbcUrl; 
    2632                _driverClass = driverClass; 
    2733        } 
     
    3440        } 
    3541 
    36         public String getUrl() { 
    37                 return _url; 
     42        public JdbcDatastore(String name, String datasourceJndiUrl) { 
     43                _name = name; 
     44                _datasourceJndiUrl = datasourceJndiUrl; 
     45 
    3846        } 
    3947 
    40         public void setUrl(String url) { 
    41                 _url = url; 
     48        public String getJdbcUrl() { 
     49                return _jdbcUrl; 
    4250        } 
    4351 
     
    4654        } 
    4755 
    48         public void setUsername(String username) { 
    49                 synchronized (this) { 
    50                         _username = username; 
    51                 } 
    52         } 
    53  
    5456        public String getPassword() { 
    5557                return _password; 
    5658        } 
    5759 
    58         public void setPassword(String password) { 
    59                 synchronized (this) { 
    60                         _password = password; 
    61                 } 
    62         } 
    63  
    6460        public String getDriverClass() { 
    6561                return _driverClass; 
    66         } 
    67  
    68         public void setDriverClass(String driverClass) { 
    69                 _driverClass = driverClass; 
    7062        } 
    7163 
     
    7567        } 
    7668 
    77         public void setName(String name) { 
    78                 _name = name; 
     69        public String getDatasourceJndiUrl() { 
     70                return _datasourceJndiUrl; 
    7971        } 
    8072 
     
    8476                        synchronized (this) { 
    8577                                if (_dataContextProvider == null) { 
    86                                         try { 
    87                                                 Class.forName(_driverClass); 
    88                                         } catch (ClassNotFoundException e) { 
    89                                                 throw new IllegalStateException( 
    90                                                                 "Could not initialize JDBC driver", e); 
     78                                        if (StringUtils.isNullOrEmpty(_datasourceJndiUrl)) { 
     79                                                try { 
     80                                                        Class.forName(_driverClass); 
     81                                                } catch (ClassNotFoundException e) { 
     82                                                        throw new IllegalStateException( 
     83                                                                        "Could not initialize JDBC driver", e); 
     84                                                } 
     85                                                try { 
     86                                                        if (_username == null && _password == null) { 
     87                                                                _connection = DriverManager 
     88                                                                                .getConnection(_jdbcUrl); 
     89                                                        } else { 
     90                                                                _connection = DriverManager.getConnection( 
     91                                                                                _jdbcUrl, _username, _password); 
     92                                                        } 
     93                                                } catch (SQLException e) { 
     94                                                        throw new IllegalStateException( 
     95                                                                        "Could not establish JDBC connection", e); 
     96                                                } 
     97 
     98                                                DataContext dataContext = DataContextFactory 
     99                                                                .createJdbcDataContext(_connection); 
     100                                                _dataContextProvider = new SingleDataContextProvider( 
     101                                                                dataContext); 
     102                                        } else { 
     103                                                try { 
     104                                                        InitialContext initialContext = new InitialContext(); 
     105                                                        DataSource dataSource = (DataSource) initialContext 
     106                                                                        .lookup(_datasourceJndiUrl); 
     107                                                        _dataContextProvider = new DataSourceDataContextProvider( 
     108                                                                        dataSource); 
     109                                                } catch (Exception e) { 
     110                                                        throw new IllegalStateException(e); 
     111                                                } 
    91112                                        } 
    92                                         try { 
    93                                                 if (_username == null && _password == null) { 
    94                                                         _connection = DriverManager.getConnection(_url); 
    95                                                 } else { 
    96                                                         _connection = DriverManager.getConnection(_url, 
    97                                                                         _username, _password); 
    98                                                 } 
    99                                         } catch (SQLException e) { 
    100                                                 throw new IllegalStateException( 
    101                                                                 "Could not establish JDBC connection", e); 
    102                                         } 
    103  
    104                                         DataContext dataContext = DataContextFactory 
    105                                                         .createJdbcDataContext(_connection); 
    106                                         _dataContextProvider = new SingleDataContextProvider( 
    107                                                         dataContext); 
    108113                                } 
    109114                        } 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/descriptors/ClasspathScanDescriptorProvider.java

    r978 r982  
    66import java.io.FilenameFilter; 
    77import java.io.IOException; 
     8import java.io.InputStream; 
     9import java.net.JarURLConnection; 
    810import java.net.URL; 
     11import java.net.URLConnection; 
    912import java.util.Collection; 
    1013import java.util.Collections; 
     
    1215import java.util.HashMap; 
    1316import java.util.Map; 
     17import java.util.jar.JarEntry; 
     18import java.util.jar.JarFile; 
    1419 
    1520import org.eobjects.analyzer.beans.Analyzer; 
     
    2025import org.slf4j.LoggerFactory; 
    2126 
    22 public final class ClasspathScanDescriptorProvider implements 
    23                 DescriptorProvider { 
     27public final class ClasspathScanDescriptorProvider extends 
     28                AbstractDescriptorProvider { 
    2429 
    2530        private static final Logger logger = LoggerFactory 
    2631                        .getLogger(ClasspathScanDescriptorProvider.class); 
     32 
    2733        private Map<Class<? extends Analyzer<?>>, AnalyzerBeanDescriptor<?>> _analyzerBeanDescriptors = new HashMap<Class<? extends Analyzer<?>>, AnalyzerBeanDescriptor<?>>(); 
    2834        private Map<Class<? extends Transformer<?>>, TransformerBeanDescriptor<?>> _transformerBeanDescriptors = new HashMap<Class<? extends Transformer<?>>, TransformerBeanDescriptor<?>>(); 
    2935        private Map<Class<? extends Renderer<?, ?>>, RendererBeanDescriptor> _rendererBeanDescriptors = new HashMap<Class<? extends Renderer<?, ?>>, RendererBeanDescriptor>(); 
    3036 
    31         @Override 
    32         public AnalyzerBeanDescriptor<?> getAnalyzerBeanDescriptorByDisplayName( 
    33                         String name) { 
    34                 Collection<AnalyzerBeanDescriptor<?>> analyzerBeanDescriptors = getAnalyzerBeanDescriptors(); 
    35                 for (AnalyzerBeanDescriptor<?> analyzerBeanDescriptor : analyzerBeanDescriptors) { 
    36                         if (name.equals(analyzerBeanDescriptor.getDisplayName())) { 
    37                                 return analyzerBeanDescriptor; 
    38                         } 
    39                 } 
    40                 return null; 
    41         } 
    42  
    43         @Override 
    44         public TransformerBeanDescriptor<?> getTransformerBeanDescriptorByDisplayName( 
    45                         String name) { 
    46                 Collection<TransformerBeanDescriptor<?>> transformerBeanDescriptors = getTransformerBeanDescriptors(); 
    47                 for (TransformerBeanDescriptor<?> transformerBeanDescriptor : transformerBeanDescriptors) { 
    48                         if (name.equals(transformerBeanDescriptor.getDisplayName())) { 
    49                                 return transformerBeanDescriptor; 
    50                         } 
    51                 } 
    52                 return null; 
    53         } 
    54  
    5537        public ClasspathScanDescriptorProvider scanPackage(String packageName, 
    5638                        boolean recursive) { 
    5739                String packagePath = packageName.replace('.', '/'); 
     40                logger.debug("Scanning package path: {}", packagePath); 
    5841                try { 
    5942                        Enumeration<URL> resources = ClassLoader 
     
    6245                                URL resource = resources.nextElement(); 
    6346                                File dir = new File(resource.getFile()); 
    64                                 scanDirectory(dir, recursive); 
     47 
     48                                if (dir.isDirectory()) { 
     49                                        logger.debug("Resource is a file, scanning directory: {}", 
     50                                                        dir.getAbsolutePath()); 
     51                                        scanDirectory(dir, recursive); 
     52                                } else { 
     53                                        URLConnection connection = resource.openConnection(); 
     54                                        if (connection instanceof JarURLConnection) { 
     55                                                JarURLConnection jarUrlConnection = (JarURLConnection) connection; 
     56                                                logger.debug("Resource is a JAR file, scanning file: " 
     57                                                                + jarUrlConnection.getJarFile().getName()); 
     58                                                scanJar(jarUrlConnection, packagePath, recursive); 
     59                                        } else { 
     60                                                throw new IllegalStateException( 
     61                                                                "Unknown connection type: " + connection); 
     62                                        } 
     63                                } 
    6564                        } 
    6665                } catch (IOException e) { 
     
    6968 
    7069                return this; 
     70        } 
     71 
     72        private void scanJar(JarURLConnection jarUrlConnection, String packagePath, 
     73                        boolean recursive) throws IOException { 
     74                JarFile jarFile = jarUrlConnection.getJarFile(); 
     75                Enumeration<JarEntry> entries = jarFile.entries(); 
     76 
     77                while (entries.hasMoreElements()) { 
     78                        JarEntry entry = entries.nextElement(); 
     79                        String entryName = entry.getName(); 
     80                        if (entryName.startsWith(packagePath) 
     81                                        && entryName.endsWith(".class")) { 
     82                                if (recursive) { 
     83                                        InputStream inputStream = jarFile.getInputStream(entry); 
     84                                        scanInputStream(inputStream); 
     85                                } else { 
     86                                        String trailingPart = entryName.substring(packagePath 
     87                                                        .length()); 
     88                                        if (trailingPart.startsWith("/")) { 
     89                                                trailingPart = trailingPart.substring(1); 
     90                                        } 
     91                                        if (trailingPart.indexOf('/') == -1) { 
     92                                                InputStream inputStream = jarFile.getInputStream(entry); 
     93                                                scanInputStream(inputStream); 
     94                                        } else { 
     95                                                logger.info("Omitting recursive JAR file entry: {}", 
     96                                                                entryName); 
     97                                        } 
     98                                } 
     99                        } else { 
     100                                logger.info("Omitting JAR file entry: {}", entryName); 
     101                        } 
     102                } 
    71103        } 
    72104 
     
    91123                for (File file : classFiles) { 
    92124                        try { 
    93                                 BeanClassVisitor visitor = new BeanClassVisitor(); 
    94                                 ClassReader classReader = new ClassReader(new FileInputStream( 
    95                                                 file)); 
    96                                 classReader.accept(visitor, ClassReader.SKIP_CODE); 
    97  
    98                                 if (visitor.isAnalyzer()) { 
    99                                         @SuppressWarnings("unchecked") 
    100                                         Class<? extends Analyzer<?>> analyzerClass = (Class<? extends Analyzer<?>>) visitor 
    101                                                         .getBeanClass(); 
    102                                         AnalyzerBeanDescriptor<?> descriptor = _analyzerBeanDescriptors 
    103                                                         .get(analyzerClass); 
    104                                         if (descriptor == null) { 
    105                                                 descriptor = AnnotationBasedAnalyzerBeanDescriptor 
    106                                                                 .create(analyzerClass); 
    107                                                 _analyzerBeanDescriptors.put(analyzerClass, descriptor); 
    108                                         } 
    109                                 } 
    110                                 if (visitor.isTransformer()) { 
    111                                         @SuppressWarnings("unchecked") 
    112                                         Class<? extends Transformer<?>> transformerClass = (Class<? extends Transformer<?>>) visitor 
    113                                                         .getBeanClass(); 
    114                                         TransformerBeanDescriptor<?> descriptor = _transformerBeanDescriptors 
    115                                                         .get(transformerClass); 
    116                                         if (descriptor == null) { 
    117                                                 descriptor = AnnotationBasedTransformerBeanDescriptor 
    118                                                                 .create(transformerClass); 
    119                                                 _transformerBeanDescriptors.put(transformerClass, 
    120                                                                 descriptor); 
    121                                         } 
    122                                 } 
    123                                 if (visitor.isRenderer()) { 
    124                                         @SuppressWarnings("unchecked") 
    125                                         Class<? extends Renderer<?, ?>> rendererClass = (Class<? extends Renderer<?, ?>>) visitor 
    126                                                         .getBeanClass(); 
    127                                         RendererBeanDescriptor descriptor = _rendererBeanDescriptors 
    128                                                         .get(rendererClass); 
    129                                         if (descriptor == null) { 
    130                                                 descriptor = new AnnotationBasedRendererBeanDescriptor( 
    131                                                                 rendererClass); 
    132                                                 _rendererBeanDescriptors.put(rendererClass, descriptor); 
    133                                         } 
    134                                 } 
     125                                InputStream inputStream = new FileInputStream(file); 
     126                                scanInputStream(inputStream); 
    135127                        } catch (IOException e) { 
    136128                                logger.error("Could not read file", e); 
     
    155147        } 
    156148 
     149        protected void scanInputStream(InputStream inputStream) throws IOException { 
     150                ClassReader classReader = new ClassReader(inputStream); 
     151                BeanClassVisitor visitor = new BeanClassVisitor(); 
     152                classReader.accept(visitor, ClassReader.SKIP_CODE); 
     153 
     154                if (visitor.isAnalyzer()) { 
     155                        @SuppressWarnings("unchecked") 
     156                        Class<? extends Analyzer<?>> analyzerClass = (Class<? extends Analyzer<?>>) visitor 
     157                                        .getBeanClass(); 
     158                        AnalyzerBeanDescriptor<?> descriptor = _analyzerBeanDescriptors 
     159                                        .get(analyzerClass); 
     160                        if (descriptor == null) { 
     161                                descriptor = AnnotationBasedAnalyzerBeanDescriptor 
     162                                                .create(analyzerClass); 
     163                                _analyzerBeanDescriptors.put(analyzerClass, descriptor); 
     164                        } 
     165                } 
     166                if (visitor.isTransformer()) { 
     167                        @SuppressWarnings("unchecked") 
     168                        Class<? extends Transformer<?>> transformerClass = (Class<? extends Transformer<?>>) visitor 
     169                                        .getBeanClass(); 
     170                        TransformerBeanDescriptor<?> descriptor = _transformerBeanDescriptors 
     171                                        .get(transformerClass); 
     172                        if (descriptor == null) { 
     173                                descriptor = AnnotationBasedTransformerBeanDescriptor 
     174                                                .create(transformerClass); 
     175                                _transformerBeanDescriptors.put(transformerClass, descriptor); 
     176                        } 
     177                } 
     178                if (visitor.isRenderer()) { 
     179                        @SuppressWarnings("unchecked") 
     180                        Class<? extends Renderer<?, ?>> rendererClass = (Class<? extends Renderer<?, ?>>) visitor 
     181                                        .getBeanClass(); 
     182                        RendererBeanDescriptor descriptor = _rendererBeanDescriptors 
     183                                        .get(rendererClass); 
     184                        if (descriptor == null) { 
     185                                descriptor = new AnnotationBasedRendererBeanDescriptor( 
     186                                                rendererClass); 
     187                                _rendererBeanDescriptors.put(rendererClass, descriptor); 
     188                        } 
     189                } 
     190        } 
     191 
    157192        @Override 
    158193        public Collection<AnalyzerBeanDescriptor<?>> getAnalyzerBeanDescriptors() { 
     
    161196        } 
    162197 
    163         @SuppressWarnings("unchecked") 
    164         @Override 
    165         public <A extends Analyzer<?>> AnalyzerBeanDescriptor<A> getAnalyzerBeanDescriptorForClass( 
    166                         Class<A> analyzerBeanClass) { 
    167                 return (AnalyzerBeanDescriptor<A>) _analyzerBeanDescriptors 
    168                                 .get(analyzerBeanClass); 
    169         } 
    170  
    171198        @Override 
    172199        public Collection<TransformerBeanDescriptor<?>> getTransformerBeanDescriptors() { 
     
    175202        } 
    176203 
    177         @SuppressWarnings("unchecked") 
    178         @Override 
    179         public <T extends Transformer<?>> TransformerBeanDescriptor<T> getTransformerBeanDescriptorForClass( 
    180                         Class<T> transformerBeanClass) { 
    181                 return (TransformerBeanDescriptor<T>) _transformerBeanDescriptors 
    182                                 .get(transformerBeanClass); 
    183         } 
    184  
    185204        @Override 
    186205        public Collection<RendererBeanDescriptor> getRendererBeanDescriptors() { 
     
    188207                                .values()); 
    189208        } 
    190  
    191         @Override 
    192         public RendererBeanDescriptor getRendererBeanDescriptorForClass( 
    193                         Class<? extends Renderer<?, ?>> rendererBeanClass) { 
    194                 return _rendererBeanDescriptors.get(rendererBeanClass); 
    195         } 
    196209} 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/descriptors/SimpleDescriptorProvider.java

    r978 r982  
    4040 * @author Kasper SÞrensen 
    4141 */ 
    42 public class SimpleDescriptorProvider implements DescriptorProvider { 
     42public class SimpleDescriptorProvider extends AbstractDescriptorProvider { 
    4343 
    4444        private List<AnalyzerBeanDescriptor<?>> _analyzerBeanDescriptors = new ArrayList<AnalyzerBeanDescriptor<?>>(); 
     
    7474        } 
    7575 
    76         @SuppressWarnings("unchecked") 
    77         @Override 
    78         public <A extends Analyzer<?>> AnalyzerBeanDescriptor<A> getAnalyzerBeanDescriptorForClass( 
    79                         Class<A> analyzerBeanClass) { 
    80                 for (AnalyzerBeanDescriptor<?> descriptor : _analyzerBeanDescriptors) { 
    81                         if (descriptor.getBeanClass() == analyzerBeanClass) { 
    82                                 return (AnalyzerBeanDescriptor<A>) descriptor; 
    83                         } 
    84                 } 
    85                 return null; 
    86         } 
    87  
    88         @SuppressWarnings("unchecked") 
    89         @Override 
    90         public <T extends Transformer<?>> TransformerBeanDescriptor<T> getTransformerBeanDescriptorForClass( 
    91                         Class<T> transformerBeanClass) { 
    92                 for (TransformerBeanDescriptor<?> descriptor : _transformerBeanDescriptors) { 
    93                         if (descriptor.getBeanClass() == transformerBeanClass) { 
    94                                 return (TransformerBeanDescriptor<T>) descriptor; 
    95                         } 
    96                 } 
    97                 return null; 
    98         } 
    99  
    10076        @Override 
    10177        public List<TransformerBeanDescriptor<?>> getTransformerBeanDescriptors() { 
     
    11692                        List<RendererBeanDescriptor> rendererBeanDescriptors) { 
    11793                _rendererBeanDescriptors = rendererBeanDescriptors; 
    118         } 
    119  
    120         @Override 
    121         public RendererBeanDescriptor getRendererBeanDescriptorForClass( 
    122                         Class<? extends Renderer<?, ?>> rendererBeanClass) { 
    123                 for (RendererBeanDescriptor descriptor : _rendererBeanDescriptors) { 
    124                         if (descriptor.getBeanClass() == rendererBeanClass) { 
    125                                 return descriptor; 
    126                         } 
    127                 } 
    128                 return null; 
    12994        } 
    13095 
     
    170135                } 
    171136        } 
    172  
    173         @Override 
    174         public AnalyzerBeanDescriptor<?> getAnalyzerBeanDescriptorByDisplayName( 
    175                         String name) { 
    176                 Collection<AnalyzerBeanDescriptor<?>> analyzerBeanDescriptors = getAnalyzerBeanDescriptors(); 
    177                 for (AnalyzerBeanDescriptor<?> analyzerBeanDescriptor : analyzerBeanDescriptors) { 
    178                         if (name.equals(analyzerBeanDescriptor.getDisplayName())) { 
    179                                 return analyzerBeanDescriptor; 
    180                         } 
    181                 } 
    182                 return null; 
    183         } 
    184  
    185         @Override 
    186         public TransformerBeanDescriptor<?> getTransformerBeanDescriptorByDisplayName( 
    187                         String name) { 
    188                 Collection<TransformerBeanDescriptor<?>> transformerBeanDescriptors = getTransformerBeanDescriptors(); 
    189                 for (TransformerBeanDescriptor<?> transformerBeanDescriptor : transformerBeanDescriptors) { 
    190                         if (name.equals(transformerBeanDescriptor.getDisplayName())) { 
    191                                 return transformerBeanDescriptor; 
    192                         } 
    193                 } 
    194                 return null; 
    195         } 
    196137} 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/AnalysisJobBuilder.java

    r978 r982  
    1010import org.eobjects.analyzer.beans.RowProcessingAnalyzer; 
    1111import org.eobjects.analyzer.beans.Transformer; 
     12import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
    1213import org.eobjects.analyzer.connection.DataContextProvider; 
    1314import org.eobjects.analyzer.connection.Datastore; 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/JaxbJobFactory.java

    r980 r982  
    1414import javax.xml.bind.JAXBException; 
    1515import javax.xml.bind.Unmarshaller; 
    16 import javax.xml.bind.ValidationEvent; 
    17 import javax.xml.bind.ValidationEventHandler; 
    1816 
    1917import org.eobjects.analyzer.beans.ExploringAnalyzer; 
    2018import org.eobjects.analyzer.beans.RowProcessingAnalyzer; 
     19import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
    2120import org.eobjects.analyzer.connection.DataContextProvider; 
    2221import org.eobjects.analyzer.connection.Datastore; 
     
    3736import org.eobjects.analyzer.job.jaxb.InputType; 
    3837import org.eobjects.analyzer.job.jaxb.Job; 
     38import org.eobjects.analyzer.job.jaxb.JobMetadataType; 
    3939import org.eobjects.analyzer.job.jaxb.ObjectFactory; 
    4040import org.eobjects.analyzer.job.jaxb.OutputType; 
     
    4343import org.eobjects.analyzer.job.jaxb.TransformerDescriptorType; 
    4444import org.eobjects.analyzer.job.jaxb.TransformerType; 
     45import org.eobjects.analyzer.util.JaxbValidationEventHandler; 
    4546import org.eobjects.analyzer.util.SchemaNavigator; 
     47import org.eobjects.analyzer.util.StringUtils; 
    4648import org.slf4j.Logger; 
    4749import org.slf4j.LoggerFactory; 
     
    7981                        Unmarshaller unmarshaller = _jaxbContext.createUnmarshaller(); 
    8082 
    81                         unmarshaller.setEventHandler(new ValidationEventHandler() { 
    82                                 @Override 
    83                                 public boolean handleEvent(ValidationEvent event) { 
    84                                         int severity = event.getSeverity(); 
    85                                         if (severity == ValidationEvent.WARNING) { 
    86                                                 logger.warn("encountered JAXB parsing warning: " 
    87                                                                 + event.getMessage()); 
    88                                                 return true; 
    89                                         } 
    90  
    91                                         logger.warn("encountered JAXB parsing error: " 
    92                                                         + event.getMessage()); 
    93                                         return false; 
    94                                 } 
    95                         }); 
     83                        unmarshaller.setEventHandler(new JaxbValidationEventHandler()); 
    9684                        Job job = (Job) unmarshaller.unmarshal(inputStream); 
    9785                        return create(job); 
     
    10290 
    10391        public AnalysisJobBuilder create(Job job) { 
     92                JobMetadataType metadata = job.getJobMetadata(); 
     93                if (metadata != null) { 
     94                        logger.info("Job name: {}", metadata.getJobName()); 
     95                        logger.info("Job version: {}", metadata.getJobVersion()); 
     96                        logger.info("Job description: {}", metadata.getJobDescription()); 
     97                        logger.info("Author: {}", metadata.getAuthor()); 
     98                        logger.info("Created date: {}", metadata.getCreatedDate()); 
     99                        logger.info("Updated date: {}", metadata.getUpdatedDate()); 
     100                } 
     101 
    104102                SourceType source = job.getSource(); 
    105103 
     
    109107                DataContextType dataContext = source.getDataContext(); 
    110108                String ref = dataContext.getRef(); 
    111                 if (isNullOrEmpty(ref)) { 
     109                if (StringUtils.isNullOrEmpty(ref)) { 
    112110                        throw new IllegalStateException("Datastore ref cannot be null"); 
    113111                } 
     
    131129                for (ColumnType column : columns) { 
    132130                        String path = column.getPath(); 
    133                         if (isNullOrEmpty(path)) { 
     131                        if (StringUtils.isNullOrEmpty(path)) { 
    134132                                throw new IllegalStateException("Column path cannot be null"); 
    135133                        } 
     
    141139                                        physicalColumn); 
    142140                        String id = column.getId(); 
    143                         if (isNullOrEmpty(id)) { 
     141                        if (StringUtils.isNullOrEmpty(id)) { 
    144142                                throw new IllegalStateException( 
    145143                                                "Source column id cannot be null"); 
     
    158156                        TransformerDescriptorType descriptor = transformer.getDescriptor(); 
    159157                        ref = descriptor.getRef(); 
    160                         if (isNullOrEmpty(ref)) { 
     158                        if (StringUtils.isNullOrEmpty(ref)) { 
    161159                                throw new IllegalStateException( 
    162160                                                "Transformer descriptor ref cannot be null"); 
     
    189187                                for (InputType inputType : input) { 
    190188                                        ref = inputType.getRef(); 
    191                                         if (isNullOrEmpty(ref)) { 
     189                                        if (StringUtils.isNullOrEmpty(ref)) { 
    192190                                                throw new IllegalStateException( 
    193191                                                                "Transformer input column ref cannot be null"); 
     
    220218                                                MutableInputColumn<?> o2 = outputColumns.get(i); 
    221219                                                String name = o1.getName(); 
    222                                                 if (!isNullOrEmpty(name)) { 
     220                                                if (!StringUtils.isNullOrEmpty(name)) { 
    223221                                                        o2.setName(name); 
    224222                                                } 
    225223                                                String id = o1.getId(); 
    226                                                 if (isNullOrEmpty(id)) { 
     224                                                if (StringUtils.isNullOrEmpty(id)) { 
    227225                                                        throw new IllegalStateException( 
    228226                                                                        "Transformer output column id cannot be null"); 
     
    240238                for (AnalyzerType analyzerType : analyzers) { 
    241239                        ref = analyzerType.getDescriptor().getRef(); 
    242                         if (isNullOrEmpty(ref)) { 
     240                        if (StringUtils.isNullOrEmpty(ref)) { 
    243241                                throw new IllegalStateException( 
    244242                                                "Analyzer descriptor ref cannot be null"); 
     
    264262                                for (InputType inputType : input) { 
    265263                                        ref = inputType.getRef(); 
    266                                         if (isNullOrEmpty(ref)) { 
     264                                        if (StringUtils.isNullOrEmpty(ref)) { 
    267265                                                throw new IllegalStateException( 
    268266                                                                "Analyzer input column ref cannot be null"); 
     
    300298        } 
    301299 
    302         private boolean isNullOrEmpty(String str) { 
    303                 return str == null || str.trim().length() == 0; 
    304         } 
    305  
    306300        private void applyProperties( 
    307301                        AbstractBeanJobBuilder<? extends BeanDescriptor<?>, ?, ?> builder, 
     
    313307                                String name = property.getName(); 
    314308                                String value = property.getValue(); 
    315                                  
     309 
    316310                                ConfiguredPropertyDescriptor configuredProperty = descriptor 
    317                                 .getConfiguredProperty(name); 
    318                                  
     311                                                .getConfiguredProperty(name); 
     312 
    319313                                // TODO: Convert value according to configuredProperty's type 
    320314                                builder.setConfiguredProperty(configuredProperty, value); 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/concurrent/EjbTimerTaskRunnerBean.java

    r949 r982  
    4343                } 
    4444        } 
     45 
     46        @Override 
     47        public void shutdown() { 
     48                logger.info("shutdown() called, nothing to do"); 
     49        } 
    4550} 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/concurrent/MultiThreadedTaskRunner.java

    r949 r982  
    88import org.slf4j.LoggerFactory; 
    99 
    10 public class MultiThreadedTaskRunner implements TaskRunner { 
     10public final class MultiThreadedTaskRunner implements TaskRunner { 
    1111 
    1212        private final Logger logger = LoggerFactory.getLogger(getClass()); 
    13          
    14         private ExecutorService threadPool; 
     13 
     14        private ExecutorService executorService; 
    1515 
    1616        public MultiThreadedTaskRunner() { 
    17                 threadPool = Executors.newCachedThreadPool(); 
     17                executorService = Executors.newCachedThreadPool(); 
    1818        } 
    19          
     19 
    2020        public MultiThreadedTaskRunner(int numThreads) { 
    21                 threadPool = Executors.newFixedThreadPool(numThreads); 
     21                executorService = Executors.newFixedThreadPool(numThreads); 
     22        } 
     23 
     24        @Override 
     25        public void run(Task task) { 
     26                logger.debug("run({})", task); 
     27                executorService.submit(new TaskRunnable(task)); 
     28        } 
     29 
     30        @Override 
     31        public void shutdown() { 
     32                logger.info("shutdown() called, shutting down executor service"); 
     33                executorService.shutdown(); 
    2234        } 
    2335         
    2436        @Override 
    25         public void run(Task task) { 
    26                 logger.debug("run({})", task); 
    27                 threadPool.submit(new TaskRunnable(task)); 
     37        protected void finalize() throws Throwable { 
     38                shutdown(); 
    2839        } 
    2940} 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/concurrent/SingleThreadedTaskRunner.java

    r968 r982  
    88import org.slf4j.LoggerFactory; 
    99 
    10 public class SingleThreadedTaskRunner implements TaskRunner { 
     10public final class SingleThreadedTaskRunner implements TaskRunner { 
    1111 
    1212        private final Logger logger = LoggerFactory.getLogger(getClass()); 
     
    4949                } 
    5050        } 
     51         
     52        @Override 
     53        public void shutdown() { 
     54                logger.info("shutdown() called, nothing to do"); 
     55        } 
    5156} 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/concurrent/TaskRunner.java

    r926 r982  
    66 
    77        public void run(Task task); 
     8         
     9        public void shutdown(); 
    810} 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/AnalysisType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/AnalyzerDescriptorType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/AnalyzerType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/ColumnType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/ColumnsType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/ConfiguredPropertiesType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/DataContextType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/InputType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/Job.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/JobMetadataType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/ObjectFactory.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
     
    3838 
    3939    /** 
    40      * Create an instance of {@link DataContextType } 
     40     * Create an instance of {@link ColumnType } 
    4141     *  
    4242     */ 
    43     public DataContextType createDataContextType() { 
    44         return new DataContextType(); 
     43    public ColumnType createColumnType() { 
     44        return new ColumnType(); 
    4545    } 
    4646 
     
    5454 
    5555    /** 
     56     * Create an instance of {@link TransformerDescriptorType } 
     57     *  
     58     */ 
     59    public TransformerDescriptorType createTransformerDescriptorType() { 
     60        return new TransformerDescriptorType(); 
     61    } 
     62 
     63    /** 
     64     * Create an instance of {@link AnalyzerType } 
     65     *  
     66     */ 
     67    public AnalyzerType createAnalyzerType() { 
     68        return new AnalyzerType(); 
     69    } 
     70 
     71    /** 
     72     * Create an instance of {@link TransformationType } 
     73     *  
     74     */ 
     75    public TransformationType createTransformationType() { 
     76        return new TransformationType(); 
     77    } 
     78 
     79    /** 
     80     * Create an instance of {@link AnalysisType } 
     81     *  
     82     */ 
     83    public AnalysisType createAnalysisType() { 
     84        return new AnalysisType(); 
     85    } 
     86 
     87    /** 
    5688     * Create an instance of {@link AnalyzerDescriptorType } 
    5789     *  
     
    6294 
    6395    /** 
    64      * Create an instance of {@link InputType } 
     96     * Create an instance of {@link SourceType } 
    6597     *  
    6698     */ 
    67     public InputType createInputType() { 
    68         return new InputType(); 
     99    public SourceType createSourceType() { 
     100        return new SourceType(); 
     101    } 
     102 
     103    /** 
     104     * Create an instance of {@link DataContextType } 
     105     *  
     106     */ 
     107    public DataContextType createDataContextType() { 
     108        return new DataContextType(); 
     109    } 
     110 
     111    /** 
     112     * Create an instance of {@link ColumnsType } 
     113     *  
     114     */ 
     115    public ColumnsType createColumnsType() { 
     116        return new ColumnsType(); 
     117    } 
     118 
     119    /** 
     120     * Create an instance of {@link Job } 
     121     *  
     122     */ 
     123    public Job createJob() { 
     124        return new Job(); 
     125    } 
     126 
     127    /** 
     128     * Create an instance of {@link JobMetadataType } 
     129     *  
     130     */ 
     131    public JobMetadataType createJobMetadataType() { 
     132        return new JobMetadataType(); 
    69133    } 
    70134 
     
    86150 
    87151    /** 
    88      * Create an instance of {@link SourceType } 
    89      *  
    90      */ 
    91     public SourceType createSourceType() { 
    92         return new SourceType(); 
    93     } 
    94  
    95     /** 
    96      * Create an instance of {@link AnalyzerType } 
    97      *  
    98      */ 
    99     public AnalyzerType createAnalyzerType() { 
    100         return new AnalyzerType(); 
    101     } 
    102  
    103     /** 
    104      * Create an instance of {@link ColumnType } 
    105      *  
    106      */ 
    107     public ColumnType createColumnType() { 
    108         return new ColumnType(); 
    109     } 
    110  
    111     /** 
    112      * Create an instance of {@link TransformerDescriptorType } 
    113      *  
    114      */ 
    115     public TransformerDescriptorType createTransformerDescriptorType() { 
    116         return new TransformerDescriptorType(); 
    117     } 
    118  
    119     /** 
    120152     * Create an instance of {@link ConfiguredPropertiesType } 
    121153     *  
     
    126158 
    127159    /** 
    128      * Create an instance of {@link TransformationType } 
     160     * Create an instance of {@link InputType } 
    129161     *  
    130162     */ 
    131     public TransformationType createTransformationType() { 
    132         return new TransformationType(); 
    133     } 
    134  
    135     /** 
    136      * Create an instance of {@link JobMetadataType } 
    137      *  
    138      */ 
    139     public JobMetadataType createJobMetadataType() { 
    140         return new JobMetadataType(); 
    141     } 
    142  
    143     /** 
    144      * Create an instance of {@link Job } 
    145      *  
    146      */ 
    147     public Job createJob() { 
    148         return new Job(); 
    149     } 
    150  
    151     /** 
    152      * Create an instance of {@link AnalysisType } 
    153      *  
    154      */ 
    155     public AnalysisType createAnalysisType() { 
    156         return new AnalysisType(); 
    157     } 
    158  
    159     /** 
    160      * Create an instance of {@link ColumnsType } 
    161      *  
    162      */ 
    163     public ColumnsType createColumnsType() { 
    164         return new ColumnsType(); 
     163    public InputType createInputType() { 
     164        return new InputType(); 
    165165    } 
    166166 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/OutputType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/ProvidedPropertyTypeEnum.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/SourceType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/TransformationType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/TransformerDescriptorType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/TransformerType.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/jaxb/package-info.java

    r978 r982  
    33// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>  
    44// Any modifications to this file will be lost upon recompilation of the source schema.  
    5 // Generated on: 2010.08.28 at 12:24:34 PM CEST  
     5// Generated on: 2010.08.28 at 05:39:23 PM CEST  
    66// 
    77 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/job/runner/AnalysisRunnerImpl.java

    r975 r982  
    1111import java.util.concurrent.LinkedBlockingQueue; 
    1212 
     13import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
    1314import org.eobjects.analyzer.connection.DataContextProvider; 
    1415import org.eobjects.analyzer.data.InputColumn; 
     
    1617import org.eobjects.analyzer.descriptors.AnalyzerBeanDescriptor; 
    1718import org.eobjects.analyzer.job.AnalysisJob; 
    18 import org.eobjects.analyzer.job.AnalyzerBeansConfiguration; 
    1919import org.eobjects.analyzer.job.AnalyzerJob; 
    2020import org.eobjects.analyzer.job.BeanJob; 
  • AnalyzerBeans/trunk/src/main/java/org/eobjects/analyzer/util/SchemaNavigator.java

    r978 r982  
    4747 
    4848        public Column convertToColumn(String columnName) { 
    49                 return dataContext.getColumnByQualifiedLabel(columnName); 
     49                Schema schema = null; 
     50                String[] schemaNames = dataContext.getSchemaNames(); 
     51                for (String schemaName : schemaNames) { 
     52                        if (columnName.startsWith(schemaName)) { 
     53                                schema = dataContext.getSchemaByName(schemaName); 
     54                                String remainingPath1 = columnName.substring(schemaName.length()); 
     55                                 
     56                                assert remainingPath1.charAt(0) == '.'; 
     57                                 
     58                                remainingPath1 = remainingPath1.substring(1); 
     59                                 
     60                                Table table = null; 
     61                                String[] tableNames = schema.getTableNames(); 
     62                                for (String tableName : tableNames) { 
     63                                        if (remainingPath1.startsWith(tableName)) { 
     64                                                table = schema.getTableByName(tableName); 
     65                                                String remainingPath2 = remainingPath1.substring(tableName.length()); 
     66                                                 
     67                                                assert remainingPath2.charAt(0) == '.'; 
     68                                                 
     69                                                remainingPath2 = remainingPath2.substring(1); 
     70                                                 
     71                                                Column column = table.getColumnByName(remainingPath2); 
     72                                                if (column != null) { 
     73                                                        return column; 
     74                                                } 
     75                                        } 
     76                                } 
     77                        } 
     78                } 
     79                 
     80                return null; 
    5081        } 
    5182} 
  • AnalyzerBeans/trunk/src/test/java/org/eobjects/analyzer/job/AnalysisJobBuilderTest.java

    r978 r982  
    77import org.eobjects.analyzer.beans.StringAnalyzer; 
    88import org.eobjects.analyzer.beans.ConvertToStringTransformer; 
     9import org.eobjects.analyzer.configuration.AnalyzerBeansConfigurationImpl; 
    910import org.eobjects.analyzer.connection.Datastore; 
    1011import org.eobjects.analyzer.connection.DatastoreCatalog; 
  • AnalyzerBeans/trunk/src/test/java/org/eobjects/analyzer/job/JaxbJobFactoryTest.java

    r980 r982  
    55import java.util.List; 
    66 
     7import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
    78import org.eobjects.analyzer.data.MetaModelInputColumn; 
    89import org.eobjects.analyzer.job.runner.AnalysisRunnerImpl; 
  • AnalyzerBeans/trunk/src/test/java/org/eobjects/analyzer/job/TransformerJobBuilderTest.java

    r976 r982  
    55import org.eobjects.analyzer.beans.ConvertToNumberTransformer; 
    66import org.eobjects.analyzer.beans.TokenizerTransformer; 
     7import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
    78import org.eobjects.analyzer.data.DataTypeFamily; 
    89import org.eobjects.analyzer.data.InputColumn; 
  • AnalyzerBeans/trunk/src/test/java/org/eobjects/analyzer/test/TestHelper.java

    r978 r982  
    66import java.util.List; 
    77 
     8import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
     9import org.eobjects.analyzer.configuration.AnalyzerBeansConfigurationImpl; 
    810import org.eobjects.analyzer.connection.Datastore; 
    911import org.eobjects.analyzer.connection.DatastoreCatalog; 
     
    1214import org.eobjects.analyzer.descriptors.ClasspathScanDescriptorProvider; 
    1315import org.eobjects.analyzer.descriptors.DescriptorProvider; 
    14 import org.eobjects.analyzer.job.AnalyzerBeansConfiguration; 
    15 import org.eobjects.analyzer.job.AnalyzerBeansConfigurationImpl; 
    1616import org.eobjects.analyzer.job.concurrent.TaskRunner; 
    1717import org.eobjects.analyzer.job.concurrent.SingleThreadedTaskRunner; 
  • AnalyzerBeans/trunk/src/test/java/org/eobjects/analyzer/test/full/scenarios/NameAndEmailPartEqualityTest.java

    r978 r982  
    1515import org.eobjects.analyzer.beans.valuedist.ValueDistributionAnalyzer; 
    1616import org.eobjects.analyzer.beans.valuedist.ValueDistributionResult; 
     17import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
     18import org.eobjects.analyzer.configuration.AnalyzerBeansConfigurationImpl; 
    1719import org.eobjects.analyzer.connection.DatastoreCatalog; 
    1820import org.eobjects.analyzer.connection.SingleDataContextProvider; 
     
    2224import org.eobjects.analyzer.descriptors.DescriptorProvider; 
    2325import org.eobjects.analyzer.job.AnalysisJobBuilder; 
    24 import org.eobjects.analyzer.job.AnalyzerBeansConfiguration; 
    25 import org.eobjects.analyzer.job.AnalyzerBeansConfigurationImpl; 
    2626import org.eobjects.analyzer.job.RowProcessingAnalyzerJobBuilder; 
    2727import org.eobjects.analyzer.job.TransformerJobBuilder; 
  • AnalyzerBeans/trunk/src/test/java/org/eobjects/analyzer/test/full/scenarios/TokenizerAndValueDistributionTest.java

    r978 r982  
    66import org.eobjects.analyzer.beans.valuedist.ValueDistributionAnalyzer; 
    77import org.eobjects.analyzer.beans.valuedist.ValueDistributionResult; 
     8import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
     9import org.eobjects.analyzer.configuration.AnalyzerBeansConfigurationImpl; 
    810import org.eobjects.analyzer.connection.DatastoreCatalog; 
    911import org.eobjects.analyzer.connection.SingleDataContextProvider; 
     
    1416import org.eobjects.analyzer.job.AnalysisJob; 
    1517import org.eobjects.analyzer.job.AnalysisJobBuilder; 
    16 import org.eobjects.analyzer.job.AnalyzerBeansConfiguration; 
    17 import org.eobjects.analyzer.job.AnalyzerBeansConfigurationImpl; 
    1818import org.eobjects.analyzer.job.RowProcessingAnalyzerJobBuilder; 
    1919import org.eobjects.analyzer.job.TransformerJobBuilder; 
  • AnalyzerBeans/trunk/src/test/java/org/eobjects/analyzer/test/full/scenarios/ValueDistributionAndStringAnalysisTest.java

    r978 r982  
    77import org.eobjects.analyzer.beans.valuedist.ValueDistributionAnalyzer; 
    88import org.eobjects.analyzer.beans.valuedist.ValueDistributionResult; 
     9import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
     10import org.eobjects.analyzer.configuration.AnalyzerBeansConfigurationImpl; 
    911import org.eobjects.analyzer.connection.DatastoreCatalog; 
    1012import org.eobjects.analyzer.connection.SingleDataContextProvider; 
     
    1517import org.eobjects.analyzer.job.AnalysisJob; 
    1618import org.eobjects.analyzer.job.AnalysisJobBuilder; 
    17 import org.eobjects.analyzer.job.AnalyzerBeansConfiguration; 
    18 import org.eobjects.analyzer.job.AnalyzerBeansConfigurationImpl; 
    1919import org.eobjects.analyzer.job.RowProcessingAnalyzerJobBuilder; 
    2020import org.eobjects.analyzer.job.concurrent.MultiThreadedTaskRunner; 
Note: See TracChangeset for help on using the changeset viewer.