/** {@inheritDoc} */
  @Override
  public ActionForward execute(
      @SuppressWarnings("unused") ComponentContext context,
      @SuppressWarnings("unused") ActionMapping mapping,
      @SuppressWarnings("unused") ActionForm form,
      HttpServletRequest request,
      @SuppressWarnings("unused") HttpServletResponse response)
      throws Exception {
    HttpSession session = request.getSession();

    Profile profile = SessionMethods.getProfile(session);
    PathQuery query = SessionMethods.getQuery(session);
    DisplayConstraintFactory factory = getFactory(session);

    if (session.getAttribute("newConstraintPath") != null) {
      // ADDING A NEW CONSTRAINT
      DisplayPath displayPath = (DisplayPath) session.getAttribute("newConstraintPath");
      DisplayConstraint displayConstraint = factory.get(displayPath.getPath(), profile, query);
      request.setAttribute("dec", displayConstraint);
      session.removeAttribute("newConstraintPath");
      saveToken(request);
    } else if (session.getAttribute("editingConstraint") != null) {
      // EDITING AN EXISTING CONSTRAINT
      PathConstraint con = (PathConstraint) session.getAttribute("editingConstraint");
      DisplayConstraint displayConstraint;
      if (query instanceof TemplateQuery) {
        TemplateQuery template = (TemplateQuery) query;
        displayConstraint = factory.get(con, profile, template);
      } else {
        displayConstraint = factory.get(con, profile, query);
      }

      request.setAttribute("dec", displayConstraint);
      session.removeAttribute("editingConstraint");
      if (session.getAttribute("editingTemplateConstraint") != null) {
        SessionMethods.moveToRequest("editingTemplateConstraint", request);
      }
      saveToken(request);
    } else if (session.getAttribute("joinStylePath") != null) {
      // ONLY EDITING JOIN STYLE
      String joinStylePathStr = (String) session.getAttribute("joinStylePath");
      Path joinStylePath = query.makePath(joinStylePathStr);
      DisplayConstraint displayConstraint = factory.get(joinStylePath, profile, query);
      session.removeAttribute("joinStylePath");

      if (query.getOuterMap().containsKey(joinStylePathStr)) {
        request.setAttribute("joinType", "outer");
      } else {
        request.setAttribute("joinType", "inner");
      }
      request.setAttribute("dec", displayConstraint);
      request.setAttribute("joinStyleOnly", "true");
      saveToken(request);
    }

    return null;
  }