package com.celements.webform;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class WebFormService implements IWebFormServiceRole {
final String PARAM_XPAGE = "xpage";
final String PARAM_CONF = "conf";
final String PARAM_AJAX_MODE = "ajax_mode";
final String PARAM_SKIN = "skin";
final String PARAM_LANGUAGE = "language";
final String PARAM_XREDIRECT = "xredirect";
@Override
public boolean isFormFilled(Map<String, String[]> parameterMap, Set<String> additionalFields) {
boolean isFilled = false;
if (parameterMap.size() > getIsFilledModifier(parameterMap, additionalFields)) {
isFilled = true;
}
return isFilled;
}
short getIsFilledModifier(Map<String, String[]> parameterMap, Set<String> additionalFields) {
List<String> standardParams = new ArrayList<String>();
standardParams.add(PARAM_XPAGE);
standardParams.add(PARAM_CONF);
standardParams.add(PARAM_AJAX_MODE);
standardParams.add(PARAM_SKIN);
standardParams.add(PARAM_LANGUAGE);
standardParams.add(PARAM_XREDIRECT);
short modifier = 0;
if (parameterMap.containsKey(PARAM_XPAGE) && parameterMap.containsKey(PARAM_CONF)
&& arrayContains(parameterMap.get(PARAM_XPAGE), "overlay")) {
modifier += 1;
}
if (parameterMap.containsKey(PARAM_XPAGE) && parameterMap.containsKey(PARAM_AJAX_MODE)
&& arrayContains(parameterMap.get(PARAM_XPAGE), "celements_ajax")) {
modifier += 1;
if (parameterMap.containsKey(PARAM_SKIN)) {
modifier += 1;
}
}
if (parameterMap.containsKey(PARAM_XPAGE)) {
modifier += 1;
}
if (parameterMap.containsKey(PARAM_XREDIRECT)) {
modifier += 1;
}
if (parameterMap.containsKey(PARAM_LANGUAGE)) {
modifier += 1;
}
if ((additionalFields != null) && additionalFields.size() > 0) {
for (String param : additionalFields) {
if (!standardParams.contains(param) && parameterMap.containsKey(param)) {
modifier += 1;
}
}
}
return modifier;
}
private boolean arrayContains(String[] array, String value) {
Arrays.sort(array);
return (Arrays.binarySearch(array, value) >= 0);
}
}