package org.geotools.kml.bindings;
import javax.xml.namespace.QName;
import org.geotools.kml.Folder;
import org.geotools.kml.FolderStack;
import org.geotools.kml.v22.KML;
import org.geotools.xml.AbstractComplexBinding;
import org.geotools.xml.Binding;
import org.geotools.xml.ElementInstance;
import org.geotools.xml.Node;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class NameBinding extends AbstractComplexBinding {
private final FolderStack folderStack;
private final static String FOLDER = KML.Folder.getLocalPart();
public NameBinding(FolderStack folderStack) {
this.folderStack = folderStack;
}
@Override
public QName getTarget() {
return KML.name;
}
@Override
public int getExecutionMode() {
return Binding.OVERRIDE;
}
@SuppressWarnings("rawtypes")
@Override
public Class getType() {
return String.class;
}
@Override
public Object parse(ElementInstance instance, Node node, Object value) throws Exception {
Node parent = node.getParent();
if (parent != null) {
String parentElementName = parent.getComponent().getName();
if (FOLDER.equals(parentElementName)) {
Folder folder = folderStack.peek();
if (folder != null) {
folder.setName(value.toString());
}
}
}
return super.parse(instance, node, value);
}
public Element encode(Object object, Document document, Element value) throws Exception {
value.setTextContent(object.toString());
return value;
}
}