use of org.apache.cayenne.configuration.DataChannelDescriptor in project cayenne by apache.
the class GenerateCodeAction method performAction.
public void performAction(ActionEvent e) {
Collection<DataMap> dataMaps;
DataMap dataMap = getProjectController().getCurrentDataMap();
if (dataMap != null) {
dataMaps = new ArrayList<>();
dataMaps.add(dataMap);
new CodeGeneratorController(getApplication().getFrameController(), dataMaps).startup();
} else if (getProjectController().getCurrentDataNode() != null) {
Collection<String> nodeMaps = getProjectController().getCurrentDataNode().getDataMapNames();
Project project = getProjectController().getProject();
dataMaps = ((DataChannelDescriptor) project.getRootNode()).getDataMaps();
Collection<DataMap> resultMaps = new ArrayList<>();
for (DataMap map : dataMaps) {
if (nodeMaps.contains(map.getName())) {
resultMaps.add(map);
}
}
new CodeGeneratorController(getApplication().getFrameController(), resultMaps).startup();
} else {
Project project = getProjectController().getProject();
dataMaps = ((DataChannelDescriptor) project.getRootNode()).getDataMaps();
new CodeGeneratorController(getApplication().getFrameController(), dataMaps).startup();
}
}
use of org.apache.cayenne.configuration.DataChannelDescriptor in project cayenne by apache.
the class ImportEOModelAction method loadDataNode.
protected void loadDataNode(Map eomodelIndex) {
// if this is JDBC or JNDI node and connection dictionary is specified, load a
// DataNode, otherwise ignore it (meaning that pre 5.* EOModels will not have a
// node).
String adapter = (String) eomodelIndex.get("adaptorName");
Map connection = (Map) eomodelIndex.get("connectionDictionary");
if (adapter != null && connection != null) {
CreateNodeAction nodeBuilder = (CreateNodeAction) getApplication().getActionManager().getAction(CreateNodeAction.class);
// this should make created node current, resulting in the new map being added
// to the node automatically once it is loaded
DataNodeDescriptor node = nodeBuilder.buildDataNode();
// configure node...
if ("JNDI".equalsIgnoreCase(adapter)) {
node.setDataSourceFactoryType(JNDIDataSourceFactory.class.getName());
node.setParameters((String) connection.get("serverUrl"));
} else {
// guess adapter from plugin or driver
AdapterMapping adapterDefaults = getApplication().getAdapterMapping();
String cayenneAdapter = adapterDefaults.adapterForEOFPluginOrDriver((String) connection.get("plugin"), (String) connection.get("driver"));
if (cayenneAdapter != null) {
try {
Class<DbAdapter> adapterClass = getApplication().getClassLoadingService().loadClass(DbAdapter.class, cayenneAdapter);
node.setAdapterType(adapterClass.toString());
} catch (Throwable ex) {
// ignore...
}
}
node.setDataSourceFactoryType(XMLPoolingDataSourceFactory.class.getName());
DataSourceInfo dsi = node.getDataSourceDescriptor();
dsi.setDataSourceUrl(keyAsString(connection, "URL"));
dsi.setJdbcDriver(keyAsString(connection, "driver"));
dsi.setPassword(keyAsString(connection, "password"));
dsi.setUserName(keyAsString(connection, "username"));
}
DataChannelDescriptor domain = (DataChannelDescriptor) getProjectController().getProject().getRootNode();
domain.getNodeDescriptors().add(node);
// send events after the node creation is complete
getProjectController().fireDataNodeEvent(new DataNodeEvent(this, node, MapEvent.ADD));
getProjectController().fireDataNodeDisplayEvent(new DataNodeDisplayEvent(this, (DataChannelDescriptor) getProjectController().getProject().getRootNode(), node));
}
}
use of org.apache.cayenne.configuration.DataChannelDescriptor in project cayenne by apache.
the class LinkDataMapAction method linkDataMap.
public void linkDataMap(DataMap map, DataNodeDescriptor node) {
if (map == null) {
return;
}
// no change?
if (node != null && node.getDataMapNames().contains(map.getName())) {
return;
}
ProjectController mediator = getProjectController();
DataChannelDescriptor dataChannelDescriptor = (DataChannelDescriptor) mediator.getProject().getRootNode();
Collection<DataNodeDescriptor> unlinkedNodes = new ArrayList<>();
// Being paranoid, we will still scan through all.
for (DataNodeDescriptor nextNode : dataChannelDescriptor.getNodeDescriptors()) {
if (nextNode.getDataMapNames().contains(map.getName())) {
nextNode.getDataMapNames().remove(map.getName());
mediator.fireDataNodeEvent(new DataNodeEvent(this, nextNode));
unlinkedNodes.add(nextNode);
}
}
// link to a selected node
if (node != null) {
node.getDataMapNames().add(map.getName());
// announce DataNode change
mediator.fireDataNodeEvent(new DataNodeEvent(this, node));
}
application.getUndoManager().addEdit(new LinkDataMapUndoableEdit(map, node, unlinkedNodes, mediator));
}
use of org.apache.cayenne.configuration.DataChannelDescriptor in project cayenne by apache.
the class LinkDataMapsAction method performAction.
@Override
public void performAction(ActionEvent e) {
ProjectController mediator = getProjectController();
DataChannelDescriptor dataChannelDescriptor = (DataChannelDescriptor) mediator.getProject().getRootNode();
Collection<String> linkedDataMaps = new ArrayList<>();
DataNodeDescriptor dataNodeDescriptor = mediator.getCurrentDataNode();
for (DataNodeDescriptor dataNodeDesc : dataChannelDescriptor.getNodeDescriptors()) {
linkedDataMaps.addAll(dataNodeDesc.getDataMapNames());
}
for (DataMap dataMap : dataChannelDescriptor.getDataMaps()) {
if (!linkedDataMaps.contains(dataMap.getName())) {
dataNodeDescriptor.getDataMapNames().add(dataMap.getName());
mediator.fireDataNodeEvent(new DataNodeEvent(this, dataNodeDescriptor));
}
}
application.getUndoManager().addEdit(new LinkDataMapsUndoableEdit(dataNodeDescriptor, linkedDataMaps, mediator));
}
use of org.apache.cayenne.configuration.DataChannelDescriptor in project cayenne by apache.
the class ObjEntitySyncAction method syncObjEntity.
protected void syncObjEntity() {
ProjectController mediator = getProjectController();
ObjEntity entity = mediator.getCurrentObjEntity();
if (entity != null && entity.getDbEntity() != null) {
EntityMergeSupport merger = new EntitySyncController(Application.getInstance().getFrameController(), entity).createMerger();
if (merger == null) {
return;
}
merger.setNameGenerator(new DbEntitySyncAction.PreserveRelationshipNameGenerator());
if (merger.synchronizeWithDbEntity(entity)) {
mediator.fireObjEntityEvent(new EntityEvent(this, entity, MapEvent.CHANGE));
mediator.fireObjEntityDisplayEvent(new EntityDisplayEvent(this, entity, entity.getDataMap(), (DataChannelDescriptor) mediator.getProject().getRootNode()));
}
}
}
Aggregations