use of org.apache.cayenne.dbsync.DbSyncModule in project cayenne by apache.
the class DefaultDbImportActionTest method testSaveLoadedWithNonEmptyProjectAndNonEmptyDataMap.
@Test
public void testSaveLoadedWithNonEmptyProjectAndNonEmptyDataMap() throws Exception {
Logger log = mock(Logger.class);
Injector i = DIBootstrap.createInjector(new DbSyncModule(), new ToolsModule(log), new DbImportModule());
DbImportConfiguration params = mock(DbImportConfiguration.class);
URL projectURL = new URL(getPackageURL(), "dbimport/cayenne-testProject4.map.xml");
File projectFile = new File(projectURL.toURI());
projectFile.delete();
assertFalse(projectFile.exists());
Files.write(projectFile.toPath(), ("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<domain xmlns=\"http://cayenne.apache.org/schema/10/domain\"\n" + "\t xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + "\t xsi:schemaLocation=\"http://cayenne.apache.org/schema/10/domain http://cayenne.apache.org/schema/10/domain.xsd\"\n" + "\t project-version=\"10\">\n" + "\t<map name=\"testSaveLoaded4\"/>\n" + "</domain>").getBytes(Charset.forName("UTF-8")));
assertTrue(projectFile.isFile());
when(params.getCayenneProject()).thenReturn(projectFile);
DefaultDbImportAction action = (DefaultDbImportAction) i.getInstance(DbImportAction.class);
URL dataMapURL = new URL(getPackageURL(), "dbimport/testSaveLoaded4.map.xml");
File dataMapFile = new File(dataMapURL.toURI());
dataMapFile.delete();
assertFalse(dataMapFile.exists());
Files.write(dataMapFile.toPath(), ("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<data-map xmlns=\"http://cayenne.apache.org/schema/10/modelMap\"\n" + "\t xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + "\t xsi:schemaLocation=\"http://cayenne.apache.org/schema/10/modelMap http://cayenne.apache.org/schema/10/modelMap.xsd\"\n" + "\t project-version=\"10\">\n" + "\t<db-entity name=\"test\">\n" + "\t\t<db-attribute name=\"test\" type=\"INT\"/>\n" + "\t</db-entity>\n" + "</data-map>").getBytes(Charset.forName("UTF-8")));
assertTrue(dataMapFile.isFile());
DataMap map = new DataMap("testSaveLoaded4");
map.setConfigurationSource(new URLResource(dataMapURL));
action.saveLoaded(map, params);
assertTrue(dataMapFile.isFile());
assertTrue(projectFile.isFile());
String dataMapContents = Util.stringFromFile(dataMapFile);
assertTrue("Has no project version saved", dataMapContents.contains("project-version=\""));
assertFalse(dataMapContents.contains("<db-entity"));
String projectContents = Util.stringFromFile(projectFile);
assertTrue("Has no project version saved", projectContents.contains("project-version=\""));
assertEquals("Has no or too many datamaps in project", 1, Util.countMatches(projectContents, "<map name=\"testSaveLoaded4\"/>"));
}
use of org.apache.cayenne.dbsync.DbSyncModule in project cayenne by apache.
the class DefaultDbImportActionTest method testSaveLoadedWithEmptyProject.
@Test
public void testSaveLoadedWithEmptyProject() throws Exception {
Logger log = mock(Logger.class);
Injector i = DIBootstrap.createInjector(new DbSyncModule(), new ToolsModule(log), new DbImportModule());
DbImportConfiguration params = mock(DbImportConfiguration.class);
URL projectURL = new URL(getPackageURL(), "dbimport/cayenne-testProject2.map.xml");
File projectFile = new File(projectURL.toURI());
projectFile.delete();
assertFalse(projectFile.exists());
when(params.getCayenneProject()).thenReturn(projectFile);
DefaultDbImportAction action = (DefaultDbImportAction) i.getInstance(DbImportAction.class);
URL dataMapURL = new URL(getPackageURL(), "dbimport/testSaveLoaded2.map.xml");
File dataMapFile = new File(dataMapURL.toURI());
dataMapFile.delete();
assertFalse(dataMapFile.exists());
DataMap map = new DataMap("testSaveLoaded2");
map.setConfigurationSource(new URLResource(dataMapURL));
action.saveLoaded(map, params);
assertTrue(dataMapFile.isFile());
assertTrue(projectFile.isFile());
String dataMapContents = Util.stringFromFile(dataMapFile);
assertTrue("Has no project version saved", dataMapContents.contains("project-version=\""));
String projectContents = Util.stringFromFile(projectFile);
assertTrue("Has no project version saved", projectContents.contains("project-version=\""));
assertTrue("Has no datamap in project", projectContents.contains("<map name=\"testSaveLoaded2\"/>"));
}
use of org.apache.cayenne.dbsync.DbSyncModule in project cayenne by apache.
the class DbGenerateTask method createDbAdapter.
DbAdapter createDbAdapter() {
Injector injector = DIBootstrap.createInjector(new DbSyncModule(), new ToolsModule(getLogger()));
AdhocObjectFactory objectFactory = injector.getInstance(AdhocObjectFactory.class);
return (adapter == null) ? objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName()) : objectFactory.newInstance(DbAdapter.class, adapter);
}
use of org.apache.cayenne.dbsync.DbSyncModule in project cayenne by apache.
the class DbImporterMojo method execute.
public void execute() throws MojoExecutionException, MojoFailureException {
Logger logger = new MavenLogger(this);
// check missing data source parameters
dataSource.validate();
DbImportConfiguration config = createConfig(logger);
Injector injector = DIBootstrap.createInjector(new DbSyncModule(), new ToolsModule(logger), new DbImportModule());
DbImportConfigurationValidator validator = new DbImportConfigurationValidator(dbImportConfig, config, injector);
try {
validator.validate();
} catch (Exception ex) {
throw new MojoExecutionException(ex.getMessage(), ex);
}
try {
injector.getInstance(DbImportAction.class).execute(config);
} catch (Exception ex) {
Throwable th = Util.unwindException(ex);
String message = "Error importing database schema";
if (th.getLocalizedMessage() != null) {
message += ": " + th.getLocalizedMessage();
}
getLog().error(message);
throw new MojoExecutionException(message, th);
}
}
Aggregations