Package com.din.din.webapp.beans.interfaces

Source Code of com.din.din.webapp.beans.interfaces.ProjectWizard

package com.din.din.webapp.beans.interfaces;

import javax.faces.application.FacesMessage;
import javax.persistence.EntityManager;

import org.primefaces.context.RequestContext;
import org.primefaces.event.FlowEvent;

import com.din.din.model.dao.ProjectDAO;
import com.din.din.model.dao.QuantityTypeDAO.MeasurementSystem;
import com.din.din.model.entities.Project;
import com.din.din.model.entities.Project.ProjectState;
import com.din.din.model.util.EntityCachingManager;
import com.din.din.model.webapp.Wizard;
import com.din.din.webapp.beans.util.BeanUtil;
import com.din.din.webapp.beans.util.LoginUtil;
import com.google.appengine.api.users.User;

public class ProjectWizard extends Wizard<Project> {
  private boolean preferMetricSystem = true;
 
  public ProjectWizard(EntityCachingManager cache) {
    this(null, cache);
   
    User user = LoginUtil.getCurrentUser();

    Project project = ProjectDAO.getOrCreateProjectByUser(user, cache);
    setEntity(project);
    setFinished(project.getState() == ProjectState.ACTIVE);
  }
 
  public ProjectWizard(Project project, EntityCachingManager cache) {
    super(project, cache);
   
    if(project != null) {
      setFinished(project.getState() == ProjectState.ACTIVE);
    }
  }

  public Project getProject() {
    return getEntity();
  }

  @Override
  public String onTransition(FlowEvent event) { 
    final String[] tabIds = new String[] { "preferences", "agreement", "confirm" };
   
    if(event.getOldStep().equals(tabIds[1]) && event.getNewStep().equals(tabIds[2]) && !getEntity().isConfirmedAgreement()) {
      BeanUtil.addMessageFmt(FacesMessage.SEVERITY_WARN, "start.agreement", "start.agreement.youmustagree");
     
      RequestContext context = RequestContext.getCurrentInstance();
      context.update("startForm:growl");
     
      return event.getOldStep();
    }
    return event.getNewStep();
  }
 
  @Override
  protected void onPreSave(EntityManager entityManager, Project project) throws Exception {
    ProjectDAO.createDefaults(entityManager, project, preferMetricSystem ? MeasurementSystem.Metric : MeasurementSystem.Imperial, getCache());
  }

 
  @Override
  protected String onSaveSuccess(Project project) {
    return "build?faces-redirect=true";
  }
 
  @Override
  public synchronized String save(boolean committed) {
    Project project = getEntity();
   
    if(committed) {
      project.setState(ProjectState.ACTIVE);
    }
   
    return super.save(committed);   
  }

  @Override
  protected String onSaveFailure(Project project) {
    project.setState(ProjectState.CONFIGURE);
    return super.onSaveFailure(project);
  }

  public boolean isPreferMetricSystem() {
    return preferMetricSystem;
  }

  public void setPreferMetricSystem(boolean preferMetricSystem) {
    this.preferMetricSystem = preferMetricSystem;
  }
}
TOP

Related Classes of com.din.din.webapp.beans.interfaces.ProjectWizard

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.