package is.idega.idegaweb.travel.service.tour.presentation; import is.idega.idegaweb.travel.data.PickupPlace; import is.idega.idegaweb.travel.data.PickupPlaceHome; import is.idega.idegaweb.travel.data.Service; import is.idega.idegaweb.travel.data.ServiceDay; import is.idega.idegaweb.travel.data.ServiceDayHome; import is.idega.idegaweb.travel.presentation.ServiceDesigner; import is.idega.idegaweb.travel.presentation.TravelManager; import is.idega.idegaweb.travel.service.presentation.BookingForm; import is.idega.idegaweb.travel.service.presentation.DesignerForm; import is.idega.idegaweb.travel.service.tour.business.TourBusiness; import is.idega.idegaweb.travel.service.tour.data.Tour; import is.idega.idegaweb.travel.service.tour.data.TourType; import is.idega.idegaweb.travel.service.tour.data.TourTypeHome; import java.rmi.RemoteException; import java.sql.SQLException; import java.util.Collection; import java.util.Iterator; import java.util.List; import javax.ejb.CreateException; import javax.ejb.FinderException; import com.idega.block.media.presentation.ImageInserter; import com.idega.block.trade.stockroom.business.ProductEditorBusiness; import com.idega.block.trade.stockroom.data.Product; import com.idega.block.trade.stockroom.data.Supplier; import com.idega.block.trade.stockroom.data.Timeframe; import com.idega.block.trade.stockroom.data.TravelAddress; import com.idega.business.IBOLookup; import com.idega.core.location.data.Address; import com.idega.data.IDOLookup; import com.idega.data.IDOLookupException; import com.idega.idegaweb.IWApplicationContext; import com.idega.idegaweb.IWBundle; 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.DropdownMenu; import com.idega.presentation.ui.Form; import com.idega.presentation.ui.Parameter; import com.idega.presentation.ui.RadioButton; import com.idega.presentation.ui.SelectPanel; import com.idega.presentation.ui.SelectionBox; import com.idega.presentation.ui.SubmitButton; import com.idega.presentation.ui.TextArea; import com.idega.presentation.ui.TextInput; import com.idega.presentation.ui.TimeInput; import com.idega.presentation.ui.util.SelectorUtility; import com.idega.util.IWTimestamp; import com.idega.util.ListUtil; /** * Title: idegaWeb TravelBooking Description: Copyright: Copyright (c) 2001 * Company: idega * *@author <a href="mailto:gimmi@idega.is">Grimur Jonsson</a> *@created 16. apr�l 2002 *@version 1.0 */ public class TourDesigner extends TravelManager implements DesignerForm{ IWResourceBundle iwrb; IWBundle iwb; Supplier supplier; TourBusiness tb; String NAME_OF_FORM = ServiceDesigner.NAME_OF_FORM; String ServiceAction = ServiceDesigner.ServiceAction; Product product; Service service; Tour tour; Timeframe timeframe; TravelAddress depAddress; Address arrAddress; private String parameterIsUpdate = "isTourUpdate"; private String parameterTimeframeId = "td_timeframeId"; private String PARAMETER_TOUR_TYPE_ID = "pTtId"; /** * Constructor for the TourDesigner object * *@param iwc Description of the Parameter *@exception Exception Description of the Exception */ public TourDesigner( IWContext iwc ) throws Exception { init( iwc ); } /** * Description of the Method * *@param iwc Description of the Parameter *@exception Exception Description of the Exception */ private void init( IWContext iwc ) throws Exception { super.main( iwc ); iwrb = super.getResourceBundle(); iwb = super.getBundle(); supplier = super.getSupplier(); tb = getTourBusiness(iwc); } /** * Description of the Method * *@param tourId Description of the Parameter *@return Description of the Return Value */ private boolean setupData( IWContext iwc, int tourId ) throws RemoteException, FinderException { try { // ProductHome pHome = (ProductHome) IDOLookup.getHome(Product.class); // product = pHome.findByPrimaryKey(new Integer(tourId)); product = getProductBusiness(iwc).getProduct( tourId ); service = ( ( is.idega.idegaweb.travel.data.ServiceHome ) com.idega.data.IDOLookup.getHome( Service.class ) ).findByPrimaryKey( product.getPrimaryKey() ); try { tour = ( ( is.idega.idegaweb.travel.service.tour.data.TourHome ) com.idega.data.IDOLookup.getHome( Tour.class ) ).findByPrimaryKey( product.getPrimaryKey() ); }catch (FinderException fe) { //fe.printStackTrace(System.err); } timeframe = getProductBusiness(iwc).getTimeframe(product); arrAddress = getProductBusiness(iwc).getArrivalAddress( product ); depAddress = getProductBusiness(iwc).getDepartureAddress( product ); return true; } catch ( SQLException sql ) { sql.printStackTrace( System.err ); return false; } } /** * Gets the tourDesignerForm attribute of the TourDesigner object * *@param iwc Description of the Parameter *@return The tourDesignerForm value */ public Form getTourDesignerForm( IWContext iwc ) throws RemoteException, FinderException{ return getTourDesignerForm( iwc, -1 ); } public Form getDesignerForm( IWContext iwc ) throws RemoteException, FinderException{ return getTourDesignerForm( iwc ); } /** * Gets the tourDesignerForm attribute of the TourDesigner object * *@param iwc Description of the Parameter *@param tourId Description of the Parameter *@return The tourDesignerForm value */ public Form getDesignerForm( IWContext iwc, int tourId ) throws RemoteException, FinderException{ return getTourDesignerForm(iwc, tourId); } public Form getTourDesignerForm( IWContext iwc, int tourId ) throws RemoteException, FinderException{ boolean isDataValid = true; if ( tourId != -1 ) { isDataValid = setupData( iwc, tourId ); } Form form = new Form(); form.setName( NAME_OF_FORM ); Table table = new Table(); form.add( table ); if ( isDataValid ) { table.setWidth( "90%" ); int row = 0; IWTimestamp stamp = IWTimestamp.RightNow(); TextInput name = new TextInput( "name_of_trip" ); name.setSize( 40 ); //name.keepStatusOnAction(); TextArea description = new TextArea( "description" ); description.setWidth( "50" ); description.setHeight( "12" ); //description.keepStatusOnAction(); TextInput number = new TextInput( "number" ); number.setSize( 20 ); number.keepStatusOnAction(); DropdownMenu locales = getProductBusiness(iwc).getLocaleDropDown( iwc ); int currentYear = IWTimestamp.RightNow().getYear(); DateInput active_from = new DateInput( "active_from" ); active_from.setDate( stamp.getSQLDate() ); active_from.setYearRange( 2001, currentYear + 5 ); active_from.keepStatusOnAction(); DateInput active_to = new DateInput( "active_to" ); stamp.addDays( 92 ); active_to.setDate( stamp.getSQLDate() ); active_to.setYearRange( 2001, currentYear + 5 ); active_to.keepStatusOnAction(); BooleanInput active_yearly = new BooleanInput( "active_yearly" ); active_yearly.setSelected( false ); active_yearly.keepStatusOnAction(); CheckBox allDays = new CheckBox( "all_days" ); CheckBox mondays = new CheckBox( "mondays" ); CheckBox tuesdays = new CheckBox( "tuesdays" ); CheckBox wednesdays = new CheckBox( "wednesdays" ); CheckBox thursdays = new CheckBox( "thursdays" ); CheckBox fridays = new CheckBox( "fridays" ); CheckBox saturdays = new CheckBox( "saturdays" ); CheckBox sundays = new CheckBox( "sundays" ); allDays.keepStatusOnAction(); mondays.keepStatusOnAction(); tuesdays.keepStatusOnAction(); wednesdays.keepStatusOnAction(); thursdays.keepStatusOnAction(); fridays.keepStatusOnAction(); saturdays.keepStatusOnAction(); sundays.keepStatusOnAction(); TextInput number_of_days = new TextInput( "number_of_days" ); number_of_days.keepStatusOnAction(); TextInput departure_from = new TextInput( "departure_from" ); departure_from.setSize( 40 ); departure_from.keepStatusOnAction(); TimeInput departure_time = new TimeInput( "departure_time" ); departure_time.setHour( 8 ); departure_time.setMinute( 0 ); departure_time.keepStatusOnAction(); TextInput arrival_at = new TextInput( "arrival_at" ); arrival_at.setSize( 40 ); arrival_at.keepStatusOnAction(); TimeInput arrival_time = new TimeInput( "arrival_time" ); arrival_time.setHour( 8 ); arrival_time.setMinute( 0 ); arrival_time.keepStatusOnAction(); RadioButton hotelPickupYes = new RadioButton( "hotel_pickup", "yes" ); hotelPickupYes.setSelected(); hotelPickupYes.keepStatusOnAction(); RadioButton hotelPickupNo = new RadioButton( "hotel_pickup", "no" ); hotelPickupYes.keepStatusOnAction(); TimeInput hotelPickupTime = new TimeInput( "hotel_pickup_time" ); hotelPickupTime.setHour( 8 ); hotelPickupTime.setMinute( 0 ); hotelPickupTime.keepStatusOnAction(); TextInput hotelPickup = new TextInput( "hotel_pickup_address" ); hotelPickup.keepStatusOnAction(); hotelPickup.setSize( 40 ); hotelPickupYes.setOnClick( "this.form." + hotelPickup.getName() + ".disabled=false" ); hotelPickupYes.setOnClick( "this.form." + hotelPickupTime.getHourName() + ".disabled=false" ); hotelPickupYes.setOnClick( "this.form." + hotelPickupTime.getMinuteName() + ".disabled=false" ); hotelPickupNo.setOnClick( "this.form." + hotelPickup.getName() + ".disabled=true" ); hotelPickupNo.setOnClick( "this.form." + hotelPickupTime.getHourName() + ".disabled=true" ); hotelPickupNo.setOnClick( "this.form." + hotelPickupTime.getMinuteName() + ".disabled=true" ); TextInput numberOfSeats = new TextInput( "number_of_seats" ); numberOfSeats.keepStatusOnAction(); TextInput minNumberOfSeats = new TextInput( "min_number_of_seats" ); minNumberOfSeats.keepStatusOnAction(); TextInput estSeats = new TextInput( "estimated_seats" ); estSeats.keepStatusOnAction(); TextInput kilometers = new TextInput( "kilometers" ); kilometers.keepStatusOnAction(); DropdownMenu discountType = new DropdownMenu( "discountType" ); discountType.addMenuElement( com.idega.block.trade.stockroom.data.ProductBMPBean.DISCOUNT_TYPE_ID_AMOUNT, iwrb.getLocalizedString( "travel.amount", "Amount" ) ); discountType.addMenuElement( com.idega.block.trade.stockroom.data.ProductBMPBean.DISCOUNT_TYPE_ID_PERCENT, iwrb.getLocalizedString( "travel.percent", "Percent" ) ); Collection categories = getTourTypeHome().findAll(); SelectPanel tourTypes = new SelectPanel(PARAMETER_TOUR_TYPE_ID ); SelectorUtility su = new SelectorUtility(); tourTypes = (SelectPanel) su.getSelectorFromIDOEntities(tourTypes, categories, "getLocalizationKey", iwrb); ++row; Text nameText = ( Text ) theBoldText.clone(); nameText.setText( iwrb.getLocalizedString( "travel.name_of_trip", "Name of trip" ) ); table.add( nameText, 1, row ); table.add( name, 2, row ); ++row; Text numberText = ( Text ) theBoldText.clone(); numberText.setText( iwrb.getLocalizedString( "travel.number", "Number" ) ); table.add( numberText, 1, row ); table.add( number, 2, row ); ++row; Text descText = ( Text ) theBoldText.clone(); descText.setText( iwrb.getLocalizedString( "travel.description", "Description" ) ); Text imgText = ( Text ) theBoldText.clone(); imgText.setText( iwrb.getLocalizedString( "travel.image", "Image" ) ); // table.add(descText,1,row); // table.add(description, 2,row); table.setVerticalAlignment( 1, row, "top" ); table.setVerticalAlignment( 2, row, "top" ); // ++row; // table.add(locales, 2, row); ++row; ImageInserter imageInserter = new ImageInserter( "design_image_id" ); imageInserter.setHasUseBox( true, "use_image_id" ); String imageId = iwc.getParameter( "design_image_id" ); if ( service != null ) { Product product = service.getProduct(); if ( imageId != null ) { imageInserter.setImageId( Integer.parseInt( imageId ) ); imageInserter.setSelected( true ); //imageInserter = new ImageInserter(Integer.parseInt(imageId), "design_image_id"); } else if ( product.getFileId() != -1 ) { imageInserter.setImageId( product.getFileId() ); imageInserter.setSelected( true ); //imageInserter = new ImageInserter(product.getFileId(), "design_image_id"); } } //imageInserter.setWindowToReload(true); table.setVerticalAlignment( 1, row, "top" ); table.setVerticalAlignment( 2, row, "top" ); table.add( imgText, 1, row ); table.add( imageInserter, 2, row ); ++row; Text timeframeText = ( Text ) theBoldText.clone(); timeframeText.setText( iwrb.getLocalizedString( "travel.timeframe", "Timeframe" ) ); Text tfFromText = ( Text ) smallText.clone(); tfFromText.setText( iwrb.getLocalizedString( "travel.from", "from" ) ); Text tfToText = ( Text ) smallText.clone(); tfToText.setText( iwrb.getLocalizedString( "travel.to", "to" ) ); Text tfYearlyText = ( Text ) smallText.clone(); tfYearlyText.setText( iwrb.getLocalizedString( "travel.yearly", "yearly" ) ); Table activeTable = new Table( 5, 2 ); activeTable.add( tfFromText, 1, 1 ); activeTable.add( active_from, 1, 2 ); activeTable.add( tfToText, 3, 1 ); activeTable.add( active_to, 3, 2 ); activeTable.add( tfYearlyText, 5, 1 ); activeTable.add( active_yearly, 5, 2 ); activeTable.setVerticalAlignment( 1, 1, "bottom" ); activeTable.setVerticalAlignment( 3, 1, "bottom" ); activeTable.setVerticalAlignment( 5, 1, "bottom" ); table.add( timeframeText, 1, row ); table.add( activeTable, 2, row ); ++row; Table weekdayFixTable = new Table( 9, 2 ); weekdayFixTable.setCellpadding( 0 ); weekdayFixTable.setCellspacing( 1 ); weekdayFixTable.setWidth( "350" ); weekdayFixTable.setColumnAlignment( 1, "center" ); weekdayFixTable.setColumnAlignment( 2, "center" ); weekdayFixTable.setColumnAlignment( 3, "center" ); weekdayFixTable.setColumnAlignment( 4, "center" ); weekdayFixTable.setColumnAlignment( 5, "center" ); weekdayFixTable.setColumnAlignment( 6, "center" ); weekdayFixTable.setColumnAlignment( 7, "center" ); weekdayFixTable.setColumnAlignment( 8, "center" ); weekdayFixTable.setColumnAlignment( 9, "center" ); Text alld = ( Text ) smallText.clone(); alld.setText( iwrb.getLocalizedString( "travel.all_days", "All" ) ); Text mond = ( Text ) smallText.clone(); mond.setText( iwrb.getLocalizedString( "travel.mon", "mon" ) ); Text tued = ( Text ) smallText.clone(); tued.setText( iwrb.getLocalizedString( "travel.tue", "tue" ) ); Text wedd = ( Text ) smallText.clone(); wedd.setText( iwrb.getLocalizedString( "travel.wed", "wed" ) ); Text thud = ( Text ) smallText.clone(); thud.setText( iwrb.getLocalizedString( "travel.thu", "thu" ) ); Text frid = ( Text ) smallText.clone(); frid.setText( iwrb.getLocalizedString( "travel.fri", "fri" ) ); Text satd = ( Text ) smallText.clone(); satd.setText( iwrb.getLocalizedString( "travel.sat", "sat" ) ); Text sund = ( Text ) smallText.clone(); sund.setText( iwrb.getLocalizedString( "travel.sun", "sun" ) ); weekdayFixTable.add( alld, 1, 1 ); weekdayFixTable.add( mond, 3, 1 ); weekdayFixTable.add( tued, 4, 1 ); weekdayFixTable.add( wedd, 5, 1 ); weekdayFixTable.add( thud, 6, 1 ); weekdayFixTable.add( frid, 7, 1 ); weekdayFixTable.add( satd, 8, 1 ); weekdayFixTable.add( sund, 9, 1 ); weekdayFixTable.add( allDays, 1, 2 ); weekdayFixTable.add( mondays, 3, 2 ); weekdayFixTable.add( tuesdays, 4, 2 ); weekdayFixTable.add( wednesdays, 5, 2 ); weekdayFixTable.add( thursdays, 6, 2 ); weekdayFixTable.add( fridays, 7, 2 ); weekdayFixTable.add( saturdays, 8, 2 ); weekdayFixTable.add( sundays, 9, 2 ); Text weekdaysText = ( Text ) theBoldText.clone(); weekdaysText.setText( iwrb.getLocalizedString( "travel.weekdays", "Weekdays" ) ); table.add( weekdaysText, 1, row ); table.add( weekdayFixTable, 2, row ); ++row; Text textTourType = ( Text ) theBoldText.clone(); textTourType.setText(iwrb.getLocalizedString("tour.tour_type", "Tour type")); table.add( textTourType, 1, row ); table.setVerticalAlignment(1, row, Table.VERTICAL_ALIGN_TOP); table.add( tourTypes, 2, row ); ++row; Text numOfDays = ( Text ) theBoldText.clone(); numOfDays.setText( iwrb.getLocalizedString( "travel.number_of_days", "Number of days" ) ); table.add( numOfDays, 1, row ); table.add( number_of_days, 2, row ); ++row; Text departureFromText = ( Text ) theBoldText.clone(); departureFromText.setText( iwrb.getLocalizedString( "travel.departure_from", "Departure from" ) ); table.add( departureFromText, 1, row ); table.add( departure_from, 2, row ); ++row; Text departureTimeText = ( Text ) theBoldText.clone(); departureTimeText.setText( iwrb.getLocalizedString( "travel.departure_time", "Departure time" ) ); table.add( departureTimeText, 1, row ); table.add( departure_time, 2, row ); ++row; Text arrivalAtText = ( Text ) theBoldText.clone(); arrivalAtText.setText( iwrb.getLocalizedString( "travel.arrival_at", "Arrival at" ) ); table.add( arrivalAtText, 1, row ); table.add( arrival_at, 2, row ); ++row; Text arrivalTimeText = ( Text ) theBoldText.clone(); arrivalTimeText.setText( iwrb.getLocalizedString( "travel.arrival_time", "Arrival time" ) ); table.add( arrivalTimeText, 1, row ); table.add( arrival_time, 2, row ); ++row; Text hotelPickupText = ( Text ) theBoldText.clone(); hotelPickupText.setText( iwrb.getLocalizedString( "travel.hotel_pickup", "Hotel pick-up" ) ); PickupPlaceHome hppHome = (PickupPlaceHome) IDOLookup.getHome(PickupPlace.class); Collection coll = hppHome.findHotelPickupPlaces(this.supplier); List hpps = ListUtil.convertCollectionToList(coll); // HotelPickupPlace[] hpps = (HotelPickupPlace[]) coll.toArray(new HotelPickupPlace[]{}); SelectionBox hotels = new SelectionBox( hpps ); hotels.setName( "hotelPickupId" ); hotels.keepStatusOnAction(); table.add( hotelPickupText, 1, row ); table.add( hotels, 2, row ); table.setVerticalAlignment( 1, row, "top" ); table.setVerticalAlignment( 2, row, "top" ); ++row; Text nOSText = ( Text ) theBoldText.clone(); nOSText.setText( iwrb.getLocalizedString( "travel.number_of_seats", "Number of seats" ) ); table.add( nOSText, 1, row ); table.add( numberOfSeats, 2, row ); ++row; Text mNOSText = ( Text ) theBoldText.clone(); mNOSText.setText( iwrb.getLocalizedString( "travel.minimum_number_of_seats", "Minimum number of seats" ) ); table.add( mNOSText, 1, row ); table.add( minNumberOfSeats, 2, row ); ++row; Text eNOSText = ( Text ) theBoldText.clone(); eNOSText.setText( iwrb.getLocalizedString( "travel.estimated_number_of_seats", "Estimated number of seats" ) ); table.add( eNOSText, 1, row ); table.add( estSeats, 2, row ); ++row; Text noKm = ( Text ) theBoldText.clone(); noKm.setText( iwrb.getLocalizedString( "travel.kilometers", "Kilometers" ) ); table.add( noKm, 1, row ); table.add( kilometers, 2, row ); ++row; Text discountTypeText = ( Text ) theBoldText.clone(); discountTypeText.setText( iwrb.getLocalizedString( "travel.discount_type", "Discount type" ) ); table.add( discountTypeText, 1, row ); table.add( discountType, 2, row ); ++row; table.mergeCells( 1, row, 2, row ); table.setAlignment( 1, row, "right" ); SubmitButton submit = new SubmitButton( iwrb.getImage( "buttons/save.gif" ), ServiceDesigner.ServiceAction, ServiceDesigner.parameterCreate ); table.add( submit, 1, row ); table.setColumnAlignment( 1, "right" ); table.setColumnAlignment( 2, "left" ); if ( service != null ) { Parameter par1 = new Parameter( this.parameterIsUpdate, Integer.toString( tourId ) ); par1.keepStatusOnAction(); table.add( par1 ); if ( timeframe != null ) { Parameter par2 = new Parameter( this.parameterTimeframeId, Integer.toString( timeframe.getID() ) ); par2.keepStatusOnAction(); table.add( par2 ); active_from.setDate( new IWTimestamp( timeframe.getFrom() ).getSQLDate() ); active_to.setDate( new IWTimestamp( timeframe.getTo() ).getSQLDate() ); active_yearly.setSelected( timeframe.getIfYearly() ); } name.setContent( product.getProductName( super.getLocaleId() ) ); number.setContent( product.getNumber() ); description.setContent( product.getProductDescription( super.getLocaleId() ) ); int[] days = new int[]{};//is.idega.idegaweb.travel.data.ServiceDayBMPBean.getDaysOfWeek( service.getID() ); try { ServiceDayHome sdayHome = (ServiceDayHome) IDOLookup.getHome(ServiceDay.class); days = sdayHome.getDaysOfWeek(service.getID()); }catch (Exception e) { e.printStackTrace(System.err); } for ( int i = 0; i < days.length; i++ ) { switch ( days[i] ) { case is.idega.idegaweb.travel.data.ServiceDayBMPBean.SUNDAY: sundays.setChecked( true ); break; case is.idega.idegaweb.travel.data.ServiceDayBMPBean.MONDAY: mondays.setChecked( true ); break; case is.idega.idegaweb.travel.data.ServiceDayBMPBean.TUESDAY: tuesdays.setChecked( true ); break; case is.idega.idegaweb.travel.data.ServiceDayBMPBean.WEDNESDAY: wednesdays.setChecked( true ); break; case is.idega.idegaweb.travel.data.ServiceDayBMPBean.THURSDAY: thursdays.setChecked( true ); break; case is.idega.idegaweb.travel.data.ServiceDayBMPBean.FRIDAY: fridays.setChecked( true ); break; case is.idega.idegaweb.travel.data.ServiceDayBMPBean.SATURDAY: saturdays.setChecked( true ); break; } } IWTimestamp tempStamp; if ( depAddress != null ) { departure_from.setContent( depAddress.getStreetName() ); tempStamp = new IWTimestamp( depAddress.getTime() ); departure_time.setHour( tempStamp.getHour() ); departure_time.setMinute( tempStamp.getMinute() ); } if ( arrAddress != null ) { arrival_at.setContent( arrAddress.getStreetName() ); } if ( service.getArrivalTime() != null) { tempStamp = new IWTimestamp( service.getArrivalTime() ); arrival_time.setHour( tempStamp.getHour() ); arrival_time.setMinute( tempStamp.getMinute() ); } Collection hppService = hppHome.findHotelPickupPlaces(this.service); PickupPlace hpp; Iterator iter = hppService.iterator(); while (iter.hasNext()) { hpp = (PickupPlace) iter.next(); hotels.setSelectedElement(hpp.getPrimaryKey().toString()); } if (tour != null) { if ( tour.getIsHotelPickup() ) { hotelPickupYes.setSelected(); } else { hotelPickupNo.setSelected(); } if (tour.getTotalSeats() != BookingForm.UNLIMITED_AVAILABILITY) { numberOfSeats.setContent( Integer.toString( tour.getTotalSeats() ) ); } minNumberOfSeats.setContent( Integer.toString( tour.getMinimumSeats() ) ); number_of_days.setContent( Integer.toString( tour.getNumberOfDays() ) ); estSeats.setContent( Integer.toString( tour.getEstimatedSeatsUsed() ) ); discountType.setSelectedElement( Integer.toString( this.product.getDiscountTypeId() ) ); kilometers.setContent( Float.toString( tour.getLength() ) ); try { Collection types = tour.getTourTypes(); iter = types.iterator(); String[] pks = new String[types.size()]; for (int i = 0; i < pks.length; i++) { pks[i] = ((TourType) iter.next()).getPrimaryKey().toString(); } tourTypes.setSelectedElements(pks); } catch (Exception e) { e.printStackTrace(System.err); } } } else { discountType.setSelectedElement( Integer.toString( com.idega.block.trade.stockroom.data.ProductBMPBean.DISCOUNT_TYPE_ID_PERCENT ) ); } } else { table.add( iwrb.getLocalizedString( "travel.data_is_invalid", "Data is invalid" ) ); } return form; } public int handleInsert( IWContext iwc ) throws RemoteException{ return createTour(iwc); } public int createTour( IWContext iwc ) throws RemoteException { String sTourId = iwc.getParameter( this.parameterIsUpdate ); int tourId = -1; if ( sTourId != null ) { tourId = Integer.parseInt( sTourId ); try { setupData(iwc, tourId); if (tour == null) { try { tour = ( ( is.idega.idegaweb.travel.service.tour.data.TourHome ) com.idega.data.IDOLookup.getHome( Tour.class ) ).create(); tour.setPrimaryKey(new Integer(tourId)); tour.store(); }catch (CreateException ce) { ce.printStackTrace(System.err); } } }catch (FinderException e) { e.printStackTrace(System.err); } } String name = iwc.getParameter( "name_of_trip" ); String number = iwc.getParameter( "number" ); String description = iwc.getParameter( "description" ); if ( description == null ) { description = ""; } String imageId = iwc.getParameter( "design_image_id" ); String activeFrom = iwc.getParameter( "active_from" ); String activeTo = iwc.getParameter( "active_to" ); String activeYearly = iwc.getParameter( "active_yearly" ); String numberOfDays = iwc.getParameter( "number_of_days" ); String allDays = iwc.getParameter( "all_days" ); String mondays = iwc.getParameter( "mondays" ); String tuesdays = iwc.getParameter( "tuesdays" ); String wednesdays = iwc.getParameter( "wednesdays" ); String thursdays = iwc.getParameter( "thursdays" ); String fridays = iwc.getParameter( "fridays" ); String saturdays = iwc.getParameter( "saturdays" ); String sundays = iwc.getParameter( "sundays" ); String departureFrom = iwc.getParameter( "departure_from" ); String departureTime = iwc.getParameter( "departure_time" ); String arrivalAt = iwc.getParameter( "arrival_at" ); String arrivalTime = iwc.getParameter( "arrival_time" ); String[] hotelPickup = iwc.getParameterValues( "hotelPickupId" ); String numberOfSeats = iwc.getParameter( "number_of_seats" ); String minNumberOfSeats = iwc.getParameter( "min_number_of_seats" ); String kilometers = iwc.getParameter( "kilometers" ); String estSeats = iwc.getParameter( "estimated_seats" ); String discountType = iwc.getParameter( "discountType" ); String useImageId = iwc.getParameter( "use_image_id" ); String[] types = iwc.getParameterValues(PARAMETER_TOUR_TYPE_ID); /* * if (hotelPickup != null) { * if (hotelPickup.equals("N")) hotelPickupAddress = ""; * } */ int serviceId = -1; boolean yearly = false; if ( activeYearly != null ) { if ( activeYearly.equals( "Y" ) ) { yearly = true; } } int iEstSeats = 0; if ( estSeats != null ) { try { iEstSeats = Integer.parseInt( estSeats ); } catch ( NumberFormatException n ) {} } int iDiscountType = com.idega.block.trade.stockroom.data.ProductBMPBean.DISCOUNT_TYPE_ID_PERCENT; if ( discountType != null ) { iDiscountType = Integer.parseInt( discountType ); } Integer iImageId = null; if ( imageId != null ) { if ( !imageId.equals( "-1" ) ) { iImageId = new Integer( imageId ); } } Integer iNumberOfSeats = null; if ( numberOfSeats != null ) { try { iNumberOfSeats = new Integer( numberOfSeats ); } catch ( NumberFormatException n ) { iNumberOfSeats = new Integer( BookingForm.UNLIMITED_AVAILABILITY ); } } else { iNumberOfSeats = new Integer( BookingForm.UNLIMITED_AVAILABILITY ); } Integer iMinNumberOfSeats = null; if ( minNumberOfSeats != null ) { try { iMinNumberOfSeats = new Integer( minNumberOfSeats ); } catch ( NumberFormatException n ) { iMinNumberOfSeats = new Integer( 0 ); } } else { iMinNumberOfSeats = new Integer( 0 ); } Integer iNumberOfDays = null; if ( numberOfDays != null ) { try { iNumberOfDays = new Integer( numberOfDays ); } catch ( NumberFormatException n ) { iNumberOfDays = new Integer( 0 ); } } else { iNumberOfDays = new Integer( 0 ); } Float fKilometers = null; if ( kilometers != null ) { try { fKilometers = new Float( kilometers ); } catch ( NumberFormatException n ) { fKilometers = new Float( 0 ); } } else { fKilometers = new Float( 0 ); } IWTimestamp activeFromStamp = null; if ( activeFrom != null ) { activeFromStamp = new IWTimestamp( activeFrom ); } IWTimestamp activeToStamp = null; if ( activeTo != null ) { activeToStamp = new IWTimestamp( activeTo ); } IWTimestamp departureStamp = null; if ( departureTime != null ) { departureStamp = new IWTimestamp( "2001-01-01 " + departureTime ); } IWTimestamp arrivalStamp = null; if ( arrivalTime != null ) { arrivalStamp = new IWTimestamp( "2001-01-01 " + arrivalTime ); } /* * IWTimestamp hotelPickupTimeStamp = null; * if (hotelPickupTime != null) { * hotelPickupTimeStamp = new IWTimestamp("2001-01-01 "+hotelPickupTime); * } */ int[] tempDays = new int[7]; int counter = 0; if ( allDays != null ) { tempDays[counter++] = java.util.GregorianCalendar.SUNDAY; tempDays[counter++] = java.util.GregorianCalendar.MONDAY; tempDays[counter++] = java.util.GregorianCalendar.TUESDAY; tempDays[counter++] = java.util.GregorianCalendar.WEDNESDAY; tempDays[counter++] = java.util.GregorianCalendar.THURSDAY; tempDays[counter++] = java.util.GregorianCalendar.FRIDAY; tempDays[counter++] = java.util.GregorianCalendar.SATURDAY; } else { if ( sundays != null ) { tempDays[counter++] = java.util.GregorianCalendar.SUNDAY; } if ( mondays != null ) { tempDays[counter++] = java.util.GregorianCalendar.MONDAY; } if ( tuesdays != null ) { tempDays[counter++] = java.util.GregorianCalendar.TUESDAY; } if ( wednesdays != null ) { tempDays[counter++] = java.util.GregorianCalendar.WEDNESDAY; } if ( thursdays != null ) { tempDays[counter++] = java.util.GregorianCalendar.THURSDAY; } if ( fridays != null ) { tempDays[counter++] = java.util.GregorianCalendar.FRIDAY; } if ( saturdays != null ) { tempDays[counter++] = java.util.GregorianCalendar.SATURDAY; } } int[] activeDays = new int[counter]; System.arraycopy( tempDays, 0, activeDays, 0, counter ); try { if ( tourId == -1 ) { tb.setTimeframe( activeFromStamp, activeToStamp, yearly ); serviceId = tb.createTourService( supplier.getID(), iImageId, name, number, description, true, types, departureFrom, departureStamp, arrivalAt, arrivalStamp, hotelPickup, activeDays, iNumberOfSeats, iMinNumberOfSeats, iNumberOfDays, fKilometers, iEstSeats, iDiscountType ); } else { String timeframeId = iwc.getParameter( this.parameterTimeframeId ); if ( timeframeId == null ) { timeframeId = "-1"; } tb.setTimeframe( Integer.parseInt( timeframeId ), activeFromStamp, activeToStamp, yearly ); serviceId = tb.updateTourService( tourId, supplier.getID(), iImageId, name, number, description, true, types, departureFrom, departureStamp, arrivalAt, arrivalStamp, hotelPickup, activeDays, iNumberOfSeats, iMinNumberOfSeats, iNumberOfDays, fKilometers, iEstSeats, iDiscountType ); if ( useImageId == null ) { Product product = getProductBusiness(iwc).getProduct( serviceId ); ProductEditorBusiness.getInstance().dropImage( product, true ); } } } catch ( Exception e ) { e.printStackTrace( System.err ); //add("TEMP - Service EKKI sm��u�"); } return serviceId; } public void finalizeCreation(IWContext iwc, Product product) throws RemoteException, FinderException { // getTourBusiness(iwc).finalizeHotelCreation(product); } private TourBusiness getTourBusiness(IWApplicationContext iwac) throws RemoteException { return (TourBusiness) IBOLookup.getServiceInstance(iwac, TourBusiness.class); } private TourTypeHome getTourTypeHome() throws IDOLookupException { return (TourTypeHome) IDOLookup.getHome(TourType.class); } }