@Override protected ContentHandler createChildTagHandler(String namespaceURI, String localName, String name, Attributes attributes) { if (localName.equals(MAP_REF_TAG)) { String mapName = attributes.getValue("", "name"); nodeDescriptor.getDataMapNames().add(mapName); } return super.createChildTagHandler(namespaceURI, localName, name, attributes); } }
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()); } }
protected DataSource mappedBootiqueDataSource(DataNodeDescriptor nodeDescriptor) { String datasource = null; if (!nodeDescriptor.getDataMapNames().isEmpty()) { String dataMapName = nodeDescriptor.getDataMapNames().iterator().next(); for (DataMapConfig dataMapConfig : dataMapConfigs) { if (dataMapName.equals(dataMapConfig.getName())) { datasource = dataMapConfig.getDatasource(); break; } } } if (datasource == null) { datasource = defaultDataSourceName; } return mappedBootiqueDataSource(datasource); }
protected ConfigurationNode[] getLastMultipleObjects(DataNodeDescriptor dataNode) { List<ConfigurationNode> configurationNodeList = new ArrayList<ConfigurationNode>(); ConfigurationNode[] nodes = new ConfigurationNode[0]; String multipleObjects = preferences.getMultipleObjects(); if (multipleObjects.isEmpty()) { return configurationNodeList.toArray(nodes); } for (String objectName : multipleObjects.split(",")) { if (dataNode.getDataMapNames().contains(objectName)) { configurationNodeList.add(dataNode.getDataChannelDescriptor().getDataMap(objectName)); } } return configurationNodeList.toArray(nodes); }
@Override public void undo() throws CannotUndoException { dataNodeDescriptor.getDataMapNames().retainAll(linkedDataMaps); mediator.fireDataNodeEvent(new DataNodeEvent(this, dataNodeDescriptor)); }
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; }
@Override protected ContentHandler createChildTagHandler(String namespaceURI, String localName, String name, Attributes attributes) { if (localName.equals(MAP_REF_TAG)) { String mapName = attributes.getValue("", "name"); nodeDescriptor.getDataMapNames().add(mapName); } else if (localName.equals(DATA_SOURCE_TAG)) { DataSourceInfo dataSourceDescriptor = new DataSourceInfo(); nodeDescriptor.setDataSourceDescriptor(dataSourceDescriptor); return new DataSourceChildrenHandler(parser, this, dataSourceDescriptor); } return super.createChildTagHandler(namespaceURI, localName, name, attributes); } }
@Override public void undo() throws CannotUndoException { if (node != null) { node.getDataMapNames().remove(map.getName()); mediator.fireDataNodeEvent(new DataNodeEvent(this, node)); } if (!unlinkedNodes.isEmpty()) { for (DataNodeDescriptor unlinkedNode : unlinkedNodes) { unlinkedNode.getDataMapNames().add(map.getName()); mediator.fireDataNodeEvent(new DataNodeEvent(this, unlinkedNode)); } } }
@Override public DefaultMutableTreeNode visitDataNodeDescriptor( DataNodeDescriptor nodeDescriptor) { DataChannelDescriptor parent = null; if (!stack.isEmpty()) { DefaultMutableTreeNode parentNode = stack.getLast(); if (parentNode.getUserObject() instanceof DataChannelDescriptor) { parent = (DataChannelDescriptor) parentNode.getUserObject(); } } pushNode(nodeDescriptor); if (parent != null) { List<String> mapNames = new ArrayList<>(nodeDescriptor.getDataMapNames()); Collections.sort(mapNames); for (String mapName : mapNames) { makeNode(parent.getDataMap(mapName)); } } return popNode(); }
public void addDataMap(Object src, DataMap map, boolean makeCurrent) { map.setDataChannelDescriptor(currentState.domain); // new map was added.. link it to domain (and node if possible) currentState.domain.getDataMaps().add(map); if (currentState.node != null && !currentState.node.getDataMapNames().contains(map.getName())) { currentState.node.getDataMapNames().add(map.getName()); fireDataNodeEvent(new DataNodeEvent(this, currentState.node)); } fireDataMapEvent(new DataMapEvent(src, map, MapEvent.ADD)); if (makeCurrent) { fireDataMapDisplayEvent(new DataMapDisplayEvent(src, map, currentState.domain, currentState.node)); } }
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; }
@Override public void redo() throws CannotRedoException { for (DataMap dataMap : ((DataChannelDescriptor) mediator.getProject().getRootNode()).getDataMaps()) { if (!linkedDataMaps.contains(dataMap.getName())) { dataNodeDescriptor.getDataMapNames().add(dataMap.getName()); mediator.fireDataNodeEvent(new DataNodeEvent(this, dataNodeDescriptor)); } } }
/** * @since 4.0 */ protected DataNode addDataNode(DataDomain dataDomain, DataNodeDescriptor nodeDescriptor) throws Exception { DataNode dataNode = dataNodeFactory.createDataNode(nodeDescriptor); // DataMaps for (String dataMapName : nodeDescriptor.getDataMapNames()) { dataNode.addDataMap(dataDomain.getDataMap(dataMapName)); } dataDomain.addNode(dataNode); return dataNode; }
@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)); }
public void removeDataMapFromDataNode(DataNodeDescriptor node, DataMap map) { ProjectController mediator = getProjectController(); DataNodeEvent e = new DataNodeEvent(Application.getFrame(), node); e.setDomain((DataChannelDescriptor) mediator.getProject().getRootNode()); node.getDataMapNames().remove(map.getName()); // Force reloading of the data node in the browse view mediator.fireDataNodeEvent(e); }
protected DataNodeDescriptor cloneDataNodeDescriptor( DataNodeDescriptor original, DataChannelDescriptor targetOwner) { DataNodeDescriptor clone = new DataNodeDescriptor(original.getName()); // do not clone 'configurationSource' as we may change the structure of the node clone.setAdapterType(original.getAdapterType()); clone.setDataChannelDescriptor(targetOwner); clone.setDataSourceDescriptor(original.getDataSourceDescriptor()); clone.setDataSourceFactoryType(original.getDataSourceFactoryType()); clone.setParameters(original.getParameters()); clone.setSchemaUpdateStrategyType(original.getSchemaUpdateStrategyType()); clone.getDataMapNames().addAll(original.getDataMapNames()); return clone; } }
@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; }
@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; }
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); }