use of org.apache.cayenne.configuration.DataMapLoader 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.configuration.DataMapLoader 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.configuration.DataMapLoader in project cayenne by apache.
the class CompatibilityDataMapLoaderIT method testLoad.
@Test
public void testLoad() throws Exception {
Injector injector = getInjector();
DataMapLoader loader = injector.getInstance(DataMapLoader.class);
assertTrue(loader instanceof CompatibilityDataMapLoader);
URL resourceUrl = getClass().getResource("../../project/compatibility/test-map-v6.map.xml");
Resource resource = new URLResource(resourceUrl);
DataMap dataMap = loader.load(resource);
assertNotNull(dataMap);
assertEquals(1, dataMap.getDbEntities().size());
assertEquals(1, dataMap.getObjEntities().size());
assertNotNull(dataMap.getObjEntity("Artist"));
assertNotNull(dataMap.getDbEntity("Artist"));
assertEquals(2, dataMap.getDbEntity("Artist").getAttributes().size());
}
use of org.apache.cayenne.configuration.DataMapLoader in project cayenne by apache.
the class ImportDataMapAction method importDataMap.
protected void importDataMap() {
File dataMapFile = selectDataMap(Application.getFrame());
if (dataMapFile == null) {
return;
}
DataMap newMap;
try {
URL url = dataMapFile.toURI().toURL();
DataMapLoader loader = application.getInjector().getInstance(DataMapLoader.class);
newMap = loader.load(new URLResource(url));
ConfigurationNode root = getProjectController().getProject().getRootNode();
newMap.setName(NameBuilder.builder(newMap, root).baseName(newMap.getName()).name());
Resource baseResource = ((DataChannelDescriptor) root).getConfigurationSource();
if (baseResource != null) {
Resource dataMapResource = baseResource.getRelativeResource(nameMapper.configurationLocation(newMap));
newMap.setConfigurationSource(dataMapResource);
}
getProjectController().addDataMap(this, newMap);
} catch (Exception ex) {
logObj.info("Error importing DataMap.", ex);
JOptionPane.showMessageDialog(Application.getFrame(), "Error reading DataMap: " + ex.getMessage(), "Can't Open DataMap", JOptionPane.OK_OPTION);
}
}
use of org.apache.cayenne.configuration.DataMapLoader in project cayenne by apache.
the class CayenneGeneratorMapLoaderAction method getMainDataMap.
DataMap getMainDataMap() throws MalformedURLException {
if (mainDataMap == null) {
DataMapLoader loader = createLoader();
DataMap mainDataMap = loadDataMap(loader, mainDataMapFile);
if (additionalDataMapFiles != null) {
EntityResolver entityResolver = new EntityResolver();
entityResolver.addDataMap(mainDataMap);
mainDataMap.setNamespace(entityResolver);
for (File additionalDataMapFile : additionalDataMapFiles) {
DataMap dataMap = loadDataMap(loader, additionalDataMapFile);
entityResolver.addDataMap(dataMap);
dataMap.setNamespace(entityResolver);
}
}
this.mainDataMap = mainDataMap;
}
return mainDataMap;
}
Aggregations