package se.cubecon.bun24.viewpoint.data; import java.util.ArrayList; import java.util.Collection; import javax.ejb.FinderException; import com.idega.block.process.data.AbstractCaseBMPBean; import com.idega.block.process.data.Case; import com.idega.block.process.data.CaseBMPBean; import com.idega.user.data.Group; import com.idega.user.data.User; /** * Last modified: $Date: 2005/07/05 16:41:50 $ by $Author: thomas $ * * @author <a href="http://www.staffannoteberg.com">Staffan N�teberg</a> * @version $Revision: 1.19 $ */ public class ViewpointBMPBean extends AbstractCaseBMPBean implements Viewpoint, Case { public static final String CASE_CODE_KEY = "SYMESYN"; public static final String STATUSKEY_ANSWERED = "ASWD"; private static final String ENTITY_NAME = "vp_viewpoint"; private static final String CASE_CODE_DESCRIPTION = "User viewpoint"; private static final String [] CASE_STATUS_DESCRIPTIONS = { "Answered" }; private static final String [] CASE_STATUS_KEYS = { STATUSKEY_ANSWERED }; private static final String COLUMN_CATEGORY = "CATEGORY"; private static final String COLUMN_USER_ID = "USER_ID"; private static final String COLUMN_SUBJECT = "SUBJECT"; private static final String COLUMN_MESSAGE = "BODY"; private static final String COLUMN_ANSWER = "ANSWER"; private static final String COLUMN_ROADRESPONSIBLE_ID = "ROADRESPONSIBLE_ID"; private static final String COLUMN_USERNAME = "INITIATERNAME"; private static final String COLUMN_USEREMAIL = "INITIATEREMAIL"; private static final String COLUMN_ANSWERDATE = "ANSWERDATE"; public String getEntityName() { return ENTITY_NAME; } public String getCaseCodeKey() { return CASE_CODE_KEY; } public String getCaseCodeDescription () { return CASE_CODE_DESCRIPTION; } public String [] getCaseStatusKeys () { return CASE_STATUS_KEYS; } public String [] getCaseStatusDescriptions () { return CASE_STATUS_DESCRIPTIONS; } public void insertStartData () { super.insertStartData (); } public void initializeAttributes () { addGeneralCaseRelation(); addAttribute (COLUMN_CATEGORY, "Category", String.class); addAttribute (COLUMN_USER_ID, "User", true, true, Integer.class, "many-to-one", User.class); addAttribute (COLUMN_SUBJECT, "Subject", String.class); addAttribute (COLUMN_MESSAGE, "Message", String.class, 10000); addAttribute (COLUMN_ANSWER, "Answer", String.class, 10000); addAttribute (COLUMN_ROADRESPONSIBLE_ID, "RoadResponsible", true, true, Integer.class, "many-to-one", RoadResponsible.class); addAttribute (COLUMN_USEREMAIL, "UserEmail", String.class); addAttribute (COLUMN_USERNAME, "UserName", String.class); addAttribute (COLUMN_ANSWERDATE, "AnswerDate", java.sql.Date.class); } public Group getHandlerGroup () { return getHandler (); } public String getCategory () { return getStringColumnValue (COLUMN_CATEGORY); } public String getSubject () { return getStringColumnValue (COLUMN_SUBJECT); } public String getMessage () { return getStringColumnValue (COLUMN_MESSAGE); } public String getAnswer () { return getStringColumnValue (COLUMN_ANSWER); } public Integer getUserId () { return getIntegerColumnValue (COLUMN_USER_ID); } public boolean isAnswered () { return getStatus ().equalsIgnoreCase (STATUSKEY_ANSWERED); } public Integer getRoadResponsibleId () { return getIntegerColumnValue (COLUMN_ROADRESPONSIBLE_ID); } public String getUserEmail () { return getStringColumnValue (COLUMN_USEREMAIL); } public String getUserName () { return getStringColumnValue (COLUMN_USERNAME); } public java.util.Date getAnswerDate () { return (java.util.Date) getColumnValue (COLUMN_ANSWERDATE); } public java.util.Date getQuestionDate () { return getCreated (); } public void setHandlerGroupId (final int handlerGroupId) { setHandler (handlerGroupId); } public void setUser (final User user) { setColumn (COLUMN_USER_ID, ((Integer) user.getPrimaryKey()).intValue()); } public void setCategory (final String category) { setColumn (COLUMN_CATEGORY, category); } public void setSubject (final String subject) { setColumn (COLUMN_SUBJECT, subject); } public void setMessage (final String message) { setColumn (COLUMN_MESSAGE, message); } public void setAnswer (final String answer) { setColumn (COLUMN_ANSWER, answer); setColumn (COLUMN_ANSWERDATE, new java.sql.Date (new java.util.Date ().getTime ())); } public void setHandler (final User user) { setOwner (user); } public void unsetHandler () { final CaseBMPBean entity = (CaseBMPBean) getGeneralCase (); entity.removeFromColumn ("USER_ID"); } public void setRoadResponsibleId (final int id) { setColumn (COLUMN_ROADRESPONSIBLE_ID, new Integer (id)); } public void setUserEmail (final String email) { setColumn (COLUMN_USEREMAIL, email); } public void setUserName (final String name) { setColumn (COLUMN_USERNAME, name); } public Collection ejbFindUnhandledViewpointsInGroups (final Group [] groups) throws FinderException { final StringBuffer sql = new StringBuffer (); if (groups.length == 0) return new ArrayList (); // return empty list sql.append ("select * from " + ENTITY_NAME + ", proc_case"); sql.append (" where " + ENTITY_NAME + "." + ENTITY_NAME + "_id"); sql.append (" = proc_case.proc_case_id"); sql.append (" and proc_case.user_id is null"); for (int i = 0; i < groups.length; i++) { sql.append (i == 0 ? " and (" : " or "); final int groupId = ((Integer) groups [i].getPrimaryKey ()).intValue (); sql.append ("proc_case.handler_group_id = '" + groupId + "'"); } sql.append (")"); sql.append(" order by " + COLUMN_ANSWERDATE); final Collection viewpoints = idoFindPKsBySQL (sql.toString ()); return viewpoints; } }