mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-30 21:08:30 +08:00
Merge pull request #2286 from metacubed-contrib/I2282-EmptySchemaPattern
Allow blank "schemaPattern" in the Maven plugin
This commit is contained in:
commit
953f82bb30
@ -18,6 +18,7 @@ import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Comparator;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.apache.maven.artifact.manager.WagonManager;
|
||||
import org.apache.maven.plugin.AbstractMojo;
|
||||
@ -431,7 +432,7 @@ public class AbstractMetaDataExportMojo extends AbstractMojo {
|
||||
exporter.setTargetFolder(new File(targetFolder));
|
||||
exporter.setNamingStrategy(namingStrategy);
|
||||
exporter.setCatalogPattern(catalogPattern);
|
||||
exporter.setSchemaPattern(schemaPattern);
|
||||
exporter.setSchemaPattern(processBlankValues(schemaPattern));
|
||||
exporter.setTableNamePattern(tableNamePattern);
|
||||
exporter.setColumnAnnotations(columnAnnotations);
|
||||
exporter.setValidationAnnotations(validationAnnotations);
|
||||
@ -702,4 +703,14 @@ public class AbstractMetaDataExportMojo extends AbstractMojo {
|
||||
boolean setToBlank = value == null || value.equalsIgnoreCase("BLANK");
|
||||
return setToBlank ? "" : value;
|
||||
}
|
||||
|
||||
private static String processBlankValues(String value) {
|
||||
if (value == null) {
|
||||
return null;
|
||||
}
|
||||
return BLANK_VALUE_PATTERN.matcher(value).replaceAll(BLANK_VALUE_REPLACEMENT);
|
||||
}
|
||||
|
||||
private static final Pattern BLANK_VALUE_PATTERN = Pattern.compile("(^|,)BLANK(,|$)", Pattern.CASE_INSENSITIVE);
|
||||
private static final String BLANK_VALUE_REPLACEMENT = "$1$2";
|
||||
}
|
||||
|
||||
@ -14,6 +14,7 @@
|
||||
package com.querydsl.maven;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.io.File;
|
||||
@ -23,7 +24,9 @@ import java.util.Collections;
|
||||
import org.apache.maven.project.MavenProject;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TestName;
|
||||
|
||||
import com.querydsl.sql.codegen.ExtendedBeanSerializer;
|
||||
import com.querydsl.sql.codegen.OriginalNamingStrategy;
|
||||
@ -37,12 +40,20 @@ import com.querydsl.sql.types.LocalTimeType;
|
||||
|
||||
public class MetadataExportMojoTest {
|
||||
|
||||
private final String url = "jdbc:h2:mem:testdb" + System.currentTimeMillis();
|
||||
private final String url = "jdbc:h2:mem:testdb" + System.currentTimeMillis() + ";INIT=" +
|
||||
"CREATE TABLE NO_SCHEMA_TABLE (COL1 INT) \\;" +
|
||||
"CREATE SCHEMA SCHEMA1 \\;" +
|
||||
"CREATE TABLE SCHEMA1.SCHEMA1_TABLE (COL1 INT) \\;" +
|
||||
"CREATE SCHEMA SCHEMA2 \\;" +
|
||||
"CREATE TABLE SCHEMA2.SCHEMA2_TABLE (COL1 INT) \\;";
|
||||
|
||||
private final MavenProject project = new MavenProject();
|
||||
|
||||
private final MetadataExportMojo mojo = new MetadataExportMojo();
|
||||
|
||||
@Rule
|
||||
public TestName testName = new TestName();
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mojo.setProject(project);
|
||||
@ -193,4 +204,237 @@ public class MetadataExportMojoTest {
|
||||
assertEquals(Collections.singletonList("target/export13"), project.getCompileSourceRoots());
|
||||
assertTrue(new File("target/export13").exists());
|
||||
}
|
||||
|
||||
// region Schema Pattern Matching
|
||||
|
||||
@Test
|
||||
public void executeWithUnsetSchemaPattern() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern(null);
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void executeWithExactSchemaPattern() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("SCHEMA1");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void executeWithSimilarSchemaPattern() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("%EMA1");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void executeWithMismatchedSchemaPattern() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("NON_EXISTENT_SCHEMA");
|
||||
mojo.execute();
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void executeWithMultipleSchemaPatterns() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("SCHEMA1,SCHEMA2");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
}
|
||||
|
||||
// endregion Schema Pattern Matching
|
||||
|
||||
// region Schema Pattern Matching - Empty Values
|
||||
|
||||
@Test
|
||||
public void executeWithEmptySchemaPattern() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void executeWithMultipleSchemaPatternsAndInterleavedEmpty() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("SCHEMA1,,SCHEMA2");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void executeWithMultipleSchemaPatternsAndLeadingEmpty() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern(",SCHEMA2");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore("Trailing empty strings are not handled correctly by the MetaDataExporter")
|
||||
public void executeWithMultipleSchemaPatternsAndTrailingEmpty() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("SCHEMA1,");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
|
||||
// endregion Schema Pattern Matching - Empty Values
|
||||
|
||||
// region Schema Pattern Matching - BLANK Values
|
||||
|
||||
@Test
|
||||
public void executeWithBlankUppercaseSchemaPattern() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("BLANK");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void executeWithBlankLowercaseSchemaPattern() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("blank");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void executeWithSchemaPatternContainingBlank() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("SCHEMA1BLANK");
|
||||
mojo.execute();
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
@Test
|
||||
public void executeWithMultipleSchemaPatternsAndInterleavedBlank() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("SCHEMA1,BLANK,SCHEMA2");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void executeWithMultipleSchemaPatternsAndLeadingBlank() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("BLANK,SCHEMA2");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore("Trailing empty strings are not handled correctly by the MetaDataExporter")
|
||||
public void executeWithMultipleSchemaPatternsAndTrailingBlank() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("SCHEMA1,BLANK");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void executeWithMultipleSchemaPatternsAndContainingBlank() throws Exception {
|
||||
String targetFolder = "target/" + testName.getMethodName();
|
||||
|
||||
mojo.setTargetFolder(targetFolder);
|
||||
mojo.setSchemaPattern("SCHEMA1,SCHEMA2BLANK");
|
||||
mojo.execute();
|
||||
|
||||
assertTrue(new File(targetFolder + "/com/example/QSchema1Table.java").exists());
|
||||
|
||||
assertFalse(new File(targetFolder + "/com/example/QNoSchemaTable.java").exists());
|
||||
assertFalse(new File(targetFolder + "/com/example/QSchema2Table.java").exists());
|
||||
}
|
||||
|
||||
// endregion Schema Pattern Matching - BLANK Values
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user