package com.idega.block.survey.data; import java.sql.SQLException; import java.sql.Timestamp; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import javax.ejb.CreateException; import javax.ejb.FinderException; import com.idega.core.localisation.data.ICLocale; import com.idega.data.IDOLookup; import com.idega.data.IDOLookupException; import com.idega.data.IDOQuery; import com.idega.data.IDOTranslationEntity; import com.idega.user.data.User; import com.idega.util.IWTimestamp; /** * Title: SurveyAnswerBMPBean * Description: * Copyright: Copyright (c) 2004 * Company: idega Software * @author 2004 - idega team - <br><a href="mailto:gummi@idega.is">Gudmundur Agust Saemundsson</a><br> * @version 1.0 */ public class SurveyAnswerBMPBean extends com.idega.data.GenericEntity implements SurveyAnswer { public static final String COLUMNNAME_TEXT_INPUT = "TEXT_INPUT"; public static final String COLUMNNAME_QUESTION_ID = "SU_SURVEY_QUESTION_ID"; public static final String COLUMNNAME_CREATION_LOCALE = "CREATION_LOCALE"; private final static String DELETED_COLUMN = "DELETED"; private final static String DELETED_BY_COLUMN = "DELETED_BY"; private final static String DELETED_WHEN_COLUMN = "DELETED_WHEN"; public final static String DELETED = "Y"; public final static String NOT_DELETED = "N"; private HashMap storeMap = new HashMap(); public SurveyAnswerBMPBean() { super(); } public SurveyAnswerBMPBean(int id) throws SQLException { super(id); } public void initializeAttributes() { addAttribute(getIDColumnName()); addManyToOneRelationship(COLUMNNAME_QUESTION_ID,SurveyQuestion.class); setNullable(COLUMNNAME_QUESTION_ID, false); addAttribute(COLUMNNAME_TEXT_INPUT,"Text input",true,true,Boolean.class); addManyToOneRelationship(COLUMNNAME_CREATION_LOCALE, "Locale id", ICLocale.class); addAttribute(DELETED_COLUMN, "Deleted", true, true, String.class, 1); addAttribute(DELETED_BY_COLUMN, "Deleted by", true, true, Integer.class, "many-to-one", User.class); addAttribute(DELETED_WHEN_COLUMN, "Deleted when", true, true, Timestamp.class); } public String getEntityName() { return "SU_SURVEY_ANSWER"; } public SurveyQuestion getSurveyQuestion() { return (SurveyQuestion)getColumnValue(COLUMNNAME_QUESTION_ID); } public void setSurveyQuestion(SurveyQuestion question) { setColumn(COLUMNNAME_QUESTION_ID, question); } public String getAnswer(ICLocale locale) throws IDOLookupException, FinderException{ SurveyAnswerTranslationHome satHome = (SurveyAnswerTranslationHome)IDOLookup.getHome(SurveyAnswerTranslation.class); SurveyAnswerTranslation qTR; try { qTR = satHome.findAnswerTranslation(this, locale); } catch (FinderException e) { qTR = satHome.findAnswerTranslation(this, this.getCreationLocale()); } return qTR.getAnswer(); } public void setAnswer(String question, ICLocale locale) throws IDOLookupException, CreateException{ SurveyAnswerTranslationHome satHome = (SurveyAnswerTranslationHome)IDOLookup.getHome(SurveyAnswerTranslation.class); SurveyAnswerTranslation qTR = null; try { qTR = satHome.findAnswerTranslation(this,locale); } catch (FinderException e) { qTR = satHome.create(); qTR.setLocale(locale); if(this.getCreationLocale()== null){ this.setCreationLocale(locale); } } qTR.setAnswer(question); this.storeMap.put(locale,qTR); } public Collection ejbFindQuestionsAnswer(SurveyQuestion question) throws FinderException{ IDOQuery query = idoQueryGetSelect(); query.appendWhereEquals(COLUMNNAME_QUESTION_ID,question); query.appendAnd(); query.appendLeftParenthesis(); query.append(DELETED_COLUMN); query.appendIsNull(); query.appendOr(); query.append(DELETED_COLUMN); query.appendNOTLike(); query.appendWithinSingleQuotes(DELETED); query.appendRightParenthesis(); return idoFindPKsByQuery(query); } public boolean useTextInput(){ return getBooleanColumnValue(COLUMNNAME_TEXT_INPUT); } public void setToUseTextInput(boolean value){ setColumn(COLUMNNAME_TEXT_INPUT,value); } public void setToUseTextInput(Boolean value){ setColumn(COLUMNNAME_TEXT_INPUT,value); } public void setCreationLocale(ICLocale locale){ setColumn(COLUMNNAME_CREATION_LOCALE,locale); } public ICLocale getCreationLocale(){ return (ICLocale)getColumnValue(COLUMNNAME_CREATION_LOCALE); } public void store(){ super.store(); Collection translations = this.storeMap.values(); for (Iterator iter = translations.iterator(); iter.hasNext();) { IDOTranslationEntity element = (IDOTranslationEntity)iter.next(); element.setTransletedEntity(this); element.store(); } } /** * */ public void setRemoved(User user){ setColumn(DELETED_COLUMN, DELETED); setDeletedWhen(IWTimestamp.getTimestampRightNow()); setDeletedBy(user); super.store(); } /** * */ private void setDeletedBy(User user) { setColumn(DELETED_BY_COLUMN, user); } /** * */ private void setDeletedWhen(Timestamp when) { setColumn(DELETED_WHEN_COLUMN, when); } }