Search in sources :

Example 36 with DataNodeDescriptor

use of org.apache.cayenne.configuration.DataNodeDescriptor in project cayenne by apache.

the class DataNodeValidator method validateName.

void validateName(DataNodeDescriptor node, ValidationResult validationResult) {
    String name = node.getName();
    if (Util.isEmptyString(name)) {
        addFailure(validationResult, node, "Unnamed DataNode");
        return;
    }
    DataChannelDescriptor dataChannelDescriptor = node.getDataChannelDescriptor();
    // check for duplicate names in the parent context
    for (DataNodeDescriptor otherNode : dataChannelDescriptor.getNodeDescriptors()) {
        if (otherNode == node) {
            continue;
        }
        if (name.equals(otherNode.getName())) {
            addFailure(validationResult, node, "Duplicate DataNode name: %s", name);
            break;
        }
    }
}
Also used : DataChannelDescriptor(org.apache.cayenne.configuration.DataChannelDescriptor) DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor)

Example 37 with DataNodeDescriptor

use of org.apache.cayenne.configuration.DataNodeDescriptor in project cayenne by apache.

the class FileProjectSaverTest method testSaveAs_Sorted.

@Test
public void testSaveAs_Sorted() throws Exception {
    File testFolder = setupTestDirectory("testSaveAs_Sorted");
    DataChannelDescriptor rootNode = new DataChannelDescriptor();
    rootNode.setName("test");
    // add maps and nodes in reverse alpha order. Check that they are saved in alpha
    // order
    rootNode.getDataMaps().add(new DataMap("C"));
    rootNode.getDataMaps().add(new DataMap("B"));
    rootNode.getDataMaps().add(new DataMap("A"));
    DataNodeDescriptor[] nodes = new DataNodeDescriptor[3];
    nodes[0] = new DataNodeDescriptor("Z");
    nodes[1] = new DataNodeDescriptor("Y");
    nodes[2] = new DataNodeDescriptor("X");
    nodes[0].getDataMapNames().add("C");
    nodes[0].getDataMapNames().add("B");
    nodes[0].getDataMapNames().add("A");
    rootNode.getNodeDescriptors().addAll(Arrays.asList(nodes));
    Project project = new Project(new ConfigurationTree<DataChannelDescriptor>(rootNode));
    saver.saveAs(project, new URLResource(testFolder.toURI().toURL()));
    File target = new File(testFolder, "cayenne-test.xml");
    assertTrue(target.isFile());
    assertSaveAs_Sorted(target);
}
Also used : URLResource(org.apache.cayenne.resource.URLResource) DataChannelDescriptor(org.apache.cayenne.configuration.DataChannelDescriptor) DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor) File(java.io.File) DataMap(org.apache.cayenne.map.DataMap) Test(org.junit.Test)

Example 38 with DataNodeDescriptor

use of org.apache.cayenne.configuration.DataNodeDescriptor in project cayenne by apache.

the class DataDomainProvider method createAndInitDataDomain.

protected DataDomain createAndInitDataDomain() throws Exception {
    DataChannelDescriptor descriptor = loadDescriptor();
    DataDomain dataDomain = createDataDomain(descriptor.getName());
    dataDomain.setMaxIdQualifierSize(runtimeProperties.getInt(Constants.SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY, -1));
    dataDomain.setQueryCache(new NestedQueryCache(queryCache));
    dataDomain.setEntitySorter(injector.getInstance(EntitySorter.class));
    dataDomain.setEventManager(injector.getInstance(EventManager.class));
    dataDomain.setDataRowStoreFactory(injector.getInstance(DataRowStoreFactory.class));
    dataDomain.initWithProperties(descriptor.getProperties());
    for (DataMap dataMap : descriptor.getDataMaps()) {
        dataDomain.addDataMap(dataMap);
    }
    dataDomain.getEntityResolver().applyDBLayerDefaults();
    dataDomain.getEntityResolver().setValueObjectTypeRegistry(valueObjectTypeRegistry);
    for (DataNodeDescriptor nodeDescriptor : descriptor.getNodeDescriptors()) {
        addDataNode(dataDomain, nodeDescriptor);
    }
    // init default node
    DataNode defaultNode = null;
    if (descriptor.getDefaultNodeName() != null) {
        defaultNode = dataDomain.getDataNode(descriptor.getDefaultNodeName());
    }
    if (defaultNode == null) {
        Collection<DataNode> allNodes = dataDomain.getDataNodes();
        if (allNodes.size() == 1) {
            defaultNode = allNodes.iterator().next();
        }
    }
    if (defaultNode != null) {
        logger.info("setting DataNode '" + defaultNode.getName() + "' as default, used by all unlinked DataMaps");
        dataDomain.setDefaultNode(defaultNode);
    }
    for (DataChannelFilter filter : filters) {
        dataDomain.addFilter(filter);
    }
    for (Object listener : listeners) {
        dataDomain.addListener(listener);
    }
    return dataDomain;
}
Also used : DataChannelDescriptor(org.apache.cayenne.configuration.DataChannelDescriptor) DataDomain(org.apache.cayenne.access.DataDomain) EntitySorter(org.apache.cayenne.map.EntitySorter) DataChannelFilter(org.apache.cayenne.DataChannelFilter) EventManager(org.apache.cayenne.event.EventManager) NestedQueryCache(org.apache.cayenne.cache.NestedQueryCache) DataNode(org.apache.cayenne.access.DataNode) DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor) DataRowStoreFactory(org.apache.cayenne.access.DataRowStoreFactory) DataMap(org.apache.cayenne.map.DataMap)

Example 39 with DataNodeDescriptor

use of org.apache.cayenne.configuration.DataNodeDescriptor in project cayenne by apache.

the class SyntheticNodeDataDomainProvider method createAndInitDataDomain.

@Override
protected DataDomain createAndInitDataDomain() throws Exception {
    DataDomain dataDomain = super.createAndInitDataDomain();
    // no nodes... add a synthetic node... it will become the default
    if (dataDomain.getDataNodes().isEmpty()) {
        DataChannelDescriptor channelDescriptor = new DataChannelDescriptor();
        DataNodeDescriptor nodeDescriptor = new DataNodeDescriptor(createSyntheticDataNodeName(dataDomain));
        for (DataMap map : dataDomain.getDataMaps()) {
            nodeDescriptor.getDataMapNames().add(map.getName());
        }
        nodeDescriptor.setDataChannelDescriptor(channelDescriptor);
        DataNode node = addDataNode(dataDomain, nodeDescriptor);
        dataDomain.setDefaultNode(node);
    }
    return dataDomain;
}
Also used : DataChannelDescriptor(org.apache.cayenne.configuration.DataChannelDescriptor) DataDomain(org.apache.cayenne.access.DataDomain) DataNode(org.apache.cayenne.access.DataNode) DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor) DataMap(org.apache.cayenne.map.DataMap)

Example 40 with DataNodeDescriptor

use of org.apache.cayenne.configuration.DataNodeDescriptor in project cayenne by apache.

the class DbImportConfiguration method createDataNodeDescriptor.

public DataNodeDescriptor createDataNodeDescriptor() {
    DataNodeDescriptor nodeDescriptor = new DataNodeDescriptor();
    nodeDescriptor.setAdapterType(getAdapter());
    nodeDescriptor.setDataSourceDescriptor(dataSourceInfo);
    return nodeDescriptor;
}
Also used : DataNodeDescriptor(org.apache.cayenne.configuration.DataNodeDescriptor)

Aggregations

DataNodeDescriptor (org.apache.cayenne.configuration.DataNodeDescriptor)58 DataChannelDescriptor (org.apache.cayenne.configuration.DataChannelDescriptor)28 DataMap (org.apache.cayenne.map.DataMap)23 Test (org.junit.Test)22 DbEntity (org.apache.cayenne.map.DbEntity)11 ArrayList (java.util.ArrayList)8 Injector (org.apache.cayenne.di.Injector)8 Constants (org.apache.cayenne.configuration.Constants)7 RuntimeProperties (org.apache.cayenne.configuration.RuntimeProperties)7 DbAdapter (org.apache.cayenne.dba.DbAdapter)7 AdhocObjectFactory (org.apache.cayenne.di.AdhocObjectFactory)7 ClassLoaderManager (org.apache.cayenne.di.ClassLoaderManager)7 DIBootstrap (org.apache.cayenne.di.DIBootstrap)7 Key (org.apache.cayenne.di.Key)7 Module (org.apache.cayenne.di.Module)7 DefaultAdhocObjectFactory (org.apache.cayenne.di.spi.DefaultAdhocObjectFactory)7 DefaultClassLoaderManager (org.apache.cayenne.di.spi.DefaultClassLoaderManager)7 JdbcEventLogger (org.apache.cayenne.log.JdbcEventLogger)7 Slf4jJdbcEventLogger (org.apache.cayenne.log.Slf4jJdbcEventLogger)7 ObjEntity (org.apache.cayenne.map.ObjEntity)7