/*
* $Id: AdultEducationChoiceBMPBean.java,v 1.14 2005/10/13 08:09:37 palli Exp $
* Created on May 3, 2005
*
* Copyright (C) 2005 Idega Software hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf. Use is subject to
* license terms.
*/
package se.idega.idegaweb.commune.adulteducation.data;
import java.sql.Date;
import java.util.Collection;
import javax.ejb.FinderException;
import se.idega.idegaweb.commune.adulteducation.AdultEducationConstants;
import com.idega.block.process.data.AbstractCaseBMPBean;
import com.idega.block.process.data.Case;
import com.idega.block.school.data.SchoolSeason;
import com.idega.block.school.data.SchoolStudyPath;
import com.idega.block.school.data.SchoolType;
import com.idega.data.IDOAddRelationshipException;
import com.idega.data.IDOException;
import com.idega.data.IDORelationshipException;
import com.idega.data.IDORemoveRelationshipException;
import com.idega.data.query.CountColumn;
import com.idega.data.query.InCriteria;
import com.idega.data.query.JoinCriteria;
import com.idega.data.query.MatchCriteria;
import com.idega.data.query.OR;
import com.idega.data.query.SelectQuery;
import com.idega.data.query.Table;
import com.idega.data.query.WildCardColumn;
import com.idega.user.data.User;
public class AdultEducationChoiceBMPBean extends AbstractCaseBMPBean implements Case, AdultEducationChoice {
private static final String ENTITY_NAME = "comm_vux_choice";
private static final String USER = "ic_user_id";
private static final String COURSE = "vux_course_id";
private static final String CHOICE_DATE = "choice_date";
private static final String COMMENT = "choice_comment";
private static final String NOTES = "notes";
private static final String CHOICE_ORDER = "choice_order";
private static final String GRANTED_RULE_1 = "granted_rule_1";
private static final String GRANTED_RULE_2 = "granted_rule_2";
private static final String GRANTED_RULE_3 = "granted_rule_3";
private static final String GRANTED_RULE_4 = "granted_rule_4";
private static final String GRANTED_RULE_NOTES = "granted_rule_notes";
private static final String GRANTED_DATE = "granted_date";
private static final String ALL_GRANTED = "all_granted";
private static final String PRIORITY = "priority";
private static final String CONFIRMATION_MESSAGE = "confirmation_message";
private static final String PLACEMENT_MESSAGE = "placement_message";
private static final String REJECTION_COMMENT = "rejection_comment";
private static final String OTHER_REASON = "other_reason";
private static final String PACKAGE = "vux_school_package_id";
public String getCaseCodeKey() {
return AdultEducationConstants.ADULT_EDUCATION_CASE_CODE;
}
public String getCaseCodeDescription() {
return AdultEducationConstants.ADULT_EDUCATION_CASE_DESCRIPTION;
}
public String getEntityName() {
return ENTITY_NAME;
}
public void initializeAttributes() {
addGeneralCaseRelation();
addManyToOneRelationship(USER, "User", User.class);
addManyToOneRelationship(COURSE, "Course", AdultEducationCourse.class);
addManyToOneRelationship(PACKAGE, "Package", SchoolCoursePackage.class);
addAttribute(CHOICE_DATE, "Choice date", Date.class);
addAttribute(COMMENT, "Comment", String.class, 1000);
addAttribute(CHOICE_ORDER, "Choice order", Integer.class);
addAttribute(GRANTED_RULE_1, "Granted rule 1", Boolean.class);
addAttribute(GRANTED_RULE_2, "Granted rule 2", Boolean.class);
addAttribute(GRANTED_RULE_3, "Granted rule 3", Boolean.class);
addAttribute(GRANTED_RULE_4, "Granted rule 4", Boolean.class);
addAttribute(GRANTED_RULE_NOTES, "Granted rule notes", String.class, 1000);
addAttribute(GRANTED_DATE, "Granted date", Date.class);
addAttribute(ALL_GRANTED, "All granted", Boolean.class);
addAttribute(PRIORITY, "Priority", Integer.class);
addAttribute(CONFIRMATION_MESSAGE, "Confirmation message", Boolean.class);
addAttribute(PLACEMENT_MESSAGE, "Placement message", Boolean.class);
addAttribute(REJECTION_COMMENT, "Rejection comment", String.class, 1000);
addAttribute(NOTES, "Notes", String.class, 1000);
addAttribute(OTHER_REASON, "Other reason", String.class);
addManyToManyRelationShip(AdultEducationChoiceReason.class);
}
public void setDefaultValues() {
setGrantedRule1(false);
setGrantedRule2(false);
setGrantedRule3(false);
setAllGranted(false);
setPlacementMessageSent(false);
setConfirmationMessageSent(false);
super.setDefaultValues();
}
// Getters
public User getUser() {
return (User) getColumnValue(USER);
}
public Object getUserPK() {
return getIntegerColumnValue(USER);
}
public AdultEducationCourse getCourse() {
return (AdultEducationCourse) getColumnValue(COURSE);
}
public Object getCoursePK() {
return getIntegerColumnValue(COURSE);
}
public SchoolCoursePackage getPackage() {
return (SchoolCoursePackage) getColumnValue(PACKAGE);
}
public Object getPackagePK() {
return getIntegerColumnValue(PACKAGE);
}
public Date getChoiceDate() {
return getDateColumnValue(CHOICE_DATE);
}
public String getComment() {
return getStringColumnValue(COMMENT);
}
public int getChoiceOrder() {
return getIntColumnValue(CHOICE_ORDER);
}
public boolean hasGrantedRule1() {
return getBooleanColumnValue(GRANTED_RULE_1, false);
}
public boolean hasGrantedRule2() {
return getBooleanColumnValue(GRANTED_RULE_2, false);
}
public boolean hasGrantedRule3() {
return getBooleanColumnValue(GRANTED_RULE_3, false);
}
public boolean hasGrantedRule4() {
return getBooleanColumnValue(GRANTED_RULE_4, false);
}
public boolean hasAllGranted() {
return getBooleanColumnValue(ALL_GRANTED, false);
}
public String getGrantedRuleNotes() {
return getStringColumnValue(GRANTED_RULE_NOTES);
}
public Date getGrantedDate() {
return getDateColumnValue(GRANTED_DATE);
}
public int getPriority() {
return getIntColumnValue(PRIORITY);
}
public boolean isPlacementMessageSent() {
return getBooleanColumnValue(PLACEMENT_MESSAGE, false);
}
public boolean isConfirmationMessageSent() {
return getBooleanColumnValue(CONFIRMATION_MESSAGE, false);
}
public String getRejectionComment() {
return getStringColumnValue(REJECTION_COMMENT);
}
public String getNotes() {
return getStringColumnValue(NOTES);
}
public Collection getReasons() throws IDORelationshipException {
return idoGetRelatedEntities(AdultEducationChoiceReason.class);
}
public String getOtherReason() {
return getStringColumnValue(OTHER_REASON);
}
// Setters
public void setUser(User user) {
setColumn(USER, user);
}
public void setUser(Object userPK) {
setColumn(USER, userPK);
}
public void setCourse(AdultEducationCourse course) {
setColumn(COURSE, course);
}
public void setCourse(Object coursePK) {
setColumn(COURSE, coursePK);
}
public void setPackage(SchoolCoursePackage schoolCoursePackage) {
setColumn(PACKAGE, schoolCoursePackage);
}
public void setPackage(Object schoolCoursePackagePK) {
setColumn(PACKAGE, schoolCoursePackagePK);
}
public void setChoiceDate(Date date) {
setColumn(CHOICE_DATE, date);
}
public void setComment(String comment) {
setColumn(COMMENT, comment);
}
public void setChoiceOrder(int order) {
setColumn(CHOICE_ORDER, order);
}
public void setGrantedRule1(boolean granted) {
setColumn(GRANTED_RULE_1, granted);
}
public void setGrantedRule2(boolean granted) {
setColumn(GRANTED_RULE_2, granted);
}
public void setGrantedRule3(boolean granted) {
setColumn(GRANTED_RULE_3, granted);
}
public void setGrantedRule4(boolean granted) {
setColumn(GRANTED_RULE_4, granted);
}
public void setGrantedRuleNotes(String notes) {
setColumn(GRANTED_RULE_NOTES, notes);
}
public void setAllGranted(boolean granted) {
setColumn(ALL_GRANTED, granted);
}
public void setGrantedDate(Date date) {
setColumn(GRANTED_DATE, date);
}
public void setPriority(int priority) {
setColumn(PRIORITY, priority);
}
public void setPlacementMessageSent(boolean sent) {
setColumn(PLACEMENT_MESSAGE, sent);
}
public void setConfirmationMessageSent(boolean sent) {
setColumn(CONFIRMATION_MESSAGE, sent);
}
public void setRejectionComment(String comment) {
setColumn(REJECTION_COMMENT, comment);
}
public void setNotes(String notes) {
setColumn(NOTES, notes);
}
public void addReason(AdultEducationChoiceReason reason) throws IDOAddRelationshipException {
idoAddTo(reason);
}
public void addReason(Object reasonPK) throws IDOAddRelationshipException {
idoAddTo(AdultEducationChoiceReason.class, reasonPK);
}
public void removeReason(AdultEducationChoiceReason reason) throws IDORemoveRelationshipException {
idoRemoveFrom(reason);
}
public void removeAllReasons() throws IDORemoveRelationshipException {
idoRemoveFrom(AdultEducationChoiceReason.class);
}
public void setOtherReason(String otherReason) {
setColumn(OTHER_REASON, otherReason);
}
// Finders
public Collection ejbFindAllBySeasonAndStatuses(SchoolSeason season, String[] statuses) throws FinderException {
return ejbFindAllBySeasonAndStatuses(season, statuses, -1);
}
public Collection ejbFindAllBySeasonAndStatuses(SchoolSeason season, String[] statuses, int choiceOrder)
throws FinderException {
Table table = new Table(this);
Table course = new Table(AdultEducationCourse.class);
Table cases = new Table(Case.class);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
try {
query.addJoin(table, course);
query.addJoin(table, cases);
}
catch (IDORelationshipException ire) {
throw new FinderException(ire.getMessage());
}
query.addCriteria(new MatchCriteria(course, "sch_school_season_id", MatchCriteria.EQUALS, season));
if (choiceOrder != -1) {
query.addCriteria(new MatchCriteria(table, CHOICE_ORDER, MatchCriteria.EQUALS, choiceOrder));
}
query.addCriteria(new InCriteria(cases, "case_status", statuses));
query.addOrder(cases, "case_status", false);
query.addOrder(table, CHOICE_DATE, true);
return idoFindPKsByQuery(query);
}
public Collection ejbFindAllBySeasonAndTypeAndDateAndStatuses(SchoolSeason season, SchoolType type, Date fromDate,
Date toDate, String[] statuses, int choiceOrder) throws FinderException {
return ejbFindAllBySeasonAndTypeAndDateAndHandlerAndStatuses(season, type, fromDate, toDate, null, statuses,
choiceOrder);
}
public Collection ejbFindAllBySeasonAndTypeAndDateAndHandlerAndStatuses(SchoolSeason season, SchoolType type,
Date fromDate, Date toDate, User handler, String[] statuses, int choiceOrder) throws FinderException {
Table table = new Table(this);
Table course = new Table(AdultEducationCourse.class);
Table cases = new Table(Case.class);
Table studyPath = new Table(SchoolStudyPath.class);
Table user = new Table(User.class);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
try {
query.addJoin(table, course);
query.addJoin(table, cases);
query.addJoin(course, studyPath);
query.addJoin(table, user, USER);
}
catch (IDORelationshipException ire) {
throw new FinderException(ire.getMessage());
}
query.addCriteria(new MatchCriteria(course, "sch_school_season_id", MatchCriteria.EQUALS, season));
if (choiceOrder != -1) {
query.addCriteria(new MatchCriteria(table, CHOICE_ORDER, MatchCriteria.EQUALS, choiceOrder));
}
if (type != null) {
query.addCriteria(new MatchCriteria(studyPath, "sch_school_type_id", MatchCriteria.EQUALS, type));
}
query.addCriteria(new MatchCriteria(table, CHOICE_DATE, MatchCriteria.GREATEREQUAL, fromDate));
query.addCriteria(new MatchCriteria(table, CHOICE_DATE, MatchCriteria.LESSEQUAL, toDate));
if (handler != null) {
OR or1 = new OR(new MatchCriteria(cases.getColumn("HANDLER_GROUP_ID"), false), new JoinCriteria(
table.getColumn(USER), cases.getColumn("HANDLER_GROUP_ID")));
query.addCriteria(new OR(new MatchCriteria(cases, "HANDLER_GROUP_ID", MatchCriteria.EQUALS, handler), or1));
}
query.addCriteria(new InCriteria(cases, "case_status", statuses));
query.addOrder(cases, "case_status", false);
query.addOrder(table, CHOICE_DATE, true);
query.addOrder(user, "personal_id", true);
return idoFindPKsByQuery(query);
}
public Collection ejbFindAllByUserAndSeason(User user, SchoolSeason season) throws FinderException {
return ejbFindAllByUserAndSeason(user, season, -1);
}
public Collection ejbFindAllByUserAndSeason(User user, SchoolSeason season, int choiceOrder) throws FinderException {
Table table = new Table(this);
Table course = new Table(AdultEducationCourse.class);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
try {
query.addJoin(table, course);
}
catch (IDORelationshipException ire) {
throw new FinderException(ire.getMessage());
}
query.addCriteria(new MatchCriteria(table, USER, MatchCriteria.EQUALS, user));
query.addCriteria(new MatchCriteria(course, "sch_school_season_id", MatchCriteria.EQUALS, season));
if (choiceOrder != -1) {
query.addCriteria(new MatchCriteria(table, CHOICE_ORDER, MatchCriteria.EQUALS, choiceOrder));
}
query.addOrder(table, CHOICE_ORDER, true);
return idoFindPKsByQuery(query);
}
public Collection ejbFindAllByUserAndSeasonAndPackage(User user, SchoolSeason season,
SchoolCoursePackage coursePackage) throws FinderException {
return ejbFindAllByUserAndSeasonAndPackage(user, season, coursePackage, -1);
}
public Collection ejbFindAllByUserAndSeasonAndPackage(User user, SchoolSeason season,
SchoolCoursePackage coursePackage, int choiceOrder) throws FinderException {
Table table = new Table(this);
Table course = new Table(AdultEducationCourse.class);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
try {
query.addJoin(table, course);
}
catch (IDORelationshipException ire) {
throw new FinderException(ire.getMessage());
}
query.addCriteria(new MatchCriteria(table, USER, MatchCriteria.EQUALS, user));
query.addCriteria(new MatchCriteria(course, "sch_school_season_id", MatchCriteria.EQUALS, season));
query.addCriteria(new MatchCriteria(table, PACKAGE, MatchCriteria.EQUALS, coursePackage));
if (choiceOrder != -1) {
query.addCriteria(new MatchCriteria(table, CHOICE_ORDER, MatchCriteria.EQUALS, choiceOrder));
}
query.addOrder(table, CHOICE_ORDER, true);
return idoFindPKsByQuery(query);
}
public Collection ejbFindAllByUser(User user, String[] statuses) throws FinderException {
Table table = new Table(this);
Table course = new Table(AdultEducationCourse.class);
Table season = new Table(SchoolSeason.class);
Table cases = new Table(Case.class);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
try {
query.addJoin(table, course);
query.addJoin(course, season);
query.addJoin(table, cases);
}
catch (IDORelationshipException ire) {
throw new FinderException(ire.getMessage());
}
query.addCriteria(new MatchCriteria(table, USER, MatchCriteria.EQUALS, user));
query.addCriteria(new InCriteria(cases, "case_status", statuses));
query.addOrder(season, "season_start", true);
return idoFindPKsByQuery(query);
}
public Collection ejbFindAllByUserAndSeasonAndStatuses(User user, SchoolSeason season, String[] statuses)
throws FinderException {
Table table = new Table(this);
Table course = new Table(AdultEducationCourse.class);
Table cases = new Table(Case.class);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
try {
query.addJoin(table, course);
query.addJoin(table, cases);
}
catch (IDORelationshipException ire) {
throw new FinderException(ire.getMessage());
}
query.addCriteria(new MatchCriteria(table, USER, MatchCriteria.EQUALS, user));
query.addCriteria(new MatchCriteria(course, "sch_school_season_id", MatchCriteria.EQUALS, season));
query.addCriteria(new InCriteria(cases, "case_status", statuses));
query.addOrder(table, CHOICE_ORDER, true);
return idoFindPKsByQuery(query);
}
public Collection ejbFindAllByUserAndSeasonAndStatuses(User user, SchoolSeason season,
SchoolCoursePackage coursePackage, int choiceOrder, String[] statuses) throws FinderException {
Table table = new Table(this);
Table course = new Table(AdultEducationCourse.class);
Table cases = new Table(Case.class);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
try {
query.addJoin(table, course);
query.addJoin(table, cases);
}
catch (IDORelationshipException ire) {
throw new FinderException(ire.getMessage());
}
query.addCriteria(new MatchCriteria(table, USER, MatchCriteria.EQUALS, user));
query.addCriteria(new MatchCriteria(course, "sch_school_season_id", MatchCriteria.EQUALS, season));
query.addCriteria(new MatchCriteria(table, PACKAGE, MatchCriteria.EQUALS, coursePackage));
query.addCriteria(new MatchCriteria(table, CHOICE_ORDER, MatchCriteria.EQUALS, choiceOrder));
query.addCriteria(new InCriteria(cases, "case_status", statuses));
query.addOrder(table, CHOICE_ORDER, true);
return idoFindPKsByQuery(query);
}
public Object ejbFindByUserAndCourse(Object userPK, Object coursePK) throws FinderException {
Table table = new Table(this);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
query.addCriteria(new MatchCriteria(table, USER, MatchCriteria.EQUALS, userPK));
query.addCriteria(new MatchCriteria(table, COURSE, MatchCriteria.EQUALS, coursePK));
return idoFindOnePKByQuery(query);
}
public Collection ejbFindAllByUserAndSeasonAndStudyPath(Object userPK, Object seasonPK, Object studyPathPK,
String[] statuses) throws FinderException {
Table table = new Table(this);
Table course = new Table(AdultEducationCourse.class);
Table cases = new Table(Case.class);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
try {
query.addJoin(table, course);
query.addJoin(table, cases);
}
catch (IDORelationshipException ire) {
throw new FinderException(ire.getMessage());
}
query.addCriteria(new MatchCriteria(table, USER, MatchCriteria.EQUALS, userPK));
query.addCriteria(new MatchCriteria(course, "sch_study_path_id", MatchCriteria.EQUALS, studyPathPK));
query.addCriteria(new MatchCriteria(course, "sch_school_season_id", MatchCriteria.EQUALS, seasonPK));
query.addCriteria(new InCriteria(cases, "case_status", statuses));
query.addOrder(table, CHOICE_ORDER, true);
return idoFindPKsByQuery(query);
}
public Object ejbFindByUserAndSeasonAndStudyPathAndChoiceOrder(Object userPK, Object seasonPK, Object studyPathPK,
int choiceOrder, String[] statuses) throws FinderException {
Table table = new Table(this);
Table course = new Table(AdultEducationCourse.class);
Table cases = new Table(Case.class);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
try {
query.addJoin(table, course);
query.addJoin(table, cases);
}
catch (IDORelationshipException ire) {
throw new FinderException(ire.getMessage());
}
query.addCriteria(new MatchCriteria(table, USER, MatchCriteria.EQUALS, userPK));
query.addCriteria(new MatchCriteria(course, "sch_school_season_id", MatchCriteria.EQUALS, seasonPK));
query.addCriteria(new MatchCriteria(course, "sch_study_path_id", MatchCriteria.EQUALS, studyPathPK));
query.addCriteria(new InCriteria(cases, "case_status", statuses));
query.addCriteria(new MatchCriteria(table, CHOICE_ORDER, MatchCriteria.EQUALS, choiceOrder));
return idoFindOnePKByQuery(query);
}
public Collection ejbFindAllBySeasonAndCourse(SchoolSeason season, AdultEducationCourse aeCourse, String[] statuses)
throws FinderException {
Table table = new Table(this);
Table course = new Table(AdultEducationCourse.class);
Table cases = new Table(Case.class);
SelectQuery query = new SelectQuery(table);
query.addColumn(new WildCardColumn(table));
try {
query.addJoin(table, course);
query.addJoin(table, cases);
}
catch (IDORelationshipException ire) {
throw new FinderException(ire.getMessage());
}
if (aeCourse != null) {
query.addCriteria(new MatchCriteria(table, COURSE, MatchCriteria.EQUALS, aeCourse));
}
query.addCriteria(new MatchCriteria(course, "sch_school_season_id", MatchCriteria.EQUALS, season));
query.addCriteria(new InCriteria(cases, "case_status", statuses));
query.addOrder(table, PRIORITY, true);
query.addOrder(table, CHOICE_DATE, true);
return idoFindPKsByQuery(query);
}
public int ejbHomeGetCountOfChoicesByCourse(SchoolSeason season, AdultEducationCourse course, String[] statuses)
throws IDOException {
Table table = new Table(this);
Table courseTable = new Table(AdultEducationCourse.class);
Table cases = new Table(Case.class);
SelectQuery query = new SelectQuery(table);
query.addColumn(new CountColumn(table, getIDColumnName()));
query.addJoin(table, courseTable);
query.addJoin(table, cases);
query.addCriteria(new MatchCriteria(courseTable, "sch_school_season_id", MatchCriteria.EQUALS, season));
query.addCriteria(new MatchCriteria(courseTable, COURSE, MatchCriteria.EQUALS, course));
query.addCriteria(new InCriteria(cases, "case_status", statuses));
return idoGetNumberOfRecords(query);
}
}