Add export*ForeignKeys properties

This commit is contained in:
Timo Westkämper 2016-04-25 20:23:28 +03:00
parent 5cdb0e3112
commit 1493cc444a
5 changed files with 104 additions and 12 deletions

View File

@ -241,6 +241,14 @@
<entry>exportForeignKeys</entry>
<entry>export foreign keys (default: true)</entry>
</row>
<row>
<entry>exportDirectForeignKeys</entry>
<entry>export direct foreign keys (default: true)</entry>
</row>
<row>
<entry>exportInverseForeignKeys</entry>
<entry>export inverse foreign keys (default: true)</entry>
</row>
<row>
<entry>customTypes</entry>
<entry>Custom user types (default: none)</entry>

View File

@ -321,6 +321,20 @@ public class AbstractMetaDataExportMojo extends AbstractMojo {
*/
private boolean exportForeignKeys;
/**
* switch to export direct foreign keys
*
* @parameter default-value=true
*/
private boolean exportDirectForeignKeys;
/**
* switch to export inverse foreign keys
*
* @parameter default-value=true
*/
private boolean exportInverseForeignKeys;
/**
* override default column order (default: alphabetical)
*
@ -427,6 +441,8 @@ public class AbstractMetaDataExportMojo extends AbstractMojo {
exporter.setTableTypesToExport(tableTypesToExport);
exporter.setExportPrimaryKeys(exportPrimaryKeys);
exporter.setExportForeignKeys(exportForeignKeys);
exporter.setExportDirectForeignKeys(exportDirectForeignKeys);
exporter.setExportInverseForeignKeys(exportInverseForeignKeys);
exporter.setSpatial(spatial);
if (imports != null && imports.length > 0) {

View File

@ -114,6 +114,10 @@ public class MetaDataExporter {
private boolean exportForeignKeys = true;
private boolean exportDirectForeignKeys = true;
private boolean exportInverseForeignKeys = true;
private boolean spatial = false;
@Nullable
@ -347,22 +351,26 @@ public class MetaDataExporter {
}
if (exportForeignKeys) {
// collect foreign keys
Map<String,ForeignKeyData> foreignKeyData = keyDataFactory
.getImportedKeys(md, catalog, schema, tableName);
if (!foreignKeyData.isEmpty()) {
for (ForeignKeyData fkd : foreignKeyData.values()) {
if (namingStrategy.shouldGenerateForeignKey(schemaAndTable, fkd)) {
classModel.getData().put(ForeignKeyData.class, foreignKeyData.values());
if (exportDirectForeignKeys) {
// collect foreign keys
Map<String,ForeignKeyData> foreignKeyData = keyDataFactory
.getImportedKeys(md, catalog, schema, tableName);
if (!foreignKeyData.isEmpty()) {
for (ForeignKeyData fkd : foreignKeyData.values()) {
if (namingStrategy.shouldGenerateForeignKey(schemaAndTable, fkd)) {
classModel.getData().put(ForeignKeyData.class, foreignKeyData.values());
}
}
}
}
// collect inverse foreign keys
Map<String,InverseForeignKeyData> inverseForeignKeyData = keyDataFactory
.getExportedKeys(md, catalog, schema, tableName);
if (!inverseForeignKeyData.isEmpty()) {
classModel.getData().put(InverseForeignKeyData.class, inverseForeignKeyData.values());
if (exportInverseForeignKeys) {
// collect inverse foreign keys
Map<String,InverseForeignKeyData> inverseForeignKeyData = keyDataFactory
.getExportedKeys(md, catalog, schema, tableName);
if (!inverseForeignKeyData.isEmpty()) {
classModel.getData().put(InverseForeignKeyData.class, inverseForeignKeyData.values());
}
}
}
@ -715,6 +723,24 @@ public class MetaDataExporter {
this.exportForeignKeys = exportForeignKeys;
}
/**
* Set whether direct foreign keys should be exported
*
* @param exportDirectForeignKeys
*/
public void setExportDirectForeignKeys(boolean exportDirectForeignKeys) {
this.exportDirectForeignKeys = exportDirectForeignKeys;
}
/**
* Set whether inverse foreign keys should be exported
*
* @param exportInverseForeignKeys
*/
public void setExportInverseForeignKeys(boolean exportInverseForeignKeys) {
this.exportInverseForeignKeys = exportInverseForeignKeys;
}
/**
* Set the java imports
*

View File

@ -218,6 +218,16 @@ public class AntMetaDataExporter extends Task {
*/
private boolean exportForeignKeys = true;
/**
* export direct foreign keys
*/
private boolean exportDirectForeignKeys = true;
/**
* export inverse foreign keys
*/
private boolean exportInverseForeignKeys = true;
/**
* override default column order (default: alphabetical)
*/
@ -310,6 +320,8 @@ public class AntMetaDataExporter extends Task {
exporter.setTableTypesToExport(tableTypesToExport);
exporter.setExportPrimaryKeys(exportPrimaryKeys);
exporter.setExportForeignKeys(exportForeignKeys);
exporter.setExportDirectForeignKeys(exportDirectForeignKeys);
exporter.setExportInverseForeignKeys(exportInverseForeignKeys);
exporter.setSpatial(spatial);
if (imports != null && imports.length > 0) {
@ -648,6 +660,22 @@ public class AntMetaDataExporter extends Task {
return exportForeignKeys;
}
public boolean isExportDirectForeignKeys() {
return exportDirectForeignKeys;
}
public void setExportDirectForeignKeys(boolean exportDirectForeignKeys) {
this.exportDirectForeignKeys = exportDirectForeignKeys;
}
public boolean isExportInverseForeignKeys() {
return exportInverseForeignKeys;
}
public void setExportInverseForeignKeys(boolean exportInverseForeignKeys) {
this.exportInverseForeignKeys = exportInverseForeignKeys;
}
public void setExportForeignKeys(boolean exportForeignKeys) {
this.exportForeignKeys = exportForeignKeys;
}

View File

@ -258,6 +258,20 @@ public class MetaDataExporterTest {
assertTrue(new File(folder.getRoot(), "test/DateTestType.java").exists());
}
@Test
public void minimal_configuration_only_direct_foreign_keys() throws SQLException {
MetaDataExporter exporter = new MetaDataExporter();
exporter.setSchemaPattern("PUBLIC");
exporter.setPackageName("test");
exporter.setNamePrefix("");
exporter.setNameSuffix("Type");
exporter.setTargetFolder(folder.getRoot());
exporter.setExportInverseForeignKeys(false);
exporter.export(metadata);
assertTrue(new File(folder.getRoot(), "test/DateTestType.java").exists());
}
@Test
public void minimal_configuration_with_bean_prefix() throws SQLException {
MetaDataExporter exporter = new MetaDataExporter();