use of org.apache.cayenne.map.DataMap in project cayenne by apache.
the class FileProjectSaverTest method testSaveForProjectFileWithRelatedPaths.
/**
* Method test fix for CAY-1780. If specify related fragments (for example ./../)
* in target file path then file must be created successfully.
*
* @throws Exception
*/
@Test
public void testSaveForProjectFileWithRelatedPaths() throws Exception {
File testFolder = setupTestDirectory("testSaveForProjectFileWithRelatedPaths");
String mapFilePath = testFolder.toURI() + "../test.map.xml";
String mapFileName = "test";
DataMap testDataMap = new DataMap(mapFileName);
testDataMap.setConfigurationSource(new URLResource(new URL(mapFilePath)));
Project project = new Project(new ConfigurationTree<DataMap>(testDataMap));
saver.save(project);
File target = new File(testFolder.getParentFile(), mapFileName + ".map.xml");
assertTrue(target.isFile());
}
use of org.apache.cayenne.map.DataMap in project cayenne by apache.
the class NameBuilderTest method testName_DataChannelDescriptorContext.
@Test
public void testName_DataChannelDescriptorContext() throws Exception {
DataChannelDescriptor descriptor = new DataChannelDescriptor();
DataMap m0 = new DataMap();
m0.setName(NameBuilder.builder(m0).in(descriptor).name());
assertEquals("datamap", m0.getName());
descriptor.getDataMaps().add(m0);
DataMap m1 = new DataMap();
m1.setName(NameBuilder.builder(m1).in(descriptor).name());
assertEquals("datamap1", m1.getName());
descriptor.getDataMaps().add(m1);
DataNodeDescriptor nd0 = new DataNodeDescriptor();
nd0.setName(NameBuilder.builder(nd0).in(descriptor).name());
assertEquals("datanode", nd0.getName());
descriptor.getNodeDescriptors().add(nd0);
DataNodeDescriptor nd1 = new DataNodeDescriptor();
nd1.setName(NameBuilder.builder(nd1).in(descriptor).name());
assertEquals("datanode1", nd1.getName());
descriptor.getNodeDescriptors().add(nd1);
}
use of org.apache.cayenne.map.DataMap in project cayenne by apache.
the class DefaultDbImportActionTest method testImportWithFieldChanged.
@Test
public void testImportWithFieldChanged() throws Exception {
DbImportConfiguration config = mock(DbImportConfiguration.class);
when(config.getTargetDataMap()).thenReturn(FILE_STUB);
when(config.createMergeDelegate()).thenReturn(new DefaultModelMergeDelegate());
when(config.getDbLoaderConfig()).thenReturn(new DbLoaderConfiguration());
when(config.createNameGenerator()).thenReturn(new DefaultObjectNameGenerator(NoStemStemmer.getInstance()));
when(config.createMeaningfulPKFilter()).thenReturn(NamePatternMatcher.EXCLUDE_ALL);
DbLoader dbLoader = new DbLoader(mockAdapter, mockConnection, config.getDbLoaderConfig(), mockDelegate, mockNameGenerator) {
@Override
public DataMap load() throws SQLException {
DataMap dataMap = new DataMap();
new DataMapBuilder(dataMap).with(dbEntity("ARTGROUP").attributes(dbAttr("GROUP_ID").typeInt().primaryKey(), dbAttr("NAME").typeVarchar(100).mandatory(), dbAttr("NAME_01").typeVarchar(100).mandatory(), dbAttr("PARENT_GROUP_ID").typeInt())).with(objEntity("org.apache.cayenne.testdo.testmap", "ArtGroup", "ARTGROUP").attributes(objAttr("name").type(String.class).dbPath("NAME")));
return dataMap;
}
};
final boolean[] haveWeTriedToSave = { false };
DefaultDbImportAction action = buildDbImportAction(new FileProjectSaver(Collections.<ProjectExtension>emptyList()) {
@Override
public void save(Project project) {
haveWeTriedToSave[0] = true;
// Validation phase
DataMap rootNode = (DataMap) project.getRootNode();
assertEquals(1, rootNode.getObjEntities().size());
assertEquals(1, rootNode.getDbEntityMap().size());
DbEntity entity = rootNode.getDbEntity("ARTGROUP");
assertNotNull(entity);
assertEquals(4, entity.getAttributes().size());
assertNotNull(entity.getAttribute("NAME_01"));
}
}, new DataMapLoader() {
@Override
public DataMap load(Resource configurationResource) throws CayenneRuntimeException {
return new DataMapBuilder().with(dbEntity("ARTGROUP").attributes(dbAttr("GROUP_ID").typeInt().primaryKey(), dbAttr("NAME").typeVarchar(100).mandatory(), dbAttr("PARENT_GROUP_ID").typeInt())).with(objEntity("org.apache.cayenne.testdo.testmap", "ArtGroup", "ARTGROUP").attributes(objAttr("name").type(String.class).dbPath("NAME"))).build();
}
}, dbLoader);
action.execute(config);
assertTrue("We should try to save.", haveWeTriedToSave[0]);
}
use of org.apache.cayenne.map.DataMap in project cayenne by apache.
the class DefaultDbImportActionTest method testImportWithoutChanges.
@Test
public void testImportWithoutChanges() throws Exception {
DbImportConfiguration config = mock(DbImportConfiguration.class);
when(config.getTargetDataMap()).thenReturn(FILE_STUB);
when(config.createMergeDelegate()).thenReturn(new DefaultModelMergeDelegate());
when(config.getDbLoaderConfig()).thenReturn(new DbLoaderConfiguration());
DbLoader dbLoader = new DbLoader(mockAdapter, mockConnection, config.getDbLoaderConfig(), mockDelegate, mockNameGenerator) {
@Override
public DataMap load() throws SQLException {
DataMap dataMap = new DataMap();
new DataMapBuilder(dataMap).with(dbEntity("ARTGROUP").attributes(dbAttr("NAME").typeVarchar(100).mandatory()));
return dataMap;
}
};
FileProjectSaver projectSaver = mock(FileProjectSaver.class);
doNothing().when(projectSaver).save(any(Project.class));
DataMapLoader mapLoader = mock(DataMapLoader.class);
when(mapLoader.load(any(Resource.class))).thenReturn(new DataMapBuilder().with(dbEntity("ARTGROUP").attributes(dbAttr("NAME").typeVarchar(100).mandatory())).build());
DefaultDbImportAction action = buildDbImportAction(projectSaver, mapLoader, dbLoader);
action.execute(config);
// no changes - we still
verify(projectSaver, never()).save(any(Project.class));
verify(mapLoader, times(1)).load(any(Resource.class));
}
use of org.apache.cayenne.map.DataMap in project cayenne by apache.
the class DefaultDbImportActionTest method testSaveLoadedNoProject.
@Test
public void testSaveLoadedNoProject() throws Exception {
Logger log = mock(Logger.class);
Injector i = DIBootstrap.createInjector(new DbSyncModule(), new ToolsModule(log), new DbImportModule());
DbImportConfiguration params = mock(DbImportConfiguration.class);
when(params.getCayenneProject()).thenReturn(null);
URL outUrl = new URL(getPackageURL(), "dbimport/testSaveLoaded1.map.xml");
DefaultDbImportAction action = (DefaultDbImportAction) i.getInstance(DbImportAction.class);
File out = new File(outUrl.toURI());
out.delete();
assertFalse(out.exists());
DataMap map = new DataMap("testSaveLoaded1");
map.setConfigurationSource(new URLResource(outUrl));
action.saveLoaded(map, params);
assertTrue(out.isFile());
String contents = Util.stringFromFile(out);
assertTrue("Has no project version saved", contents.contains("project-version=\""));
}
Aggregations