/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wfs.xml;
import java.util.List;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.geoserver.ows.kvp.ViewParamsKvpParser;
import org.geoserver.wfs.xml.v1_0_0.WFSBindingUtils;
import org.geotools.xml.Node;
/**
* Static methods for accessing the ViewParams KVP parser.
*/
public class SqlViewParamsExtractor {
/**
* Fully setup KVP parser for viewParams. Injected by spring at runtime
*/
private static ViewParamsKvpParser wfsSqlViewKvpParser = null;
public static ViewParamsKvpParser getWfsSqlViewKvpParser() {
return wfsSqlViewKvpParser;
}
public static void setWfsSqlViewKvpParser(ViewParamsKvpParser wfsSqlViewKvpParser) {
SqlViewParamsExtractor.wfsSqlViewKvpParser = wfsSqlViewKvpParser;
}
/**
* Fix the node object to store a parsed list of viewParams instead of a raw
* string. This prevents the parse() method choking later on...
*/
public static void fixNodeObject(Node node) throws Exception {
List viewParams = null;
if (node.hasAttribute("viewParams")) {
Node viewParamsAttribute = node.getAttribute("viewParams");
viewParams = (List) wfsSqlViewKvpParser.parse((String) viewParamsAttribute.getValue());
EList viewParamsList = new org.eclipse.emf.common.util.BasicEList();
viewParamsList.addAll(viewParams);
viewParamsAttribute.setValue(viewParamsList);
}
}
/**
* Set the viewParams in the binding class manually
* @param object
* @param node
* @throws Exception
*/
public static void viewParams(EObject object, Node node) throws Exception {
if (node.hasAttribute("viewParams")) {
String rawViewParams = (String) node.getAttributeValue("viewParams");
List viewParams = (List) wfsSqlViewKvpParser.parse(rawViewParams);
WFSBindingUtils.set(object, "viewParams", viewParams);
}
}
}