1 32 33 package it.businesslogic.ireport.data.olap; 34 35 import it.businesslogic.ireport.util.Misc; 36 import javax.swing.tree.DefaultMutableTreeNode ; 37 import mondrian.olap.*; 38 42 public class WalkableWrapper { 43 44 Object walkable = null; 45 String name = ""; 46 private DefaultMutableTreeNode parentNode = null; 47 48 49 50 public WalkableWrapper(Object obj, DefaultMutableTreeNode parentNode) { 51 this.walkable = obj; 52 53 this.parentNode = parentNode; 54 if (walkable instanceof QueryAxis) 55 { 56 name = ((QueryAxis)walkable).getAxisName(); 57 } 58 else if (walkable instanceof FunCall) 59 { 60 name = ((FunCall)walkable).getFunName(); 61 } 62 else if (walkable instanceof Level) 63 { 64 name = ((Level)walkable).getName(); 65 } 66 else if (walkable instanceof Hierarchy) 67 { 68 name = ((Hierarchy)walkable).getName(); 69 } 70 else if (walkable instanceof Member) 71 { 72 name = ((Member)walkable).getName(); 73 } 74 else 75 { 76 name = getWalkable() + " (" + walkable.getClass().getName(); 77 } 78 } 79 80 public boolean isMeasure() 81 { 82 return (walkable instanceof Member) && ((Member)walkable).isMeasure(); 83 } 84 85 public String getExpression() 86 { 87 if (isMeasure()) 88 { 89 int qmarks = parentNode.getChildCount(); 90 String s = "Data(" + walkable + ""; 91 for (int i=0; i<qmarks-1; ++i) 92 { 93 s +=",?"; 94 } 95 s +=")"; 96 return s; 97 } 98 else if (walkable instanceof Level) 99 { 100 DefaultMutableTreeNode node = getParentNode(); 102 DefaultMutableTreeNode nodeParent = (DefaultMutableTreeNode )getParentNode().getParent(); 103 while (nodeParent.getParent() != null) 104 { 105 node = nodeParent; 106 nodeParent = (DefaultMutableTreeNode )nodeParent.getParent(); 107 } 108 int axisIndex = nodeParent.getIndex( node ); 109 110 String s = ""; 111 switch (axisIndex) 112 { 113 case 0: 114 s = "Columns"; 115 break; 116 case 1: 117 s = "Rows"; 118 break; 119 case 2: 120 s = "Pages"; 121 break; 122 case 3: 123 s = "Chapters"; 124 break; 125 case 4: 126 s = "Sections"; 127 break; 128 default: 129 s = "Axis(" + axisIndex +")"; 130 } 131 132 s = s + Misc.string_replace("][","].[", ""+ walkable) + ""; 133 134 return s; 135 } 136 else 137 { 138 return null; 139 } 140 141 } 143 144 public Object getWalkable() 145 { 146 return walkable; 147 } 148 149 public void setWalkable(Object w) 150 { 151 walkable = w; 152 } 153 154 public String toString() 155 { 156 return name; 157 158 } 159 160 public DefaultMutableTreeNode getParentNode() { 161 return parentNode; 162 } 163 164 public void setParentNode(DefaultMutableTreeNode parentNode) { 165 this.parentNode = parentNode; 166 } 167 168 } 169 | Popular Tags |