use of org.structr.web.entity.dom.DOMNode in project structr by structr.
the class DOMNodeChildrenCommand method processMessage.
@Override
public void processMessage(final WebSocketMessage webSocketData) {
final DOMNode node = getDOMNode(webSocketData.getId());
if (node == null) {
return;
}
final List<GraphObject> result = new LinkedList<>();
DOMNode currentNode = (DOMNode) node.getFirstChild();
while (currentNode != null) {
result.add(currentNode);
currentNode = (DOMNode) currentNode.getNextSibling();
}
webSocketData.setView(PropertyView.Ui);
webSocketData.setResult(result);
// send only over local connection
getWebSocket().send(webSocketData, true);
}
use of org.structr.web.entity.dom.DOMNode in project structr by structr.
the class InsertBeforeCommand method processMessage.
@Override
public void processMessage(final WebSocketMessage webSocketData) {
final String id = webSocketData.getId();
final Map<String, Object> nodeData = webSocketData.getNodeData();
final String refId = (String) nodeData.get("refId");
final String parentId = (String) nodeData.get("parentId");
// check node to append
if (id == null) {
getWebSocket().send(MessageBuilder.status().code(422).message("No node to append").build(), true);
return;
}
// check for parent ID
if (parentId == null) {
getWebSocket().send(MessageBuilder.status().code(422).message("Cannot add node without parentId").build(), true);
return;
}
final DOMNode refNode = getDOMNode(refId);
// check if parent node with given ID exists
final DOMNode parentNode = getDOMNode(parentId);
if (parentNode == null) {
getWebSocket().send(MessageBuilder.status().code(404).message("Parent node not found").build(), true);
return;
}
final DOMNode node = getDOMNode(id);
try {
// append node to parent
if (node != null) {
parentNode.insertBefore(node, refNode);
}
} catch (DOMException dex) {
// send DOM exception
getWebSocket().send(MessageBuilder.status().code(422).message(dex.getMessage()).build(), true);
}
}
use of org.structr.web.entity.dom.DOMNode in project structr by structr.
the class ReplaceDOMNodeCommand method processMessage.
@Override
public void processMessage(final WebSocketMessage webSocketData) {
final Map<String, Object> nodeData = webSocketData.getNodeData();
final String parentId = (String) nodeData.get("parentId");
final String newId = (String) nodeData.get("newId");
final String oldId = (String) nodeData.get("oldId");
final String pageId = webSocketData.getPageId();
if (pageId != null) {
// check for parent ID before creating any nodes
if (parentId == null) {
getWebSocket().send(MessageBuilder.status().code(422).message("Cannot replace node without parentId").build(), true);
return;
}
// check if parent node with given ID exists
final DOMNode parentNode = getDOMNode(parentId);
if (parentNode == null) {
getWebSocket().send(MessageBuilder.status().code(404).message("Parent node not found").build(), true);
return;
}
// check for old ID before creating any nodes
if (oldId == null) {
getWebSocket().send(MessageBuilder.status().code(422).message("Cannot replace node without oldId").build(), true);
return;
}
// check if old node with given ID exists
final DOMNode oldNode = getDOMNode(oldId);
if (oldNode == null) {
getWebSocket().send(MessageBuilder.status().code(404).message("Old node not found").build(), true);
return;
}
// check for new ID before creating any nodes
if (newId == null) {
getWebSocket().send(MessageBuilder.status().code(422).message("Cannot replace node without newId").build(), true);
return;
}
// check if new node with given ID exists
final DOMNode newNode = getDOMNode(newId);
if (newNode == null) {
getWebSocket().send(MessageBuilder.status().code(404).message("New node not found").build(), true);
return;
}
try {
parentNode.replaceChild(newNode, oldNode);
} catch (DOMException dex) {
// send DOM exception
getWebSocket().send(MessageBuilder.status().code(422).message(dex.getMessage()).build(), true);
}
} else {
getWebSocket().send(MessageBuilder.status().code(422).message("Cannot replace node without pageId").build(), true);
}
}
use of org.structr.web.entity.dom.DOMNode in project structr by structr.
the class Importer method getSiblingHashes.
private static List<String> getSiblingHashes(final DOMNode node) {
final List<String> siblingHashes = new LinkedList<>();
DOMNode nextSibling = node.getNextSibling();
while (nextSibling != null) {
siblingHashes.add(nextSibling.getIdHashOrProperty());
nextSibling = nextSibling.getNextSibling();
}
return siblingHashes;
}
use of org.structr.web.entity.dom.DOMNode in project structr by structr.
the class Importer method findSharedComponentByName.
public static DOMNode findSharedComponentByName(final String name) throws FrameworkException {
if (StringUtils.isEmpty(name)) {
return null;
}
final PropertyKey<Page> ownerDocumentKey = StructrApp.key(DOMNode.class, "ownerDocument");
final PropertyKey<DOMNode> parentKey = StructrApp.key(DOMNode.class, "parent");
for (final DOMNode n : StructrApp.getInstance().nodeQuery(DOMNode.class).andName(name).and(ownerDocumentKey, CreateComponentCommand.getOrCreateHiddenDocument()).getAsList()) {
// only return toplevel nodes in shared components
if (n.getProperty(parentKey) == null) {
return n;
}
}
return null;
}
Aggregations