Subversion Repositories WebE

Rev

Rev 33 | Rev 35 | Go to most recent revision | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed

1
package ch.ffhs.webE.action;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.StrutsStatics;

import ch.ffhs.webE.dao.TermDAOImpl;
import ch.ffhs.webE.dao.UserDAOImpl;
import ch.ffhs.webE.domain.ObjectEntity;
import ch.ffhs.webE.domain.ObjectType;
import ch.ffhs.webE.domain.Term;
import ch.ffhs.webE.domain.User;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

/**
 * Implements actions applicable to term editing
 *
 * @author Thomas Lahn
 */

public class TermAction extends ActionSupport implements ModelDriven<Term>
{
  private static final long serialVersionUID = 1L;

  private Term term = new Term();
  private List<Term> termList = new ArrayList<Term>();
  private final TermDAOImpl termDAO = new TermDAOImpl();
  private final UserDAOImpl userDAO = new UserDAOImpl();

  /**
   * Session object
   */

  Map<String, Object> session = ActionContext.getContext().getSession();

  private final HttpServletRequest request = (HttpServletRequest) ActionContext
      .getContext().get(StrutsStatics.HTTP_REQUEST);

  /*
   * (non-Javadoc)
   *
   * @see com.opensymphony.xwork2.ModelDriven#getModel()
   */

  public Term getModel()
  {
    return this.term;
  }

  /**
   * Executes the DB query to save the user
   *
   * @return {@link Action#SUCCESS}
   */

  public String save()
  {
    if (!"1".equals(this.request.getParameter("edit")))
    {
      User user = this.userDAO.searchUsername((String) this.session
          .get("username"));
      ObjectEntity obj = new ObjectEntity(user,
          new ObjectType(ObjectType.TERM), user, null, new Date(), false,
          this.term, null, null);
      this.term.setObject(obj);
    }

    if (this.termDAO.saveOrUpdate(this.term))
    {
      return Action.SUCCESS;
    }

    return Action.ERROR;
  }

  /**
   * DB query for term list
   *
   * @return SUCCESS
   */

  public String list()
  {
    this.termList = this.termDAO.getTerms();
    return Action.SUCCESS;
  }

  /**
   * @return {@link Action#SUCCESS} if <var>id</var> > 0, {@link Action#ERROR}
   *         otherwise
   */

  public String edit()
  {
    int id = this.getIdParameter();

    if (id > 0)
    {
      this.term = this.termDAO.getTermById(id);
      if (this.term != null)
      {
        this.term.edit = true;
        return Action.SUCCESS;
      }
    }

    return Action.ERROR;
  }

  /**
   * Gets the ID Parameter for update / delete requests
   *
   * @return int from the ID request. If not set or wrong, it gives back -1
   */

  private int getIdParameter()
  {
    int id = -1;
    try
    {
      id = Integer.parseInt(this.request.getParameter("id")); //$NON-NLS-1$
    }
    catch (Exception e)
    {
      /* TODO: Logging - wrong parameter set */
    }

    return id;
  }

  /**
   * deletes a user, gets the ID from the "id" parameter that was submitted with
   * the HTTP request
   *
   * @return String - either SUCCESS or ERROR constant
   */

  public String delete()
  {

    int id = this.getIdParameter();

    /* Check for malicious ID values */
    if (id > 0)
    {
      this.termDAO.deleteTerm(id);
      return Action.SUCCESS;
    }
    else
    {
      return Action.ERROR;
    }
  }

  /*
   * Standard getters and setters
   */


  /**
   * @return The term edited with this instance
   */

  public Term getTerm()
  {
    return this.term;
  }

  /**
   * @param term
   *          The term edited with this instance
   */

  public void setTerm(Term term)
  {
    this.term = term;
  }

  /**
   * @return The list of terms edited with this instance
   */

  public List<Term> getTermList()
  {
    return this.termList;
  }

  /**
   * @param termList
   *          The list of terms edited with this instance
   */

  public void setTermList(List<Term> termList)
  {
    this.termList = termList;
  }
}