package com.idega.block.school.data;
import java.rmi.RemoteException;
import java.util.Collection;
import java.util.Iterator;
import javax.ejb.FinderException;
import com.idega.data.GenericEntity;
import com.idega.data.IDOAddRelationshipException;
import com.idega.data.IDOLookup;
import com.idega.data.IDOQuery;
import com.idega.data.IDORelationshipException;
import com.idega.data.IDORemoveRelationshipException;
import com.idega.user.data.User;
/**
* @author Gimmi
*/
public class SchoolUserBMPBean extends GenericEntity implements SchoolUser{
private final String COLUMN_NAME_USER_TYPE = "USER_TYPE";
private final String COLUMN_NAME_SCHOOL_ID = "SCH_SCHOOL_ID";
private final String COLUMN_NAME_USER_ID = "IC_USER_ID";
private final String TABLE_NAME = "sch_school_user";
private final String COLUMN_NAME_SHOW_IN_CONTACTS = "show_in_contact";
private final String COLUMN_NAME_MAIN_HEADMASTER = "main_headmaster";
private final String COLUMN_NAME_ECONOMY_RESP = "economy_resp";
public static final int USER_TYPE_HEADMASTER = 0;
public static final int USER_TYPE_ASSISTANT_HEADMASTER = 1;
public static final int USER_TYPE_TEACHER = 2;
public static final int USER_TYPE_WEB_ADMIN = 3;
public static final int USER_TYPE_IB_COORDINATOR = 4;
public static final int USER_TYPE_STUDY_AND_WORK_COUNCEL = 5;
public static final int USER_TYPE_SCHOOL_MASTER = 6;
public static final int USER_TYPE_CONTACT_PERSON = 7;
public static final int USER_TYPE_EXPEDITION = 8;
public static final int USER_TYPE_PROJECT_MANAGER = 9;
/**
* @see com.idega.data.IDOLegacyEntity#getEntityName()
*/
public String getEntityName() {
return this.TABLE_NAME;
}
/**
* @see com.idega.data.IDOLegacyEntity#initializeAttributes()
*/
public void initializeAttributes() {
this.addAttribute(getIDColumnName());
this.addAttribute(this.COLUMN_NAME_SCHOOL_ID, "school id", true, true, Integer.class, ONE_TO_MANY, School.class);
this.addAttribute(this.COLUMN_NAME_USER_ID, "user id", true, true, Integer.class, ONE_TO_MANY, User.class);
this.addAttribute(this.COLUMN_NAME_USER_TYPE, "user type", true, true, Integer.class);
this.addAttribute(this.COLUMN_NAME_SHOW_IN_CONTACTS, "show in contacts", true, true, Boolean.class);
this.addAttribute(this.COLUMN_NAME_MAIN_HEADMASTER, "main headmaster", true, true, Boolean.class);
this.addAttribute(this.COLUMN_NAME_ECONOMY_RESP, "economical responsible", true, true, Boolean.class);
this.addManyToManyRelationShip(School.class);
}
public Collection getSchools() throws IDORelationshipException {
return idoGetRelatedEntities(School.class);
}
public void addSchools(Collection schools) throws IDOAddRelationshipException {
Iterator iter = schools.iterator();
while (iter.hasNext()) {
School school = (School) iter.next();
idoAddTo(school);
}
}
public void removeSchool(School school) throws IDORemoveRelationshipException {
idoRemoveFrom(school);
}
public void removeSchools() throws IDORemoveRelationshipException {
idoRemoveFrom(School.class);
}
public void setSchoolId(int schoolId) {
this.setColumn(this.COLUMN_NAME_SCHOOL_ID, schoolId);
}
public int getSchoolId() {
return getIntColumnValue(this.COLUMN_NAME_SCHOOL_ID);
}
public void setUserId(int userId) {
setColumn(this.COLUMN_NAME_USER_ID, userId);
}
public int getUserId() {
return getIntColumnValue(this.COLUMN_NAME_USER_ID);
}
public User getUser() {
return (User) getColumnValue(this.COLUMN_NAME_USER_ID);
}
public void setUserType(int userType) {
setColumn(this.COLUMN_NAME_USER_TYPE, userType);
}
public int getUserType() {
return getIntColumnValue(this.COLUMN_NAME_USER_TYPE);
}
public void setMainHeadmaster(boolean mainHead) {
setColumn(this.COLUMN_NAME_MAIN_HEADMASTER, mainHead);
}
public boolean getMainHeadmaster() {
return getBooleanColumnValue(this.COLUMN_NAME_MAIN_HEADMASTER);
}
public void setIsEconomicalResponsible(boolean b) {
setColumn(this.COLUMN_NAME_ECONOMY_RESP, b);
}
public boolean isEconomicalResponsible() {
return getBooleanColumnValue(this.COLUMN_NAME_ECONOMY_RESP, false);
}
public void setShowInContact(boolean showinContacts) {
setColumn(this.COLUMN_NAME_SHOW_IN_CONTACTS, showinContacts);
}
public boolean getShowInContact() {
return getBooleanColumnValue(this.COLUMN_NAME_SHOW_IN_CONTACTS);
}
/**
* Returns a Collection of SchoolUsers
* @param school School
* @param userType User type
* @return Collection
* @throws FinderException
*/
public Collection ejbFindBySchoolAndType(School school, int userType) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelect()
.append("*")
.appendFrom()
.append(this.TABLE_NAME)
.appendWhere()
.append(this.COLUMN_NAME_SCHOOL_ID)
.appendEqualSign()
.append(school.getPrimaryKey().toString())
.appendAnd()
.append(this.COLUMN_NAME_USER_TYPE)
.appendEqualSign()
.append(userType);
/** THARF AD SKILA USERUM ...*/
Collection coll = this.idoFindIDsBySQL(sql.toString());
return coll;
}
/**
* Returns a Collection of SchoolUsers
* @param school School
* @param userType User type
* @return Collection
* @throws FinderException
*/
public Collection ejbFindByTypes(int []userTypes) throws FinderException {
StringBuffer query = new StringBuffer();
query.append("select * ");
query.append("from sch_school_user, ic_user, sch_school ");
query.append("where ");
query.append(" ic_user.ic_user_id = sch_school_user.ic_user_id AND (sch_school.sch_school_id=sch_school_user.sch_school_id) ");
if (userTypes.length > 0) {
query.append(" and (");
for (int i = 0; i < userTypes.length; i++) {
if(i != 0) {
query.append(" or ");
}
query.append(" sch_school_user.user_type = " + userTypes[i]);
}
query.append(") ");
}
query.append("order by ");
query.append(" sch_school.school_name, ic_user.first_name asc ");
Collection coll = this.idoFindIDsBySQL(query.toString());
return coll;
}
public Collection ejbFindBySchoolAndTypes(School school, int[] userTypes) throws FinderException {
StringBuffer query = new StringBuffer();
query.append("select * ");
query.append("from sch_school_user, ic_user ");
query.append("where ");
query.append(" ic_user.ic_user_id = sch_school_user.ic_user_id ");
query.append(" and sch_school_user.sch_school_id=" + school.getPrimaryKey().toString() + " ");
if (userTypes.length > 0) {
query.append(" and (");
for (int i = 0; i < userTypes.length; i++) {
if(i != 0) {
query.append(" or ");
}
query.append(" sch_school_user.user_type = " + userTypes[i]);
}
query.append(") ");
}
query.append("order by ");
query.append(" ic_user.last_name asc, ic_user.first_name asc ");
Collection coll = this.idoFindIDsBySQL(query.toString());
return coll;
}
public Collection ejbFindBySchoolAndIsEconomicalResponsible (School school)
throws FinderException {
final IDOQuery sql = idoQuery ();
sql.appendSelectAllFrom (this.TABLE_NAME);
sql.appendWhereEquals (this.COLUMN_NAME_SCHOOL_ID, school);
sql.appendAndIsNotNull (this.COLUMN_NAME_ECONOMY_RESP);
sql.appendAndEquals (this.COLUMN_NAME_ECONOMY_RESP, true);
return idoFindIDsBySQL (sql.toString());
}
/**
* Returns a Collection of SchoolUsers
* @param school School
* @param userType User type
* @param departmentID int
* @return Collection
* @throws FinderException
*/
public Collection ejbFindBySchoolAndTypeAndDepartment(School school, int userType, int departmentID) throws FinderException {
IDOQuery sql = idoQuery();
//sql.appendSelect()
//.append("*")
//.appendFrom()
//.append(TABLE_NAME)
sql.appendSelectAllFrom(this.TABLE_NAME + " su , "
+ SchoolDepartmentBMPBean.ENTITY_NAME + " sd, " + SchoolDepartmentBMPBean.ENTITY_NAME + "_USER sdu")
.appendWhere()
.append("su." + this.COLUMN_NAME_SCHOOL_ID)
.appendEqualSign()
.append(school.getPrimaryKey().toString())
.appendAnd()
.append("su." + this.COLUMN_NAME_USER_TYPE)
.appendEqualSign()
.append(userType)
.appendAnd()
.append("sd." + SchoolDepartmentBMPBean.DEPARTMENT_ID)
.appendEqualSign()
.append(departmentID)
.appendAnd()
.append("sd." + SchoolDepartmentBMPBean.DEPARTMENT_ID)
.appendEqualSign()
.append("sdu." + SchoolDepartmentBMPBean.DEPARTMENT_ID)
.appendAnd()
.append("su." + getIDColumnName())
.appendEqualSign()
.append("sdu." + getIDColumnName());
/** THARF AD SKILA USERUM ...*/
Collection coll = this.idoFindIDsBySQL(sql.toString());
return coll;
}
/**
* Returns a Collection of SchoolUsers
* @param school School
* @param departmentID int
* @return Collection
* @throws FinderException
*/
public Collection ejbFindBySchoolAndDepartment(School school, int departmentID) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this.TABLE_NAME + " su , "
+ SchoolDepartmentBMPBean.ENTITY_NAME + " sd, " + SchoolDepartmentBMPBean.ENTITY_NAME + "_USER sdu")
.appendWhere()
.append("su." + this.COLUMN_NAME_SCHOOL_ID)
.appendEqualSign()
.append(school.getPrimaryKey().toString())
.appendAnd()
.append("sd." + SchoolDepartmentBMPBean.DEPARTMENT_ID)
.appendEqualSign()
.append(departmentID)
.appendAnd()
.append("sd." + SchoolDepartmentBMPBean.DEPARTMENT_ID)
.appendEqualSign()
.append("sdu." + SchoolDepartmentBMPBean.DEPARTMENT_ID)
.appendAnd()
.append("su." + getIDColumnName())
.appendEqualSign()
.append("sdu." + getIDColumnName());
///////
/** THARF AD SKILA USERUM ...*/
Collection coll = this.idoFindIDsBySQL(sql.toString());
return coll;
}
/**
* Returns a Collection of SchoolUsers
* @param school School
* @param userType User type
* @param departmentID int
* @return Collection
* @throws FinderException
*/
public Collection ejbFindBySchoolAndMainHeadmaster(School school, int userType, boolean main_headmaster) throws FinderException {
IDOQuery sql = idoQuery();
String strMain_headmaster = "N";
if (main_headmaster) {
strMain_headmaster = "Y";
}
sql.appendSelect()
.append("*")
.appendFrom()
.append(this.TABLE_NAME)
.appendWhere()
.append(this.COLUMN_NAME_SCHOOL_ID)
.appendEqualSign()
.append(school.getPrimaryKey().toString())
.appendAnd()
.append(this.COLUMN_NAME_MAIN_HEADMASTER)
.appendEqualSign()
.appendWithinSingleQuotes(strMain_headmaster)
.appendAnd()
.append(this.COLUMN_NAME_USER_TYPE)
.appendEqualSign()
.append(userType);
return this.idoFindIDsBySQL(sql.toString());
}
public Collection ejbFindByUser(User user) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this)
.appendWhere()
.append(this.COLUMN_NAME_USER_ID)
.appendEqualSign()
.append(user.getPrimaryKey().toString());
return this.idoFindIDsBySQL(sql.toString());
}
public Object ejbFindForUser(User user) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelectAllFrom(this)
.appendWhere()
.append(this.COLUMN_NAME_USER_ID)
.appendEqualSign()
.append(user.getPrimaryKey().toString());
return this.idoFindOnePKBySQL(sql.toString());
}
public Collection ejbFindBySchoolAndUser(School school, User user) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelect()
.append("*")
.appendFrom()
.append(this.TABLE_NAME)
.appendWhere()
.append(this.COLUMN_NAME_SCHOOL_ID)
.appendEqualSign()
.append(school.getPrimaryKey().toString())
.appendAnd()
.append(this.COLUMN_NAME_USER_ID)
.appendEqualSign()
.append(user.getPrimaryKey().toString());
return this.idoFindIDsBySQL(sql.toString());
}
public Collection ejbFindBySchool(School school) throws FinderException {
IDOQuery sql = idoQuery();
sql.appendSelect()
.append("*")
.appendFrom()
.append(this.TABLE_NAME)
.appendWhere()
.append(this.COLUMN_NAME_SCHOOL_ID)
.appendEqualSign()
.append(school.getPrimaryKey().toString());
return this.idoFindIDsBySQL(sql.toString());
}
public Object ejbHomeGetSchoolUserId(School school, User user, int userType) throws FinderException{
IDOQuery sql = idoQuery();
sql.appendSelect()
.append("*")
.appendFrom()
.append(this.TABLE_NAME)
.appendWhere()
.append(this.COLUMN_NAME_SCHOOL_ID)
.appendEqualSign()
.append(school.getPrimaryKey().toString())
.appendAnd()
.append(this.COLUMN_NAME_USER_TYPE)
.appendEqualSign()
.append(userType)
.appendAnd()
.append(this.COLUMN_NAME_USER_ID)
.appendEqualSign()
.append(user.getPrimaryKey().toString());
return this.idoFindOnePKByQuery(sql);
}
public SchoolUserHome getHome() throws RemoteException {
return (SchoolUserHome) IDOLookup.getHome(SchoolUser.class);
}
}