/*
* $Id: ApplicationSubjectInfoBMPBean.java,v 1.4.4.1 2006/10/18 13:54:05 palli Exp $
*
* Copyright (C) 2001 Idega hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*
*/
package is.idega.idegaweb.campus.data;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Collection;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import com.idega.block.application.data.ApplicationSubject;
import com.idega.data.query.MatchCriteria;
import com.idega.data.query.SelectQuery;
import com.idega.data.query.Table;
import com.idega.data.query.WildCardColumn;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company: idega.is
* @author 2000 - idega team - <br><a href="mailto:aron@idega.is">Aron Birkir</a><br>
* @version 1.0
*/
public class ApplicationSubjectInfoBMPBean extends com.idega.data.GenericView implements ApplicationSubjectInfo {
/*
CREATE VIEW V_APP_SUBJECT_INFO(
SUBJECT_ID,
NAME,
STATUS,
NUMBER_,
LAST_SUBMISSION,
FIRST_SUBMISSION,
LAST_CHANGE,
FIRST_CHANGE)
AS
select app1.app_subject_id subject_id, sub.description name, app1.status,
count(app1.status) number_,
max(app1.submitted) last_submission,
min(app1.submitted) first_submission,
max(app1.status_changed )last_change,
min(app1.status_changed )first_change
from app_application app1,app_subject sub
where app1.app_subject_id = sub.app_subject_id
group by app1.app_subject_id, sub.description,app1.status;
*/
public static String VIEWNAME = "V_APP_SUBJECT_INFO";
public static String SUBJECTID = "SUBJECT_ID";
public static String NAME = "NAME";
public static String STATUS = "STATUS";
public static String NUMBER = "NUMBER_";
public static String LASTSUBMISSION = "LAST_SUBMISSION";
public static String FIRSTSUBMISSION = "FIRST_SUBMISSION";
public static String LASTCHANGE = "LAST_CHANGE";
public static String FIRSTCHANGE = "FIRST_CHANGE";
public ApplicationSubjectInfoBMPBean() {
}
public ApplicationSubjectInfoBMPBean(int id) throws SQLException {
}
public Class getPrimaryKeyClass() {
return ApplicationSubjectInfoKey.class;
}
public Object ejbFindByPrimaryKey(ApplicationSubjectInfoKey primaryKey) throws FinderException {
return super.ejbFindByPrimaryKey(primaryKey);
}
public Object ejbCreate(ApplicationSubjectInfoKey primaryKey) throws CreateException {
setPrimaryKey(primaryKey);
return super.ejbCreate();
}
public void initializeAttributes() {
addAttribute(SUBJECTID,"Subjed Id",true,true,Integer.class);
setAsPrimaryKey(SUBJECTID,true);
addAttribute(NAME,"Name",true,true,String.class);
addAttribute(STATUS,"status",true,true,String.class);
setAsPrimaryKey(STATUS,true);
addAttribute(NUMBER,"Number",true,true,Integer.class);
addAttribute(LASTSUBMISSION,"LAST_SUBMISSION",true,true,Timestamp.class);
addAttribute(FIRSTSUBMISSION,"FIRST_SUBMISSION",true,true,Timestamp.class);
addAttribute(LASTCHANGE,"LAST_CHANGE",true,true,Timestamp.class);
addAttribute(FIRSTCHANGE,"FIRST_CHANGE",true,true,Timestamp.class);
}
public String getEntityName() {
return VIEWNAME;
}
public int getSubjectId() {
return getIntColumnValue(SUBJECTID);
}
public String getSubjectName() {
return getStringColumnValue(NAME);
}
public String getStatus() {
return getStringColumnValue(STATUS);
}
public int getNumber() {
return getIntColumnValue(NUMBER);
}
public Timestamp getLastSubmission() {
return (Timestamp)getColumnValue(LASTSUBMISSION);
}
public Timestamp getFirstSubmission() {
return (Timestamp)getColumnValue(FIRSTSUBMISSION);
}
public Timestamp getLastChange() {
return (Timestamp)getColumnValue(LASTCHANGE);
}
public Timestamp getFirstChange() {
return (Timestamp)getColumnValue(FIRSTCHANGE);
}
public void insert()throws SQLException{
}
public void delete()throws SQLException{
}
public Collection ejbFindAll() throws FinderException{
return super.idoFindPKsByQuery(super.idoQueryGetSelect());
}
public Collection ejbFindAllNonExpired(java.sql.Date date) throws FinderException{
Table type =new Table(this);
Table related = new Table(ApplicationSubject.class);
SelectQuery query = new SelectQuery(type);
query.addColumn(new WildCardColumn(type));
query.addJoin(type,SUBJECTID,related,"app_subject_id");
query.addCriteria(new MatchCriteria(related,"expires",MatchCriteria.GREATEREQUAL,date));
return idoFindPKsBySQL(query.toString());
}
/* (non-Javadoc)
* @see com.idega.data.IDOView#getCreationSQL()
*/
public String getCreationSQL() {
StringBuffer sql =new StringBuffer();
sql.append("CREATE VIEW ").append(VIEWNAME).append(" ( ");
sql.append(SUBJECTID).append(" , ");
sql.append(NAME).append(" , ");
sql.append(STATUS).append(" , ");
sql.append(NUMBER).append(" , ");
sql.append(LASTSUBMISSION).append(" , ");
sql.append(FIRSTSUBMISSION).append(" , ");
sql.append(LASTCHANGE).append(" , ");
sql.append(FIRSTCHANGE).append(" ) ");
sql.append(" AS ");
sql.append(" select app1.app_subject_id subject_id, sub.description name, app1.status, ");
sql.append(" count(app1.status) number_, ");
sql.append(" max(app1.submitted) last_submission, ");
sql.append(" min(app1.submitted) first_submission, ");
sql.append(" max(app1.status_changed ) last_change, ");
sql.append(" min(app1.status_changed ) first_change ");
sql.append(" from app_application app1,app_subject sub ");
sql.append(" where app1.app_subject_id = sub.app_subject_id ");
sql.append(" group by app1.app_subject_id, sub.description,app1.status; ");
return sql.toString();
}
}