package com.idega.core.accesscontrol.data; import java.sql.SQLException; import java.sql.Timestamp; import java.util.Collection; import javax.ejb.FinderException; import com.idega.data.IDOException; import com.idega.user.data.User; /** * Title: idegaclasses * Description: * Copyright: Copyright (c) 2001 * Company: * @author <a href="mailto:aron@idega.is">aron@idega.is * @version 1.0 */ public class LoginRecordBMPBean extends com.idega.data.GenericEntity implements com.idega.core.accesscontrol.data.LoginRecord { public static String getEntityTableName(){return "IC_LOGIN_REC";} public static String getColumnLoginId(){return "IC_LOGIN_ID";} public static String getColumnInStamp(){return "IN_STAMP";} public static String getColumnOutStamp(){return "OUT_STAMP";} public static String getColumnIPAddress(){return "IP";} public static String getColumnLoginAsUser(){return "USER_ID";} public LoginRecordBMPBean(){ super(); } public LoginRecordBMPBean(int id)throws SQLException{ super(id); } public void initializeAttributes(){ addAttribute(this.getIDColumnName()); addAttribute(getColumnLoginId(),"Login id",true,true,Integer.class,"many-to-one",LoginTable.class); addAttribute(getColumnInStamp(),"Login Stamp",true,true,Timestamp.class); addAttribute(getColumnOutStamp(),"Logout Stamp",true,true,Timestamp.class); addAttribute(getColumnIPAddress(),"IP address",true,true,String.class,40); addManyToOneRelationship(getColumnLoginAsUser(),User.class); setNullable(getColumnLoginAsUser(),true); addIndex("IDX_LOGIN_REC_1", getColumnLoginId()); } public String getEntityName(){ return getEntityTableName(); } public void setLoginId(int Id) { setColumn(getColumnLoginId(),Id); } public int getLoginId(){ return getIntColumnValue(getColumnLoginId()); } public Timestamp getLogInStamp(){ return (Timestamp) getColumnValue(getColumnInStamp()); } public void setLogInStamp(Timestamp stamp){ setColumn(getColumnInStamp(),stamp); } public Timestamp getLogOutStamp(){ return (Timestamp) getColumnValue(getColumnOutStamp()); } public void setLogOutStamp(Timestamp stamp){ setColumn(getColumnOutStamp(),stamp); } public String getIPAdress(){ return getStringColumnValue(getColumnIPAddress()); } public void setIPAdress(String ip){ setColumn(getColumnIPAddress(),ip); } public int getLoginAsUserID(){ return getIntColumnValue(getColumnLoginAsUser()); } public void setLoginAsUserID(int userId){ setColumn(getColumnLoginAsUser(),userId); } public User getLoginAsUser(){ return (User)getColumnValue(getColumnLoginAsUser()); } public void setLoginAsUser(User user){ setColumn(getColumnLoginAsUser(),user); } public Collection ejbFindAllLoginRecords(int loginID)throws FinderException{ String sql = "select * from "+this.getTableName()+" where "+LoginRecordBMPBean.getColumnLoginId()+" = "+loginID; System.out.println("----------------"); System.out.println(sql); System.out.println("----------------"); return super.idoFindIDsBySQL(sql); } public int ejbHomeGetNumberOfLoginsByLoginID(int loginID) throws IDOException { String sql = "select count(*) from "+this.getTableName()+" where "+LoginRecordBMPBean.getColumnLoginId()+" = "+loginID; return super.idoGetNumberOfRecords(sql); } public Integer ejbFindByLoginID(int loginID)throws FinderException{ Collection loginRecords = idoFindAllIDsByColumnOrderedBySQL(LoginRecordBMPBean.getColumnLoginId(),loginID); if(!loginRecords.isEmpty()){ return (Integer)loginRecords.iterator().next(); } else { throw new FinderException("File was not found"); } } public java.sql.Date ejbHomeGetLastLoginByLoginID(Integer loginID) throws FinderException{ StringBuffer sql = new StringBuffer(); sql.append(" select max(in_stamp) from ic_login_rec "); sql.append(" where ic_login_id = ").append(loginID); sql.append(" and in_stamp < "); sql.append(" (select max(in_stamp) from ic_login_rec where ic_login_id =").append(loginID).append( ") "); try { return getDateTableValue(sql.toString()); } catch (SQLException e) { throw new FinderException(e.getMessage()); } } public java.sql.Date ejbHomeGetLastLoginByUserID(Integer userID) throws FinderException{ StringBuffer sql = new StringBuffer(); sql.append(" select max(in_stamp) from ic_login_rec r, ic_login l "); sql.append(" where l.ic_login_id = r.ic_login_id "); sql.append(" and l.ic_user_id = ").append(userID); sql.append(" and in_stamp < "); sql.append(" (select max(in_stamp) from ic_login_rec r2,ic_login l2 where r2.ic_login_id = l2.ic_login_id "); sql.append(" and l2.ic_user_id = ").append(userID).append(" ) "); try { return getDateTableValue(sql.toString()); } catch (SQLException e) { throw new FinderException(e.getMessage()); } } }