private List<Set> findContentNodes(final Map<UUID, Set> instanceMap, final UUID containerUUID) { final List<Set> contentNodes = new ArrayList<Set>(); for (final Entry<UUID, Set> entry : instanceMap.entrySet()) { final Set i = entry.getValue(); if (i.container() != null && i.container().identity().uniqueRepresentationReference().equals(containerUUID)) { contentNodes.add(i); } } return contentNodes; }
private void buildChangesetNode( final Map<UUID, Set> instanceMap, final ChangesetNode node, final Map<UUID, Set> skipMap) { final Set instance = node.getSet(); skipMap.put(instance.identity().uniqueRepresentationReference(), instance); final List<Set> containedInstances = findContentNodes(instanceMap, instance.identity().uniqueRepresentationReference()); for (final Set i : containedInstances) { final ChangesetNode childNode = new ChangesetNode(node, i); node.addChildNode(childNode); buildChangesetNode(instanceMap, childNode, skipMap); } }
private Set findIcon(final Set graphVisualization) { final Set container = set.container(); for (final Set symbol_to_si : graphVisualization.filter(Visualization.symbol_to_semantic_identity)) { if (symbol_to_si.to().isEqualTo(set) && symbol_to_si.fromEdgeEnd().isEqualTo(CellPlatformDomain.theDefault)) { return symbol_to_si.from(); } } // create the icon artefact, as it does not exist yet final Set icon = graphVisualization.addConcrete(Visualization.symbol, CellPlatformDomain.icon); Instantiation.arrow( Visualization.symbol_to_semantic_identity, S23MSemanticDomains.anonymous, CellPlatformDomain.theDefault, icon, S23MSemanticDomains.minCardinality_NOTAPPLICABLE, S23MSemanticDomains.maxCardinality_NOTAPPLICABLE, S23MSemanticDomains.isNavigable_NOTAPPLICABLE, S23MSemanticDomains.isContainer_FALSE, set, set, S23MSemanticDomains.minCardinality_NOTAPPLICABLE, S23MSemanticDomains.maxCardinality_NOTAPPLICABLE, S23MSemanticDomains.isNavigable_NOTAPPLICABLE, S23MSemanticDomains.isContainer_FALSE); return createGraphVisualization(container); }
private void serializeNodePath( final Serializer serializer, final ChangesetNode node, final List<String> serializedInstances) { final Set set = node.getSet(); if (set.properClass().isEqualTo(S23MKernel.coreGraphs.vertex)) { final String content = serializer.serializeInstance(set, false).getContent(); serializedInstances.add(content); final UUID uuid = node.getSet().identity().uniqueRepresentationReference(); objectPool.addArtifact( uuid.toString(), new ObjectPoolArtifact( uuid, S23MKernel.coreGraphs.graph.identity().uniqueRepresentationReference(), content)); for (final ChangesetNode childNode : node.getChildNodes()) { serializeNodePath(serializer, childNode, serializedInstances); } } }
// Copied from TestSequence private Set createGraphVisualization(final Set graph) { final Set gv = RepositoryStructure.graphVisualizations.addConcrete( Visualization.graphVisualization, graph); final Set v = gv.addConcrete(Visualization.visualizedGraph, graph); final Set vg_to_graph = Instantiation.arrow( Visualization.visualizedGraph_to_graph, S23MSemanticDomains.anonymous, Visualization.visualizedGraph, v, S23MSemanticDomains.minCardinality_NOTAPPLICABLE, S23MSemanticDomains.maxCardinality_NOTAPPLICABLE, S23MSemanticDomains.isNavigable_NOTAPPLICABLE, S23MSemanticDomains.isContainer_FALSE, graph, graph, S23MSemanticDomains.minCardinality_NOTAPPLICABLE, S23MSemanticDomains.maxCardinality_NOTAPPLICABLE, S23MSemanticDomains.isNavigable_NOTAPPLICABLE, S23MSemanticDomains.isContainer_FALSE); final Set details = gv.addConcrete(Visualization.details, Visualization.details); final Set structure = gv.addConcrete(Visualization.structure, Visualization.structure); final Set reuse = gv.addConcrete(Visualization.reuse, Visualization.reuse); final Set visibilities = gv.addConcrete(Visualization.visibilities, Visualization.visibilities); return gv; }
private Set findGraphVisualization() { final Set container = set.container(); for (final Set gv : RepositoryStructure.graphVisualizations.filterInstances()) { for (final Set vis_to_visGraph : gv.filter(Visualization.visualizedGraph_to_graph)) { if (vis_to_visGraph.to().isEqualTo(container)) { return vis_to_visGraph.from().container(); } } } // create the visualisation artefact, as it does not exist yet return createGraphVisualization(container); }
private void persistChangeset() { final Set changeSet = org.s23m.cell.api.Query.changedSets(); if (changeSet != null && changeSet.size() > 0) { final Map<UUID, Set> instanceMap = new HashMap<UUID, Set>(); final Map<UUID, Set> containerMap = new HashMap<UUID, Set>(); final Map<UUID, Set> skipMap = new HashMap<UUID, Set>(); final List<ChangesetNode> nodePaths = new ArrayList<ChangesetNode>(); final Iterator<Set> setItr = changeSet.iterator(); while (setItr.hasNext()) { final Set changeSetInstance = setItr.next(); instanceMap.put( changeSetInstance.identity().uniqueRepresentationReference(), changeSetInstance); if (changeSetInstance.container() != null) { containerMap.put( changeSetInstance.container().identity().uniqueRepresentationReference(), changeSetInstance); } } for (final Entry<UUID, Set> entry : instanceMap.entrySet()) { if (!skipMap.containsKey(entry.getKey())) { final Set changesetInstance = entry.getValue(); if (containerMap.containsKey( changesetInstance.identity().uniqueRepresentationReference())) { // Check for cases where changesetInstance is a middle node if (changesetInstance.container() != null && !instanceMap.containsKey( changesetInstance.container().identity().uniqueRepresentationReference())) { final ChangesetNode node = new ChangesetNode(null, changesetInstance); buildChangesetNode(instanceMap, node, skipMap); nodePaths.add(node); } } else { // Got its container in the map? if not put it the path list if (changesetInstance.container() != null && !instanceMap.containsKey( changesetInstance.container().identity().uniqueRepresentationReference())) { nodePaths.add(new ChangesetNode(null, changesetInstance)); } } } } // Serialize nodepaths and flick them to the repository final Serializer serializer = SerializerHolder.getS23MInstanceSerializer(SerializationType.XML); final List<String> serializedInstances = new ArrayList<String>(); for (final ChangesetNode node : nodePaths) { serializeNodePath(serializer, node, serializedInstances); } persistArtifacts(serializedInstances); } // persistObjectPool(); }
private void createInputForm() { setCaption(action.getCaption()); setWidth(WINDOW_WIDTH); setMargin(true); setSpacing(true); final Form inputForm = new Form(); inputForm.setWidth(INPUT_FORM_WIDTH); addComponent(inputForm); inputForm.setImmediate(true); inputForm.setWriteThrough(false); final InstantiationData instData = new InstantiationData(metaInstance, containerInstance.identity().name(), false, "", ""); final BeanItem<InstantiationData> instItem = new BeanItem<InstantiationData>(instData); inputForm.setItemDataSource(instItem); inputForm.setVisibleItemProperties(InstantiationData.getDisplayOrder()); // drop handler final DragAndDropWrapper targetWrapper = new DragAndDropWrapper(inputForm); targetWrapper.setWidth(WINDOW_WIDTH); targetWrapper.setHeight("100%"); targetWrapper.setDropHandler( new DropHandler() { public void drop(final DragAndDropEvent event) { final DataBoundTransferable t = (DataBoundTransferable) event.getTransferable(); final TreeNode node = (TreeNode) t.getData("itemId"); if (SetType.isSemanticDomainNode(node.getSet())) { instData.setIdentity(node.getSet()); inputForm.getField(InstantiationData.NAME).requestRepaint(); inputForm.getField(InstantiationData.PLURAL_NAME).requestRepaint(); inputForm.setComponentError(null); } else { inputForm .getItemDataSource() .getItemProperty(InstantiationData.METAINSTANCE) .setValue(node.getSet()); inputForm.getField(InstantiationData.METAINSTANCE_NAME).requestRepaint(); } } public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } }); addComponent(targetWrapper); final HorizontalLayout okbar = new HorizontalLayout(); okbar.setSpacing(true); okbar.setHeight(BUTTON_BAR_HEIGHT); inputForm.getFooter().addComponent(okbar); for (final String key : InstantiationData.getDisplayOrder()) { inputForm.getField(key).setWidth(FIELD_WIDTH); } final Button okBtn = new Button( OK_BUTTON_TEXT, new Button.ClickListener() { public void buttonClick(final ClickEvent event) { // create a new instance inputForm.commit(); if (!checkForEmptyInstances(instData)) { Set s = null; String msgCaption = ""; if (action.equals(TreeActionHandler.ACTION_ADD)) { msgCaption = INSTANCE_ADDITION_MSG; if (instData.isAbstract()) {; s = containerInstance.addAbstract( instData.getMetaInstance(), instData.getIdentity()); } else { s = containerInstance.addConcrete( instData.getMetaInstance(), instData.getIdentity()); } } else if (action.equals(TreeActionHandler.ACTION_INSTANTIATE)) { msgCaption = INSTANCE_INSTANTIATION_MSG; if (instData.isAbstract()) { s = Instantiation.instantiateAbstract(metaInstance, instData.getIdentity()); } else { s = Instantiation.instantiateConcrete(metaInstance, instData.getIdentity()); } } if (s != null && s.identity().name().equals(instData.getName())) { parent.getMainApplication().getMainWindow().showNotification(msgCaption); ((org.s23m.cell.editor.semanticdomain.Editor) getApplication()) .updateContainmentTree(); // changeSupport.firePropertyChange(EditorEvents.CHANGESET_MODIFIED.getEventName(), null, null); // changeSupport.removePropertyChangeListener(EditorController.getInstance()); parent.closeTab(VertexCreationFormLayout.this); } else { parent .getMainApplication() .getMainWindow() .showNotification( "Error", s.identity().name(), Notification.TYPE_ERROR_MESSAGE); } } } private boolean checkForEmptyInstances(final InstantiationData instData) { boolean gotEmptyValue = false; if (instData.getMetaInstance() == null) { inputForm.setComponentError( new UserError( DefaultFieldFactory.createCaptionByPropertyId( InstantiationData.METAINSTANCE) + " is missing.")); gotEmptyValue = true; } if (instData.getIdentity() == null) { inputForm.setComponentError( new UserError( DefaultFieldFactory.createCaptionByPropertyId(InstantiationData.IDENTITY) + " is missing.")); gotEmptyValue = true; } return gotEmptyValue; } }); final Button closeBtn = new Button( CANCEL_BUTTON_TEXT, new Button.ClickListener() { public void buttonClick(final ClickEvent event) { inputForm.discard(); ((org.s23m.cell.editor.semanticdomain.Editor) getApplication()) .updateContainmentTree(); // changeSupport.firePropertyChange(EditorEvents.CHANGESET_MODIFIED.getEventName(), // null, null); changeSupport.removePropertyChangeListener(EditorController.getInstance()); parent.closeTab(VertexCreationFormLayout.this); } }); okbar.addComponent(okBtn); okbar.addComponent(closeBtn); okbar.setComponentAlignment(closeBtn, Alignment.TOP_RIGHT); }