package is.idega.idegaweb.travel.presentation;
import java.rmi.RemoteException;
import java.sql.SQLException;
import javax.ejb.FinderException;
import com.idega.block.trade.stockroom.data.Product;
import com.idega.block.trade.stockroom.data.Timeframe;
import com.idega.data.IDOException;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.BooleanInput;
import com.idega.presentation.ui.CheckBox;
import com.idega.presentation.ui.DateInput;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.SubmitButton;
import com.idega.util.IWTimestamp;
/**
* Title: idegaWeb TravelBooking
* Description:
* Copyright: Copyright (c) 2001
* Company: idega
* @author <a href="mailto:gimmi@idega.is">Grimur Jonsson</a>
* @version 1.0
*/
public class TimeframeAdder extends TravelWindow {
public static final String _parameterProductId = "tf_adder_service_id";
private String _parameterTimeframeId = "tf_adder_tf_id";
private String _parameterTimeframeFrom = "tf_adder_tf_from";
private String _parameterTimeframeTo = "tf_adder_tf_to";
private String _parameterTimeframeYearly = "tf_adder_tf_yearly";
private String _parameterTimeframeDelete = "tf_adder_tf_delete_";
private String _actionSaveTimeframe = "tf_adder_save_timeframe";
private String _actionCloseWindow = "tf_adder_close_window";
private static String sAction = "tf_adder_action";
private IWResourceBundle iwrb;
private int _productId = -1;
private Product _product = null;
private int _emptySlots = 3;
public TimeframeAdder() {
super.setWidth(600);
super.setHeight(500);
super.setTitle("idegaWeb Travel");
super.setStatus(true);
}
public void main(IWContext iwc) throws Exception{
super.main(iwc);
init(iwc);
mainMenu(iwc);
}
private void init(IWContext iwc) throws RemoteException{
iwrb = super.iwrb;
try {
String sProductId = iwc.getParameter(_parameterProductId);
if (sProductId != null) {
_productId = Integer.parseInt(sProductId);
_product = getProductBusiness(iwc).getProduct(_productId);
}
}catch (FinderException sql) {
sql.printStackTrace(System.err);
}catch (NumberFormatException n) {
n.printStackTrace(System.err);
}
}
private void mainMenu(IWContext iwc) throws RemoteException{
String action = iwc.getParameter(sAction);
add(Text.BREAK);
if (_product == null) {
}else {
if (action == null) {
add(getMainForm(iwc));
}else if (action.equals(this._actionSaveTimeframe)) {
add(handleInsert(iwc));
}else if (action.equals(this._actionCloseWindow )) {
closeWindow();
}else {
}
}
}
private Form getMainForm(IWContext iwc) throws RemoteException{
Form form = getEmptyForm();
Timeframe[] timeframes = {};
try {
timeframes = getProductBusiness(iwc).getTimeframes(_product);
Table table = new Table();
table.setCellspacing(1);
table.setCellpadding(2);
table.setColor(TravelManager.WHITE);
table.setAlignment("center");
form.add(table);
int row = 1;
int counter = 0;
IWTimestamp fromStamp;
IWTimestamp toStamp;
DateInput from;
DateInput to;
BooleanInput yearly;
CheckBox delete;
/* Text timeframeText = (Text) text.clone();
timeframeText.setText(iwrb.getLocalizedString("travel.timeframe","Timeframe"));*/
Text tfFromText = (Text) text.clone();
tfFromText.setText(iwrb.getLocalizedString("travel.from","from"));
tfFromText.setFontColor(TravelManager.WHITE);
tfFromText.setBold(true);
Text tfToText = (Text) text.clone();
tfToText.setText(iwrb.getLocalizedString("travel.to","to"));
tfToText.setFontColor(TravelManager.WHITE);
tfToText.setBold(true);
Text tfYearlyText = (Text) text.clone();
tfYearlyText.setText(iwrb.getLocalizedString("travel.yearly","yearly"));
tfYearlyText.setFontColor(TravelManager.WHITE);
tfYearlyText.setBold(true);
Text tfDeleteText = (Text) text.clone();
tfDeleteText.setText(iwrb.getLocalizedString("travel.delete","delete"));
tfDeleteText.setFontColor(TravelManager.WHITE);
tfDeleteText.setBold(true);
table.add(tfFromText, 1, row);
table.add(tfToText, 2, row);
table.add(tfYearlyText, 3, row);
table.add(tfDeleteText, 4, row);
table.setRowColor(row, TravelManager.backgroundColor);
int currentYear = IWTimestamp.RightNow().getYear();
for (int i = 0; i < timeframes.length; i++) {
++row;
++counter;
fromStamp = new IWTimestamp(timeframes[i].getFrom());
toStamp = new IWTimestamp(timeframes[i].getTo());
from = new DateInput(this._parameterTimeframeFrom+counter);
from.setYearRange(2001, currentYear+5);
to = new DateInput(this._parameterTimeframeTo+counter);
to.setYearRange(2001, currentYear+5);
yearly = new BooleanInput(this._parameterTimeframeYearly+counter);
delete = new CheckBox(this._parameterTimeframeDelete+timeframes[i].getID());
from.setDate(fromStamp.getSQLDate());
to.setDate(toStamp.getSQLDate());
yearly.setSelected(timeframes[i].getYearly());
delete.setChecked(false);
table.add(from, 1,row);
table.add(to, 2,row);
table.add(yearly, 3,row);
table.add(delete, 4,row);
table.add(new HiddenInput(this._parameterTimeframeId+counter, Integer.toString(timeframes[i].getID())),1,row);
table.setRowColor(row, TravelManager.GRAY);
}
++row;
table.add(Text.NON_BREAKING_SPACE,1,row);
table.setRowColor(row, TravelManager.GRAY);
for (int i = 0; i < this._emptySlots; i++) {
++row;
++counter;
from = new DateInput(this._parameterTimeframeFrom+counter);
from.setYearRange(2001, currentYear+5);
to = new DateInput(this._parameterTimeframeTo+counter);
to.setYearRange(2001, currentYear+5);
yearly = new BooleanInput(this._parameterTimeframeYearly+counter);
table.add(from, 1,row);
table.add(to, 2,row);
table.add(yearly, 3,row);
table.add(Text.NON_BREAKING_SPACE, 4,row);
table.add(new HiddenInput(this._parameterTimeframeId+counter, "-1"),1,row);
table.setRowColor(row, TravelManager.GRAY);
}
++row;
table.mergeCells(1,row,2,row);
table.mergeCells(3,row,4,row);
table.setAlignment(1, row, "left");
table.setAlignment(3, row, "right");
table.setRowColor(row, TravelManager.GRAY);
SubmitButton close = new SubmitButton(iwrb.getImage("/buttons/close.gif"), this.sAction, this._actionCloseWindow);
table.add(close, 1, row);
SubmitButton save = new SubmitButton(iwrb.getImage("/buttons/save.gif"), this.sAction, this._actionSaveTimeframe);
table.add(save, 3, row);
}catch (SQLException sql) {
sql.printStackTrace(System.err);
}
return form;
}
private Form handleInsert(IWContext iwc) throws RemoteException{
boolean success = saveTimeframe(iwc);
if (success) {
return getMainForm(iwc);
}else {
return getMainForm(iwc);
// return getSaveFailed(iwc);
}
}
private Form getEmptyForm() {
Form form = new Form();
form.maintainParameter(this._parameterProductId);
return form;
}
private Form getSaveFailed(IWContext iwc) {
Form form = getEmptyForm();
Table table = new Table();
form.add(table);
table.add("Save / Update klikka�i �okkalega");
return form;
}
private boolean saveTimeframe(IWContext iwc) throws RemoteException{
boolean returner = true;
Timeframe tFrame;
IWTimestamp from;
IWTimestamp to;
int counter = 0;
try {
getProductBusiness(iwc).invalidateProductCache(_product.getPrimaryKey().toString());
while (iwc.getParameter(this._parameterTimeframeFrom+(++counter)) != null) {
String tfId = iwc.getParameter(this._parameterTimeframeId+counter);
String tfFrom = iwc.getParameter(this._parameterTimeframeFrom+counter);
String tfTo = iwc.getParameter(this._parameterTimeframeTo+counter);
String tfYearly = iwc.getParameter(this._parameterTimeframeYearly+counter);
String tfDelete = iwc.getParameter(this._parameterTimeframeDelete+counter);
if (tfId != null && tfId.equals("-1")) {
if (!tfFrom.equals("")) {
from = new IWTimestamp(tfFrom);
to = new IWTimestamp(tfTo);
tFrame = ((com.idega.block.trade.stockroom.data.TimeframeHome)com.idega.data.IDOLookup.getHomeLegacy(Timeframe.class)).createLegacy();
tFrame.setFrom(from.getTimestamp());
tFrame.setTo(to.getTimestamp());
if (tfYearly.equals("Y")) {
tFrame.setYearly(true);
}else if (tfYearly.equals("N")) {
tFrame.setYearly(false);
}
tFrame.insert();
_product.addTimeframe(tFrame);
// _product.addTo(tFrame);
}
}else {
if (tfId != null && !tfId.equals("-1")) {
String del = iwc.getParameter(this._parameterTimeframeDelete+tfId);
tFrame = ((com.idega.block.trade.stockroom.data.TimeframeHome)com.idega.data.IDOLookup.getHomeLegacy(Timeframe.class)).findByPrimaryKeyLegacy(Integer.parseInt(tfId));
if (del == null) {
from = new IWTimestamp(tfFrom);
to = new IWTimestamp(tfTo);
tFrame.setFrom(from.getTimestamp());
tFrame.setTo(to.getTimestamp());
if (tfYearly.equals("Y")) {
tFrame.setYearly(true);
}else if (tfYearly.equals("N")) {
tFrame.setYearly(false);
}
tFrame.update();
}else {
_product.removeTimeframe(tFrame);
// tFrame.removeFrom(_product);
tFrame.delete();
}
}else {
}
}
}
}catch (SQLException sql) {
sql.printStackTrace(System.err);
returner = false;
}catch (IDOException ide) {
ide.printStackTrace(System.err);
returner = false;
}
return returner;
}
private void closeWindow() {
super.close(true);
}
}