Created
November 30, 2011 18:19
-
-
Save UshaRani/1410124 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%-- | |
Document : recentloginhistory | |
Created on : Feb 11, 2010, 4:36:52 PM | |
Author : Bhaskar Duvvuri@Indavest | |
--%> | |
<%@ taglib prefix="gs" uri="/struts-tags" %> | |
<%--<gs:iterator value="memberLoginHistoryList" status="memberStatus"> | |
<gs:property value="browserdetails"/> | |
</gs:iterator>--%> | |
<div id="accordion" style="width: 850px;"> | |
<gs:iterator value="memberLoginHistoryMap"> | |
<h3><a href="#" style="padding-bottom: 0;">Date: <gs:date name="key" format="MMM-dd-yyyy"/></a></h3> | |
<table class="loginHistoryList" border="0" cellpadding="0" cellspacing="0"> | |
<thead> | |
<tr> | |
<th align="center">Member</th> | |
<th align="center">Organization</th> | |
<th align="center">Last Modified</th> | |
<th align="center">Login Time</th> | |
<th align="center">IP Address</th> | |
<th align="center">Browser Details</th> | |
</tr> | |
</thead> | |
<gs:if test="%{!value.isEmpty()}"> | |
<gs:iterator value="value" var="memberDetails"> | |
<tr> | |
<td align="center"><gs:property value="value.memberemail" /></td> | |
<td align="center"><gs:property value="value.organization.organizationname" /></td> | |
<td align="center"><gs:date name="key.lastmodified" format="MMM-dd-yyyy H:m:s" /></td> | |
<td align="center"><gs:date name="key.memberlogintime" format="MMM-dd-yyyy H:m:s" /></td> | |
<td align="center"><gs:property value="key.ipaddress" escape="false" /></td> | |
<td align="center"><gs:property value="key.browserdetails" escape="false" /></td> | |
</tr> | |
</gs:iterator> | |
</gs:if> | |
<gs:else> | |
<tr> | |
<td align="center" colspan="6">Currently there are no online users in the system</td> | |
</tr> | |
</gs:else> | |
</table> | |
</gs:iterator> | |
</div> | |
<div id="morereults">More Results</div> | |
<script type="text/javascript"> | |
<%-- Trying to get values jsonString --%> | |
var memberhistorymap = jQuery.parseJSON('<gs:property value="jsonString" escapeJavaScript="true" escape="false"/>'); | |
console.log(memberhistorymaps); | |
/*jQuery.each(memberhistorymap, function(currentHistoryDate, memberLoginDetails) { | |
console.log(currentHistoryDate); | |
console.log(memberLoginDetails); | |
jQuery.each(memberLoginDetails,function(memberloginhistory,member){ | |
console.log(memberloginhistory[0]); | |
console.log(member); | |
}); | |
console.log("------------"); | |
}); | |
alert("hi"); | |
console.log(memberhistorymapstring);*/ | |
var count=0; | |
jQuery(function() { | |
jQuery('.loginHistoryList').tableScroll({width:850, height:400}); | |
jQuery("#accordion").accordion(); | |
}); | |
jQuery("#morereults").click(function(){ | |
count = count+1; | |
if(count==2){ | |
jQuery("#morereults").css("display","none"); | |
} | |
jQuery.ajax({ | |
type: "POST", | |
url: '<gs:url action="ajaxrecentlogins" namespace="/admin/organization/member"/>', | |
data:'count='+count, | |
beforeSend: function(request){ | |
jQuery.blockUI({ | |
message : '<strong>Please wait while we are getting results....</strong><br />', | |
css: { | |
border: 'none', | |
padding: '15px', | |
backgroundColor: '#fff', | |
'-webkit-border-radius': '10px', | |
'-moz-border-radius': '10px', | |
opacity: .5, | |
color: '#000' | |
} }); | |
}, | |
success: function (response) { | |
jQuery('.ajaxloginHistoryList').tableScroll({width:850, height:400}); | |
jQuery("#accordion").append(response); | |
jQuery("#accordion").accordion('destroy').accordion(); | |
}, | |
error: function(response) { | |
//jQuery("#moreresultdiv").append(response); | |
} | |
}); | |
jQuery.unblockUI(); | |
return false; | |
}); | |
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.generalsentiment.action.admin.member; | |
import com.generalsentiment.action.GSActionSupport; | |
import com.generalsentiment.bo.member.MemberLoginHistoryBO; | |
import com.generalsentiment.dao.member.MemberLoginHistoryDAO; | |
import com.generalsentiment.om.member.Member; | |
import com.generalsentiment.om.member.Memberloginhistory; | |
import com.generalsentiment.util.GSDate; | |
import com.generalsentiment.util.UserAgentUtil; | |
import com.google.gson.Gson; | |
import java.util.ArrayList; | |
import java.util.Comparator; | |
import java.util.Date; | |
import java.util.TreeMap; | |
/** | |
* | |
* @author Bhaskar Duvvuri@Indavest | |
*/ | |
public class RecentLoginHistoryAction extends GSActionSupport { | |
private static final long serialVersionUID = -6551584380472810590L; | |
protected TreeMap<Date, TreeMap<Memberloginhistory, Member>> memberLoginHistoryMap; | |
protected MemberLoginHistoryBO memberLoginHistoryBO = new MemberLoginHistoryDAO(); | |
private int count; | |
private String jsonString; | |
@Override | |
protected String gsexecute() throws Exception { | |
long actionstartTime = System.currentTimeMillis(); | |
Date toDate; | |
Date fromDate; | |
if (count != 0) { | |
Date todaysDate = GSDate.getCurrentDate(); | |
toDate = GSDate.getDateDifference(todaysDate, "day", -(30 * count)); | |
fromDate = GSDate.getDateDifference(todaysDate, "day", -30 * (count + 1)); | |
} else { | |
toDate = GSDate.getCurrentDate(); | |
fromDate = GSDate.getDateDifference(toDate, "day", -30); | |
} | |
long GettingdatafromdbstartTime = System.currentTimeMillis(); | |
ArrayList<Memberloginhistory> memberLoginHistoryListFromDB = memberLoginHistoryBO.getOnlineMembersByDate(fromDate, toDate); | |
long GettingdatafromdbendTime = System.currentTimeMillis(); | |
System.out.println("Time taken to retrieve data from db" + (GettingdatafromdbendTime - GettingdatafromdbstartTime)); | |
memberLoginHistoryMap = new TreeMap<Date, TreeMap<Memberloginhistory, Member>>(new Comparator<Date>() { | |
@Override | |
public int compare(Date date1, Date date2) { | |
if (date1.before(date2)) { | |
return 1; | |
} | |
if (date1.after(date2)) { | |
return -1; | |
} | |
return 0; | |
} | |
}); | |
TreeMap<Memberloginhistory, Member> memberLoginDetails = new TreeMap<Memberloginhistory, Member>(new Comparator<Memberloginhistory>() { | |
@Override | |
public int compare(Memberloginhistory date1, Memberloginhistory date2) { | |
if ((date1.getMemberlogintime()).before(date2.getMemberlogintime())) { | |
return 1; | |
} | |
if ((date1.getMemberlogintime()).after(date2.getMemberlogintime())) { | |
return -1; | |
} | |
return 0; | |
} | |
}); | |
String parsedBrowserDetails = ""; | |
Date currentHistoryDate = null; | |
for (Memberloginhistory memberloginhistoryFromDB : memberLoginHistoryListFromDB) { | |
parsedBrowserDetails = memberloginhistoryFromDB.getBrowserdetails(); | |
parsedBrowserDetails = UserAgentUtil.getBrowser(parsedBrowserDetails)[2] + " on " | |
+ UserAgentUtil.getOS(parsedBrowserDetails)[1]; | |
Member member = memberBO.getById(memberloginhistoryFromDB.getMember().getId()); | |
Memberloginhistory memberloginhistory = new Memberloginhistory(member, memberloginhistoryFromDB.getLastmodified(), memberloginhistoryFromDB.getIpaddress(), memberloginhistoryFromDB.getMemberlogintime(), | |
parsedBrowserDetails, memberloginhistoryFromDB.isOnline()); | |
if (!GSDate.isEqual(currentHistoryDate, memberloginhistory.getMemberlogintime())) { | |
if (currentHistoryDate != null) { | |
memberLoginHistoryMap.put(currentHistoryDate, memberLoginDetails); | |
} | |
currentHistoryDate = memberloginhistory.getMemberlogintime(); | |
memberLoginDetails = new TreeMap<Memberloginhistory, Member>(new Comparator<Memberloginhistory>() { | |
@Override | |
public int compare(Memberloginhistory date1, Memberloginhistory date2) { | |
if ((date1.getMemberlogintime()).before(date2.getMemberlogintime())) { | |
return 1; | |
} | |
if ((date1.getMemberlogintime()).after(date2.getMemberlogintime())) { | |
return -1; | |
} | |
return 0; | |
} | |
}); | |
} | |
memberLoginDetails.put(memberloginhistory, member); | |
} | |
memberLoginHistoryMap.put(currentHistoryDate, memberLoginDetails); | |
// converting member login history to jsonString. For conversion it is more time | |
Gson jsonResponse = new Gson(); | |
jsonString = jsonResponse.toJson(memberLoginHistoryMap); | |
long actionendTime = System.currentTimeMillis(); | |
System.out.println("Time taken to execute total action" + (actionendTime - actionstartTime)); | |
return SUCCESS; | |
} | |
public TreeMap<Date, TreeMap<Memberloginhistory, Member>> getMemberLoginHistoryMap() { | |
return memberLoginHistoryMap; | |
} | |
public void setMemberLoginHistoryMap(TreeMap<Date, TreeMap<Memberloginhistory, Member>> memberLoginHistoryMap) { | |
this.memberLoginHistoryMap = memberLoginHistoryMap; | |
} | |
public int getCount() { | |
return count; | |
} | |
public void setCount(int count) { | |
this.count = count; | |
} | |
public String getJsonString() { | |
return jsonString; | |
} | |
public void setJsonString(String jsonString) { | |
this.jsonString = jsonString; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment