Skip to content

Instantly share code, notes, and snippets.

@UshaRani
Created November 30, 2011 18:19
Show Gist options
  • Save UshaRani/1410124 to your computer and use it in GitHub Desktop.
Save UshaRani/1410124 to your computer and use it in GitHub Desktop.
<%--
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>
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