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

Reply via email to