org.mapfish.print.wrapper.PElement Maven / Gradle / Ivy
package org.mapfish.print.wrapper;
import org.mapfish.print.wrapper.json.PJsonArray;
/**
* Common parent class for the Json and Yaml wrappers.
*
* @author Stéphane Brunner on 11/04/14.
*/
public abstract class PElement {
private final PElement parent;
private final String contextName;
/**
* Constructor.
*
* @param parent the parent element
* @param contextName the field name of this element in the parent.
*/
protected PElement(final PElement parent, final String contextName) {
this.parent = parent;
this.contextName = contextName;
}
/**
* Gets the string representation of the path to the current JSON element.
*
* @param key the leaf key
*/
public final String getPath(final String key) {
StringBuilder result = new StringBuilder();
addPathTo(result);
result.append(".");
result.append(getPathElement(key));
return result.toString();
}
protected final String getContextName() {
return this.contextName;
}
/**
* Gets the string representation of the path to the current JSON element.
*/
public final String getCurrentPath() {
StringBuilder result = new StringBuilder();
addPathTo(result);
return result.toString();
}
/**
* Append the path to the StringBuilder.
* @param result the string builder to add the path to.
*/
protected final void addPathTo(final StringBuilder result) {
if (this.parent != null) {
this.parent.addPathTo(result);
if (!(this.parent instanceof PJsonArray)) {
result.append(".");
}
}
result.append(getPathElement(this.contextName));
}
private static String getPathElement(final String val) {
if (val == null) {
return "";
}
if (val.contains(" ")) {
return "'" + val + "'";
} else {
return val;
}
}
public final PElement getParent() {
return this.parent;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy