@Override public boolean isNameInUse(String name) { DataChannelDescriptor dataChannelDescriptor = (DataChannelDescriptor) parent; for (DataNodeDescriptor dataNodeDescriptor : dataChannelDescriptor.getNodeDescriptors()) { if (dataNodeDescriptor.getName().equals(name)) { return true; } } return false; } });
public void redo() throws CannotRedoException { domain.getNodeDescriptors().add(node); CreateNodeAction action = actionManager.getAction(CreateNodeAction.class); action.createDataNode(node); } }
public static DataNodeDescriptor getNodeLinkedToMap(DataChannelDescriptor domain, DataMap map) { Collection<DataNodeDescriptor> nodes = domain.getNodeDescriptors(); // go via an iterator in an indexed loop, since // we already obtained the size // (and index is required to initialize array) for (DataNodeDescriptor node : nodes) { if (node.getDataMapNames().contains(map.getName())) { return node; } } return null; }
private ConfigurationNode getConfigNode(DataChannelDescriptor dataChannel, String objectName) { if (dataChannel.getName().equals(objectName)) { return dataChannel; } for (DataNodeDescriptor dataNode : dataChannel.getNodeDescriptors()) { if (dataNode.getName().equals(objectName)) { return dataNode; } } for (DataMap dataMap : dataChannel.getDataMaps()) { if (dataMap.getName().equals(objectName)) { return dataMap; } } return null; }
public static void setDataMapName(DataChannelDescriptor domain, DataMap map, String newName) { String oldName = map.getName(); // must fully relink renamed map List<DataNodeDescriptor> nodes = new ArrayList<DataNodeDescriptor>(); for (DataNodeDescriptor node : domain.getNodeDescriptors()) if (node.getDataMapNames().contains(map.getName())) nodes.add(node); map.setName(newName); for (DataNodeDescriptor node : nodes) { node.getDataMapNames().remove(oldName); node.getDataMapNames().add(map.getName()); } }
@Override public Void visitDataChannelDescriptor(DataChannelDescriptor node) { node.setConfigurationSource(configurationSource); // update child configurations for (DataNodeDescriptor childDescriptor : node.getNodeDescriptors()) { childDescriptor.setDataChannelDescriptor(node); childDescriptor.setConfigurationSource(configurationSource); } return null; }
private void validateNodeLinks(DataMap map, ValidationResult validationResult) { DataChannelDescriptor domain = map.getDataChannelDescriptor(); if (domain == null) { return; } boolean unlinked = true; int nodeCount = 0; for (DataNodeDescriptor node : domain.getNodeDescriptors()) { nodeCount++; if (node.getDataMapNames().contains(map.getName())) { unlinked = false; break; } } if (unlinked && nodeCount > 0) { addFailure(validationResult, map, "DataMap is not linked to any DataNodes"); } }
private DataNodeDescriptor createDefaultNodeDescriptor(DataDomain dataDomain) { DataChannelDescriptor channelDescriptor = new DataChannelDescriptor(); DataNodeDescriptor defaultDescriptor = new DataNodeDescriptor(createSyntheticDataNodeName(dataDomain)); channelDescriptor.getNodeDescriptors().add(defaultDescriptor); for (DataMap map : dataDomain.getDataMaps()) { channelDescriptor.getDataMaps().add(map); defaultDescriptor.getDataMapNames().add(map.getName()); } defaultDescriptor.setDataChannelDescriptor(channelDescriptor); return defaultDescriptor; }
public ValidationResult visitDataChannelDescriptor(DataChannelDescriptor channelDescriptor) { dataChannelValidator.validate(channelDescriptor, validationResult); for (DataNodeDescriptor node : channelDescriptor.getNodeDescriptors()) { visitDataNodeDescriptor(node); } for (DataMap map : channelDescriptor.getDataMaps()) { visitDataMap(map); } return validationResult; }
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; } } } }
public void removeDataNode(DataNodeDescriptor node) { ProjectController mediator = getProjectController(); DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode(); DataNodeEvent e = new DataNodeEvent(Application.getFrame(), node, MapEvent.REMOVE); e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode()); domain.getNodeDescriptors().remove(node); mediator.fireDataNodeEvent(e); }
public void createDataNode(DataNodeDescriptor node) { DataChannelDescriptor domain = (DataChannelDescriptor) getProjectController().getProject().getRootNode(); domain.getNodeDescriptors().add(node); getProjectController().fireDataNodeEvent(new DataNodeEvent(this, node, MapEvent.ADD)); getProjectController().fireDataNodeDisplayEvent(new DataNodeDisplayEvent(this, domain, node)); }
public void setNodeName(String newName) { if (node == null) { return; } // validate... if (newName == null) { throw new ValidationException("Empty DataNode Name"); } ProjectController parent = (ProjectController) getParent(); DataNodeDefaults oldPref = parent.getDataNodePreferences(); DataChannelDescriptor dataChannelDescriptor = (DataChannelDescriptor) getApplication().getProject() .getRootNode(); Collection<DataNodeDescriptor> matchingNode = dataChannelDescriptor.getNodeDescriptors(); Iterator<DataNodeDescriptor> it = matchingNode.iterator(); while (it.hasNext()) { DataNodeDescriptor node = it.next(); if (node.getName().equals(newName)) { // there is an entity with the same name throw new ValidationException("There is another DataNode named '" + newName + "'. Use a different name."); } } // passed validation, set value... // TODO: fixme....there is a slight chance that domain is different than // the one // cached node belongs to ProjectUtil.setDataNodeName((DataChannelDescriptor) parent.getProject().getRootNode(), node, newName); oldPref.copyPreferences(newName); }
@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)); }
channelDescriptor.getNodeDescriptors().add(nodeDescriptor); channelDescriptors.add(channelDescriptor);
public DefaultMutableTreeNode visitDataChannelDescriptor( DataChannelDescriptor channelDescriptor) { pushNode(channelDescriptor); for (DataMap map : sort(channelDescriptor.getDataMaps())) { map.acceptVisitor(this); } for (DataNodeDescriptor node : sort(channelDescriptor.getNodeDescriptors())) { node.acceptVisitor(this); } return popNode(); }
public void dataMapRemoved(DataMapEvent e) { DataMap map = e.getDataMap(); DataChannelDescriptor dataChannelDescriptor = (DataChannelDescriptor) Application .getInstance() .getProject() .getRootNode(); removeNode(new Object[] { dataChannelDescriptor, map }); mediator.getEntityResolver().removeDataMap(e.getDataMap()); // Clean up map from the nodes for (DataNodeDescriptor dataNode : new ArrayList<>(dataChannelDescriptor.getNodeDescriptors())) { removeNode(new Object[] { dataChannelDescriptor, dataNode, map }); } }
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<>(); // unlink map from any nodes // Theoretically only one node may contain a datamap at each given time. // 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)); }
public void removeDataMap(DataMap map) { ProjectController mediator = getProjectController(); DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode(); DataMapEvent e = new DataMapEvent(Application.getFrame(), map, MapEvent.REMOVE); e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode()); domain.getDataMaps().remove(map); if (map.getConfigurationSource() != null) { URL mapURL = map.getConfigurationSource().getURL(); Collection<URL> unusedResources = getCurrentProject().getUnusedResources(); unusedResources.add(mapURL); } for (DataNodeDescriptor node : domain.getNodeDescriptors()) { if (node.getDataMapNames().contains(map.getName())) { removeDataMapFromDataNode(node, map); } } mediator.fireDataMapEvent(e); }
dataDomain.getEntityResolver().setValueObjectTypeRegistry(valueObjectTypeRegistry); for (DataNodeDescriptor nodeDescriptor : descriptor.getNodeDescriptors()) { addDataNode(dataDomain, nodeDescriptor);