package com.jiangqq.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.codec.binary.Base64;
import user_activity.UserActivityData;
import com.jiangqq.bean.App;
import com.jiangqq.bean.AppActivity;
import com.jiangqq.bean.DeviceInfo;
import com.jiangqq.bean.GPS;
import com.jiangqq.bean.PhoneActivity;
import com.jiangqq.bean.ProcessActivity;
import com.jiangqq.bean.ProcessProto;
import com.jiangqq.bean.ThirdPartyVideoActivity;
import com.jiangqq.bean.WindowActivity;
import com.jiangqq.bean.WindowProto;
/**
* Servlet implementation class UserActivityServlet
*/
public class UserActivityServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public UserActivityServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* �������Կͻ��˵�post������Ϣ�����н���
*
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
@SuppressWarnings("static-access")
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
ServletInputStream sis=request.getInputStream();//��ȡpost��������
byte[] byteInfo=new byte[1024];
int length=0;
StringBuffer sb=new StringBuffer();
while((length=sis.read(byteInfo))!=-1)
{
sb.append(new String(byteInfo, 0, length));
}
System.out.println("Ͷ�ݵ����ݵ�Ϊ:"+sb.toString());
Base64 base64=new Base64();
byte[] debytes=base64.decodeBase64(new String(sb).getBytes());
//�����淴,������������ProtoBuff��ʽ������
UserActivityData.UserActivity infoUserActivity;
try {
infoUserActivity=UserActivityData.UserActivity.parseFrom(debytes);
if(infoUserActivity!=null)
{
String uid= infoUserActivity.getUid();
String login=infoUserActivity.getLogin();
String platform=infoUserActivity.getPlatform();
String mac=infoUserActivity.getMac();
String model=infoUserActivity.getModel();
System.out.println("UID = "+uid);
System.out.println("LOGIN = "+login);
System.out.println("PLATFORM = "+platform);
System.out.println("MAC = "+mac);
System.out.println("MODEL = "+model);
//GPS��Ϣ
GPS mGPS=new GPS();
mGPS.setAltitude(infoUserActivity.getGps().getAltitude());
mGPS.setLatitude(infoUserActivity.getGps().getLatitude());
mGPS.setLongitude(infoUserActivity.getGps().getLongitude());
//POI��Ϣ
List<String> mPOIs = infoUserActivity.getPoiList();
for (String string : mPOIs) {
System.out.println("POI = "+string);
}
//installed_app
//�洢�ļ���
List<App> mApps=new ArrayList<App>();
List<AppActivity> mAppActivities=null;
App mApp;
AppActivity mActivity;
List<user_activity.UserActivityData.App> mApps_proto= infoUserActivity.getInstalledAppList();
for (user_activity.UserActivityData.App app_proto : mApps_proto) {
mApp=new App();
mApp.setName(app_proto.getName());
mApp.setVersion(app_proto.getVersion());
List<user_activity.UserActivityData.AppActivity> mActivities_proto=app_proto.getActivityList();
mAppActivities=new ArrayList<AppActivity>();
for (user_activity.UserActivityData.AppActivity appActivity : mActivities_proto) {
mActivity=new AppActivity();
mActivity.setStart_timestamp(appActivity.getStartTimestamp());
mActivity.setDuration(appActivity.getDuration());
mAppActivities.add(mActivity);
}
mApp.setActivity(mAppActivities);
mApps.add(mApp);
}
for (App app : mApps) {
System.out.println("APP��ϢΪ:"+app.toString());
}
//search_keyword
List<String> mSearchKeywords = infoUserActivity.getSearchKeywordList();
for (String string : mSearchKeywords) {
System.out.println("SearchKey = "+string);
}
//url
List<String> mUrls = infoUserActivity.getUrlList();
for (String string : mUrls) {
System.out.println("Url = "+string);
}
//boot_timestamp
List<String> mBootTimestamps = infoUserActivity.getBootTimestampList();
for (String string : mBootTimestamps) {
System.out.println("BootTimestamp = "+string);
}
//shutdown_timestamp
List<String> mShutdownTimestamps = infoUserActivity.getShutdownTimestampList();
for (String string : mShutdownTimestamps) {
System.out.println("ShutdownTimestamp = "+string);
}
//phone_activity
List<PhoneActivity> mPhoneActivities=new ArrayList<PhoneActivity>();
PhoneActivity mPhoneActivity;
List<user_activity.UserActivityData.PhoneActivity> mPhoneActivity_proto = infoUserActivity.getPhoneActivityList();
for (user_activity.UserActivityData.PhoneActivity phoneActivity : mPhoneActivity_proto) {
mPhoneActivity=new PhoneActivity();
mPhoneActivity.setStart_timestamp(phoneActivity.getStartTimestamp());
mPhoneActivity.setDuration(phoneActivity.getDuration());
mPhoneActivities.add(mPhoneActivity);
}
for (PhoneActivity phoneActivity : mPhoneActivities) {
System.out.println("��绰��ϢΪ:"+phoneActivity.toString());
}
//sms_sent_timestamp
List<String> mSmsSentTimestamps = infoUserActivity.getSmsSentTimestampList();
for (String string : mSmsSentTimestamps) {
System.out.println("SmsSentTimestamp = "+string);
}
//third_party_video_activity
List<ThirdPartyVideoActivity> mThirdPartyVideoActivities=new ArrayList<ThirdPartyVideoActivity>();
ThirdPartyVideoActivity mThirdPartyVideoActivity;
List<user_activity.UserActivityData.ThirdPartyVideoActivity> mThirdPartyVideoActivity_proto = infoUserActivity.getThirdPartyVideoActivityList();
for (user_activity.UserActivityData.ThirdPartyVideoActivity thirdPartyVideoActivity : mThirdPartyVideoActivity_proto) {
mThirdPartyVideoActivity=new ThirdPartyVideoActivity();
mThirdPartyVideoActivity.setProvider(thirdPartyVideoActivity.getProvider());
mThirdPartyVideoActivity.setTimestamp(thirdPartyVideoActivity.getTimestamp());
mThirdPartyVideoActivity.setVideo_name(thirdPartyVideoActivity.getVideoName());
mThirdPartyVideoActivities.add(mThirdPartyVideoActivity);
}
for (ThirdPartyVideoActivity thirdPartyVideoActivity : mThirdPartyVideoActivities) {
System.out.println("��������Ƶ�IJ��ż�¼��ϢΪ:"+thirdPartyVideoActivity.toString());
}
//process
List<ProcessProto> mProcessProtos=new ArrayList<ProcessProto>();
List<ProcessActivity> mProcessActivities=null;
ProcessProto mProcessProto;
ProcessActivity mProcessActivity;
List<user_activity.UserActivityData.Process> mProcess_proto = infoUserActivity.getProcessList();
for (user_activity.UserActivityData.Process process : mProcess_proto) {
mProcessProto=new ProcessProto();
mProcessProto.setName(process.getName());
List<user_activity.UserActivityData.ProcessActivity> mActivities_proto= process.getActivityList();
mProcessActivities=new ArrayList<ProcessActivity>();
for (user_activity.UserActivityData.ProcessActivity processActivity : mActivities_proto) {
mProcessActivity=new ProcessActivity();
mProcessActivity.setStart_timestamp(processActivity.getStartTimestamp());
mProcessActivity.setDuration(processActivity.getDuration());
mProcessActivities.add(mProcessActivity);
}
mProcessProto.setProcessActivities(mProcessActivities);
mProcessProtos.add(mProcessProto);
}
for (ProcessProto process : mProcessProtos) {
System.out.println("������ϢΪ��"+process.toString());
}
//window
List<WindowProto> mWindowProtos=new ArrayList<WindowProto>();
List<WindowActivity> mWindowActivities=new ArrayList<WindowActivity>();
WindowProto mWindowProto;
WindowActivity mWindowActivity;
List<user_activity.UserActivityData.Window> mWindows_proto = infoUserActivity.getWindowList();
for (user_activity.UserActivityData.Window window : mWindows_proto) {
mWindowProto=new WindowProto();
mWindowProto.setName(window.getName());
List<user_activity.UserActivityData.WindowActivity> mWindowActivities_proto = window.getActivityList();
for (user_activity.UserActivityData.WindowActivity windowActivity : mWindowActivities_proto) {
mWindowActivity=new WindowActivity();
mWindowActivity.setStart_timestamp(windowActivity.getStartTimestamp());
mWindowActivity.setDuration(windowActivity.getDuration());
mWindowActivities.add(mWindowActivity);
}
mWindowProto.setActivity(mWindowActivities);
mWindowProtos.add(mWindowProto);
}
//device_info
DeviceInfo mDeviceInfo=new DeviceInfo();
user_activity.UserActivityData.DeviceInfo mDeviceInfo_proto= infoUserActivity.getDeviceInfo();
mDeviceInfo.setImei(mDeviceInfo_proto.getImei());
mDeviceInfo.setImsi(mDeviceInfo_proto.getImsi());
mDeviceInfo.setManufacturer(mDeviceInfo_proto.getManufacturer());
mDeviceInfo.setModel(mDeviceInfo_proto.getModel());
mDeviceInfo.setOs_custermize(mDeviceInfo_proto.getOsCustermize());
mDeviceInfo.setOs_version(mDeviceInfo_proto.getOsVersion());
mDeviceInfo.setScreen_resolution(mDeviceInfo_proto.getScreenResolution());
System.out.println("�ֻ���ϢΪ:"+mDeviceInfo.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}