/*
* Copyright (C) 2003 Idega software. All Rights Reserved.
*
* This software is the proprietary information of Idega software.
* Use is subject to license terms.
*
*/
package se.idega.idegaweb.commune.accounting.export.ifs.presentation;
import java.rmi.RemoteException;
import java.util.Locale;
import javax.ejb.FinderException;
import se.idega.idegaweb.commune.accounting.export.business.ExportBusiness;
import se.idega.idegaweb.commune.accounting.export.ifs.business.IFSBusiness;
import se.idega.idegaweb.commune.accounting.presentation.AccountingBlock;
import se.idega.idegaweb.commune.accounting.presentation.ApplicationForm;
import se.idega.idegaweb.commune.accounting.presentation.ButtonPanel;
import se.idega.idegaweb.commune.accounting.presentation.OperationalFieldsMenu;
import com.idega.presentation.ExceptionWrapper;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.ui.DateInput;
import com.idega.presentation.ui.TextInput;
import com.idega.util.IWTimestamp;
/**
* @author palli
*/
public class CreateIFSFiles extends AccountingBlock {
protected final static String KEY_HEADER = "cacc_create_files_header";
protected final static String KEY_HEADER_OPERATION = "cacc_create_files_operation";
protected final static String KEY_PAYMENT_DATE = "cacc_create_files_payment_date";
protected final static String KEY_PERIOD_TEXT = "cacc_create_files_period_text";
protected final static String KEY_CREATE = "cacc_create_files_save";
protected final static String PARAM_CREATE_FILE = "ifs_file_create";
protected final static String PARAM_CANCEL = "ifs_file_cancel";
protected final static String PARAM_PAYMENT_DATE = "ifs_payment_date";
protected final static String PARAM_PERIOD_TEXT = "ifs_period_text";
protected final static int ACTION_VIEW = 0;
protected final static int ACTION_CREATE = 1;
protected final static int ACTION_CANCEL = 2; //and does what??
protected String _currentOperation = null;
/* (non-Javadoc)
* @see se.idega.idegaweb.commune.accounting.presentation.AccountingBlock#init(com.idega.presentation.IWContext)
*/
public void init(IWContext iwc) throws Exception {
try {
int action = parseAction(iwc);
switch (action) {
case ACTION_VIEW :
viewForm(iwc, false);
break;
case ACTION_CREATE :
createFiles(iwc);
viewForm(iwc, true);
break;
}
}
catch (Exception e) {
super.add(new ExceptionWrapper(e, this));
}
}
private int parseAction(IWContext iwc) {
try {
_currentOperation = getSession().getOperationalField();
if (_currentOperation == null)
_currentOperation = "";
}
catch (RemoteException e) {
}
if (iwc.isParameterSet(PARAM_CREATE_FILE)) {
return ACTION_CREATE;
}
return ACTION_VIEW;
}
private void createFiles(IWContext iwc) {
String date = iwc.getParameter(PARAM_PAYMENT_DATE);
IWTimestamp pDate = new IWTimestamp(date);
String period = iwc.getParameter(PARAM_PERIOD_TEXT);
Locale currentLocale = iwc.getCurrentLocale();
if (currentLocale == null)
currentLocale = Locale.getDefault();
try {
getIFSBusiness(iwc).createFiles(_currentOperation,pDate,period,iwc.getCurrentUser(),currentLocale);
}
catch (RemoteException e1) {
e1.printStackTrace();
//Throw new Exception?
}
}
private void viewForm(IWContext iwc, boolean started) {
ApplicationForm form = new ApplicationForm(this);
form.setLocalizedTitle(KEY_HEADER, "Create files");
form.setSearchPanel(getTopPanel(iwc, started));
form.setButtonPanel(getButtonPanel());
add(form);
}
private Table getTopPanel(IWContext iwc, boolean started) {
Table table = new Table();
table.setColumnAlignment(1, Table.HORIZONTAL_ALIGN_LEFT);
table.setColumnAlignment(2, Table.HORIZONTAL_ALIGN_LEFT);
table.setCellpadding(getCellpadding());
table.setCellspacing(getCellspacing());
int row = 1;
if (started){
table.add(getLocalizedString("cacc_create_files_batch started", "Batch started", iwc), 1, row++);
}
table.add(getLocalizedLabel(KEY_HEADER_OPERATION, "School category"), 1, row);
table.add(new OperationalFieldsMenu(), 2, row++);
int paymentDate = -1;
try {
paymentDate = getExportBusiness(iwc).getExportDataMapping(_currentOperation).getStandardPaymentDay();
}
catch (RemoteException e) {
paymentDate = -1;
}
catch (FinderException e) {
paymentDate = -1;
}
DateInput date = new DateInput(PARAM_PAYMENT_DATE);
date.setToCurrentDate();
if (paymentDate != -1)
date.setDay(paymentDate);
int currentYear = java.util.Calendar.getInstance ().get (java.util.Calendar.YEAR);
date.setYearRange(currentYear - 1, currentYear + 1);
TextInput period = getTextInput(PARAM_PERIOD_TEXT,"");
period.setMaxlength(20);
period.setSize(20);
table.add(getLocalizedLabel(KEY_PAYMENT_DATE, "Payment date"), 1, row);
table.add(date, 2, row++);
table.add(getLocalizedLabel(KEY_PERIOD_TEXT, "Period text for bill"), 1, row);
table.add(period, 2, row);
return table;
}
private ButtonPanel getButtonPanel() {
ButtonPanel buttonPanel = new ButtonPanel(this);
buttonPanel.addLocalizedButton(PARAM_CREATE_FILE, "true", KEY_CREATE, "Save");
return buttonPanel;
}
private IFSBusiness getIFSBusiness(IWContext iwc) throws RemoteException {
return (IFSBusiness) com.idega.business.IBOLookup.getServiceInstance(iwc, IFSBusiness.class);
}
private ExportBusiness getExportBusiness(IWContext iwc) throws RemoteException {
return (ExportBusiness) com.idega.business.IBOLookup.getServiceInstance(iwc, ExportBusiness.class);
}
}