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.WorkReportDivisionBoard;
import is.idega.idegaweb.member.isi.block.reports.data.WorkReportGroup;
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 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.CheckBoxAsLinkConverter;
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.TextEditorConverter;
import com.idega.core.location.data.PostalCode;
import com.idega.data.EntityRepresentation;
import com.idega.data.IDOException;
import com.idega.data.IDOLookup;
import com.idega.data.IDOLookupException;
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.Text;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.SubmitButton;
/**
* <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 24, 2003
*/
public class WorkReportDivisionBoardEditor extends WorkReportSelector {
private static final String STEP_NAME_LOCALIZATION_KEY = "workreportboarddivisioneditor.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 String SUBMIT_FINISH_KEY = "submit_finish_key";
private static final String SUBMIT_REOPEN_KEY = "submit_reopen_key";
// private static final Integer NEW_ENTRY_ID_VALUE = new Integer(-1);
// private static final String NO_LEAGUE_VALUE = "no_league_value";
// private static final String ACTION_SHOW_NEW_ENTRY = "action_show_new_entry";
// private static final String CHECK_BOX = "checkBox";
private static final String LEAGUE = "league";
private String errorMessageStyle = "errorMessage";
private static final String HOME_PAGE = WorkReportDivisionBoard.class.getName()+".HOME_PAGE";
private static final String PERSONAL_ID = WorkReportDivisionBoard.class.getName()+".PERSONAL_ID";
private static final String STREET_NAME = WorkReportDivisionBoard.class.getName()+".STREET_NAME";
private static final String POSTAL_CODE_ID = PostalCode.class.getName()+".POSTAL_CODE_ID|POSTAL_CODE";
private static final String FIRST_PHONE = WorkReportDivisionBoard.class.getName()+".FIRST_PHONE";
private static final String SECOND_PHONE = WorkReportDivisionBoard.class.getName()+".SECOND_PHONE";
private static final String FAX = WorkReportDivisionBoard.class.getName()+".FAX";
private static final String EMAIL = WorkReportDivisionBoard.class.getName()+".EMAIL";
private static final String HAS_NATIONAL_LEAGUE = "HAS_NATIONAL_LEAGUE";
private static List FIELD_LIST;
static {
FIELD_LIST = new ArrayList();
FIELD_LIST.add(LEAGUE);
FIELD_LIST.add(HOME_PAGE);
FIELD_LIST.add(PERSONAL_ID);
FIELD_LIST.add(STREET_NAME);
FIELD_LIST.add(POSTAL_CODE_ID);
FIELD_LIST.add(FIRST_PHONE);
FIELD_LIST.add(SECOND_PHONE);
FIELD_LIST.add(FAX);
FIELD_LIST.add(EMAIL);
}
private boolean editable = true;
private boolean isReadOnly = false;
public WorkReportDivisionBoardEditor() {
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);
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) {
String action = "";
if (iwc.isParameterSet(SUBMIT_FINISH_KEY)) {
setWorkReportAsFinished(true, iwc);
return action;
}
if (iwc.isParameterSet(SUBMIT_REOPEN_KEY)) {
setWorkReportAsFinished(false, iwc);
}
// 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()) {
// deleteWorkReportDivisionBoard(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_SAVE_NEW_ENTRY_KEY)) {
// WorkReportBusiness workReportBusiness = getWorkReportBusiness(iwc);
// WorkReportDivisionBoard board = createWorkReportDivisionBoard();
// Iterator iterator = FIELD_LIST.iterator();
// while (iterator.hasNext()) {
// String field = (String) iterator.next();
// EntityPathValueContainer entityPathValueContainerFromTextEditor =
// TextEditorConverter.getResultByEntityIdAndEntityPathShortKey(NEW_ENTRY_ID_VALUE, field, iwc);
// EntityPathValueContainer entityPathValueContainerFromDropDownMenu =
// DropDownMenuConverter.getResultByEntityIdAndEntityPathShortKey(NEW_ENTRY_ID_VALUE, field, iwc);
// if (entityPathValueContainerFromTextEditor.isValid()) {
// setValuesOfWorkReportDivisionBoard(entityPathValueContainerFromTextEditor, board, workReportBusiness);
// }
// if (entityPathValueContainerFromDropDownMenu.isValid()) {
// setValuesOfWorkReportDivisionBoard(entityPathValueContainerFromDropDownMenu, board, workReportBusiness);
// }
// }
// board.store();
// }
// 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);
}
WorkReportDivisionBoard board = findWorkReportDivisionBoard(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()) {
setValuesOfWorkReportDivisionBoard(entityPathValueContainerFromTextEditor, board, workReportBusiness);
}
if (entityPathValueContainerFromDropDownMenu.isValid()) {
setValuesOfWorkReportDivisionBoard(entityPathValueContainerFromDropDownMenu, board, workReportBusiness);
}
}
boolean wasChecked = board.hasNationalLeague();
boolean isChecked = CheckBoxConverter.isEntityCheckedUsingDefaultKey(iwc, primaryKey);
if (wasChecked ^ isChecked) {
board.setHasNationalLeague(isChecked);
}
board.store();
return action;
}
// // does the user want to modify an existing entity?
// EntityPathValueContainer entityPathValueContainerFromTextEditor = TextEditorConverter.getResultByParsing(iwc);
// EntityPathValueContainer entityPathValueContainerFromDropDownMenu = DropDownMenuConverter.getResultByParsing(iwc);
// if (entityPathValueContainerFromTextEditor.isValid()) {
// updateWorkReportDivisionBoard(entityPathValueContainerFromTextEditor, iwc);
// }
// if (entityPathValueContainerFromDropDownMenu.isValid()) {
// updateWorkReportDivisionBoard(entityPathValueContainerFromDropDownMenu, iwc);
// }
return action;
}
private PresentationObject getContent(IWContext iwc, IWResourceBundle resourceBundle, Form form, String action) {
WorkReportBusiness workReportBusiness = getWorkReportBusiness(iwc);
WorkReport workReport = null;
try {
int workReportId = getWorkReportId();
workReport = workReportBusiness.getWorkReportById(workReportId);
// should the data be editable?
this.isReadOnly = workReportBusiness.isWorkReportReadOnly(workReportId);
this.editable = !( this.isReadOnly || workReport.isBoardPartDone());
}
catch (RemoteException ex) {
String message =
"[WorkReportDivisionBoardEditor]: Can't retrieve WorkReportBusiness.";
System.err.println(message + " Message is: " + ex.getMessage());
ex.printStackTrace(System.err);
throw new RuntimeException(message);
}
Collection coll;
Collection leagues;
// Set referencedLeagues = new HashSet();
try {
int workReportId = getWorkReportId();
coll = workReportBusiness.getAllWorkReportDivisionBoardForWorkReportId(workReportId);
leagues = workReportBusiness.getLeaguesOfWorkReportById(workReportId, iwc);
}
catch (Exception e) {
Table errorMessageTable = getErrorMessageTable();
Text text = new Text(e.getMessage());
errorMessageTable.add(text);
add(errorMessageTable);
System.err.println("[WorkReportDivisionBoardEditor] Can't get members. Message was: "+ e.getMessage());
//e.printStackTrace(System.err);
coll = new ArrayList();
leagues = new ArrayList();
}
// create new entities
List list = new ArrayList();
Iterator iterator = coll.iterator();
while (iterator.hasNext()) {
WorkReportDivisionBoard board = (WorkReportDivisionBoard) iterator.next();
WorkReportGroup league = null;
try {
league = board.getLeague();
}
catch (IDOException ex) {
System.err.println(
"[WorkReportDivisionBoardEditor]: Can't retrieve league. Message is: "
+ ex.getMessage());
ex.printStackTrace(System.err);
throw new RuntimeException("[WorkReportDivsionBoardEditor]: Can't retrieve league.");
}
String leagueName;
if (league == null) {
leagueName = "error: no league defined";
}
else {
leagueName = league.getShortName();
}
// referencedLeagues.add(league.getPrimaryKey());
WorkReportDivisionBoardHelper helper = new WorkReportDivisionBoardHelper(leagueName, board);
list.add(helper);
}
// create missing entities
// Iterator leagueIterator = leagues.iterator();
// while (leagueIterator.hasNext()) {
// WorkReportGroup workReportGroup = (WorkReportGroup) leagueIterator.next();
// Integer pk = (Integer) workReportGroup.getPrimaryKey();
// if (! referencedLeagues.contains(pk)) {
// WorkReportDivisionBoard board = createWorkReportDivisionBoard(pk.intValue());
// String leagueName = workReportGroup.getName();
// WorkReportDivisionBoardHelper helper = new WorkReportDivisionBoardHelper(leagueName, board);
// 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);
// WorkReportDivisionBoardHelper valueHolderHelper = new WorkReportDivisionBoardHelper("", 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) ((WorkReportDivisionBoardHelper) first).getPrimaryKey();
if (primaryKey.intValue() < 0) {
return -1;
}
primaryKey = (Integer) ((WorkReportDivisionBoardHelper) second).getPrimaryKey();
if (primaryKey.intValue() < 0) {
return 1;
}
// sort according to the name of the league
String firstLeague = (String) ((WorkReportDivisionBoardHelper) first).getColumnValue(LEAGUE);
String secondLeague = (String) ((WorkReportDivisionBoardHelper) second).getColumnValue(LEAGUE);
int result = firstLeague.compareTo(secondLeague);
// if the leagues are equal sort according to the names
if (result == 0) {
String firstName = (String) ((WorkReportDivisionBoardHelper) first).getColumnValue("NAME");
String secondName = (String) ((WorkReportDivisionBoardHelper) second).getColumnValue("NAME");
firstName = (firstName == null) ? "" : firstName;
secondName = (secondName == null) ? "" : secondName;
return firstName.compareTo(secondName);
}
return result;
}
};
Collections.sort(list, comparator);
EntityBrowser browser = getEntityBrowser(list, resourceBundle, form);
// put browser into a table
// do not show the buttons if not editable
if (! this.isReadOnly) {
Table mainTable = new Table(1,2);
mainTable.add(browser, 1,1);
mainTable.setCellspacing(0);
mainTable.setCellpadding(0);
if (this.editable) {
mainTable.add(getFinishButton(resourceBundle), 1, 2);
}
else {
// Text text = new Text(resourceBundle.getLocalizedString("wr_division_board_editor_board_part_finished", "Board part has been finished."));
// text.setBold();
mainTable.add(getReopenButton(resourceBundle), 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("WorkReportDivisionBoardEditor.report_is_read_only", "The report is read only"));
readOnlyTable.add(readOnlyText,1,1);
mainTable.add(readOnlyTable,1,2);
return mainTable;
}
return browser;
}
private PresentationObject getFinishButton(IWResourceBundle resourceBundle) {
String finishText = resourceBundle.getLocalizedString("wr_division_board_editor_finish", "Finish");
SubmitButton button = new SubmitButton(finishText, SUBMIT_FINISH_KEY, "dummy_value");
button.setAsImageButton(true);
return button;
}
private PresentationObject getReopenButton(IWResourceBundle resourceBundle) {
String reopenText = resourceBundle.getLocalizedString("wr_division_board_editor_reopen", "Reopen");
SubmitButton button = new SubmitButton(reopenText, SUBMIT_REOPEN_KEY, "dummy_value");
button.setAsImageButton(true);
return button;
}
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());
EntityToPresentationObjectConverter textConverter = new WorkReportTextConverter();
DropDownMenuConverter dropDownPostalCodeConverter = getConverterForPostalCode(form);
WorkReportHasNationalLeagueConverter nationalLeagueConverter = new WorkReportHasNationalLeagueConverter();
nationalLeagueConverter.maintainParameters(this.getParametersToMaintain());
// define if the converters should be editable or not
// checkBoxConverter.setEditable(editable);
textEditorConverter.setEditable(this.editable);
dropDownPostalCodeConverter.setEditable(this.editable);
nationalLeagueConverter.setEditable(this.editable);
// WorkReportTextConverter is not an editor
// define path short keys and map corresponding converters
Object[] columns = {
"okay", okayConverter,
LEAGUE, textConverter,
HAS_NATIONAL_LEAGUE, nationalLeagueConverter,
HOME_PAGE, textEditorConverter,
PERSONAL_ID, textEditorConverter,
STREET_NAME, textEditorConverter,
POSTAL_CODE_ID, dropDownPostalCodeConverter,
FIRST_PHONE, textEditorConverter,
SECOND_PHONE, textEditorConverter,
FAX, textEditorConverter,
EMAIL, textEditorConverter};
EntityBrowser browser = EntityBrowser.getInstanceUsingEventSystemAndExternalForm();
browser.setLeadingEntity(WorkReportDivisionBoard.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);
browser.setCellpadding(2);
browser.setCellspacing(0);
browser.setBorder(0);
browser.setColorForEvenRows("#EFEFEF");
browser.setColorForOddRows("#FFFFFF");
browser.setColorForHeader("#DFDFDF");
return browser;
}
// /**
// * 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 (optionMap == null) {
// optionMap = new TreeMap();
// WorkReportBusiness business = getWorkReportBusiness(iwc);
// Collection coll = null;
// try {
// coll = business.getLeaguesOfWorkReportById(getWorkReportId());
// }
// catch (Exception ex) {
// System.err.println(
// "[WorkReportDivisionBoardEditor]: Can't retrieve WorkReportBusiness. Message is: "
// + ex.getMessage());
// ex.printStackTrace(System.err);
// throw new RuntimeException("[WorkReportDivisionBoardEditor]: Can't retrieve WorkReportBusiness.");
// }
// SortedSet names = new TreeSet();
// Iterator collIterator = coll.iterator();
// while (collIterator.hasNext()) {
// WorkReportGroup league = (WorkReportGroup) collIterator.next();
// String name = league.getName();
// // do not offer to create a board with the same league twice
// if (! referencedLeagues.contains(name)) {
// names.add(name);
// }
// }
// Iterator nameIterator = names.iterator();
// while (nameIterator.hasNext()) {
// String name = (String) nameIterator.next();
// String display = resourceBundle.getLocalizedString(name, name);
// optionMap.put(name, display);
// }
// }
// return 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 deleteWorkReportDivisionBoard(List ids, IWContext iwc) {
Iterator iterator = ids.iterator();
while (iterator.hasNext()) {
Integer id = (Integer) iterator.next();
WorkReportDivisionBoard board = findWorkReportDivisionBoard(id, iwc);
if (board != null) {
try {
board.remove();
}
catch (RemoveException ex) {
System.err.println(
"[WorkReportDivisionBoardEditor]: Can't remove WorkReportDivisionBoard. Message is: "
+ ex.getMessage());
ex.printStackTrace(System.err);
// do nothing
}
}
}
}
/** business method: find
* @param primaryKey
* @return desired WorkReportDivisionBoard or null if not found
*/
private WorkReportDivisionBoard findWorkReportDivisionBoard(Integer primaryKey, IWContext iwc) {
WorkReportDivisionBoard board = null;
WorkReportBusiness workReportBusiness = getWorkReportBusiness(iwc);
try {
board = workReportBusiness.getWorkReportDivisionBoardHome().findByPrimaryKey(primaryKey);
}
catch (RemoteException ex) {
System.err.println(
"[WorkReportDivisionBoardEditor]: Can't retrieve WorkReportDivisionBoard. Message is: "
+ ex.getMessage());
ex.printStackTrace(System.err);
throw new RuntimeException("[WorkReportDivisionBoardEditor]: Can't retrieve WorkReportDivisionBoard.");
}
catch (FinderException ex) {
System.err.println(
"[WorkReportDivisionBoardEditor]: Can't find WorkReportDivisionBoard. Message is: "
+ ex.getMessage());
ex.printStackTrace(System.err);
}
return board;
}
// business method: create
private WorkReportDivisionBoard createWorkReportDivisionBoard(int workReportGroupId) {
WorkReportDivisionBoard workReportDivisionBoard = null;
try {
workReportDivisionBoard =
(WorkReportDivisionBoard) IDOLookup.create(WorkReportDivisionBoard.class);
} catch (IDOLookupException e) {
System.err.println("[WorkReportDivisonBoardEditor] Could not lookup home of WorkReportDivisionBoard. Message is: "+ e.getMessage());
e.printStackTrace(System.err);
} catch (CreateException e) {
System.err.println("[WorkReportDivisionBoardEditor] Could not create new WorkReportDivisionBoard. Message is: "+ e.getMessage());
e.printStackTrace(System.err);
}
workReportDivisionBoard.setReportId(getWorkReportId());
workReportDivisionBoard.setLeague(workReportGroupId);
workReportDivisionBoard.store();
return workReportDivisionBoard;
}
private void setValuesOfWorkReportDivisionBoard(EntityPathValueContainer valueContainer, WorkReportDivisionBoard board, WorkReportBusiness workReportBusiness) {
String pathShortKey = valueContainer.getEntityPathShortKey();
Object value = valueContainer.getValue();
if (pathShortKey.equals(HOME_PAGE)) {
board.setHomePage(value.toString());
}
else if (pathShortKey.equals(PERSONAL_ID)) {
board.setPersonalId(value.toString());
}
else if (pathShortKey.equals(STREET_NAME)) {
board.setStreetName(value.toString());
}
else if(pathShortKey.equals(POSTAL_CODE_ID)) {
try {
int postalCode = Integer.parseInt(value.toString());
if (ConverterConstants.NULL_ENTITY_ID.intValue() == postalCode) {
board.setPostalCode(null);
}
else {
board.setPostalCodeID(postalCode);
}
}
catch (NumberFormatException ex) {
}
}
else if(pathShortKey.equals(FIRST_PHONE)) {
board.setFirstPhone(value.toString());
}
else if (pathShortKey.equals(SECOND_PHONE)) {
board.setSecondPhone(value.toString());
}
else if (pathShortKey.equals(FAX)) {
board.setFax(value.toString());
}
else if (pathShortKey.equals(EMAIL)) {
board.setEmail(value.toString());
}
// else if (pathShortKey.equals(LEAGUE)) {
// // special case, sometimes there is not a previous value
//// Object previousValue = valueContainer.getPreviousValue();
//// String oldWorkGroupName = (previousValue == null) ? null : previousValue.toString();
// String newWorkReportGroupName = value.toString();
// int year = getYear();
// try {
//
// //workReportBusiness.changeWorkReportGroupOfEntity(getWorkReportId(), oldWorkGroupName, year, newWorkGroupName, year, board);
// WorkReportGroup workReportGroup = workReportBusiness.findWorkReportGroupByNameAndYear(newWorkReportGroupName, year);
// if (workReportGroup != null) {
// Integer pk = (Integer) workReportGroup.getPrimaryKey();
// board.setWorKReportGroupID(pk.intValue());
// }
// }
// 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 void setWorkReportAsFinished(boolean setAsFinished, IWContext iwc) {
int workReportId = getWorkReportId();
WorkReportBusiness workReportBusiness = getWorkReportBusiness(iwc);
try {
WorkReport workReport = workReportBusiness.getWorkReportById(workReportId);
workReport.setBoardPartDone(setAsFinished);
workReport.store();
}
catch (RemoteException ex) {
String message =
"[WorkReportAccountEditor]: Can't retrieve WorkReportBusiness.";
System.err.println(message + " Message is: " + ex.getMessage());
ex.printStackTrace(System.err);
throw new RuntimeException(message);
}
}
public Table getErrorMessageTable() {
Table errorMessageTable = new Table(1, 1);
errorMessageTable.setCellpaddingAndCellspacing(0);
errorMessageTable.setWidth(Table.HUNDRED_PERCENT);
errorMessageTable.setAlignment(1, 1, "center");
errorMessageTable.setStyleClass(1, 1, this.errorMessageStyle);
return errorMessageTable;
}
class WorkReportTextConverter implements EntityToPresentationObjectConverter {
public PresentationObject getHeaderPresentationObject (
EntityPath entityPath,
EntityBrowser browser,
IWContext iwc) {
return browser.getDefaultConverter().getHeaderPresentationObject(entityPath, browser, iwc);
}
public PresentationObject getPresentationObject(
Object entity,
EntityPath path,
EntityBrowser browser,
IWContext iwc) {
String name = path.getShortKey();
String value = ((EntityRepresentation) entity).getColumnValue(name).toString();
return new Text(value);
}
}
class WorkReportHasNationalLeagueConverter extends CheckBoxAsLinkConverter {
protected boolean shouldEntityBeChecked(Object entity, Integer primaryKey) {
WorkReportDivisionBoardHelper board = (WorkReportDivisionBoardHelper) entity;
return board.hasNationalLeague();
}
}
/**
* WorkReportDivisionBoardHelper:
* Inner class, represents a WorkReportDivisionBoard but with the league as additional value.
*
*/
class WorkReportDivisionBoardHelper implements EntityRepresentation {
String league = null;
Object board = null;
public WorkReportDivisionBoardHelper() {
}
public WorkReportDivisionBoardHelper(String league, Object board) {
this.league = league;
this.board = board;
}
public void setLeague(String league) {
this.league = league;
}
public void setMember(WorkReportDivisionBoard board) {
this.board = board;
}
public Object getColumnValue(String columnName) {
if (LEAGUE.equals(columnName)) {
return this.league;
}
return ((EntityRepresentation) this.board).getColumnValue(columnName);
}
public Object getPrimaryKey() {
return ((EntityRepresentation) this.board).getPrimaryKey();
}
public boolean hasNationalLeague() {
return ((WorkReportDivisionBoard) this.board).hasNationalLeague();
}
}
}