package com.idega.block.school.data;
import java.util.Collection;
import java.util.Iterator;
import java.util.Vector;
import javax.ejb.FinderException;
import com.idega.data.GenericEntity;
import com.idega.data.IDOAddRelationshipException;
import com.idega.data.IDOEntity;
import com.idega.data.IDOQuery;
import com.idega.data.IDORelationshipException;
import com.idega.data.IDORemoveRelationshipException;
/**
* @author Gimmi
*/
public class SchoolStudyPathBMPBean extends GenericEntity implements SchoolStudyPath{
private static String TABLE_NAME = "SCH_STUDY_PATH";
private static String COLUMN_CODE = "STUDY_PATH_CODE";
private static String COLUMN_DESCRIPTION = "DESCRIPTION";
private static String COLUMN_SCHOOL_TYPE = "SCH_SCHOOL_TYPE_ID";
private static String COLUMN_SCHOOL_CATEGORY = "SCH_SCHOOL_CATEGORY_ID";
private static String COLUMN_IS_VALID = "IS_VALID";
private static String COLUMN_LOCALIZED_KEY = "LOCALIZED_KEY";
private static String COLUMN_POINTS = "POINTS";
private static String COLUMN_STUDY_PATH_GROUP_ID = "STUDY_PATH_GROUP_ID";
public String getEntityName() {
return TABLE_NAME;
}
public void initializeAttributes() {
addAttribute(getIDColumnName());
setAsPrimaryKey(getIDColumnName(), true);
addAttribute(COLUMN_CODE, "course name", true, true, String.class);
addAttribute(COLUMN_DESCRIPTION, "description, ", true, true, String.class);
addAttribute(COLUMN_IS_VALID, "is valid", true, true, Boolean.class);
addAttribute(COLUMN_LOCALIZED_KEY, "localized key", String.class);
addAttribute(COLUMN_POINTS, "points", Integer.class);
this.addManyToOneRelationship(COLUMN_SCHOOL_TYPE, SchoolType.class);
this.addManyToOneRelationship(COLUMN_SCHOOL_CATEGORY, SchoolCategory.class);
this.addManyToManyRelationShip(School.class, "sch_school_study_path");
this.addManyToOneRelationship(COLUMN_STUDY_PATH_GROUP_ID, SchoolStudyPathGroup.class);
}
public void setDefaultValues() {
this.setColumn(COLUMN_IS_VALID, true);
}
public String getCode() {
return getStringColumnValue(COLUMN_CODE);
}
public void setCode(String code) {
setColumn(COLUMN_CODE, code);
}
public String getDescription() {
return getStringColumnValue(COLUMN_DESCRIPTION);
}
public void setDescription(String description) {
setColumn(COLUMN_DESCRIPTION, description);
}
public String getLocalizedKey() {
String key = getStringColumnValue(COLUMN_LOCALIZED_KEY);
if (key == null) {
key = "sch_study_path." + getCode();
}
return key;
}
public void setLocalizedKey(String localizedKey) {
setColumn(COLUMN_LOCALIZED_KEY, localizedKey);
}
public SchoolType getSchoolType() {
return (SchoolType) getColumnValue(COLUMN_SCHOOL_TYPE);
}
public int getSchoolTypeId() {
return getIntColumnValue(COLUMN_SCHOOL_TYPE);
}
public void setSchoolTypeId(Object schoolTypeId) {
setColumn(COLUMN_SCHOOL_TYPE, schoolTypeId);
}
public SchoolType getSchoolCategory() {
return (SchoolType) getColumnValue(COLUMN_SCHOOL_CATEGORY);
}
public Object getSchoolCategoryPK() {
return getColumnValue(COLUMN_SCHOOL_CATEGORY);
}
public void setSchoolCategory(Object schoolCategory) {
setColumn(COLUMN_SCHOOL_CATEGORY, schoolCategory);
}
public boolean isValid () {
return getBooleanColumnValue (COLUMN_IS_VALID);
}
public void setIsValid(boolean isValid) {
setColumn(COLUMN_IS_VALID, isValid);
}
public int getPoints() {
return getIntColumnValue(COLUMN_POINTS);
}
public void setPoints(int points) {
setColumn(COLUMN_POINTS, points);
}
public SchoolStudyPathGroup getStudyPathGroup() {
return (SchoolStudyPathGroup) getColumnValue(COLUMN_STUDY_PATH_GROUP_ID);
}
public int getStudyPathGroupID() {
return getIntColumnValue(COLUMN_STUDY_PATH_GROUP_ID);
}
public void setStudyPathGroupID(int study_path_group) {
setColumn(COLUMN_STUDY_PATH_GROUP_ID, study_path_group);
}
public void remove() {
setIsValid(false);
this.store();
}
public void addSchool(School school) throws IDOAddRelationshipException {
this.idoAddTo(school);
}
public void addSchoolYear(SchoolYear year) throws IDOAddRelationshipException {
super.idoAddTo(year);
}
public void removeSchool(School school) throws IDORemoveRelationshipException {
this.idoRemoveFrom(school);
}
public Collection getSchools() throws IDORelationshipException {
return this.idoGetRelatedEntities(School.class);
}
public void removeAllSchools() throws IDORemoveRelationshipException {
this.idoRemoveFrom(School.class);
}
public Collection ejbFindAllStudyPaths() throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this);
query.append(" WHERE ").append(COLUMN_IS_VALID).append(" is null");
query.append(" OR ").append(COLUMN_IS_VALID).append(" = 'Y'");
query.appendOrderBy(COLUMN_DESCRIPTION);
return idoFindPKsByQuery(query);
}
public Collection ejbFindAllStudyPathsByCodeLength(int codeLength) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this);
query.append(" WHERE ").append(COLUMN_IS_VALID).append(" is null");
query.append(" OR ").append(COLUMN_IS_VALID).append(" = 'Y'");
query.appendAnd().append("length(").append(COLUMN_CODE).append(") = ").append(codeLength);
query.appendOrderBy(COLUMN_DESCRIPTION);
return idoFindPKsByQuery(query);
}
public Integer ejbFindByCode(String code) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this);
query.appendWhereEqualsQuoted(COLUMN_CODE, code);
query.append(" AND (").append(COLUMN_IS_VALID).append(" is null");
query.append(" OR ").append(COLUMN_IS_VALID).append(" = 'Y')");
return (Integer) idoFindOnePKByQuery(query);
}
public Integer ejbFindByCodeAndSchoolType(String code, int schoolTypeId) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this);
query.appendWhereEqualsQuoted(COLUMN_CODE, code);
query.appendAndEquals(COLUMN_SCHOOL_TYPE, schoolTypeId);
query.append(" AND (").append(COLUMN_IS_VALID).append(" is null");
query.append(" OR ").append(COLUMN_IS_VALID).append(" = 'Y')");
return (Integer) idoFindOnePKByQuery(query);
}
public Collection ejbFindStudyPaths(School school) throws IDORelationshipException, FinderException {
return ejbFindStudyPaths(school, null, school.getSchoolTypes());
}
public Collection ejbFindStudyPaths(School school, SchoolStudyPathGroup group) throws IDORelationshipException, FinderException {
return ejbFindStudyPaths(school, group, school.getSchoolTypes());
}
public Collection ejbFindStudyPaths(School school, Object schoolTypePK) throws FinderException {
return ejbFindStudyPaths(school, null, schoolTypePK);
}
public Collection ejbFindStudyPaths(School school, SchoolStudyPathGroup group, Object schoolTypePK) throws FinderException {
Vector vector = new Vector();
vector.add(schoolTypePK);
return ejbFindStudyPaths(school, group, vector);
}
public Collection ejbFindStudyPaths(School school, Collection schoolTypePKs) throws FinderException {
return ejbFindStudyPaths(school, null, schoolTypePKs);
}
public Collection ejbFindStudyPaths(School school, SchoolStudyPathGroup group, Collection schoolTypePKs) throws FinderException {
boolean useTypes = schoolTypePKs != null && !schoolTypePKs.isEmpty();
if (useTypes) {
IDOQuery query = idoQuery();
query.append("Select s.* from ").append(getEntityName())
.append(" s,sch_school_sch_study_path r")
.append(" where s.").append(COLUMN_SCHOOL_TYPE).append(" in ( ");
Iterator iter = schoolTypePKs.iterator();
while (iter.hasNext()) {
Object next = iter.next();
if (next instanceof IDOEntity) {
query.append(((IDOEntity) next).getPrimaryKey().toString());
}
else {
query.append(next.toString());
}
if (iter.hasNext()) {
query.append(", ");
}
}
query.append(")")
.append(" AND r.sch_school_id = ").append(school.getPrimaryKey())
.append(" AND r." + getIDColumnName() + " = s." + getIDColumnName())
.append(" AND (s.").append(COLUMN_IS_VALID).append(" is null")
.append(" OR s.").append(COLUMN_IS_VALID).append(" = 'Y')");
System.out.println(query.toString());
return this.idoFindPKsByQuery(query);
} else {
/** No schoolTypes. Returning empty collection instead of all schoolCourses */
return new Vector();
}
}
/*
public Collection ejbFindAllStudyPathsByMemberId(int id) throws FinderException {
String select = "select s.* from " + TABLE_NAME +
" s,sch_study_path_sch_class_membe m" +
" where m.sch_class_member_id = " + id +
" and m." + getIDColumnName() + " = s." + getIDColumnName() +
" and (s." + COLUMN_IS_VALID + " is null " +
" or s." + COLUMN_IS_VALID + " = 'Y')" +
" order by s." + COLUMN_CODE;
return super.idoFindPKsBySQL(select);
}
*/
public Collection ejbFindBySchoolType(int schoolTypeId) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this);
query.appendWhereEquals(COLUMN_SCHOOL_TYPE, schoolTypeId);
query.append(" AND (").append(COLUMN_IS_VALID).append(" is null");
query.append(" OR ").append(COLUMN_IS_VALID).append(" = 'Y')");
query.appendOrderBy(COLUMN_CODE);
return idoFindPKsByQuery(query);
}
public Collection ejbFindBySchoolTypes(String[] schoolTypeIDs) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this);
query.appendWhere().append(COLUMN_SCHOOL_TYPE).appendInArray(schoolTypeIDs);
query.append(" AND (").append(COLUMN_IS_VALID).append(" is null");
query.append(" OR ").append(COLUMN_IS_VALID).append(" = 'Y')");
query.appendOrderBy(COLUMN_CODE);
return idoFindPKsByQuery(query);
}
public Collection ejbFindBySchoolTypes(Collection schoolTypes) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this);
query.appendWhere().append(COLUMN_SCHOOL_TYPE).appendInCollection(schoolTypes);
query.append(" AND (").append(COLUMN_IS_VALID).append(" is null");
query.append(" OR ").append(COLUMN_IS_VALID).append(" = 'Y')");
query.appendOrderBy(COLUMN_CODE);
return idoFindPKsByQuery(query);
}
public Collection ejbFindBySchoolType(SchoolType schoolType, SchoolStudyPathGroup group) throws FinderException {
return ejbFindBySchoolType(schoolType, group, COLUMN_CODE);
}
public Collection ejbFindBySchoolTypeOrderByDescription(SchoolType schoolType, SchoolStudyPathGroup group) throws FinderException {
return ejbFindBySchoolType(schoolType, group, COLUMN_DESCRIPTION);
}
public Collection ejbFindBySchoolType(SchoolType schoolType, SchoolStudyPathGroup group, String orderByColumn) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this);
query.appendWhereEquals(COLUMN_SCHOOL_TYPE,schoolType.getPrimaryKey().toString());
query.append(" AND (").append(COLUMN_IS_VALID).append(" is null");
query.append(" OR ").append(COLUMN_IS_VALID).append(" = 'Y')");
query.appendAndEquals(COLUMN_STUDY_PATH_GROUP_ID, group.getPrimaryKey().toString());
query.appendOrderBy(orderByColumn);
return idoFindPKsByQuery(query);
}
public Collection ejbFindBySchoolStudyPathGroup(SchoolStudyPathGroup group) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this);
query.append(" where ");
query.append(" (").append(COLUMN_IS_VALID).append(" is null");
query.append(" OR ").append(COLUMN_IS_VALID).append(" = 'Y')");
query.appendAndEquals(COLUMN_STUDY_PATH_GROUP_ID, group.getPrimaryKey().toString());
query.appendOrderBy(COLUMN_CODE);
return idoFindPKsByQuery(query);
}
public Collection ejbFindBySchoolCategory(SchoolCategory schoolCategory) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this);
query.appendWhereEquals(COLUMN_SCHOOL_CATEGORY, schoolCategory);
query.append(" AND (").append(COLUMN_IS_VALID).append(" is null");
query.append(" OR ").append(COLUMN_IS_VALID).append(" = 'Y')");
query.appendOrderBy(COLUMN_CODE);
return idoFindPKsByQuery(query);
}
public Collection ejbFindBySchoolAndSchoolCategory(School school, SchoolCategory schoolCategory) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom().append(getEntityName()).append(" s, sch_school_study_path r");
query.appendWhereEquals("r.sch_school_id", school.getPrimaryKey());
if (schoolCategory != null) {
query.appendAndEquals("s."+COLUMN_SCHOOL_CATEGORY, schoolCategory);
}
query.appendAndEquals("r." + getIDColumnName(), "s." + getIDColumnName());
query.append(" AND (s.").append(COLUMN_IS_VALID).append(" is null");
query.append(" OR s.").append(COLUMN_IS_VALID).append(" = 'Y')");
return this.idoFindPKsByQuery(query);
}
public Collection ejbFindBySchool(School school) throws FinderException {
return ejbFindBySchoolAndSchoolCategory(school, null);
}
public Collection ejbFindAllByIDs(String[] studyPathIDs) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this).appendWhere().append(getIDColumnName()).appendInArray(studyPathIDs);
return idoFindPKsByQuery(query);
}
}