Update of
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/forms
In directory
james.mmbase.org:/tmp/cvs-serv19440/portlets-newsletter/src/java/com/finalist/newsletter/forms
Modified Files:
SubscriptionImportExportAction.java
Log Message:
CMSC-888 add data file validate.
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/forms
See also: http://www.mmbase.org/jira/browse/CMSC-888
Index: SubscriptionImportExportAction.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer_Portlets/portlets-newsletter/src/java/com/finalist/newsletter/forms/SubscriptionImportExportAction.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- SubscriptionImportExportAction.java 7 May 2008 02:54:40 -0000 1.2
+++ SubscriptionImportExportAction.java 20 May 2008 08:48:43 -0000 1.3
@@ -10,9 +10,7 @@
import com.thoughtworks.xstream.io.xml.DomDriver;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.struts.action.ActionForm;
-import org.apache.struts.action.ActionForward;
-import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import org.springframework.web.struts.DispatchActionSupport;
@@ -93,32 +91,61 @@
FormFile myFile = myForm.getDatafile();
byte[] fileData = myFile.getFileData();
+ String contentType = myFile.getContentType();
+ String fileName = myFile.getFileName();
+
+ boolean isXML = "text/xml".equals(contentType);
+ boolean isPlain = "text/plain".equals(contentType);
+ boolean isCSV = ".csv".endsWith(fileName.toLowerCase());
+
+ ActionMessages messages = new ActionMessages();
+
+ if(!isXML&&!(isPlain&isCSV)){
+ messages.add("file", new ActionMessage("datafile.unsupport"));
+ }else{
+ try {
+ importFromFile(fileData);
+ } catch (Exception e) {
+ log.error(e);
+ messages.add("file", new ActionMessage("datafile.invalid"));
+ }
+ }
+
+ if(messages.size() <1){
+ return mapping.findForward("success");
+ }else{
+ saveMessages(request,messages);
+ return mapping.findForward("failed");
+ }
+
+ }
- String xml = new String(fileData);
- List<Subscription> subscriptionList = (List<Subscription>)
getXStream().fromXML(xml);
+ private void importFromFile(byte[] fileData) throws Exception {
+ String xml = new String(fileData);
+ List<Subscription> subscriptionList;
+ try {
+ subscriptionList = (List<Subscription>) getXStream().fromXML(xml);
+ } catch (Exception e) {
+ throw new Exception(e);
+ }
- for(Subscription subscription : subscriptionList){
+ for (Subscription subscription : subscriptionList) {
Person subscrier = subscription.getSubscriber();
int sbId = subscrier.getId().intValue();
int nId = subscription.getNewsletter().getId();
- if(null==subscriptionServices.getSubscription(sbId,nId)){
+ if (null == subscriptionServices.getSubscription(sbId, nId)) {
-
- log.debug(String.format("try to import user %s's subscription of
%s which is not exist",sbId,nId));
+ log.debug(String.format("try to import user %s's subscription of
%s which is not exist", sbId, nId));
subscriptionServices.addNewRecord(sbId, nId);
}
}
-
- return mapping.findForward("import_success");
}
-
-
private String convertToXML(List<Subscription> subscriptions) {
String xml;
XStream xstream = new XStream(new DomDriver());
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs