1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package cz.zcu.mre.sparkle.gui.query.queryMainParts;
21
22 import cz.zcu.mre.sparkle.gui.query.QueryFormPane;
23 import cz.zcu.mre.sparkle.gui.query.clause.ClausePane;
24 import cz.zcu.mre.sparkle.gui.query.clause.SingleClausePane;
25 import cz.zcu.mre.sparkle.gui.query.clause.SingleFromClausePane;
26 import cz.zcu.mre.sparkle.gui.query.helpers.ObjectRelatedActionEvent;
27 import cz.zcu.mre.sparkle.gui.query.helpers.PartialQueryGenerator;
28 import cz.zcu.mre.sparkle.tools.SparqlParser;
29 import javafx.collections.ObservableList;
30 import javafx.scene.Node;
31 import org.w3c.dom.Element;
32 import org.w3c.dom.NodeList;
33
34
35
36
37
38
39
40
41
42 public final class FromClausePane
43 extends ClausePane {
44
45 private static final String XML_ELEMENT_NAME = "FromGroup";
46
47 public FromClausePane(final QueryFormPane<?> parentQueryFormPane) {
48 super(parentQueryFormPane);
49 }
50
51 @Override
52 protected final SingleFromClausePane addNewRule() {
53 final SingleFromClausePane pane = new SingleFromClausePane(parentQueryFormPane);
54 final ObservableList<Node> children = getChildren();
55 children.add(children.indexOf(addRuleButton), pane);
56
57 pane.setOnRemovalRequested(keeper.toWeak((final ObjectRelatedActionEvent<SingleClausePane> e) -> children.remove(e.relatedObject)));
58
59 return pane;
60 }
61
62 @Override
63 public final String getQueryPart() {
64 final StringBuilder sb = new StringBuilder();
65
66 getChildren().stream().filter((node) -> (node instanceof PartialQueryGenerator)).forEach((node) -> sb.append(((PartialQueryGenerator) node).getQueryPart()));
67
68 return sb.toString();
69 }
70
71 @Override
72 public final void load(final Object e) throws LoadException {
73 if (e instanceof Element) {
74 final NodeList nodes = ((Element) e).getElementsByTagName(SingleFromClausePane.XML_ELEMENT_NAME);
75 final int nodesCount = nodes.getLength();
76 for (int nodeIndex = 0; nodeIndex < nodesCount; nodeIndex++) {
77 final org.w3c.dom.Node childNode = nodes.item(nodeIndex);
78 if (childNode instanceof Element) {
79 addNewRule().load(childNode);
80 }
81 }
82 } else if (e instanceof SparqlParser.DatasetClauseContext) {
83 addNewRule().load(e);
84 }
85 }
86
87 @Override
88 public final String getXMLElementName() {
89 return XML_ELEMENT_NAME;
90 }
91 }