Package com.agiletec.plugins.jpfacetnav.aps.tags

Source Code of com.agiletec.plugins.jpfacetnav.aps.tags.HasToViewFacetNodeTag

/*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
* This file is part of Entando software.
* Entando is a free software;
* You can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2.
*
* See the file License for the specific language governing permissions  
* and limitations under the License
*
*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
*/
package com.agiletec.plugins.jpfacetnav.aps.tags;

import java.util.List;

import javax.servlet.jsp.JspException;

import com.agiletec.aps.system.ApsSystemUtils;
import com.agiletec.aps.system.common.tree.ITreeNode;
import com.agiletec.aps.system.common.tree.ITreeNodeManager;

/**
*
* @author E.Santoboni
*/
public class HasToViewFacetNodeTag extends AbstractFacetNavTag {

  @Override
  public int doStartTag() throws JspException {
    List<String> requiredFacets = super.getRequiredFacets();
    this.setRequiredFacets(requiredFacets);
    try {
      boolean hasToView =
        this.getRequiredFacets().contains(this.getFacetNodeCode())
        || (this.isParentSeleted() || this.isSelectedOneChild())
        //&& !this.hasBrotherSelected() //&& NON HA FRATELLI SELEZIONATI
        //&& !this.hasBrotherWithChildSelected();//&& NON HA FRATELLI CON FIGLI SELEZIONATI
        ;
      if (hasToView) {
        return EVAL_BODY_INCLUDE;
      } else {
        return super.doStartTag();
      }
    } catch (Throwable t) {
      ApsSystemUtils.logThrowable(t, this, "doStartTag");
      throw new JspException("Error initialization tag", t);
    }
  }

  /*
  private boolean hasBrotherSelected() {
    ITreeNodeManager facetManager = super.getFacetManager();
    ITreeNode parent = facetManager.getNode(this.getFacetNodeCode()).getParent();
    for (int i=0; i<parent.getChildren().length; i++) {
      ITreeNode node = parent.getChildren()[i];
      if (!node.getCode().equals(this.getFacetNodeCode()) && this.getRequiredFacets().contains(node.getCode())) return true;
    }
    return false;
  }

  private boolean hasBrotherWithChildSelected() {
    ITreeNodeManager facetManager = super.getFacetManager();
    ITreeNode parent = facetManager.getNode(this.getFacetNodeCode()).getParent();
    for (int i=0; i<parent.getChildren().length; i++) {
      ITreeNode node = parent.getChildren()[i];
      if (!node.getCode().equals(this.getFacetNodeCode())) {
        boolean check = this.checkSelectChild(node, this.getFacetNodeCode());
        if (check) return true;
      }
    }
    return false;
  }
   */

  /**
   * Returns true if a child is selected.
   * @return true if a child is selected
   */
  private boolean isSelectedOneChild() {
    ITreeNodeManager facetManager = super.getFacetManager();
    List<String> requiredFacets = this.getRequiredFacets();
    for (int i=0; i<requiredFacets.size(); i++) {
      String requiredFacet = requiredFacets.get(i);
      ITreeNode facet = facetManager.getNode(requiredFacet);
      if (null != facet) {
        boolean check = this.checkSelectChild(facet, this.getFacetNodeCode());
        if (check) return true;
      }
    }
    return false;
  }

  /**
   * Returns true if the selected child is checked
   * @param facet
   * @param codeForCheck
   * @return true if the selected child is selected
   */
  private boolean checkSelectChild(ITreeNode facet, String codeForCheck) {
    if (facet.getCode().equals(codeForCheck)) {
      return true;
    }
    ITreeNode parentFacet = facet.getParent();
    if (null != parentFacet && !parentFacet.getCode().equals(parentFacet.getParent().getCode())) {
      return this.checkSelectChild(parentFacet, codeForCheck);
    }
    return false;
  }

  /**
   * Returns true if a parent is selected
   * @return true if a parent is selected
   */
  private boolean isParentSeleted() {
    ITreeNodeManager facetManager = super.getFacetManager();
    ITreeNode facet = facetManager.getNode(this.getFacetNodeCode());
    ITreeNode parent = facet.getParent();
    return this.getRequiredFacets().contains(parent.getCode());
  }

  public String getFacetNodeCode() {
    return _facetNodeCode;
  }
  public void setFacetNodeCode(String facetNodeCode) {
    this._facetNodeCode = facetNodeCode;
  }

  public List<String> getRequiredFacets() {
    return _requiredFacets;
  }
  public void setRequiredFacets(List<String> requiredFacets) {
    this._requiredFacets = requiredFacets;
  }

  private String _facetNodeCode;//="${facetNode.code}"
  private List<String> _requiredFacets;//="requiredFacets"

}
TOP

Related Classes of com.agiletec.plugins.jpfacetnav.aps.tags.HasToViewFacetNodeTag

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.