MailHandlerServlet.java :  » Log » nimbitsopen » com » nimbits » server » Android Open Source

Android Open Source » Log » nimbitsopen 
nimbitsopen » com » nimbits » server » MailHandlerServlet.java
package com.nimbits.server;

import java.io.IOException;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.jdo.PersistenceManager;
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.nimbits.PMF;
import com.nimbits.client.Global;
import com.nimbits.client.objects.DataPoint;
import com.nimbits.server.nimbitsUser.CurrentUser;
import com.nimbits.server.nimbitsUser.NimbitsUser;

public class MailHandlerServlet extends HttpServlet { 
  /**
   * 
   */
  private static final long serialVersionUID = 1L;

  public void doPost(HttpServletRequest req, 
      HttpServletResponse resp) 
  throws IOException { 
    PersistenceManager pm = PMF.get().getPersistenceManager();
    
    
    DataServiceImpl ds = new DataServiceImpl();
    PointServiceImpl ps = new PointServiceImpl();
    long timestamp; 
    String note;
    String fromAddress = "";
    Properties props = new Properties();
    Session session = Session.getDefaultInstance(props, null);
    MimeMessage message;
    String inContent = null;
   try {
      message = new MimeMessage(session, req.getInputStream());
     
          Address a[] =message.getFrom();
        if (a.length > 0)
        {
          InternetAddress aa = (InternetAddress) a[0];
          
          fromAddress =aa.getAddress();
          
        }
       
     
      String contentType = message.getContentType();
      
      if (contentType.indexOf("multipart") > -1) {
        DataHandler dataHandler;
        
          dataHandler = message.getDataHandler();
      
          DataSource dataSource = dataHandler.getDataSource();
        MimeMultipart mimeMultipart = new MimeMultipart(dataSource);
        Part part = mimeMultipart.getBodyPart(0);           
        contentType = part.getContentType();
        inContent = (String)part.getContent();
      } else {
        try {
          inContent = (String)message.getContent();
        } catch (Exception e) {
          Email.sendEmail(new SettingsServiceImpl().getInitParameter("admin"),e.getMessage() + "  " + fromAddress + "not ok  " );
          return;
        }
      }
    
      String Data[] = inContent.split(";");
      NimbitsUser nuser = CurrentUser.getNimbitsUser(fromAddress, false,"MailHandlerServlet", pm);
      if (nuser != null)
      {
        if (Data.length > 0)
        {
          for (String s : Data)
          {
            try {
              String k[] = s.split(",");
              if (k.length>1)
              {
                String pointname = k[0];
                Double v = Double.valueOf(k[1]);
                try {
                  if (k.length ==3)
                  {
                    timestamp = Long.getLong(k[2]);
                  }
                  else
                  {
                    timestamp = new Date().getTime();
                  }
                } catch (Exception e) {
                  timestamp = new Date().getTime();
                  e.printStackTrace();
                }
                
                
                if (k.length ==4)
                {
                  note = (k[3]);
                }
                else
                {
                  note = "";
                }
                
                
                
                DataPoint point = ps.getPointByName(nuser.getID(), pointname, null);
                ds.recordValue(nuser,point, new Date(timestamp),v, note,0,0, pm);
                pm.close();
              }
            } catch ( Exception e) {
              // TODO Auto-generated catch block
              Email.sendEmail(new SettingsServiceImpl().getInitParameter("admin"),"Failed to process line in email: " + s + nuser.getEmail() + "  " + e.getMessage() );
            }
          }
        }
      }
    //  Email.sendEmail(new SettingsServiceImpl().getInitParameter("admin"),fromAddress + " ok  " + inContent);
   } catch (MessagingException e) {
      // TODO Auto-generated catch block
      //..e.printStackTrace();
    }
      
   
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.