* @throws ServiceException WfsException For any problems forming the
* request.
* @throws WfsException DOCUMENT ME!
*/
public Request getRequest(HttpServletRequest request) throws ServiceException {
LockRequest currentRequest = new LockRequest();
currentRequest.setHttpServletRequest(request);
// set global request parameters
LOGGER.finest("setting global request parameters");
if (keyExists("VERSION")) {
currentRequest.setVersion(getValue("VERSION"));
}
if (keyExists("REQUEST")) {
currentRequest.setRequest(getValue("REQUEST"));
}
if (keyExists("EXPIRY")) {
currentRequest.setExpiry(Integer.parseInt(getValue("EXPIRY")));
}
if (keyExists("LOCKACTION")) {
String lockAction = getValue("LOCKACTION");
if (lockAction == null) {
currentRequest.setLockAll(true);
} else if (lockAction.toUpperCase().equals("ALL")) {
currentRequest.setLockAll(true);
} else if (lockAction.toUpperCase().equals("SOME")) {
currentRequest.setLockAll(false);
} else {
throw new WfsException("Illegal lock action: " + lockAction);
}
}
// declare tokenizers for repeating elements
LOGGER.finer("setting query request parameters");
List typeList = readFlat(getValue("TYPENAME"), INNER_DELIMETER);
LOGGER.finer("type list size: " + typeList.size());
List filterList = readFilters(getValue("FEATUREID"),
getValue("FILTER"), getValue("BBOX"));
if (typeList.size() == 0) {
typeList = getTypesFromFids(getValue("FEATUREID"));
if (typeList.size() == 0) {
throw new WfsException("The typename element is mandatory if "
+ "no FEATUREID is present");
}
}
int featureSize = typeList.size();
int filterSize = filterList.size();
// check for errors in the request
if (((filterSize != featureSize) && (filterSize > 0))
|| ((filterSize > 0) && (featureSize == 0))) {
throw new WfsException("Filter size does not match"
+ " feature types. Filter size: " + filterSize
+ " Feature size: " + featureSize);
} else {
currentRequest.setLocks(typeList, filterList);
return currentRequest;
}
}