schematreemodel.java
来自「数据仓库展示程序」· Java 代码 · 共 344 行 · 第 1/2 页
JAVA
344 行
/** Returns the index of child in parent. If <code>parent</code>
* is <code>null</code> or <code>child</code> is <code>null</code>,
* returns -1.
*
* @param parent a note in the tree, obtained from this data source
* @param child the node we are interested in
* @return the index of the child in the parent, or -1 if either
* <code>child</code> or <code>parent</code> are <code>null</code>
*
*/
public int getIndexOfChild(Object parent, Object child) {
if (parent instanceof MondrianDef.Column) {
return -1;
} else if (parent instanceof MondrianDef.Cube) {
MondrianDef.Cube c = (MondrianDef.Cube)parent;
if (child instanceof MondrianDef.CubeDimension) {
for (int i=0; i<c.dimensions.length; i++) {
if (c.dimensions[i].equals(child))
return i;
}
return -1;
} else if (child instanceof MondrianDef.Measure) {
for (int i=0; i<c.measures.length; i++) {
if (c.measures[i].equals(child))
return i + c.dimensions.length;
}
return -1;
} else {
return -1;
}
} else if (parent instanceof MondrianDef.Dimension) {
MondrianDef.Dimension d = (MondrianDef.Dimension)parent;
if (child instanceof MondrianDef.Hierarchy) {
for (int i=0; i<d.hierarchies.length; i++) {
if (d.hierarchies[i].equals(child))
return i;
}
return -1;
} else {
return -1;
}
} else if (parent instanceof MondrianDef.ExpressionView) {
MondrianDef.ExpressionView ev = (MondrianDef.ExpressionView)parent;
if (child instanceof MondrianDef.SQL) {
for (int i=0; i<ev.expressions.length; i++) {
if (ev.expressions[i].equals(child))
return i;
}
return -1;
} else {
return -1;
}
} else if (parent instanceof MondrianDef.Hierarchy) {
MondrianDef.Hierarchy h = (MondrianDef.Hierarchy)parent;
if (child instanceof MondrianDef.Level) {
for (int i=0; i<h.levels.length; i++) {
if (h.levels[i].equals(child))
return i;
}
return -1;
} else if (child instanceof MondrianDef.Parameter) {
for (int i=0; i<h.memberReaderParameters.length; i++) {
if (h.memberReaderParameters[i].equals(child))
return i + h.levels.length;
}
return -1;
} else {
return -1;
}
} else if (parent instanceof MondrianDef.Level) {
MondrianDef.Level l = (MondrianDef.Level)parent;
if (child instanceof MondrianDef.Property) {
for (int i=0; i<l.properties.length; i++) {
if (l.properties[i].equals(child))
return i;
}
return -1;
} else {
return -1;
}
} else if (parent instanceof MondrianDef.Measure) {
MondrianDef.Measure m = (MondrianDef.Measure)parent;
return -1;
} else if (parent instanceof MondrianDef.Schema) {
MondrianDef.Schema s = (MondrianDef.Schema)parent;
//return children in this order: cubes, virtual cubes, dimensions
if (child instanceof MondrianDef.Cube) {
for (int i=0; i<s.cubes.length; i++) {
if (s.cubes[i].equals(child))
return i;
}
return -1;
} else if (child instanceof MondrianDef.VirtualCube) {
for (int i=0; i<s.virtualCubes.length; i++) {
if (s.virtualCubes[i].equals(child))
return i + s.cubes.length;
}
return -1;
} else if (child instanceof MondrianDef.Dimension) {
for (int i=0; i<s.dimensions.length; i++) {
if (s.dimensions[i].equals(child))
return i + s.cubes.length + s.dimensions.length;
}
return -1;
} else {
return -1;
}
} else if (parent instanceof MondrianDef.View) {
MondrianDef.View v = (MondrianDef.View)parent;
if (child instanceof MondrianDef.SQL) {
for (int i=0; i<v.selects.length; i++) {
if (v.selects[i].equals(child)) {
return i;
}
}
return -1;
}
return -1;
} else if (parent instanceof MondrianDef.VirtualCube) {
MondrianDef.VirtualCube c = (MondrianDef.VirtualCube)parent;
if (child instanceof MondrianDef.VirtualCubeDimension) {
for (int i=0; i<c.dimensions.length; i++) {
if (c.dimensions[i].equals(child))
return i;
}
return -1;
} else if (child instanceof MondrianDef.VirtualCubeMeasure) {
for (int i=0; i<c.measures.length; i++) {
if (c.measures[i].equals(child))
return i + c.dimensions.length;
}
return -1;
} else {
return -1;
}
} else if (parent instanceof MondrianDef.VirtualCubeDimension) {
MondrianDef.VirtualCubeDimension d = (MondrianDef.VirtualCubeDimension)parent;
return -1;
} else if (parent instanceof MondrianDef.VirtualCubeMeasure) {
MondrianDef.VirtualCubeMeasure d = (MondrianDef.VirtualCubeMeasure)parent;
return -1;
} else {
return -1;
}
}
/** Returns the root of the tree. Returns <code>null</code>
* only if the tree has no nodes.
*
* @return the root of the tree
*
*/
public Object getRoot() {
return schema;
}
/** Returns <code>true</code> if <code>node</code> is a leaf.
* It is possible for this method to return <code>false</code>
* even if <code>node</code> has no children.
* A directory in a filesystem, for example,
* may contain no files; the node representing
* the directory is not a leaf, but it also has no children.
*
* @param node a node in the tree, obtained from this data source
* @return true if <code>node</code> is a leaf
*
*/
public boolean isLeaf(Object node) {
return getChildCount(node) == 0;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?