/*
* $Id: SchoolClassMemberLogBMPBean.java,v 1.15 2005/04/25 06:52:53 laddi Exp $
* Created on 27.12.2004
*
* Copyright (C) 2004 Idega Software hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*/
package com.idega.block.school.data;
import java.sql.Date;
import java.util.Collection;
import javax.ejb.FinderException;
import com.idega.data.GenericEntity;
import com.idega.data.query.Column;
import com.idega.data.query.Criteria;
import com.idega.data.query.MatchCriteria;
import com.idega.data.query.OR;
import com.idega.data.query.Order;
import com.idega.data.query.SelectQuery;
import com.idega.data.query.Table;
import com.idega.data.query.WildCardColumn;
import com.idega.user.data.User;
/**
* Last modified: $Date: 2005/04/25 06:52:53 $ by $Author: laddi $
*
* @author <a href="mailto:laddi@idega.com">laddi</a>
* @version $Revision: 1.15 $
*/
public class SchoolClassMemberLogBMPBean extends GenericEntity implements SchoolClassMemberLog{
public final static String ENTITY_NAME = "sch_class_member_log";
public final static String USER_PLACING = "placing_user";
public final static String USER_TERMINATING = "terminating_user";
public final static String SCHOOLCLASS = "sch_school_class_id";
public final static String SCHOOLCLASSMEMBER = "sch_class_member_id";
public final static String START_DATE = "start_date";
public final static String END_DATE = "end_date";
/* (non-Javadoc)
* @see com.idega.data.GenericEntity#getEntityName()
*/
public String getEntityName() {
return ENTITY_NAME;
}
/* (non-Javadoc)
* @see com.idega.data.GenericEntity#initializeAttributes()
*/
public void initializeAttributes() {
addAttribute(getIDColumnName());
addManyToOneRelationship(USER_PLACING, User.class);
addManyToOneRelationship(USER_TERMINATING, User.class);
addManyToOneRelationship(SCHOOLCLASS, SchoolClass.class);
addManyToOneRelationship(SCHOOLCLASSMEMBER, SchoolClassMember.class);
addAttribute(START_DATE, "Starting date of placement", Date.class);
addAttribute(END_DATE, "End date of placement", Date.class);
}
//Getters
public User getUserPlacing() {
return (User) getColumnValue(USER_PLACING);
}
public int getUserPlacingID() {
return getIntColumnValue(USER_PLACING);
}
public User getUserTerminating() {
return (User) getColumnValue(USER_TERMINATING);
}
public int getUserTerminatingID() {
return getIntColumnValue(USER_TERMINATING);
}
public SchoolClass getSchoolClass() {
return (SchoolClass) getColumnValue(SCHOOLCLASS);
}
public int getSchoolClassID() {
return getIntColumnValue(SCHOOLCLASS);
}
public SchoolClassMember getSchoolClassMember() {
return (SchoolClassMember) getColumnValue(SCHOOLCLASSMEMBER);
}
public int getSchoolClassMemberID() {
return getIntColumnValue(SCHOOLCLASSMEMBER);
}
public Date getStartDate() {
return getDateColumnValue(START_DATE);
}
public Date getEndDate() {
return getDateColumnValue(END_DATE);
}
//Setters
public void setUserPlacing(User user) {
setColumn(USER_PLACING, user);
}
public void setUserPlacing(Object userPK) {
setColumn(USER_PLACING, userPK);
}
public void setUserTerminating(User user) {
setColumn(USER_TERMINATING, user);
}
public void setUserTerminating(Object userPK) {
setColumn(USER_TERMINATING, userPK);
}
public void setSchoolClass(SchoolClass schoolClass) {
setColumn(SCHOOLCLASS, schoolClass);
}
public void setSchoolClass(Object schoolClassPK) {
setColumn(SCHOOLCLASS, schoolClassPK);
}
public void setSchoolClassMember(SchoolClassMember schoolClassMember) {
setColumn(SCHOOLCLASSMEMBER, schoolClassMember);
}
public void setSchoolClassMember(Object schoolClassMemberPK) {
setColumn(SCHOOLCLASSMEMBER, schoolClassMemberPK);
}
public void setStartDate(Date startDate) {
setColumn(START_DATE, startDate);
}
public void setEndDate(Date endDate) {
setColumn(END_DATE, endDate);
}
//Find methods
public Collection ejbFindAllBySchoolClassMember(SchoolClassMember member) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn());
query.addCriteria(new MatchCriteria(table, SCHOOLCLASSMEMBER, MatchCriteria.EQUALS, member));
query.addOrder(new Order(new Column(table, START_DATE), true));
return idoFindPKsByQuery(query);
}
public Integer ejbFindOpenLogByUser(SchoolClassMember member) throws FinderException {
return ejbFindOpenLogByUserAndSchoolClass(member, null);
}
public Integer ejbFindOpenLogByUserAndSchoolClass(SchoolClassMember member, SchoolClass schoolClass) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn());
query.addCriteria(new MatchCriteria(table, SCHOOLCLASSMEMBER, MatchCriteria.EQUALS, member));
if (schoolClass != null) {
query.addCriteria(new MatchCriteria(table, SCHOOLCLASS, MatchCriteria.EQUALS, schoolClass));
}
query.addCriteria(new MatchCriteria(new Column(table, END_DATE), false));
return (Integer) idoFindOnePKByQuery(query);
}
public Integer ejbFindLatestLogByUser(SchoolClassMember member) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn());
query.addCriteria(new MatchCriteria(table, SCHOOLCLASSMEMBER, MatchCriteria.EQUALS, member));
query.addOrder(new Order(new Column(table, START_DATE), false));
return (Integer) idoFindOnePKByQuery(query);
}
public Integer ejbFindClosedLogByUserAndSchoolClass(SchoolClassMember member, SchoolClass schoolClass) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn());
query.addCriteria(new MatchCriteria(table, SCHOOLCLASSMEMBER, MatchCriteria.EQUALS, member));
query.addCriteria(new MatchCriteria(table, SCHOOLCLASS, MatchCriteria.EQUALS, schoolClass));
query.addOrder(new Order(new Column(table, START_DATE), false));
return (Integer) idoFindOnePKByQuery(query);
}
public Integer ejbFindByPlacementAndDate(SchoolClassMember member, Date date) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn());
query.addCriteria(new MatchCriteria(table, SCHOOLCLASSMEMBER, MatchCriteria.EQUALS, member));
query.addCriteria(new MatchCriteria(table, START_DATE, MatchCriteria.GREATEREQUAL, date));
Criteria a = new MatchCriteria(table, END_DATE, MatchCriteria.LESSEQUAL, date);
Criteria b = new MatchCriteria(table, END_DATE, MatchCriteria.IS, MatchCriteria.NULL);
query.addCriteria(new OR(a, b));
query.addOrder(new Order(new Column(table, START_DATE), true));
return (Integer) idoFindOnePKByQuery(query);
}
public Integer ejbFindFutureLogByPlacementAndDate(SchoolClassMember member, Date date) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn());
query.addCriteria(new MatchCriteria(table, SCHOOLCLASSMEMBER, MatchCriteria.EQUALS, member));
query.addCriteria(new MatchCriteria(table, START_DATE, MatchCriteria.GREATEREQUAL, date));
query.addOrder(new Order(new Column(table, START_DATE), true));
return (Integer) idoFindOnePKByQuery(query);
}
public Integer ejbFindByPlacementAndEndDate(SchoolClassMember member, Date date) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn());
query.addCriteria(new MatchCriteria(table, SCHOOLCLASSMEMBER, MatchCriteria.EQUALS, member));
query.addCriteria(new MatchCriteria(table, END_DATE, MatchCriteria.EQUALS, date));
query.addOrder(new Order(new Column(table, START_DATE), true));
return (Integer) idoFindOnePKByQuery(query);
}
public Integer ejbFindByPlacementAndDateBack(SchoolClassMember member, Date date) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new Column(getIDColumnName()));
query.addCriteria(new MatchCriteria(table, SCHOOLCLASSMEMBER, MatchCriteria.EQUALS, member));
query.addCriteria(new MatchCriteria(table, START_DATE, MatchCriteria.LESSEQUAL, date));
Criteria a = new MatchCriteria(table, END_DATE, MatchCriteria.GREATEREQUAL, date);
Criteria b = new MatchCriteria(table, END_DATE, MatchCriteria.IS, MatchCriteria.NULL);
query.addCriteria(new OR(a, b));
query.addOrder(new Order(new Column(table, START_DATE), true));
return (Integer) idoFindOnePKByQuery(query);
}
public Collection ejbFindByPlacementAndDates(SchoolClassMember member, Date fromDate, Date toDate) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn());
query.addCriteria(new MatchCriteria(table, SCHOOLCLASSMEMBER, MatchCriteria.EQUALS, member));
query.addCriteria(new MatchCriteria(table, START_DATE, MatchCriteria.GREATEREQUAL, fromDate));
if (toDate != null) {
query.addCriteria(new MatchCriteria(table, START_DATE, MatchCriteria.LESSEQUAL, toDate));
}
query.addOrder(new Order(new Column(table, START_DATE), false));
return idoFindPKsByQuery(query);
}
public Collection ejbFindAllByPlacementAndDates(SchoolClassMember member, Date fromDate, Date toDate) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn());
query.addCriteria(new MatchCriteria(table, SCHOOLCLASSMEMBER, MatchCriteria.EQUALS, member));
MatchCriteria start = new MatchCriteria(table, START_DATE, MatchCriteria.GREATEREQUAL, fromDate);
MatchCriteria end = new MatchCriteria(table, END_DATE, MatchCriteria.GREATEREQUAL, fromDate);
query.addCriteria(new OR(start, end));
if (toDate != null) {
query.addCriteria(new MatchCriteria(table, START_DATE, MatchCriteria.LESSEQUAL, toDate));
}
query.addOrder(new Order(new Column(table, START_DATE), false));
return idoFindPKsByQuery(query);
}
public Collection ejbFindAllByPlacement(SchoolClassMember member) throws FinderException {
return ejbFindAllByPlacement(member, null);
}
public Collection ejbFindAllByPlacement(SchoolClassMember member, Date beforeDate) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn());
query.addCriteria(new MatchCriteria(table, SCHOOLCLASSMEMBER, MatchCriteria.EQUALS, member));
if (beforeDate != null) {
query.addCriteria(new MatchCriteria(table, START_DATE, MatchCriteria.LESS, beforeDate));
}
query.addOrder(new Order(new Column(table, START_DATE), true));
return idoFindPKsByQuery(query);
}
public Collection ejbFindAllByPlacementWithStartDateLaterThanOrEqualToDate(SchoolClassMember member, Date startDate) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn());
query.addCriteria(new MatchCriteria(table, SCHOOLCLASSMEMBER, MatchCriteria.EQUALS, member));
query.addCriteria(new MatchCriteria(table, START_DATE, MatchCriteria.GREATEREQUAL, startDate));
query.addOrder(new Order(new Column(table, START_DATE), true));
return idoFindPKsByQuery(query);
}
}