/* (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.request; import java.util.List; import javax.xml.namespace.QName; import org.eclipse.emf.ecore.EObject; import org.opengis.filter.Filter; /** * Lock in a LockFeature request. * * @author Justin Deoliveira, OpenGeo * */ public abstract class Lock extends RequestObject { protected Lock(EObject adaptee) { super(adaptee); } public abstract QName getTypeName(); public Filter getFilter() { return eGet(adaptee, "filter", Filter.class); } public void setFilter(Filter filter) { eSet(adaptee, "filter", filter); } public static class WFS11 extends Lock { public WFS11(EObject adaptee) { super(adaptee); } @Override public QName getTypeName() { return eGet(adaptee, "typeName", QName.class); } } public static class WFS20 extends Lock { public WFS20(EObject adaptee) { super(adaptee); } @Override public QName getTypeName() { List typeNames = eGet(adaptee, "typeNames", List.class); if (typeNames.size() == 1) { return (QName) typeNames.get(0); } throw new IllegalArgumentException("Multiple type names on single lock not supported"); } @Override public void setTypeName(QName typeName) { List typeNames = eGet(adaptee, "typeNames", List.class); typeNames.clear(); typeNames.add(typeName); } } }