Package com.subgraph.vega.ui.tree.web

Source Code of com.subgraph.vega.ui.tree.web.WebPathTreeStrategy

/*******************************************************************************
* Copyright (c) 2011 Subgraph.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Subgraph - initial API and implementation
******************************************************************************/
package com.subgraph.vega.ui.tree.web;

import java.util.ArrayList;
import java.util.List;

import com.subgraph.vega.api.model.web.IWebPath;
import com.subgraph.vega.api.model.web.IWebResponse;
import com.subgraph.vega.ui.tree.ITreeAdapter;

public class WebPathTreeStrategy implements ITreeAdapter<IWebPath> {

  @Override
  public Object[] getChildren(IWebPath item) {
    List<Object> children = new ArrayList<Object>();
    for(IWebPath cp : item.getChildPaths()) {
      Object node = collapsedNode(item, cp);
      if(node != null)
        children.add(node);
      for(IWebResponse r: cp.getGetResponses())
        children.add(r);
      for(IWebResponse r: cp.getPostResponses())
        children.add(r);
    }
   
    return children.toArray();
  }
 
  private Object collapsedNode(IWebPath root, IWebPath p) {
    boolean noResponses = (p.getGetResponses().size() == 0) && (p.getPostResponses().size() == 0);
    if(p.getChildPaths().size() == 1 && noResponses)
      return collapsedNode(root, p.getChildPaths().iterator().next());
    else if(p.getChildPaths().isEmpty() && !noResponses) {
      IWebPath pp = p.getParentPath();
      if(pp == null || pp == root)
        return null;
      else
        return pp;
    } else {
      return p;
    }
  }
 
  @Override
  public int getChildrenCount(IWebPath item) {
    return getChildren(item).length;
  }

  @Override
  public Object getParent(IWebPath item) {
    if(item.getParentPath() == null)
      return item.getMountPoint().getWebHost();
    else if(item.getParentPath().getChildPaths().size() == 1)
      return getParent(item.getParentPath());
    else
      return item.getParentPath();
  }

  @Override
  public String getLabel(IWebPath item) {
    if(item.getParentPath() == null)
      return "/";
    else if(getChildrenCount(item) == 0 && (item.getPathComponent().contains(".") || item.getMimeType() != null)) {
      return item.getPathComponent();
     
    } else {
      return prevLabel(item) + "/" + item.getPathComponent();
    }
  }
 
  private String prevLabel(IWebPath item) {
    IWebPath pp = item.getParentPath();
    if(pp.getChildPaths().size() == 1 && pp.getParentPath() != null)
      return getLabel(pp);
    else
      return "";
  }

 
}
TOP

Related Classes of com.subgraph.vega.ui.tree.web.WebPathTreeStrategy

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.