Clover coverage report - Code Coverage for tapestry-contrib release 4.0-alpha-3
Coverage timestamp: Mon May 16 2005 09:12:41 EDT
file stats: LOC: 188   Methods: 8
NCLOC: 143   Classes: 1
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover
 
 Source file Conditionals Statements Methods TOTAL
TreeDataView.java 0% 0% 0% 0%
coverage
 1   
 // Copyright 2004, 2005 The Apache Software Foundation
 2   
 //
 3   
 // Licensed under the Apache License, Version 2.0 (the "License");
 4   
 // you may not use this file except in compliance with the License.
 5   
 // You may obtain a copy of the License at
 6   
 //
 7   
 //     http://www.apache.org/licenses/LICENSE-2.0
 8   
 //
 9   
 // Unless required by applicable law or agreed to in writing, software
 10   
 // distributed under the License is distributed on an "AS IS" BASIS,
 11   
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12   
 // See the License for the specific language governing permissions and
 13   
 // limitations under the License.
 14   
 
 15   
 package org.apache.tapestry.contrib.tree.components;
 16   
 
 17   
 import java.util.Iterator;
 18   
 
 19   
 import org.apache.tapestry.BaseComponent;
 20   
 import org.apache.tapestry.IMarkupWriter;
 21   
 import org.apache.tapestry.IRequestCycle;
 22   
 import org.apache.tapestry.contrib.tree.model.ITreeDataModel;
 23   
 import org.apache.tapestry.contrib.tree.model.ITreeModel;
 24   
 import org.apache.tapestry.contrib.tree.model.ITreeRowSource;
 25   
 import org.apache.tapestry.contrib.tree.model.TreeRowObject;
 26   
 
 27   
 /**
 28   
  * @author tsveltin ?
 29   
  */
 30   
 public abstract class TreeDataView extends BaseComponent implements ITreeRowSource
 31   
 {
 32   
     private TreeRowObject m_objTreeRowObject = null;
 33   
 
 34   
     private int m_nTreeDeep = -1;
 35   
 
 36  0
     public TreeDataView()
 37   
     {
 38  0
         super();
 39  0
         initialize();
 40   
     }
 41   
 
 42  0
     public void initialize()
 43   
     {
 44  0
         m_objTreeRowObject = null;
 45  0
         m_nTreeDeep = -1;
 46   
     }
 47   
 
 48   
     public abstract TreeView getTreeView();
 49   
 
 50  0
     public void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
 51   
     {
 52   
         // render data
 53  0
         Object objExistedTreeModelSource = cycle
 54   
                 .getAttribute(ITreeRowSource.TREE_ROW_SOURCE_ATTRIBUTE);
 55  0
         cycle.setAttribute(ITreeRowSource.TREE_ROW_SOURCE_ATTRIBUTE, this);
 56   
 
 57  0
         TreeView objView = getTreeView();
 58  0
         ITreeModel objTreeModel = objView.getTreeModel();
 59  0
         ITreeDataModel objTreeDataModel = objTreeModel.getTreeDataModel();
 60   
 
 61  0
         Object objRoot = objTreeDataModel.getRoot();
 62  0
         Object objRootUID = objTreeDataModel.getUniqueKey(objRoot, null);
 63  0
         if (getShowRootNode())
 64   
         {
 65  0
             walkTree(
 66   
                     objRoot,
 67   
                     objRootUID,
 68   
                     0,
 69   
                     objTreeModel,
 70   
                     writer,
 71   
                     cycle,
 72   
                     TreeRowObject.FIRST_LAST_ROW,
 73   
                     new int[0],
 74   
                     true);
 75   
         }
 76   
         else
 77   
         {
 78  0
             boolean bFirst = true;
 79  0
             int nChildenCount = objTreeModel.getTreeDataModel().getChildCount(objRoot);
 80  0
             int nRowPossiotionType = nChildenCount == 1 ? TreeRowObject.FIRST_LAST_ROW
 81   
                     : TreeRowObject.FIRST_ROW;
 82  0
             for (Iterator iter = objTreeModel.getTreeDataModel().getChildren(objRoot); iter
 83   
                     .hasNext();)
 84   
             {
 85  0
                 Object objChild = iter.next();
 86  0
                 Object objChildUID = objTreeModel.getTreeDataModel()
 87   
                         .getUniqueKey(objChild, objRoot);
 88  0
                 boolean bChildLast = !iter.hasNext();
 89  0
                 if (!bFirst)
 90   
                 {
 91  0
                     if (bChildLast)
 92  0
                         nRowPossiotionType = TreeRowObject.LAST_ROW;
 93   
                     else
 94  0
                         nRowPossiotionType = TreeRowObject.MIDDLE_ROW;
 95   
                 }
 96   
 
 97  0
                 walkTree(
 98   
                         objChild,
 99   
                         objChildUID,
 100   
                         0,
 101   
                         objTreeModel,
 102   
                         writer,
 103   
                         cycle,
 104   
                         nRowPossiotionType,
 105   
                         new int[0],
 106   
                         bChildLast);
 107   
 
 108  0
                 bFirst = false;
 109   
             }
 110   
         }
 111   
 
 112  0
         cycle.setAttribute(ITreeRowSource.TREE_ROW_SOURCE_ATTRIBUTE, objExistedTreeModelSource);
 113   
     }
 114   
 
 115  0
     public void walkTree(Object objParent, Object objParentUID, int nDepth,
 116   
             ITreeModel objTreeModel, IMarkupWriter writer, IRequestCycle cycle,
 117   
             int nRowPossiotionType, int[] arrConnectImages, boolean bLast)
 118   
     {
 119  0
         m_nTreeDeep = nDepth;
 120  0
         int nNumberOfChildren = objTreeModel.getTreeDataModel().getChildCount(objParent);
 121  0
         boolean bLeaf = (nNumberOfChildren == 0) ? true : false;
 122  0
         m_objTreeRowObject = new TreeRowObject(objParent, objParentUID, nDepth, bLeaf,
 123   
                 nRowPossiotionType, arrConnectImages);
 124   
 
 125  0
         super.renderComponent(writer, cycle);
 126   
 
 127  0
         boolean bContain = objTreeModel.getTreeStateModel().isUniqueKeyExpanded(objParentUID);
 128  0
         if (bContain)
 129   
         {
 130  0
             int[] arrConnectImagesNew = new int[arrConnectImages.length + 1];
 131  0
             System.arraycopy(arrConnectImages, 0, arrConnectImagesNew, 0, arrConnectImages.length);
 132  0
             if (bLast)
 133  0
                 arrConnectImagesNew[arrConnectImagesNew.length - 1] = TreeRowObject.EMPTY_CONN_IMG;
 134   
             else
 135  0
                 arrConnectImagesNew[arrConnectImagesNew.length - 1] = TreeRowObject.LINE_CONN_IMG;
 136   
 
 137  0
             for (Iterator iter = objTreeModel.getTreeDataModel().getChildren(objParent); iter
 138   
                     .hasNext();)
 139   
             {
 140  0
                 Object objChild = iter.next();
 141  0
                 Object objChildUID = objTreeModel.getTreeDataModel().getUniqueKey(
 142   
                         objChild,
 143   
                         objParentUID);
 144  0
                 boolean bChildLast = !iter.hasNext();
 145  0
                 if (bChildLast)
 146  0
                     nRowPossiotionType = TreeRowObject.LAST_ROW;
 147   
                 else
 148  0
                     nRowPossiotionType = TreeRowObject.MIDDLE_ROW;
 149  0
                 walkTree(
 150   
                         objChild,
 151   
                         objChildUID,
 152   
                         nDepth + 1,
 153   
                         objTreeModel,
 154   
                         writer,
 155   
                         cycle,
 156   
                         nRowPossiotionType,
 157   
                         arrConnectImagesNew,
 158   
                         bChildLast);
 159   
             }
 160   
         }
 161   
     }
 162   
 
 163  0
     public int getTreeDeep()
 164   
     {
 165  0
         return m_nTreeDeep;
 166   
     }
 167   
 
 168   
     /**
 169   
      * @see org.apache.tapestry.contrib.tree.model.ITreeRowSource#getTreeRow()
 170   
      */
 171  0
     public TreeRowObject getTreeRow()
 172   
     {
 173  0
         return getTreeRowObject();
 174   
     }
 175   
 
 176  0
     public TreeRowObject getTreeRowObject()
 177   
     {
 178  0
         return m_objTreeRowObject;
 179   
     }
 180   
 
 181  0
     public void setTreeRowObject(TreeRowObject object)
 182   
     {
 183  0
         m_objTreeRowObject = object;
 184   
     }
 185   
 
 186   
     public abstract boolean getShowRootNode();
 187   
 
 188   
 }