/* Copyright (c) 2001, 2003 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
/*
* Created on Jan 6, 2004
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package org.vfny.geoserver.form.wfs;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.vfny.geoserver.config.WFSConfig;
import org.vfny.geoserver.global.dto.WFSDTO;
import java.net.MalformedURLException;
import java.net.URL;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
/**
* DOCUMENT ME!
*
* @author User To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class WFSContentForm extends ActionForm {
private boolean enabled;
private String onlineResource;
private String describeURL;
private int serviceLevel;
private String[] selectedFeatures;
private String[] features;
private boolean srsXmlStyle;
private boolean srsXmlStyleChecked = false;
private boolean citeConformanceHacks;
private boolean citeConformanceHacksChecked = false;
private boolean featureBounding;
private boolean featureBoundingChecked = false;
/*
* Because of the way that STRUTS works, if the user does not check the enabled box,
* or unchecks it, setEnabled() is never called, thus we must monitor setEnabled()
* to see if it doesn't get called. This must be accessible, as ActionForms need to
* know about it -- there is no way we can tell whether we are about to be passed to
* an ActionForm or not.
*
* Probably a better way to do this, but I can't think of one.
* -rgould
*
* TODO: Hey richard Jody here - Struts knows that boolean properties are
* not set if the user does nothing. Apparently that is why the reset
* method exists.
* Reset is called *every* time on ActionForm. Before the populate
* process has a go at things.
*
* The problem is that reset() retrieves the WFS's config enabled value
* and uses that to pre-populate the form. Thus, if they deselect it, setEnabled is
* never called, and enabled still remains true. The way I have done it isn't simple,
* but it works just fine.
*/
private boolean enabledChecked = false;
/**
* DOCUMENT ME!
*
* @return
*/
public boolean isEnabled() {
return enabled;
}
/**
* DOCUMENT ME!
*
* @return
*/
public String getOnlineResource() {
return onlineResource;
}
/**
* DOCUMENT ME!
*
* @param string
*/
public void setDescribeURL(String string) {
describeURL = string;
}
/**
* DOCUMENT ME!
*
* @param b
*/
public void setEnabled(boolean b) {
enabledChecked = true;
//System.out.println("setEnabled: enabledCheck/Enabled now " + b);
enabled = b;
}
/**
* DOCUMENT ME!
*
* @param string
*/
public void setOnlineResource(String string) {
onlineResource = string;
}
/**
* DOCUMENT ME!
*
* @return
*/
public String[] getFeatures() {
return features;
}
/**
* DOCUMENT ME!
*
* @return
*/
public String[] getSelectedFeatures() {
return selectedFeatures;
}
/**
* DOCUMENT ME!
*
* @param strings
*/
public void setFeatures(String[] strings) {
features = strings;
}
/**
* DOCUMENT ME!
*
* @param strings
*/
public void setSelectedFeatures(String[] strings) {
selectedFeatures = strings;
}
public void reset(ActionMapping arg0, HttpServletRequest arg1) {
super.reset(arg0, arg1);
enabledChecked = false;
srsXmlStyleChecked = false;
citeConformanceHacksChecked = false;
featureBoundingChecked = false;
ServletContext context = getServlet().getServletContext();
WFSConfig config = (WFSConfig) context.getAttribute(WFSConfig.CONFIG_KEY);
citeConformanceHacks = config.getCiteConformanceHacks();
featureBounding = config.isFeatureBounding();
serviceLevel = config.getServiceLevel();
this.enabled = config.isEnabled();
this.srsXmlStyle = config.isSrsXmlStyle();
URL url = config.getOnlineResource();
if (url != null) {
this.onlineResource = url.toString();
} else {
this.onlineResource = "";
}
}
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if ((serviceLevel != WFSDTO.BASIC)
&& (serviceLevel != WFSDTO.TRANSACTIONAL)
&& (serviceLevel != WFSDTO.COMPLETE)) {
errors.add("serviceLevel",
new ActionError("error.serviceLevel.invalid"));
}
if ((onlineResource == null) || onlineResource.equals("")) {
errors.add("onlineResource",
new ActionError("error.wfs.onlineResource.required"));
} else {
try {
URL url = new URL(onlineResource);
} catch (MalformedURLException badURL) {
errors.add("onlineResource",
new ActionError("error.wfs.onlineResource.malformed", badURL));
}
}
return errors;
}
/**
* DOCUMENT ME!
*
* @return
*/
public boolean isEnabledChecked() {
return enabledChecked;
}
/**
* DOCUMENT ME!
*
* @param b
*/
public void setEnabledChecked(boolean b) {
enabledChecked = b;
}
/**
* DOCUMENT ME!
*
* @return
*/
public boolean isSrsXmlStyleChecked() {
return srsXmlStyleChecked;
}
/**
* DOCUMENT ME!
*
* @param b
*/
public void setSrsXmlStyleChecked(boolean b) {
srsXmlStyleChecked = b;
}
/**
* Access serviceLevel property.
*
* @return Returns the serviceLevel.
*/
public int getServiceLevel() {
return serviceLevel;
}
/**
* Set serviceLevel to serviceLevel.
*
* @param serviceLevel The serviceLevel to set.
*/
public void setServiceLevel(int serviceLevel) {
this.serviceLevel = serviceLevel;
}
/**
* Whether the srs xml attribute should be in the EPSG:4326 (non-xml)
* style, or in the http://www.opengis.net/gml/srs/epsg.xml#4326 style.
*
* @return <tt>true</tt> if the srs is reported with the xml style
*/
public boolean isSrsXmlStyle() {
return srsXmlStyle;
}
/**
* Sets whether the srs xml attribute should be in the EPSG:4326 (non-xml)
* style, or in the http://www.opengis.net/gml/srs/epsg.xml#4326 style.
*
* @param doXmlStyle whether the srs style should be xml or not.
*/
public void setSrsXmlStyle(boolean doXmlStyle) {
this.srsXmlStyleChecked = true;
this.srsXmlStyle = doXmlStyle;
}
/**
* turn on/off the citeConformanceHacks option.
*
* @param on
*/
public void setCiteConformanceHacks(boolean on) {
this.citeConformanceHacksChecked = true; //this function only gets called when the form has it checked...
citeConformanceHacks = on;
}
/**
* get the current value of the citeConformanceHacks
*
* @return
*/
public boolean getCiteConformanceHacks() {
return (citeConformanceHacks);
}
/**
* get the current value of the citeConformanceHacksChecked (ie. was it in
* the http form?)
*
* @return
*/
public boolean getCiteConformanceHacksChecked() {
return (citeConformanceHacksChecked);
}
/**
* turn on/off the featureBounding option.
*
* @param on
*/
public void setFeatureBounding(boolean on) {
this.featureBoundingChecked = true; //this function only gets called when the form has it checked...
featureBounding = on;
}
/**
* get the current value of the featureBounding
*
* @return
*/
public boolean isFeatureBounding() {
return (featureBounding);
}
/**
* get the current value of the featureBoundingChecked (ie. was it in the
* http form?)
*
* @return
*/
public boolean isFeatureBoundingChecked() {
return (featureBoundingChecked);
}
}