Search in sources :

Example 11 with DbSyncModule

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\"/>"));
}
Also used : Logger(org.slf4j.Logger) ToolsModule(org.apache.cayenne.dbsync.reverse.configuration.ToolsModule) URL(java.net.URL) DataMap(org.apache.cayenne.map.DataMap) URLResource(org.apache.cayenne.resource.URLResource) Injector(org.apache.cayenne.di.Injector) DbSyncModule(org.apache.cayenne.dbsync.DbSyncModule) File(java.io.File) Test(org.junit.Test)

Example 12 with DbSyncModule

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\"/>"));
}
Also used : Logger(org.slf4j.Logger) ToolsModule(org.apache.cayenne.dbsync.reverse.configuration.ToolsModule) URL(java.net.URL) DataMap(org.apache.cayenne.map.DataMap) URLResource(org.apache.cayenne.resource.URLResource) Injector(org.apache.cayenne.di.Injector) DbSyncModule(org.apache.cayenne.dbsync.DbSyncModule) File(java.io.File) Test(org.junit.Test)

Example 13 with DbSyncModule

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);
}
Also used : DbAdapter(org.apache.cayenne.dba.DbAdapter) Injector(org.apache.cayenne.di.Injector) DbSyncModule(org.apache.cayenne.dbsync.DbSyncModule) AdhocObjectFactory(org.apache.cayenne.di.AdhocObjectFactory) ToolsModule(org.apache.cayenne.dbsync.reverse.configuration.ToolsModule)

Example 14 with DbSyncModule

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);
    }
}
Also used : MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) DbImportConfigurationValidator(org.apache.cayenne.dbsync.reverse.dbimport.DbImportConfigurationValidator) Logger(org.slf4j.Logger) DbImportAction(org.apache.cayenne.dbsync.reverse.dbimport.DbImportAction) ToolsModule(org.apache.cayenne.dbsync.reverse.configuration.ToolsModule) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) MojoFailureException(org.apache.maven.plugin.MojoFailureException) DbImportConfiguration(org.apache.cayenne.dbsync.reverse.dbimport.DbImportConfiguration) Injector(org.apache.cayenne.di.Injector) DbSyncModule(org.apache.cayenne.dbsync.DbSyncModule) DbImportModule(org.apache.cayenne.dbsync.reverse.dbimport.DbImportModule)

Aggregations

DbSyncModule (org.apache.cayenne.dbsync.DbSyncModule)14 ToolsModule (org.apache.cayenne.dbsync.reverse.configuration.ToolsModule)12 Injector (org.apache.cayenne.di.Injector)12 Logger (org.slf4j.Logger)9 DataMap (org.apache.cayenne.map.DataMap)6 Test (org.junit.Test)5 File (java.io.File)4 URL (java.net.URL)4 URLResource (org.apache.cayenne.resource.URLResource)4 DbGenerator (org.apache.cayenne.access.DbGenerator)3 DbAdapter (org.apache.cayenne.dba.DbAdapter)3 DbImportAction (org.apache.cayenne.dbsync.reverse.dbimport.DbImportAction)3 DbImportConfigurationValidator (org.apache.cayenne.dbsync.reverse.dbimport.DbImportConfigurationValidator)3 DbImportModule (org.apache.cayenne.dbsync.reverse.dbimport.DbImportModule)3 DriverDataSource (org.apache.cayenne.datasource.DriverDataSource)2 DbImportConfiguration (org.apache.cayenne.dbsync.reverse.dbimport.DbImportConfiguration)2 AdhocObjectFactory (org.apache.cayenne.di.AdhocObjectFactory)2 NoopJdbcEventLogger (org.apache.cayenne.log.NoopJdbcEventLogger)2 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)2 MojoFailureException (org.apache.maven.plugin.MojoFailureException)2