1 /* 2 * Copyright 2010 Capgemini 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 * 15 */ 16 package org.xmlfield.core.api; 17 18 import org.xmlfield.core.internal.NamespaceMap; 19 20 /** 21 * Modifier interface, this interface describe the diffrent operation needed to 22 * be done on an XML document. 23 * 24 * @author Guillaume Mary <guillaume.mary@capgemini.com> 25 * 26 */ 27 public interface XmlFieldNodeModifier { 28 29 /** 30 * Create an attribute to a node 31 * 32 * @param contextNode 33 * node where the attribute will be created 34 * @param attributeName 35 * name of the attribute 36 * @param textContent 37 * text content of the attribute 38 */ 39 void createAttribute(final XmlFieldNode contextNode, 40 final String attributeName, final String textContent); 41 42 /** 43 * Create a new element node at the end of the root node. 44 * 45 * @param namespaces 46 * document namespaces 47 * @param node 48 * context node 49 * @param elementName 50 * element name 51 * @return the created element 52 */ 53 XmlFieldNode createElement(final NamespaceMap namespaces, 54 final XmlFieldNode node, final String elementName); 55 56 /** 57 * Create a new element node at the end of the root node. 58 * 59 * @param namespaces 60 * document namespaces 61 * @param node 62 * context node 63 * @param elementName 64 * element name 65 * @param textContent 66 * text content of the new element 67 * @return the new element 68 */ 69 XmlFieldNode createElement(final NamespaceMap namespaces, 70 final XmlFieldNode node, final String elementName, 71 final String textContent); 72 73 /** 74 * Insert a node before another node. 75 * 76 * @param parentNode 77 * parent node of the nodes 78 * @param newChild 79 * node to insert 80 * @param refChild 81 * reference node where the node should be inserted before 82 * @return the inserted node 83 */ 84 XmlFieldNode insertBefore(final XmlFieldNode parentNode, 85 final XmlFieldNode newChild, XmlFieldNode refChild); 86 87 /** 88 * Remove an attribute from a specified node 89 * 90 * @param node 91 * node 92 * @param attributeName 93 * attribute name 94 * @return the attribute node removed 95 */ 96 XmlFieldNode removeAttribute(final XmlFieldNode node, 97 final String attributeName); 98 99 /** 100 * Remove a child node 101 * 102 * @param contextNode 103 * the context node 104 * @param oldChild 105 * child to be removed 106 * @return the removed node 107 */ 108 XmlFieldNode removeChild(final XmlFieldNode contextNode, 109 final XmlFieldNode oldChild); 110 111 /** 112 * Remove a node list 113 * 114 * @param contextNode 115 * the context node 116 * @param nodesToRemove 117 * node list of children to be removed 118 */ 119 void removeChildren(final XmlFieldNodeList nodesToRemove); 120 121 }