/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kie.workbench.common.stunner.bpmn.backend.marshall.json.parser;
import org.kie.workbench.common.stunner.bpmn.backend.marshall.json.parser.common.ArrayParser;
import org.kie.workbench.common.stunner.bpmn.backend.marshall.json.parser.common.IntegerFieldParser;
import org.kie.workbench.common.stunner.bpmn.backend.marshall.json.parser.common.ObjectParser;
import org.kie.workbench.common.stunner.bpmn.backend.marshall.json.parser.common.StringFieldParser;
import org.kie.workbench.common.stunner.core.graph.Edge;
import org.kie.workbench.common.stunner.core.graph.Node;
import org.kie.workbench.common.stunner.core.graph.content.view.View;
public class EdgeParser extends ElementParser<Edge<View, Node>> {
public EdgeParser(final String name,
final Edge<View, Node> element) {
super(name,
element);
}
@Override
public void initialize(final Context context) {
super.initialize(context);
String outNodeId = element.getTargetNode() != null ? element.getTargetNode().getUUID() : null;
// Outgoing.
if (null != outNodeId) {
ArrayParser outgoingParser = new ArrayParser("outgoing");
outgoingParser.addParser(new ObjectParser("").addParser(new StringFieldParser("resourceId",
outNodeId)));
super.addParser(outgoingParser);
}
// TODO: Dockers -> BPMN2 marshaller expects dockers present for sequence flows,
// so using dummy 0,0 coordinates for now - Use magnets index or whatever can fit here.
ObjectParser docker1ObjParser = new ObjectParser("")
.addParser(new IntegerFieldParser("x",
0))
.addParser(new IntegerFieldParser("y",
0));
ObjectParser docker2ObjParser = new ObjectParser("")
.addParser(new IntegerFieldParser("x",
0))
.addParser(new IntegerFieldParser("y",
0));
ArrayParser dockersParser = new ArrayParser("dockers")
.addParser(docker1ObjParser)
.addParser(docker2ObjParser);
super.addParser(dockersParser);
}
}