Update of
/var/cvs/contributions/CMSContainer_Portlets/portlets-dynamicforms/src/java/com/finalist/portlets/responseform
In directory
james.mmbase.org:/tmp/cvs-serv23938/portlets-dynamicforms/src/java/com/finalist/portlets/responseform
Modified Files:
ResponseFormPortlet.java
Log Message:
CMSC-756 CMSC-758 Dyna Form.
checkbox enable.
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/portlets-dynamicforms/src/java/com/finalist/portlets/responseform
See also: http://www.mmbase.org/jira/browse/CMSC-756
See also: http://www.mmbase.org/jira/browse/CMSC-758
Index: ResponseFormPortlet.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer_Portlets/portlets-dynamicforms/src/java/com/finalist/portlets/responseform/ResponseFormPortlet.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- ResponseFormPortlet.java 11 Jan 2008 15:14:47 -0000 1.8
+++ ResponseFormPortlet.java 15 Feb 2008 09:05:52 -0000 1.9
@@ -13,6 +13,7 @@
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
@@ -72,16 +73,17 @@
private static final String CHECKBOX_YES = "ja";
private static final String RADIO_EMPTY = "[niets gekozen]";
private static final String TEXTBOX_EMPTY = "[niet ingevuld]";
- private static final int TEXTAREA_MAXLENGTH = 1024;
+ private static final String REGEX = " ";
private static final String DEFAULT_EMAILREGEX =
"^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$";
+ @SuppressWarnings("unchecked")
public void processView(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
Map<String, String> errorMessages = new Hashtable<String, String>();
- Map<String, String> parameterMap = new HashMap<String, String>();
+ Map<String, Object> parameterMap = new HashMap<String, Object>();
DataSource attachment = processUserRequest(request, errorMessages,
parameterMap);
String action = request.getParameter(ACTION_PARAM);
- Map<String, String> formfields = new HashMap<String, String>();
+ Map<String, Object> formfields = new HashMap<String, Object>();
StringBuffer data = new StringBuffer();
if (action == null) {
@@ -109,14 +111,15 @@
String regex = formfield.getStringValue("regex");
boolean isMandatory = formfield.getBooleanValue("mandatory");
boolean sendEmail = formfield.getBooleanValue("sendemail");
+ int maxlength = formfield.getIntValue("maxlength");
String fieldIdentifier = FIELD_PREFIX + number;
- String value = parameterMap.get(fieldIdentifier);
+ Object value = parameterMap.get(fieldIdentifier);
String textValue = null;
if (sendEmail) {
- userEmailAddress = value;
+ userEmailAddress = "" ;//value
}
- if (type == TYPE_TEXTAREA && value != null && value.length()
>= TEXTAREA_MAXLENGTH) {
- value = value.substring(0, TEXTAREA_MAXLENGTH - 1);
+ if (type == TYPE_TEXTAREA && value != null && maxlength > 0
&& value.toString().length() > maxlength) {
+ errorMessages.put(fieldIdentifier,
Integer.valueOf(maxlength).toString());
}
if (isMandatory
&& (((type == TYPE_RADIO || type == TYPE_CHECKBOX) &&
(value == null)) || (((type == TYPE_TEXTBOX)
@@ -124,25 +127,29 @@
errorMessages.put(fieldIdentifier,
"view.formfield.empty");
}
if (!regex.equals("")
- && (((type == TYPE_TEXTBOX) || (type ==
TYPE_TEXTAREA)) && !isEmailAddress(value))) {
+ && (((type == TYPE_TEXTBOX) || (type ==
TYPE_TEXTAREA)) && !value.toString().matches(regex))) {
errorMessages.put(fieldIdentifier,
"view.formfield.invalid");
}
- if ((type == TYPE_TEXTBOX) && sendEmail) { //If data is
used as email address, then it should be valid
- if (!isEmailAddress(userEmailAddress))
- errorMessages.put(fieldIdentifier,
"view.formfield.invalid");
- }
-
if (type == TYPE_CHECKBOX) {
- textValue = (value == null) ? CHECKBOX_NO : CHECKBOX_YES;
+ if(value != null && value instanceof String){
+ textValue = (value == null) ? CHECKBOX_NO :
value.toString();
+ }
+ else if (value != null && value instanceof ArrayList){
+ textValue = chansferParamtersValues((ArrayList)value);
+ }
+ else{
+ textValue = CHECKBOX_NO;
+ }
}
else if (type == TYPE_RADIO) {
- textValue = (value == null) ? RADIO_EMPTY : value;
+ textValue = (value == null) ? RADIO_EMPTY :
value.toString();
}
else {
- textValue = (StringUtil.isEmptyOrWhitespace(value)) ?
TEXTBOX_EMPTY : value;
+ textValue = (value == null ||
value.toString().trim().length() ==0) ? TEXTBOX_EMPTY : value.toString();
}
addFormFieldsData(data, label, textValue);
formfields.put(number, textValue);
+
}
if (errorMessages.size() == 0) {
@@ -156,11 +163,9 @@
errorMessages.put("sendemail", "view.error.sendemail");
}
else {
- // if the responseform email has been sent, send also the
email to the user
- sent = sendUserEmail(responseForm, userEmailAddress,
emailData, parameterMap);
- if (!sent) {
- errorMessages.put("sendemail", "view.error.sendemail");
- }
+ // if the responseform email has been sent, send also the
+ // email to the user
+ sendUserEmail(responseForm, userEmailAddress, emailData,
parameterMap);
}
}
}
@@ -190,9 +195,17 @@
data.append(textValue);
data.append(System.getProperty("line.separator"));
}
+ @SuppressWarnings("unchecked")
+ private String chansferParamtersValues(List textValues) {
+ StringBuffer temp = new StringBuffer();
+ for(Object textValue : textValues){
+ temp.append(textValue+REGEX);
+ }
+ return temp.toString();
+ }
- private void saveResponseForm(Cloud cloud, Map<String, String> formfields,
Node responseForm) {
+ private void saveResponseForm(Cloud cloud, Map<String, Object> formfields,
Node responseForm) {
NodeManager savedFormMgr = cloud.getNodeManager("savedform");
Node savedResponse = savedFormMgr.createNode();
@@ -217,7 +230,7 @@
}
Node savedFieldValue = savedFieldMgr.createNode();
savedFieldValue.setStringValue("field", formFieldNumber);
- savedFieldValue.setStringValue("value", formfields.get(key));
+ savedFieldValue.setValue("value", formfields.get(key));
savedFieldValue.commit();
RelationUtil.createRelation(savedResponse, savedFieldValue, "posrel");
@@ -229,8 +242,8 @@
}
- protected boolean sendUserEmail(Node responseform, String userEmailAddress,
String responseformData,
- Map<String, String> parameterMap) {
+ protected void sendUserEmail(Node responseform, String userEmailAddress,
String responseformData,
+ Map<String, Object> parameterMap) {
boolean sent = false;
String userEmailSubject =
responseform.getStringValue("useremailsubject");
String userEmailSender = responseform.getStringValue("useremailsender");
@@ -252,14 +265,13 @@
userEmailText.append(userEmailTextAfter);
}
+ String emailRegex = getEmailRegex();
if (!StringUtil.isEmptyOrWhitespace(userEmailSender) &&
!StringUtil.isEmptyOrWhitespace(userEmailText.toString())
&& !StringUtil.isEmptyOrWhitespace(userEmailSenderName)
- && !StringUtil.isEmptyOrWhitespace(userEmailAddress)
- && isEmailAddress(userEmailAddress)) {
+ && !StringUtil.isEmptyOrWhitespace(userEmailAddress) &&
userEmailAddress.matches(emailRegex)) {
try {
EmailSender.getInstance().sendEmail(userEmailSender,
userEmailSenderName, userEmailAddress,
userEmailSubject, userEmailText.toString());
- sent = true;
}
catch (UnsupportedEncodingException e) {
getLogger().error("error sending email", e);
@@ -268,27 +280,6 @@
getLogger().error("error sending email", e);
}
}
- return sent;
- }
-
- private boolean isEmailAddress(String emailAddress) {
- if (emailAddress == null) return false;
- if (StringUtil.isEmptyOrWhitespace(emailAddress)) return false;
-
- String emailRegex = getEmailRegex();
- return emailAddress.matches(emailRegex);
- }
-
- private boolean isEmailAddress(List<String> emailList) {
- if (emailList == null) return false;
-
- String emailRegex = getEmailRegex();
- if (emailList.isEmpty()) return false;
- for (String email : emailList) {
- if (email.matches(emailRegex) == false) return false;
- }
-
- return true;
}
@@ -320,11 +311,6 @@
String emailAddressesValue =
responseform.getStringValue("emailaddresses");
String emailSubject = responseform.getStringValue("emailsubject");
List<String> emailList = Arrays.asList(emailAddressesValue.split(";"));
- if (!isEmailAddress(emailList)) {
- getLogger().error("error sending email. Some of the following
emailaddresses are incorrect: " + emailList.toString());
- return false; //Could not sent email because of false email address
- }
-
try {
EmailSender.getInstance().sendEmail(senderEmail, senderName,
emailList, emailSubject, emailText.toString(),
attachment);
@@ -340,6 +326,7 @@
}
+ @SuppressWarnings("unchecked")
@Override
protected void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
PortletPreferences preferences = request.getPreferences();
@@ -358,14 +345,24 @@
request.setAttribute(ERRORMESSAGES, errormessages);
}
if (portletSession.getAttribute(PARAMETER_MAP) != null) {
- Map<String, String> parameterMap = (Map<String, String>)
portletSession.getAttribute(PARAMETER_MAP);
+ Map<String, Object> parameterMap = (Map<String, Object>)
portletSession.getAttribute(PARAMETER_MAP);
portletSession.removeAttribute(PARAMETER_MAP);
Iterator<String> keyIterator = parameterMap.keySet().iterator();
while (keyIterator.hasNext()) {
String keyValue = keyIterator.next();
- String entryValue = parameterMap.get(keyValue);
+ if(parameterMap.get(keyValue) instanceof String) {
+ String entryValue = parameterMap.get(keyValue).toString();
request.setAttribute(keyValue, entryValue);
}
+ else if (parameterMap.get(keyValue) instanceof ArrayList){
+ List<String> entryValue =
(List<String>)parameterMap.get(keyValue);
+ String fieldValue = "";
+ for (String value :entryValue) {
+ fieldValue += value+":";
+ }
+ request.setAttribute(keyValue, fieldValue);
+ }
+ }
}
}
@@ -392,12 +389,13 @@
}
}
-
+ @SuppressWarnings("unchecked")
private DataSource processUserRequest(ActionRequest request, Map<String,
String> errorMessages,
- Map<String, String> parameterMap) {
+ Map<String, Object> parameterMap) {
List<FileItem> fileItems = null;
DataSource attachment = null;
String encoding = "UTF-8";
+ List<String> parameterValues = null;
try {
DiskFileItemFactory factory = new DiskFileItemFactory();
PortletFileUpload upload = new PortletFileUpload(factory);
@@ -414,8 +412,21 @@
FileItem fileItem = itFileItems.next();
if (fileItem.isFormField()) {
try {
+ if (parameterMap.containsKey(fileItem.getFieldName())) {
+ if (parameterMap.get(fileItem.getFieldName()) instanceof
String) {
+ parameterValues = new ArrayList<String>(8);
+
parameterValues.add(parameterMap.get(fileItem.getFieldName()).toString());
+ }
+ else if (parameterMap.get(fileItem.getFieldName())
instanceof ArrayList){
+ parameterValues = (ArrayList<String>)
parameterMap.get(fileItem.getFieldName());
+ }
+ parameterValues.add(fileItem.getString(encoding));
+ parameterMap.put(fileItem.getFieldName(),
parameterValues);
+ }
+ else{
parameterMap.put(fileItem.getFieldName(),
fileItem.getString(encoding));
}
+ }
catch (UnsupportedEncodingException e) {
getLogger().error("UnsupportedEncoding " + encoding);
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs