AdministrationController.java

// license-header java merge-point
// Generated by andromda-jsf cartridge (controllers\Controller.java.vsl) DO NOT EDIT!
package org.andromda.samples.carrental.admins.web.main;

import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
import org.andromda.samples.carrental.ControllerBase;
import org.andromda.samples.carrental.JsfUtils;
import org.andromda.samples.carrental.ServiceLocator;
import org.andromda.samples.carrental.admins.AdminService;
import org.andromda.samples.carrental.admins.web.admin.AdminAdminController;
import org.andromda.samples.carrental.contracts.web.handOut.HandOutCarController;
import org.andromda.samples.carrental.contracts.web.reserveCar.CustomerReservesCarController;
import org.andromda.samples.carrental.contracts.web.returnCar.ReturnCarController;
import org.andromda.samples.carrental.inventory.web.registerCar.RegisterCarController;
import org.andromda.samples.carrental.inventory.web.registerCarType.RegisterCarTypeController;

/**
 * <p>
 * This Controller allows the user to log in as an administrator. It call the AdminService on the
 * server
 * </p>
 */
public abstract class AdministrationController
    extends ControllerBase
    implements Serializable
{
    /**
     * The serial version UID of this class. Needed for serialization.
     */
    private static final long serialVersionUID = 1L;

    /**
     * Returns an instance from the JSF context
     *
     */
    public static AdministrationController instance()
    {
        return (AdministrationController)JsfUtils.resolveVariable("administrationController");
    }
    
    /**
     * Populate action form and page variables
     *
     * @param currentView the current view
     * @param forward the forward view
     * @param sourceForm the source form
     * @throws IllegalAccessException
     * @throws InvocationTargetException
     * @throws NoSuchMethodException
     */
    private void populateActionFormsAndPageVariables(final String currentView, String forward, final Object sourceForm) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
    {
        if(forward == null)
        {
            forward=currentView;
        }
        
        final Map<String,Object> pageVariables=this.getPageVariables(forward);
        if("/org/andromda/samples/carrental/admins/web/main/administrator-main-menu.jsf".equals(forward))
        {
            AdministrationViewPopulator.populateForm(sourceForm,this.getAdministratorMainMenuEditCarTypeForm());
            AdministrationViewPopulator.populateForm(sourceForm,this.getAdministratorMainMenuEditCarForm());
            AdministrationViewPopulator.populateAdministratorMainMenuPageVariables(sourceForm,pageVariables);
        }
        ControllerBase.getUseCaseScope().put(CURRENT_PAGE_VARIABLES_KEY, pageVariables);
    }
    
    /**
     * <p>
     * TODO: Model Documentation for
     * org.andromda.samples.carrental.admins.web.main.loadCarAndCarTypes
     * </p>
     *
     * @param form the associated form
     * @throws Throwable
     */
    public abstract void loadCarAndCarTypes(LoadCarAndCarTypesForm form)
        throws Throwable;


    /**
     * <p>
     * TODO: Model Documentation for returnCar
     * </p>
     * This method is called when 'returnCar' is triggered in the view 'Administrator Main Menu'.
     * It can be safely overridden in descendant classes.
     */
    protected void _administratorMainMenu_returnCar()
    {
        //this method can be overridden
    }

    /**
     * Retrieves administratorMainMenuReturnCar()
     *    
     * @return administratorMainMenuReturnCar
     * @throws Throwable
     */
    public String administratorMainMenuReturnCar()
        throws Throwable
    {
        this.setLastPostedFormClientId("administrationAdministratorMainMenuReturnCarForm");
        
        String forward=null;
        forward=((ReturnCarController)JsfUtils.resolveVariable("returnCarController")).startUseCase();
        
        return forward;
    }

    /**
     * <p>
     * TODO: Model Documentation for newCarType
     * </p>
     * This method is called when 'newCarType' is triggered in the view 'Administrator Main Menu'.
     * It can be safely overridden in descendant classes.
     */
    protected void _administratorMainMenu_newCarType()
    {
        //this method can be overridden
    }

    /**
     * Retrieves administratorMainMenuNewCarType()
     *    
     * @return administratorMainMenuNewCarType
     * @throws Throwable
     */
    public String administratorMainMenuNewCarType()
        throws Throwable
    {
        this.setLastPostedFormClientId("administrationAdministratorMainMenuNewCarTypeForm");
        
        String forward=null;
        forward=((RegisterCarTypeController)JsfUtils.resolveVariable("registerCarTypeController")).startUseCase();
        
        return forward;
    }

    /**
     * <p>
     * TODO: Model Documentation for newCar
     * </p>
     * This method is called when 'newCar' is triggered in the view 'Administrator Main Menu'.
     * It can be safely overridden in descendant classes.
     */
    protected void _administratorMainMenu_newCar()
    {
        //this method can be overridden
    }

    /**
     * Retrieves administratorMainMenuNewCar()
     *    
     * @return administratorMainMenuNewCar
     * @throws Throwable
     */
    public String administratorMainMenuNewCar()
        throws Throwable
    {
        this.setLastPostedFormClientId("administrationAdministratorMainMenuNewCarForm");
        
        String forward=null;
        forward=((RegisterCarController)JsfUtils.resolveVariable("registerCarController")).startUseCase();
        
        return forward;
    }

    /**
     * <p>
     * TODO: Model Documentation for adminstrators
     * </p>
     * This method is called when 'adminstrators' is triggered in the view 'Administrator Main Menu'.
     * It can be safely overridden in descendant classes.
     */
    protected void _administratorMainMenu_adminstrators()
    {
        //this method can be overridden
    }

    /**
     * Retrieves administratorMainMenuAdminstrators()
     *    
     * @return administratorMainMenuAdminstrators
     * @throws Throwable
     */
    public String administratorMainMenuAdminstrators()
        throws Throwable
    {
        this.setLastPostedFormClientId("administrationAdministratorMainMenuAdminstratorsForm");
        
        String forward=null;
        forward=((AdminAdminController)JsfUtils.resolveVariable("adminAdminController")).startUseCase();
        
        return forward;
    }

    /**
     * <p>
     * TODO: Model Documentation for reserveCar
     * </p>
     * This method is called when 'reserveCar' is triggered in the view 'Administrator Main Menu'.
     * It can be safely overridden in descendant classes.
     */
    protected void _administratorMainMenu_reserveCar()
    {
        //this method can be overridden
    }

    /**
     * Retrieves administratorMainMenuReserveCar()
     *    
     * @return administratorMainMenuReserveCar
     * @throws Throwable
     */
    public String administratorMainMenuReserveCar()
        throws Throwable
    {
        this.setLastPostedFormClientId("administrationAdministratorMainMenuReserveCarForm");
        
        String forward=null;
        forward=((CustomerReservesCarController)JsfUtils.resolveVariable("customerReservesCarController")).startUseCase();
        
        return forward;
    }

    /**
     * <p>
     * TODO: Model Documentation for HandOut
     * </p>
     * This method is called when 'HandOut' is triggered in the view 'Administrator Main Menu'.
     * It can be safely overridden in descendant classes.
     */
    protected void _administratorMainMenu_handOut()
    {
        //this method can be overridden
    }

    /**
     * Retrieves administratorMainMenuHandOut()
     *    
     * @return administratorMainMenuHandOut
     * @throws Throwable
     */
    public String administratorMainMenuHandOut()
        throws Throwable
    {
        this.setLastPostedFormClientId("administrationAdministratorMainMenuHandOutForm");
        
        String forward=null;
        forward=((HandOutCarController)JsfUtils.resolveVariable("handOutCarController")).startUseCase();
        
        return forward;
    }

    /**
     * Retrieves the {@link AdministratorMainMenuEditCarTypeFormImpl} form instance 
     *
     * @return AdministratorMainMenuEditCarTypeFormImpl
     */
    protected AdministratorMainMenuEditCarTypeFormImpl getAdministratorMainMenuEditCarTypeForm()
    {
        return (AdministratorMainMenuEditCarTypeFormImpl)JsfUtils.resolveVariable("administrationAdministratorMainMenuEditCarTypeForm");
    }

    /**
     * <p>
     * TODO: Model Documentation for editCarType
     * </p>
     * This method is called when 'editCarType' is triggered in the view 'Administrator Main Menu'.
     * It can be safely overridden in descendant classes.
     *
     * @param form the associated form
     */
    protected void _administratorMainMenu_editCarType(AdministratorMainMenuEditCarTypeFormImpl form)
    {
        //this method can be overridden
    }

    /**
     * Retrieves administratorMainMenuEditCarType()
     *    
     * @return administratorMainMenuEditCarType
     * @throws Throwable
     */
    public String administratorMainMenuEditCarType()
        throws Throwable
    {
        this.setLastPostedFormClientId("administrationAdministratorMainMenuEditCarTypeForm");
        
        String forward=null;
        this.getAdministratorMainMenuEditCarTypeForm().copyTo(getUseCaseParameters());
    
        forward=((RegisterCarTypeController)JsfUtils.resolveVariable("registerCarTypeController")).startUseCase();
        
        return forward;
    }

    /**
     * Retrieves the {@link AdministratorMainMenuEditCarFormImpl} form instance 
     *
     * @return AdministratorMainMenuEditCarFormImpl
     */
    protected AdministratorMainMenuEditCarFormImpl getAdministratorMainMenuEditCarForm()
    {
        return (AdministratorMainMenuEditCarFormImpl)JsfUtils.resolveVariable("administrationAdministratorMainMenuEditCarForm");
    }

    /**
     * <p>
     * TODO: Model Documentation for editCar
     * </p>
     * This method is called when 'editCar' is triggered in the view 'Administrator Main Menu'.
     * It can be safely overridden in descendant classes.
     *
     * @param form the associated form
     */
    protected void _administratorMainMenu_editCar(AdministratorMainMenuEditCarFormImpl form)
    {
        //this method can be overridden
    }

    /**
     * Retrieves administratorMainMenuEditCar()
     *    
     * @return administratorMainMenuEditCar
     * @throws Throwable
     */
    public String administratorMainMenuEditCar()
        throws Throwable
    {
        this.setLastPostedFormClientId("administrationAdministratorMainMenuEditCarForm");
        
        String forward=null;
        this.getAdministratorMainMenuEditCarForm().copyTo(getUseCaseParameters());
    
        forward=((RegisterCarController)JsfUtils.resolveVariable("registerCarController")).startUseCase();
        
        return forward;
    }

    /**
     * Retrieves the {@link AdministrationFormImpl} form instance 
     *
     * @return AdministrationFormImpl
     */
    protected AdministrationFormImpl getAdministrationForm()
    {
        return (AdministrationFormImpl)JsfUtils.resolveVariable("administrationAdministrationForm");
    }

    /**
     * This method is called when the use case 'Administration' starts.
     * It can be safely overridden in descendant classes.
     *
     * @param form the associated form
     */
    protected void _administration_started(AdministrationFormImpl form)
    {
        //this method can be overridden
    }

    /**
     * Retrieves the internal start use case
     *    
     * @return administration
     * @throws Throwable
     */
    protected String internalStartUseCase(Map<String,Object> useCaseParameters)
        throws Throwable
    {
        this.setLastPostedFormClientId("administrationAdministrationForm");
        
        String forward=null;
        final AdministrationFormImpl form =
            this.getAdministrationForm();
            
        //copy parameters form caller use case
        form.copyFrom(useCaseParameters);
        
        //trigger method execution
        _administration_started(form);

        forward = _preloadData(form);
        populateActionFormsAndPageVariables(null,forward,form);
        return forward;
    }

    /**
     * <p>
     * TODO: Model Documentation for preload data
     * </p>
     *
     * @param form the associated form
     * @return the forward view
     * @throws Throwable
     */
    protected String _preloadData(final AdministrationFormImpl form)
        throws Throwable
    {
        String forward = null;
    
        loadCarAndCarTypes(form);
        forward = "/org/andromda/samples/carrental/admins/web/main/administrator-main-menu.jsf";
        return forward;
    }

    /**
     * Returns a reference to the AdminService back-end service.
     *
     * @return ServiceLocator.instance().getAdminService()
     */
    protected final AdminService getAdminService()
    {
        try
        {
            return ServiceLocator.instance().getAdminService();
        }
        catch (final Throwable throwable)
        {
            throw new RuntimeException(throwable);
        }
    }


}