/*
* Created on 2003-okt-08
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package se.idega.idegaweb.commune.school.business;
import java.rmi.RemoteException;
import java.sql.Timestamp;
import java.util.Collection;
import java.util.Iterator;
import javax.ejb.FinderException;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
import se.idega.idegaweb.commune.business.CommuneUserBusiness;
import se.idega.idegaweb.commune.care.business.CareBusiness;
import se.idega.idegaweb.commune.care.resource.data.ResourceClassMember;
import se.idega.idegaweb.commune.care.resource.data.ResourceClassMemberHome;
import se.idega.idegaweb.commune.school.presentation.CentralPlacementEditorConstants;
import com.idega.block.school.business.SchoolBusiness;
import com.idega.block.school.data.SchoolCategory;
import com.idega.block.school.data.SchoolCategoryHome;
import com.idega.block.school.data.SchoolClassMember;
import com.idega.block.school.data.SchoolClassMemberHome;
import com.idega.block.school.data.SchoolSeason;
import com.idega.block.school.data.SchoolStudyPath;
import com.idega.block.school.data.SchoolStudyPathHome;
import com.idega.block.school.data.SchoolYear;
import com.idega.business.IBOLookup;
import com.idega.business.IBOServiceBean;
import com.idega.data.IDOLookup;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.IWContext;
import com.idega.user.business.UserBusiness;
import com.idega.user.data.User;
import com.idega.util.IWTimestamp;
/**
* @author G�ran Borgman
*
* Business object with helper methods for CentralPlacementEditor
*/
public class CentralPlacementBusinessBean extends IBOServiceBean implements CentralPlacementBusiness {
/**
* Removes a SchoolClassMember(placement) and its attached ResourceClassMembers
* (resource placements)
*
* @param schoolClassMemberPK
*/
public void removeSchoolClassMember(Integer schoolClassMemberPK) {
UserTransaction trans = null;
try {
trans = getSessionContext().getUserTransaction();
trans.begin();
SchoolClassMember schClMember = getSchoolClassMemberHome()
.findByPrimaryKey(schoolClassMemberPK);
ResourceClassMemberHome rcmHome = (ResourceClassMemberHome)
IDOLookup.getHome(ResourceClassMember.class);
// Remove resource placements
Collection rscPlacements = rcmHome.findAllByClassMemberId(schoolClassMemberPK);
for (Iterator iter = rscPlacements.iterator(); iter.hasNext();) {
ResourceClassMember element = (ResourceClassMember) iter.next();
element.remove();
}
// Remove placement
schClMember.remove();
trans.commit();
} catch (Exception e) {
try {
trans.rollback();
} catch (IllegalStateException e1) {
log(e1);
} catch (SecurityException e1) {
log(e1);
} catch (SystemException e1) {
log(e1);
}
}
}
public SchoolClassMember getLatestPlacementFromElemAndHighSchool(User pupil) throws RemoteException {
SchoolClassMember mbr = null;
try {
if (pupil != null) {
mbr = getSchoolClassMemberHome().findLatestFromElemAndHighSchoolByUser(pupil);
}
} catch (FinderException fe1) {}
return mbr;
}
public SchoolClassMember getLatestPlacementFromElemAndHighSchool(User pupil, SchoolSeason season) throws RemoteException {
SchoolClassMember mbr = null;
try {
if (pupil != null && season != null) {
mbr = getSchoolClassMemberHome().findLatestFromElemAndHighSchoolByUserAndSeason(pupil, season);
}
} catch (FinderException fe) {
log(fe);
}
return mbr;
}
public String getDateString(Timestamp stamp, String pattern) {
IWTimestamp iwts = null;
String dateStr = "";
if (stamp != null) {
iwts = new IWTimestamp(stamp);
dateStr = iwts.getDateString(pattern);
}
return dateStr;
}
public SchoolSeason getCurrentSeason() {
SchoolSeason season = null;
try {
season = getCareBusiness().getSchoolSeasonHome().findSeasonByDate(getSchoolBusiness().getCategoryElementarySchool(), new IWTimestamp().getDate());
} catch (Exception e) {}
if (season == null) {
try {
season = getCareBusiness().getCurrentSeason();
} catch (Exception e1) {
e1.printStackTrace();
}
}
return season;
}
public String getPlacementString(SchoolClassMember placement, User user, IWResourceBundle iwrb) {
// Placement
StringBuffer buf = new StringBuffer("");
try {
// add school name
buf.append(placement.getSchoolClass().getSchool().getName());
} catch (Exception e) {}
try {
// school year
SchoolYear theYear = placement.getSchoolYear();
if (theYear != null)
buf.append(", " + iwrb.getLocalizedString(CentralPlacementEditorConstants.KEY_SCHOOL_YEAR, "school year") + " "
+ theYear.getName());
} catch (Exception e) {}
try {
// add school group
buf.append(", " + iwrb.getLocalizedString(CentralPlacementEditorConstants.KEY_SCHOOL_GROUP, "group") + " "
+ placement.getSchoolClass().getSchoolClassName());
} catch (Exception e) {}
try {
// add study path
if (placement.getStudyPathId() != -1) {
SchoolStudyPathHome home = (SchoolStudyPathHome) IDOLookup.getHome(SchoolStudyPath.class);
SchoolStudyPath sp = home.findByPrimaryKey(new Integer(placement.getStudyPathId()));
buf.append(", " + iwrb.getLocalizedString(CentralPlacementEditorConstants.KEY_STUDY_PATH, "Study path") + " "+ sp.getCode());
}
} catch (Exception e) {}
try {
// add language
if (placement.getLanguage() != null && !("-1").equals(placement.getLanguage())) {
buf.append(", " + iwrb.getLocalizedString(CentralPlacementEditorConstants.KEY_LANGUAGE, "Language") + " "+ iwrb.getLocalizedString(placement.getLanguage(), ""));
}
} catch (Exception e) {}
try {
// add native language
if (user.getNativeLanguage() != null) {
buf.append(", " + iwrb.getLocalizedString(CentralPlacementEditorConstants.KEY_NATIVE_LANGUAGE, "Native language") + " "+ user.getNativeLanguage());
}
} catch (Exception e) {}
return buf.toString();
}
protected SchoolCommuneSession getSchoolCommuneSession(IWContext iwc) throws RemoteException {
return (SchoolCommuneSession) IBOLookup.getSessionInstance(iwc, SchoolCommuneSession.class);
}
public CommuneUserBusiness getCommuneUserBusiness() throws RemoteException {
return (CommuneUserBusiness) getServiceInstance(CommuneUserBusiness.class);
}
public SchoolChoiceBusiness getSchoolChoiceBusiness() throws RemoteException {
return (SchoolChoiceBusiness) getServiceInstance(SchoolChoiceBusiness.class);
}
public UserBusiness getUserBusiness() throws RemoteException {
return (UserBusiness) getServiceInstance(UserBusiness.class);
}
private SchoolClassMemberHome getSchoolClassMemberHome() throws RemoteException {
return (SchoolClassMemberHome) IDOLookup.getHome(SchoolClassMember.class);
}
public SchoolCategoryHome getSchoolCategoryHome() throws RemoteException {
return (SchoolCategoryHome) IDOLookup.getHome(SchoolCategory.class);
}
private CareBusiness getCareBusiness() throws RemoteException {
return (CareBusiness) getServiceInstance(CareBusiness.class);
}
private SchoolBusiness getSchoolBusiness() throws RemoteException {
return (SchoolBusiness) getServiceInstance(SchoolBusiness.class);
}
}