package is.idega.idegaweb.member.isi.block.reports.presentation; import is.idega.idegaweb.member.isi.block.reports.business.WorkReportBusiness; import is.idega.idegaweb.member.isi.block.reports.data.WorkReport; import is.idega.idegaweb.member.isi.block.reports.data.WorkReportBoardMember; import is.idega.idegaweb.member.isi.block.reports.data.WorkReportGroup; import is.idega.idegaweb.member.util.IWMemberConstants; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; import javax.ejb.CreateException; import javax.ejb.FinderException; import javax.ejb.RemoveException; import com.idega.block.entity.business.EntityToPresentationObjectConverter; import com.idega.block.entity.data.EntityPath; import com.idega.block.entity.data.EntityPathValueContainer; import com.idega.block.entity.presentation.EntityBrowser; import com.idega.block.entity.presentation.converter.CheckBoxConverter; import com.idega.block.entity.presentation.converter.ConverterConstants; import com.idega.block.entity.presentation.converter.editable.DropDownMenuConverter; import com.idega.block.entity.presentation.converter.editable.DropDownPostalCodeConverter; import com.idega.block.entity.presentation.converter.editable.EditOkayButtonConverter; import com.idega.block.entity.presentation.converter.editable.OptionProvider; import com.idega.block.entity.presentation.converter.editable.TextEditorConverter; import com.idega.core.location.data.PostalCode; import com.idega.data.EntityRepresentation; import com.idega.data.IDOException; import com.idega.idegaweb.IWApplicationContext; import com.idega.idegaweb.IWResourceBundle; import com.idega.presentation.IWContext; import com.idega.presentation.PresentationObject; import com.idega.presentation.Table; import com.idega.presentation.text.Link; import com.idega.presentation.text.Text; import com.idega.presentation.ui.DropdownMenu; import com.idega.presentation.ui.Form; import com.idega.presentation.ui.SubmitButton; import com.idega.presentation.ui.TextInput; import com.idega.user.data.User; import com.idega.util.datastructures.SortedByValueMap; /** * <p>Title: idegaWeb</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: idega Software</p> * @author <a href="thomas@idega.is">Thomas Hilbig</a> * @version 1.0 * Created on Jul 3, 2003 */ public class WorkReportBoardMemberEditor extends WorkReportSelector { private static final String STEP_NAME_LOCALIZATION_KEY = "workreportboardmembereditor.step_name"; private static final String SUBMIT_CREATE_NEW_ENTRY_KEY = "submit_cr_new_entry_key"; // private static final String SUBMIT_SAVE_NEW_ENTRY_KEY = "submit_sv_new_entry_key"; private static final String SUBMIT_DELETE_ENTRIES_KEY = "submit_del_new_entry_key"; private static final String SUBMIT_CANCEL_KEY = "submit_cancel_key"; // private static final Integer NEW_ENTRY_ID_VALUE = new Integer(-1); // private static final String ACTION_SHOW_NEW_ENTRY = "action_show_new_entry"; private static final String CHECK_BOX = "checkBox"; // this varible is used by the inner class private static final String LEAGUE = "league"; private static final List STATUS_OPTIONS; private static final String SSN_KEY = "ssn"; private static final String LEAGUE_KEY = "league"; private static final String STATUS = WorkReportBoardMember.class.getName()+".STATUS"; private static final String NAME = WorkReportBoardMember.class.getName()+".NAME"; private static final String PERSONAL_ID = WorkReportBoardMember.class.getName()+".PERSONAL_ID"; private static final String STREET_NAME = WorkReportBoardMember.class.getName()+".STREET_NAME"; private static final String POSTAL_CODE_ID = PostalCode.class.getName()+".POSTAL_CODE_ID|POSTAL_CODE"; private static final String HOME_PHONE = WorkReportBoardMember.class.getName()+".HOME_PHONE"; private static final String WORK_PHONE = WorkReportBoardMember.class.getName()+".WORK_PHONE"; private static final String FAX = WorkReportBoardMember.class.getName()+".FAX"; private static final String EMAIL = WorkReportBoardMember.class.getName()+".EMAIL"; private String errorMessageStyle = "errorMessage"; // add these columns to this list that should be parsed private static List FIELD_LIST; static { STATUS_OPTIONS = new ArrayList(); STATUS_OPTIONS.add(IWMemberConstants.MEMBER_BOARD_CHAIR_MAN); STATUS_OPTIONS.add(IWMemberConstants.MEMBER_BOARD_VICE_CHAIRMAN); STATUS_OPTIONS.add(IWMemberConstants.MEMBER_CASHIER); STATUS_OPTIONS.add(IWMemberConstants.MEMBER_SECRETARY); STATUS_OPTIONS.add(IWMemberConstants.MEMBER_BOARD_MEMBER); STATUS_OPTIONS.add(IWMemberConstants.MEMBER_EXTRA_BOARD); STATUS_OPTIONS.add(IWMemberConstants.MEMBER_STAND_IN); STATUS_OPTIONS.add(IWMemberConstants.MEMBER_CO_CHIEF); STATUS_OPTIONS.add(IWMemberConstants.MEMBER_CEO); STATUS_OPTIONS.add(IWMemberConstants.MEMBER_PRESIDENT); STATUS_OPTIONS.add(IWMemberConstants.MEMBER_VICE_PRESIDENT); FIELD_LIST = new ArrayList(); FIELD_LIST.add(LEAGUE); FIELD_LIST.add(STATUS); FIELD_LIST.add(NAME); FIELD_LIST.add(PERSONAL_ID); FIELD_LIST.add(STREET_NAME); FIELD_LIST.add(POSTAL_CODE_ID); FIELD_LIST.add(HOME_PHONE); FIELD_LIST.add(WORK_PHONE); FIELD_LIST.add(FAX); FIELD_LIST.add(EMAIL); } private boolean personalIdnotCorrect = false; private String newMemberMessage = null; private boolean editable = true; private boolean isReadOnly = false; public WorkReportBoardMemberEditor() { super(); setStepNameLocalizableKey(STEP_NAME_LOCALIZATION_KEY); } public void main(IWContext iwc) throws Exception { super.main(iwc); IWResourceBundle resourceBundle = getResourceBundle(iwc); if (this.getWorkReportId() != -1) { //sets this step as bold, if another class calls it this will be overwritten setAsCurrentStepByStepLocalizableKey(STEP_NAME_LOCALIZATION_KEY); String action = parseAction(iwc, resourceBundle); Form form = new Form(); PresentationObject pres = getContent(iwc, resourceBundle, form, action); form.maintainParameters(this.getParametersToMaintain()); form.add(pres); add(form); } } protected void addBreakLine() {} private String parseAction(IWContext iwc, IWResourceBundle resourceBundle) { String action = ""; // does the user want to cancel something? if (iwc.isParameterSet(SUBMIT_CANCEL_KEY)) { return action; // !! do nothing else !! // do not modify entry // do not create an entry // do not delete an entry } // does the user want to delete an existings entries? if (iwc.isParameterSet(SUBMIT_DELETE_ENTRIES_KEY)) { List entriesToDelete = CheckBoxConverter.getResultByParsingUsingDefaultKey(iwc); if (! entriesToDelete.isEmpty()) { deleteWorkReportBoardMembers(entriesToDelete, iwc); // !! do nothing else !! // do not modify entry // do not create an entry return action; } } // // does the user want to edit a new entry? // if (iwc.isParameterSet(SUBMIT_CREATE_NEW_ENTRY_KEY)) { // action = ACTION_SHOW_NEW_ENTRY; // } // does the user want to save a new entry? if (iwc.isParameterSet(SUBMIT_CREATE_NEW_ENTRY_KEY)) { WorkReportBusiness workReportBusiness = getWorkReportBusiness(iwc); if (iwc.isParameterSet(SSN_KEY)) { String personalId = iwc.getParameter(SSN_KEY); String leagueId = iwc.getParameter(LEAGUE_KEY); WorkReportBoardMember member = createWorkReportBoardMember(personalId, leagueId, iwc); if (member != null) { String name = member.getName(); String ssn = member.getPersonalId(); String ssnMessage = resourceBundle.getLocalizedString("wr_member_editor_ssn", "ssn"); StringBuffer buffer = new StringBuffer(resourceBundle.getLocalizedString("wr_member_editor_new_entry_was_created", "A new entry was created")); buffer.append(": "); buffer.append(name); buffer.append(" "); buffer.append(ssnMessage); buffer.append(": "); buffer.append(ssn); this.newMemberMessage = buffer.toString(); } } } // does the user want to modify an existing entity? if (iwc.isParameterSet(ConverterConstants.EDIT_ENTITY_SUBMIT_KEY)) { WorkReportBusiness workReportBusiness = getWorkReportBusiness(iwc); String id = iwc.getParameter(ConverterConstants.EDIT_ENTITY_SUBMIT_KEY); Integer primaryKey = null; try { primaryKey = new Integer(id); } catch (NumberFormatException ex) { System.err.println("[WorkReportBoardMemberEditor] Wrong primary key. Message is: " + ex.getMessage()); ex.printStackTrace(System.err); } WorkReportBoardMember member = findWorkReportBoardMember(primaryKey, iwc); Iterator iterator = FIELD_LIST.iterator(); while (iterator.hasNext()) { String field = (String) iterator.next(); EntityPathValueContainer entityPathValueContainerFromTextEditor = TextEditorConverter.getResultByEntityIdAndEntityPathShortKey(primaryKey, field, iwc); EntityPathValueContainer entityPathValueContainerFromDropDownMenu = DropDownMenuConverter.getResultByEntityIdAndEntityPathShortKey(primaryKey, field, iwc); if (entityPathValueContainerFromTextEditor.isValid()) { setValuesOfWorkReportBoardMember(entityPathValueContainerFromTextEditor, member, workReportBusiness); } if (entityPathValueContainerFromDropDownMenu.isValid()) { setValuesOfWorkReportBoardMember(entityPathValueContainerFromDropDownMenu, member, workReportBusiness); } } member.store(); return action; } return action; } private PresentationObject getContent(IWContext iwc, IWResourceBundle resourceBundle, Form form, String action) { WorkReportBusiness workReportBusiness = getWorkReportBusiness(iwc); try { // create data from the database int workReportId = getWorkReportId(); WorkReport workReport = workReportBusiness.getWorkReportById(workReportId); this.isReadOnly = workReportBusiness.isWorkReportReadOnly(workReportId); this.editable = ! (this.isReadOnly || workReport.isBoardPartDone()); } catch (RemoteException ex) { System.err.println( "[WorkReportBoardMemberEditor]: Can't retrieve WorkReportBusiness. Message is: " + ex.getMessage()); ex.printStackTrace(System.err); throw new RuntimeException("[WorkReportBoardMemberEditor]: Can't retrieve WorkReportBusiness."); } Collection coll; try { coll = workReportBusiness.getAllWorkReportBoardMembersForWorkReportId( getWorkReportId()); } catch (RemoteException e) { System.err.println("[WorkReportMemberDataEditor] Can't get members. Message was: "+ e.getMessage()); e.printStackTrace(System.err); coll = new ArrayList(); } // create new entities List list = new ArrayList(); Iterator iterator = coll.iterator(); while (iterator.hasNext()) { WorkReportBoardMember member = (WorkReportBoardMember) iterator.next(); WorkReportGroup league = null; try { league = member.getLeague(); } catch (IDOException ex) { System.err.println( "[WorkReportBoardMemberEditor]: Can't retrieve league. Message is: " + ex.getMessage()); ex.printStackTrace(System.err); throw new RuntimeException("[WorkReportBoardMemberEditor]: Can't retrieve league."); } // league is null should never happen but happens, avoid null pointer exception // sometimes data is corrupt String leagueId = (league == null) ? "Error: league unknown" : league.getPrimaryKey().toString(); WorkReportBoardMemberHelper helper = new WorkReportBoardMemberHelper(leagueId, member); list.add(helper); } // // add a value holder for a new entry if desired // if (ACTION_SHOW_NEW_ENTRY.equals(action)) { // EntityValueHolder valueHolder = new EntityValueHolder(); // // trick , because postal code is a "foreign" column // valueHolder.setColumnValue("POSTAL_CODE_ID", valueHolder); // WorkReportBoardMemberHelper valueHolderHelper = new WorkReportBoardMemberHelper("", valueHolder); // list.add(valueHolderHelper); // } // sort list Comparator comparator = new Comparator() { public int compare(Object first, Object second) { // check if the element is a new entity, a new entity should be shown first // the element is a new element if the primaryKey is less than zero. Integer primaryKey = (Integer) ((WorkReportBoardMemberHelper) first).getPrimaryKey(); if (primaryKey.intValue() < 0) { return -1; } primaryKey = (Integer) ((WorkReportBoardMemberHelper) second).getPrimaryKey(); if (primaryKey.intValue() < 0) { return 1; } // sort according to the name of the league String firstLeague = (String) ((WorkReportBoardMemberHelper) first).getColumnValue(LEAGUE); String secondLeague = (String) ((WorkReportBoardMemberHelper) second).getColumnValue(LEAGUE); int result = firstLeague.compareTo(secondLeague); // if the laegues are equal sort according to the status if (result == 0) { String firstStatus = (String) ((WorkReportBoardMemberHelper) first).getColumnValue("STATUS"); String secondStatus = (String) ((WorkReportBoardMemberHelper) second).getColumnValue("STATUS"); firstStatus = (firstStatus == null) ? "" : firstStatus; secondStatus = (secondStatus == null) ? "" : secondStatus; int firstIndex = STATUS_OPTIONS.indexOf(firstStatus); int secondIndex = STATUS_OPTIONS.indexOf(secondStatus); return firstIndex - secondIndex; } return result; } }; Table errorMessageTable = getErrorMessageTable(); // get new entry message if (this.newMemberMessage != null) { Text text = new Text(this.newMemberMessage); // text.setBold(); // text.setFontColor("#FF0000"); errorMessageTable.add(text); add(errorMessageTable); } // get error message if (this.personalIdnotCorrect) { String message = resourceBundle.getLocalizedString("wr_editor_ssn_not_valid", "The input of the social security number is not valid"); Text text = new Text(message); // text.setBold(); // text.setFontColor("#FF0000"); errorMessageTable.add(text); add(errorMessageTable); } Collections.sort(list, comparator); EntityBrowser browser = getEntityBrowser(list, resourceBundle, form); // put browser into a table // add buttons if (this.editable) { Table mainTable = new Table(1,2); mainTable.setCellspacing(0); mainTable.setCellpadding(0); mainTable.add(browser, 1,1); PresentationObject inputField = getPersonalIdInputField(resourceBundle); PresentationObject dropDownMenu = getLeagueDropDownMenu(resourceBundle, iwc); PresentationObject newEntryButton = getCreateNewEntityButton(resourceBundle); PresentationObject deleteEntriesButton = getDeleteEntriesButton(resourceBundle); PresentationObject cancelButton = getCancelButton(resourceBundle, iwc); // add buttons Table buttonTable = new Table(5,1); buttonTable.add(inputField,1,1); buttonTable.add(dropDownMenu, 2,1); buttonTable.add(newEntryButton,3,1); buttonTable.add(deleteEntriesButton,4,1); buttonTable.add(cancelButton, 5,1); mainTable.add(buttonTable,1,2); return mainTable; } //if the report is read only, then it is printed out: else if(this.isReadOnly){ Table mainTable = new Table(1,2); mainTable.add(browser, 1,1); mainTable.setCellspacing(0); mainTable.setCellpadding(0); Table readOnlyTable = new Table(1,1); readOnlyTable.setCellspacing(0); readOnlyTable.setCellpadding(0); Text readOnlyText = new Text(resourceBundle.getLocalizedString("WorkReportBoardMemberEditor.report_is_read_only", "The report is read only")); readOnlyTable.add(readOnlyText,1,1); mainTable.add(readOnlyTable,1,2); return mainTable; } return browser; } public Table getErrorMessageTable() { Table errorMessageTable = new Table(1,1); errorMessageTable.setCellpaddingAndCellspacing(0); errorMessageTable.setWidth(Table.HUNDRED_PERCENT); errorMessageTable.setAlignment("center"); errorMessageTable.setAlignment(1,1,"center"); errorMessageTable.setStyleClass(1,1,this.errorMessageStyle); return errorMessageTable; } private PresentationObject getCreateNewEntityButton(IWResourceBundle resourceBundle) { String createNewEntityText = resourceBundle.getLocalizedString("wr_board_member_editor_create_new_entry", "New entry"); SubmitButton button = new SubmitButton(createNewEntityText, SUBMIT_CREATE_NEW_ENTRY_KEY, "dummy_value"); button.setAsImageButton(true); return button; } // private PresentationObject getSaveNewEntityButton(IWResourceBundle resourceBundle) { // String saveNewEntityText = resourceBundle.getLocalizedString("wr_board_member_editor_save_new_entry", "Save"); // SubmitButton button = new SubmitButton(saveNewEntityText, SUBMIT_SAVE_NEW_ENTRY_KEY, "dummy_value"); // button.setAsImageButton(true); // return button; // } private PresentationObject getDeleteEntriesButton(IWResourceBundle resourceBundle) { String deleteEntityText = resourceBundle.getLocalizedString("wr_board_member_editor_remove_entries", "Remove"); SubmitButton button = new SubmitButton(deleteEntityText, SUBMIT_DELETE_ENTRIES_KEY, "dummy_value"); button.setAsImageButton(true); return button; } private PresentationObject getCancelButton(IWResourceBundle resourceBundle, IWContext iwc) { String cancelText = resourceBundle.getLocalizedString("wr_board_member_editor_cancel", "Cancel"); Link link = new Link(cancelText); link.addParameter( SUBMIT_CANCEL_KEY, "dummy_value"); // add maintain parameters Iterator iteratorList = getParametersToMaintain().iterator(); while (iteratorList.hasNext()) { String parameter = (String) iteratorList.next(); link.maintainParameter(parameter, iwc); } link.setAsImageButton(true); return link; } private PresentationObject getPersonalIdInputField(IWResourceBundle resourceBundle) { Text text = new Text(resourceBundle.getLocalizedString("WorkReportMemberEditor.add_member","Enter personal id")); text.setBold(); TextInput ssn = new TextInput("ssn"); String error = resourceBundle.getLocalizedString("WorkReportMemberEditor.ssn_not_valid","The personal id you entered is invalid"); ssn.setAsIcelandicSSNumber(error); Table table = new Table(2,1); table.add(text,1,1); table.add(ssn,2,1); return table; } private PresentationObject getLeagueDropDownMenu(IWResourceBundle resourceBundle, IWContext iwc) { WorkReportBusiness business = getWorkReportBusiness(iwc); Collection coll = null; try { coll = business.getLeaguesOfWorkReportById(getWorkReportId(), iwc); } catch (Exception ex) { Table errorMessageTable = getErrorMessageTable(); Text text = new Text(ex.getMessage()); errorMessageTable.add(text); add(errorMessageTable); System.err.println( "[WorkReportBoardMemberEditor]: Can't retrieve WorkReportBusiness. Message is: " + ex.getMessage()); //ex.printStackTrace(System.err); throw new RuntimeException("[WorkReportBoardMemberEditor]: Can't retrieve WorkReportBusiness."); } DropdownMenu dropdownMenu = new DropdownMenu(LEAGUE_KEY); SortedMap shortNameIdMap = new TreeMap(); Iterator collIterator = coll.iterator(); while (collIterator.hasNext()) { WorkReportGroup league = (WorkReportGroup) collIterator.next(); String name = league.getShortName(); String id = league.getPrimaryKey().toString(); shortNameIdMap.put(name, id); } Iterator leagueIterator = shortNameIdMap.entrySet().iterator(); while (leagueIterator.hasNext()) { Map.Entry shortNameId = (Map.Entry) leagueIterator.next(); String name = (String) shortNameId.getKey(); String display = resourceBundle.getLocalizedString(name, name); String id = (String) shortNameId.getValue(); dropdownMenu.addMenuElement(id, display); } return dropdownMenu; } private EntityBrowser getEntityBrowser(Collection entities, IWResourceBundle resourceBundle, Form form) { // define converter CheckBoxConverter checkBoxConverter = new CheckBoxConverter(); TextEditorConverter textEditorConverter = new TextEditorConverter(form); textEditorConverter.maintainParameters(this.getParametersToMaintain()); EditOkayButtonConverter okayConverter = new EditOkayButtonConverter(); okayConverter.maintainParameters(this.getParametersToMaintain()); // TextEditorConverter socialSecurityNumberEditorConverter = new TextEditorConverter(form); String message = resourceBundle.getLocalizedString("wr_member_editor_not_a_valid_ssn", "The input is not a valid social security number"); // socialSecurityNumberEditorConverter.setAsIcelandicSocialSecurityNumber(message); // socialSecurityNumberEditorConverter.maintainParameters(this.getParametersToMaintain()); DropDownMenuConverter statusDropDownMenuConverter = getConverterForStatus(resourceBundle, form); DropDownMenuConverter leagueDropDownMenuConverter = getConverterForLeague(resourceBundle, form); DropDownMenuConverter dropDownPostalCodeConverter = getConverterForPostalCode(form); // define if the editors should be editable checkBoxConverter.setEditable(this.editable); textEditorConverter.setEditable(this.editable); // socialSecurityNumberEditorConverter.setEditable(editable); statusDropDownMenuConverter.setEditable(this.editable); leagueDropDownMenuConverter.setEditable(this.editable); dropDownPostalCodeConverter.setEditable(this.editable); // define path short keys and map corresponding converters Object[] columns = { "okay",okayConverter, CHECK_BOX, checkBoxConverter, LEAGUE, leagueDropDownMenuConverter, STATUS, statusDropDownMenuConverter, NAME, null, PERSONAL_ID, null, STREET_NAME, textEditorConverter, POSTAL_CODE_ID, dropDownPostalCodeConverter, HOME_PHONE, textEditorConverter, WORK_PHONE, textEditorConverter, FAX, textEditorConverter, EMAIL, textEditorConverter}; EntityBrowser browser = EntityBrowser.getInstanceUsingEventSystemAndExternalForm(); browser.setLeadingEntity(WorkReportBoardMember.class); browser.setAcceptUserSettingsShowUserSettingsButton(false,false); if( entities!=null && !entities.isEmpty()) { browser.setDefaultNumberOfRows(entities.size()); } for (int i = 0; i < columns.length; i+=2) { String column = (String) columns[i]; EntityToPresentationObjectConverter converter = (EntityToPresentationObjectConverter) columns[i+1]; browser.setMandatoryColumn(i, column); browser.setEntityToPresentationConverter(column, converter); } browser.setEntities("dummy_string", entities); // some look settings browser.setCellpadding(2); browser.setCellspacing(0); browser.setBorder(0); browser.setColorForEvenRows("#EFEFEF"); browser.setColorForOddRows("#FFFFFF"); browser.setColorForHeader("#DFDFDF"); return browser; } /** * Converter for status column */ private DropDownMenuConverter getConverterForStatus(final IWResourceBundle resourceBundle, Form form) { DropDownMenuConverter converter = new DropDownMenuConverter(form); OptionProvider optionProvider = new OptionProvider() { Map optionMap = null; public Map getOptions(Object entity, EntityPath path, EntityBrowser browser, IWContext iwc) { if (this.optionMap == null) { this.optionMap = new TreeMap(); Iterator iterator = STATUS_OPTIONS.iterator(); while (iterator.hasNext()) { String status = (String) iterator.next(); String display = resourceBundle.getLocalizedString(status, status); this.optionMap.put(status,display); } } this.optionMap = new SortedByValueMap(this.optionMap); return this.optionMap; } }; converter.setOptionProvider(optionProvider); converter.maintainParameters(getParametersToMaintain()); return converter; } /** * Converter for league column */ private DropDownMenuConverter getConverterForLeague(final IWResourceBundle resourceBundle, Form form) { DropDownMenuConverter converter = new DropDownMenuConverter(form) { protected Object getValue( Object entity, EntityPath path, EntityBrowser browser, IWContext iwc) { return ((EntityRepresentation) entity).getColumnValue(LEAGUE); } }; OptionProvider optionProvider = new OptionProvider() { Map optionMap = null; public Map getOptions(Object entity, EntityPath path, EntityBrowser browser, IWContext iwc) { if (this.optionMap == null) { this.optionMap = new TreeMap(); WorkReportBusiness business = getWorkReportBusiness(iwc); Collection coll = null; try { coll = business.getLeaguesOfWorkReportById(getWorkReportId(), iwc); } catch (Exception ex) { System.err.println( "[WorkReportBoardMemberEditor]: Can't retrieve WorkReportBusiness. Message is: " + ex.getMessage()); ex.printStackTrace(System.err); throw new RuntimeException("[WorkReportBoardMemberEditor]: Can't retrieve WorkReportBusiness."); } // sort SortedMap shortNameIdMap = new TreeMap(); Iterator collIterator = coll.iterator(); while (collIterator.hasNext()) { WorkReportGroup league = (WorkReportGroup) collIterator.next(); String name = league.getShortName(); String id = league.getPrimaryKey().toString(); shortNameIdMap.put(name, id); } Iterator leagueIterator = shortNameIdMap.entrySet().iterator(); while (leagueIterator.hasNext()) { Map.Entry shortNameId = (Map.Entry) leagueIterator.next(); String name = (String) shortNameId.getKey(); String display = resourceBundle.getLocalizedString(name, name); String id = (String) shortNameId.getValue(); this.optionMap.put(id, display); } } return this.optionMap; } }; converter.setOptionProvider(optionProvider); converter.maintainParameters(getParametersToMaintain()); return converter; } /** * converter for postal code column */ private DropDownMenuConverter getConverterForPostalCode(Form form) { DropDownPostalCodeConverter dropDownPostalCodeConverter = new DropDownPostalCodeConverter(form); dropDownPostalCodeConverter.setCountry("Iceland"); dropDownPostalCodeConverter.maintainParameters(getParametersToMaintain()); return dropDownPostalCodeConverter; } /** business method: delete WorkReportBoardMembers. * @param ids - List of primaryKeys (Integer) */ private void deleteWorkReportBoardMembers(List ids, IWContext iwc) { Iterator iterator = ids.iterator(); while (iterator.hasNext()) { Integer id = (Integer) iterator.next(); WorkReportBoardMember member = findWorkReportBoardMember(id, iwc); if (member != null) { try { member.remove(); } catch (RemoveException ex) { System.err.println( "[WorkReportBoardMemberEditor]: Can't remove WorkReportBoardMember. Message is: " + ex.getMessage()); ex.printStackTrace(System.err); // do nothing } } } } // business method: create private WorkReportBoardMember createWorkReportBoardMember(String personalId, String leagueId, IWApplicationContext iwac) { WorkReportBoardMember workReportBoardMember = null; try { Integer workReportGroupId = new Integer(leagueId); WorkReportBusiness workReportBusiness = getWorkReportBusiness(iwac); WorkReportGroup workReportGroup = workReportBusiness.getWorkReportGroupHome().findByPrimaryKey(workReportGroupId); workReportBoardMember = workReportBusiness.createWorkReportBoardMember(getWorkReportId(), personalId, workReportGroup); if (workReportBoardMember == null) { this.personalIdnotCorrect = true; } return workReportBoardMember; } catch (NumberFormatException numEx) { String message = "[WorkReportBoardMemberEditor]: Can't find WorkReportGroup."; System.err.println(message + " Message is: " + numEx.getMessage()); numEx.printStackTrace(System.err); } catch (FinderException ex) { String message = "[WorkReportBoardMemberEditor]: Can't find WorkReportGroup."; System.err.println(message + " Message is: " + ex.getMessage()); ex.printStackTrace(System.err); } catch (CreateException e) { System.err.println("[WorkReportBoardMemberEditor] Could not create new WorkReportBoardMember. Message is: "+ e.getMessage()); e.printStackTrace(System.err); } catch (RemoteException rmEx) { String message = "[WorkReportBoardMemberEditor]: Can't retrieve WorkReportBusiness."; System.err.println(message + " Message is: " + rmEx.getMessage()); rmEx.printStackTrace(System.err); throw new RuntimeException(message); } return null; } /** business method: find * @param primaryKey * @return desired WorkReportMember or null if not found */ private WorkReportBoardMember findWorkReportBoardMember(Integer primaryKey, IWContext iwc) { WorkReportBoardMember member = null; WorkReportBusiness workReportBusiness = getWorkReportBusiness(iwc); try { member = workReportBusiness.getWorkReportBoardMemberHome().findByPrimaryKey(primaryKey); } catch (RemoteException ex) { System.err.println( "[WorkReportBoardMemberEditor]: Can't retrieve WorkReportBoardMember. Message is: " + ex.getMessage()); ex.printStackTrace(System.err); throw new RuntimeException("[WorkReportBoardMemberEditor]: Can't retrieve WorkReportBoardMember."); } catch (FinderException ex) { System.err.println( "[WorkReportBoardMemberEditor]: Can't find WorkReportBoardMember, Message is: " + ex.getMessage()); ex.printStackTrace(System.err); } return member; } // business method: set values (invoked by 'update' or 'create') private void setValuesOfWorkReportBoardMember(EntityPathValueContainer valueContainer, WorkReportBoardMember member, WorkReportBusiness workReportBusiness) { String pathShortKey = valueContainer.getEntityPathShortKey(); Object value = valueContainer.getValue(); if (pathShortKey.equals(STATUS)) { member.setStatus(value.toString()); } // else if (pathShortKey.equals(PERSONAL_ID)) { // String socialSecurityNumber = value.toString(); // User user = getUserBySocialSecurityNumber(socialSecurityNumber, workReportBusiness); // // there are some users in the system without any social security number // if (socialSecurityNumber.length() == 0 || user == null) { // personalIdnotCorrect = true; // return; // } // String name = user.getName(); // member.setName(name); // member.setPersonalId(socialSecurityNumber); // } else if (pathShortKey.equals(STREET_NAME)) { member.setStreetName(value.toString()); } else if(pathShortKey.equals(POSTAL_CODE_ID)) { try { int postalCode = Integer.parseInt(value.toString()); if (ConverterConstants.NULL_ENTITY_ID.intValue() == postalCode) { member.setPostalCode(null); } else { member.setPostalCodeID(postalCode); } } catch (NumberFormatException ex) { } } else if(pathShortKey.equals(HOME_PHONE)) { member.setHomePhone(value.toString()); } else if (pathShortKey.equals(WORK_PHONE)) { member.setWorkPhone(value.toString()); } else if (pathShortKey.equals(FAX)) { member.setFax(value.toString()); } else if (pathShortKey.equals(EMAIL)) { member.setEmail(value.toString()); } else if (pathShortKey.equals(LEAGUE)) { try { String newWorkReportGroupIdAsString = value.toString(); Integer newWorkReportGroupId = new Integer(newWorkReportGroupIdAsString); // just testing if the id really exists (should never happen that the id does not exist) WorkReportGroup workReportGroup = workReportBusiness.getWorkReportGroupHome().findByPrimaryKey(newWorkReportGroupId); if (workReportGroup != null) { member.setWorkReportGroupID(newWorkReportGroupId.intValue()); } } catch (NumberFormatException numEx) { String message = "[WorkReportBoardMemberEditor]: Can't find WorkReportGroup"; System.err.println(message + " Message is: " + numEx.getMessage()); numEx.printStackTrace(System.err); } catch (FinderException findEx) { String message = "[WorkReportBoardMemberEditor]: Can't find WorkReportGroup"; System.err.println(message + " Message is: " + findEx.getMessage()); findEx.printStackTrace(System.err); } catch (RemoteException ex) { System.err.println( "[WorkReportBoardMemberEditor]: Can't retrieve WorkReportBusiness. Message is: " + ex.getMessage()); ex.printStackTrace(System.err); throw new RuntimeException("[WorkReportBoardMemberEditor]: Can't retrieve WorkReportBusiness."); } } } private User getUserBySocialSecurityNumber(String socialSecurirtyNumber, WorkReportBusiness workReportBusiness) { User user = null; try { user = workReportBusiness.getUser(socialSecurirtyNumber); } catch (FinderException ex) { String message = "[WorkReportAccountEditor]: Can't retrieve user."; System.err.println(message + " Message is: " + ex.getMessage()); ex.printStackTrace(System.err); } catch (RemoteException ex) { ex.printStackTrace(); String message = "[WorkReportAccountEditor]: Can't retrieve user."; System.err.println(message + " Message is: " + ex.getMessage()); ex.printStackTrace(System.err); } return user; } /** * WorkReportBoardMemberHelper: * Inner class, represents a WorkReportBoardMember but with the league as additional value. * */ class WorkReportBoardMemberHelper implements EntityRepresentation { String league = null; Object member = null; public WorkReportBoardMemberHelper() { } public WorkReportBoardMemberHelper(String league, Object member) { this.league = league; this.member = member; } public void setLeague(String league) { this.league = league; } public void setMember(WorkReportBoardMember member) { this.member = member; } public Object getColumnValue(String columnName) { if (LEAGUE.equals(columnName)) { return this.league; } return ((EntityRepresentation) this.member).getColumnValue(columnName); } public Object getPrimaryKey() { return ((EntityRepresentation) this.member).getPrimaryKey(); } } }