Search in sources :

Example 1 with BeanSerializer

use of com.querydsl.codegen.BeanSerializer in project querydsl by querydsl.

the class AbstractMetaDataExportMojo method execute.

@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
    if (isForTest()) {
        project.addTestCompileSourceRoot(targetFolder);
    } else {
        project.addCompileSourceRoot(targetFolder);
    }
    if (skip) {
        return;
    }
    try {
        Configuration configuration = new Configuration(SQLTemplates.DEFAULT);
        NamingStrategy namingStrategy;
        if (namingStrategyClass != null) {
            namingStrategy = (NamingStrategy) Class.forName(namingStrategyClass).newInstance();
        } else {
            namingStrategy = new DefaultNamingStrategy();
        }
        // defaults for Scala
        if (createScalaSources) {
            if (serializerClass == null) {
                serializerClass = "com.querydsl.scala.sql.ScalaMetaDataSerializer";
            }
            if (exportBeans && beanSerializerClass == null) {
                beanSerializerClass = "com.querydsl.scala.ScalaBeanSerializer";
            }
        }
        MetaDataExporter exporter = new MetaDataExporter();
        exporter.setNamePrefix(emptyIfSetToBlank(namePrefix));
        exporter.setNameSuffix(Strings.nullToEmpty(nameSuffix));
        exporter.setBeanPrefix(Strings.nullToEmpty(beanPrefix));
        exporter.setBeanSuffix(Strings.nullToEmpty(beanSuffix));
        if (beansTargetFolder != null) {
            exporter.setBeansTargetFolder(new File(beansTargetFolder));
        }
        exporter.setCreateScalaSources(createScalaSources);
        exporter.setPackageName(packageName);
        exporter.setBeanPackageName(beanPackageName);
        exporter.setInnerClassesForKeys(innerClassesForKeys);
        exporter.setTargetFolder(new File(targetFolder));
        exporter.setNamingStrategy(namingStrategy);
        exporter.setSchemaPattern(schemaPattern);
        exporter.setTableNamePattern(tableNamePattern);
        exporter.setColumnAnnotations(columnAnnotations);
        exporter.setValidationAnnotations(validationAnnotations);
        exporter.setSchemaToPackage(schemaToPackage);
        exporter.setLowerCase(lowerCase);
        exporter.setExportTables(exportTables);
        exporter.setExportViews(exportViews);
        exporter.setExportAll(exportAll);
        exporter.setTableTypesToExport(tableTypesToExport);
        exporter.setExportPrimaryKeys(exportPrimaryKeys);
        exporter.setExportForeignKeys(exportForeignKeys);
        exporter.setExportDirectForeignKeys(exportDirectForeignKeys);
        exporter.setExportInverseForeignKeys(exportInverseForeignKeys);
        exporter.setSpatial(spatial);
        if (imports != null && imports.length > 0) {
            exporter.setImports(imports);
        }
        if (serializerClass != null) {
            try {
                exporter.setSerializerClass((Class) Class.forName(serializerClass));
            } catch (ClassNotFoundException e) {
                getLog().error(e);
                throw new MojoExecutionException(e.getMessage(), e);
            }
        }
        if (exportBeans) {
            if (beanSerializerClass != null) {
                exporter.setBeanSerializerClass((Class) Class.forName(beanSerializerClass));
            } else {
                BeanSerializer serializer = new BeanSerializer();
                if (beanInterfaces != null) {
                    for (String iface : beanInterfaces) {
                        int sepIndex = iface.lastIndexOf('.');
                        if (sepIndex < 0) {
                            serializer.addInterface(new SimpleType(iface));
                        } else {
                            String packageName = iface.substring(0, sepIndex);
                            String simpleName = iface.substring(sepIndex + 1);
                            serializer.addInterface(new SimpleType(iface, packageName, simpleName));
                        }
                    }
                }
                serializer.setAddFullConstructor(beanAddFullConstructor);
                serializer.setAddToString(beanAddToString);
                serializer.setPrintSupertype(beanPrintSupertype);
                exporter.setBeanSerializer(serializer);
            }
        }
        String sourceEncoding = (String) project.getProperties().get("project.build.sourceEncoding");
        if (sourceEncoding != null) {
            exporter.setSourceEncoding(sourceEncoding);
        }
        if (customTypes != null) {
            for (String cl : customTypes) {
                configuration.register((Type<?>) Class.forName(cl).newInstance());
            }
        }
        if (typeMappings != null) {
            for (TypeMapping mapping : typeMappings) {
                mapping.apply(configuration);
            }
        }
        if (numericMappings != null) {
            for (NumericMapping mapping : numericMappings) {
                mapping.apply(configuration);
            }
        }
        if (renameMappings != null) {
            for (RenameMapping mapping : renameMappings) {
                mapping.apply(configuration);
            }
        }
        if (columnComparatorClass != null) {
            try {
                exporter.setColumnComparatorClass((Class) Class.forName(this.columnComparatorClass).asSubclass(Comparator.class));
            } catch (ClassNotFoundException e) {
                getLog().error(e);
                throw new MojoExecutionException(e.getMessage(), e);
            }
        }
        exporter.setConfiguration(configuration);
        Class.forName(jdbcDriver);
        String user;
        String password;
        if (server == null) {
            user = jdbcUser;
            password = jdbcPassword;
        } else {
            AuthenticationInfo info = wagonManager.getAuthenticationInfo(server);
            if (info == null) {
                throw new MojoExecutionException("No authentication info for server " + server);
            }
            user = info.getUserName();
            if (user == null) {
                throw new MojoExecutionException("Missing username from server " + server);
            }
            password = info.getPassword();
            if (password == null) {
                throw new MojoExecutionException("Missing password from server " + server);
            }
        }
        Connection conn = DriverManager.getConnection(jdbcUrl, user, password);
        try {
            exporter.export(conn.getMetaData());
        } finally {
            if (conn != null) {
                conn.close();
            }
        }
    } catch (ClassNotFoundException e) {
        throw new MojoExecutionException(e.getMessage(), e);
    } catch (SQLException e) {
        throw new MojoExecutionException(e.getMessage(), e);
    } catch (InstantiationException e) {
        throw new MojoExecutionException(e.getMessage(), e);
    } catch (IllegalAccessException e) {
        throw new MojoExecutionException(e.getMessage(), e);
    }
}
Also used : BeanSerializer(com.querydsl.codegen.BeanSerializer) Configuration(com.querydsl.sql.Configuration) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) SQLException(java.sql.SQLException) Connection(java.sql.Connection) AuthenticationInfo(org.apache.maven.wagon.authentication.AuthenticationInfo) DefaultNamingStrategy(com.querydsl.sql.codegen.DefaultNamingStrategy) NamingStrategy(com.querydsl.sql.codegen.NamingStrategy) SimpleType(com.mysema.codegen.model.SimpleType) NumericMapping(com.querydsl.sql.codegen.support.NumericMapping) RenameMapping(com.querydsl.sql.codegen.support.RenameMapping) TypeMapping(com.querydsl.sql.codegen.support.TypeMapping) DefaultNamingStrategy(com.querydsl.sql.codegen.DefaultNamingStrategy) File(java.io.File) MetaDataExporter(com.querydsl.sql.codegen.MetaDataExporter)

Example 2 with BeanSerializer

use of com.querydsl.codegen.BeanSerializer in project querydsl by querydsl.

the class AntMetaDataExporter method execute.

@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public void execute() {
    if (targetFolder == null) {
        throw new BuildException("targetFolder is a mandatory property");
    }
    Connection dbConn = null;
    try {
        Class.forName(jdbcDriver).newInstance();
        dbConn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
        Configuration configuration = new Configuration(SQLTemplates.DEFAULT);
        MetaDataExporter exporter = new MetaDataExporter();
        if (namePrefix != null) {
            exporter.setNamePrefix(namePrefix);
        }
        if (nameSuffix != null) {
            exporter.setNameSuffix(nameSuffix);
        }
        if (beanPrefix != null) {
            exporter.setBeanPrefix(beanPrefix);
        }
        if (beanSuffix != null) {
            exporter.setBeanSuffix(beanSuffix);
        }
        if (beansTargetFolder != null) {
            exporter.setBeansTargetFolder(new File(beansTargetFolder));
        }
        exporter.setPackageName(packageName);
        exporter.setBeanPackageName(beanPackageName);
        exporter.setTargetFolder(new File(targetFolder));
        exporter.setNamingStrategy((NamingStrategy) Class.forName(namingStrategyClass).newInstance());
        exporter.setInnerClassesForKeys(innerClassesForKeys);
        exporter.setSchemaPattern(schemaPattern);
        exporter.setTableNamePattern(tableNamePattern);
        exporter.setColumnAnnotations(columnAnnotations);
        exporter.setValidationAnnotations(validationAnnotations);
        exporter.setSchemaToPackage(schemaToPackage);
        exporter.setLowerCase(lowerCase);
        exporter.setExportTables(exportTables);
        exporter.setExportViews(exportViews);
        exporter.setExportAll(exportAll);
        exporter.setTableTypesToExport(tableTypesToExport);
        exporter.setExportPrimaryKeys(exportPrimaryKeys);
        exporter.setExportForeignKeys(exportForeignKeys);
        exporter.setExportDirectForeignKeys(exportDirectForeignKeys);
        exporter.setExportInverseForeignKeys(exportInverseForeignKeys);
        exporter.setSpatial(spatial);
        if (imports != null && imports.length > 0) {
            exporter.setImports(imports);
        }
        if (exportBeans) {
            BeanSerializer serializer = (BeanSerializer) Class.forName(beanSerializerClass).newInstance();
            if (beanInterfaces != null) {
                for (String iface : beanInterfaces) {
                    int sepIndex = iface.lastIndexOf('.');
                    if (sepIndex < 0) {
                        serializer.addInterface(new SimpleType(iface));
                    } else {
                        String packageName = iface.substring(0, sepIndex);
                        String simpleName = iface.substring(sepIndex + 1);
                        serializer.addInterface(new SimpleType(iface, packageName, simpleName));
                    }
                }
            }
            serializer.setAddFullConstructor(beanAddFullConstructor);
            serializer.setAddToString(beanAddToString);
            serializer.setPrintSupertype(beanPrintSupertype);
            exporter.setBeanSerializer(serializer);
        }
        if (sourceEncoding != null) {
            exporter.setSourceEncoding(sourceEncoding);
        }
        if (customTypes != null) {
            for (String cl : customTypes) {
                configuration.register((Type<?>) Class.forName(cl).newInstance());
            }
        }
        if (typeMappings != null) {
            for (TypeMapping mapping : typeMappings) {
                mapping.apply(configuration);
            }
        }
        if (numericMappings != null) {
            for (NumericMapping mapping : numericMappings) {
                mapping.apply(configuration);
            }
        }
        if (renameMappings != null) {
            for (RenameMapping mapping : renameMappings) {
                mapping.apply(configuration);
            }
        }
        if (columnComparatorClass != null) {
            exporter.setColumnComparatorClass((Class) Class.forName(this.columnComparatorClass).asSubclass(Comparator.class));
        }
        exporter.setConfiguration(configuration);
        exporter.export(dbConn.getMetaData());
    } catch (RuntimeException e) {
        throw new BuildException(e);
    } catch (InstantiationException e) {
        throw new BuildException(e);
    } catch (IllegalAccessException e) {
        throw new BuildException(e);
    } catch (ClassNotFoundException e) {
        throw new BuildException(e);
    } catch (SQLException e) {
        throw new BuildException(e);
    } finally {
        if (dbConn != null) {
            try {
                dbConn.close();
            } catch (SQLException e2) {
                throw new BuildException(e2);
            }
        }
    }
}
Also used : BeanSerializer(com.querydsl.codegen.BeanSerializer) Configuration(com.querydsl.sql.Configuration) SQLException(java.sql.SQLException) Connection(java.sql.Connection) SimpleType(com.mysema.codegen.model.SimpleType) NumericMapping(com.querydsl.sql.codegen.support.NumericMapping) RenameMapping(com.querydsl.sql.codegen.support.RenameMapping) TypeMapping(com.querydsl.sql.codegen.support.TypeMapping) BuildException(org.apache.tools.ant.BuildException) File(java.io.File) MetaDataExporter(com.querydsl.sql.codegen.MetaDataExporter)

Example 3 with BeanSerializer

use of com.querydsl.codegen.BeanSerializer in project querydsl by querydsl.

the class MetaDataExporterTest method test.

private void test(String namePrefix, String nameSuffix, String beanPrefix, String beanSuffix, NamingStrategy namingStrategy, File targetDir, boolean withBeans, boolean withInnerClasses, boolean withOrdinalPositioning) throws SQLException {
    if (clean) {
        try {
            if (targetDir.exists()) {
                FileUtils.delete(targetDir);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    MetaDataExporter exporter = new MetaDataExporter();
    exporter.setColumnAnnotations(exportColumns);
    exporter.setSchemaPattern("PUBLIC");
    exporter.setNamePrefix(namePrefix);
    exporter.setNameSuffix(nameSuffix);
    exporter.setBeanPrefix(beanPrefix);
    exporter.setBeanSuffix(beanSuffix);
    exporter.setInnerClassesForKeys(withInnerClasses);
    exporter.setPackageName("test");
    exporter.setBeanPackageName(beanPackageName);
    exporter.setTargetFolder(targetDir);
    exporter.setNamingStrategy(namingStrategy);
    exporter.setSchemaToPackage(schemaToPackage);
    if (withBeans) {
        exporter.setBeanSerializer(new BeanSerializer());
    }
    if (withOrdinalPositioning) {
        exporter.setColumnComparatorClass(OrdinalPositionComparator.class);
    }
    exporter.export(metadata);
    Set<String> classes = exporter.getClasses();
    int compilationResult = compiler.run(null, System.out, System.err, classes.toArray(new String[classes.size()]));
    if (compilationResult != 0) {
        Assert.fail("Compilation Failed for " + targetDir.getAbsolutePath());
    }
}
Also used : BeanSerializer(com.querydsl.codegen.BeanSerializer) IOException(java.io.IOException)

Example 4 with BeanSerializer

use of com.querydsl.codegen.BeanSerializer in project querydsl by querydsl.

the class MetaDataExporterTest method minimal_configuration_with_bean_folder.

@Test
public void minimal_configuration_with_bean_folder() throws SQLException, IOException {
    MetaDataExporter exporter = new MetaDataExporter();
    exporter.setSchemaPattern("PUBLIC");
    exporter.setPackageName("test");
    exporter.setNamePrefix("");
    exporter.setBeanSuffix("Bean");
    exporter.setBeanSerializer(new BeanSerializer());
    exporter.setTargetFolder(folder.getRoot());
    exporter.setBeansTargetFolder(folder.newFolder("beans"));
    exporter.export(metadata);
    assertTrue(new File(folder.getRoot(), "test/DateTest.java").exists());
    assertTrue(new File(folder.getRoot(), "beans/test/DateTestBean.java").exists());
}
Also used : BeanSerializer(com.querydsl.codegen.BeanSerializer) File(java.io.File)

Example 5 with BeanSerializer

use of com.querydsl.codegen.BeanSerializer in project querydsl by querydsl.

the class MetaDataExporterTest method explicit_configuration.

@Test
public void explicit_configuration() throws SQLException {
    MetaDataExporter exporter = new MetaDataExporter();
    exporter.setSchemaPattern("PUBLIC");
    exporter.setNamePrefix("Q");
    exporter.setPackageName("test");
    exporter.setTargetFolder(folder.getRoot());
    exporter.setNamingStrategy(new DefaultNamingStrategy());
    exporter.setBeanSerializer(new BeanSerializer());
    exporter.setBeanPackageName("test2");
    exporter.export(metadata);
    assertTrue(new File(folder.getRoot(), "test/QDateTest.java").exists());
    assertTrue(new File(folder.getRoot(), "test2/DateTest.java").exists());
}
Also used : BeanSerializer(com.querydsl.codegen.BeanSerializer) File(java.io.File)

Aggregations

BeanSerializer (com.querydsl.codegen.BeanSerializer)7 File (java.io.File)6 SimpleType (com.mysema.codegen.model.SimpleType)2 Configuration (com.querydsl.sql.Configuration)2 MetaDataExporter (com.querydsl.sql.codegen.MetaDataExporter)2 NumericMapping (com.querydsl.sql.codegen.support.NumericMapping)2 RenameMapping (com.querydsl.sql.codegen.support.RenameMapping)2 TypeMapping (com.querydsl.sql.codegen.support.TypeMapping)2 Connection (java.sql.Connection)2 SQLException (java.sql.SQLException)2 DefaultNamingStrategy (com.querydsl.sql.codegen.DefaultNamingStrategy)1 NamingStrategy (com.querydsl.sql.codegen.NamingStrategy)1 IOException (java.io.IOException)1 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)1 AuthenticationInfo (org.apache.maven.wagon.authentication.AuthenticationInfo)1 BuildException (org.apache.tools.ant.BuildException)1