schematreemodel.java
来自「数据仓库展示程序」· Java 代码 · 共 344 行 · 第 1/2 页
JAVA
344 行
/*
* $File: //open/mondrian/src/main/mondrian/gui/SchemaTreeModel.java $
*
* $DateTime: 2005/02/10 20:34:17 $ - $Change: 3188 $ - $Revision: #10 $ - $Author: jhyde $
*/
package mondrian.gui;
import mondrian.olap.MondrianDef;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import java.util.Vector;
/**
*
* @author sean
*/
public class SchemaTreeModel extends DefaultTreeModel {
/**
* @param arg0
*/
public SchemaTreeModel() {
super(null);
// TODO Auto-generated constructor stub
}
MondrianDef.Schema schema;
private Vector treeModelListeners = new Vector();
/** Creates a new instance of SchemaTreeModel */
public SchemaTreeModel(MondrianDef.Schema s) {
super(new DefaultMutableTreeNode(s.name));
this.schema = s;
}
/** Returns the child of <code>parent</code> at index <code>index</code>
* in the parent's
* child array. <code>parent</code> must be a node previously obtained
* from this data source. This should not return <code>null</code>
* if <code>index</code>
* is a valid index for <code>parent</code> (that is <code>index >= 0 &&
* index < getChildCount(parent</code>)).
*
* @param parent a node in the tree, obtained from this data source
* @return the child of <code>parent</code> at index <code>index</code>
*
*/
public Object getChild(Object parent, int index) {
if (parent instanceof MondrianDef.Column) {
MondrianDef.Column c = (MondrianDef.Column)parent;
} else if (parent instanceof MondrianDef.Cube) {
MondrianDef.Cube c = (MondrianDef.Cube)parent;
//return children in this order: dimensions, measures
if (c.dimensions.length > index) {
return c.dimensions[index];
} else if (c.measures.length + c.dimensions.length > index) {
return c.measures[index - c.dimensions.length];
}
} else if (parent instanceof MondrianDef.Dimension) {
MondrianDef.Dimension d = (MondrianDef.Dimension)parent;
if (d.hierarchies.length > index) {
return d.hierarchies[index];
}
} else if (parent instanceof MondrianDef.DimensionUsage) {
MondrianDef.DimensionUsage c = (MondrianDef.DimensionUsage)parent;
} else if (parent instanceof MondrianDef.ExpressionView) {
MondrianDef.ExpressionView ev = (MondrianDef.ExpressionView)parent;
if (ev.expressions.length > index) {
return ev.expressions[index];
}
} else if (parent instanceof MondrianDef.Hierarchy) {
MondrianDef.Hierarchy h = (MondrianDef.Hierarchy)parent;
//return children in this order: levels, memberReaderParameters
if (h.levels.length > index) {
return h.levels[index];
} else if (h.memberReaderParameters.length + h.levels.length > index) {
return h.memberReaderParameters[index];
}
} else if (parent instanceof MondrianDef.Join) {
MondrianDef.Join j = (MondrianDef.Join)parent;
} else if (parent instanceof MondrianDef.Level) {
MondrianDef.Level l = (MondrianDef.Level)parent;
if (l.properties.length > index) {
return l.properties[index];
}
} else if (parent instanceof MondrianDef.Measure) {
MondrianDef.Measure m = (MondrianDef.Measure)parent;
} else if (parent instanceof MondrianDef.Parameter) {
MondrianDef.Parameter p = (MondrianDef.Parameter)parent;
} else if (parent instanceof MondrianDef.Property) {
MondrianDef.Property p = (MondrianDef.Property)parent;
} else if (parent instanceof MondrianDef.Schema) {
MondrianDef.Schema s = (MondrianDef.Schema)parent;
//return children in this order: cubes, virtual cubes, dimensions
if (s.cubes.length > index) {
return s.cubes[index];
} else if (s.virtualCubes.length + s.cubes.length > index) {
return s.virtualCubes[index - s.cubes.length];
} else if (s.dimensions.length + s.virtualCubes.length + s.cubes.length > index) {
return s.dimensions[index - s.cubes.length - s.virtualCubes.length];
}
} else if (parent instanceof MondrianDef.SQL) {
MondrianDef.SQL s = (MondrianDef.SQL)parent;
} else if (parent instanceof MondrianDef.Table) {
MondrianDef.Table t = (MondrianDef.Table)parent;
} else if (parent instanceof MondrianDef.View) {
MondrianDef.View v = (MondrianDef.View)parent;
if (v.selects.length > index) {
return v.selects[index];
}
} else if (parent instanceof MondrianDef.VirtualCube) {
MondrianDef.VirtualCube c = (MondrianDef.VirtualCube)parent;
//return children in this order: dimensions, measures
if (c.dimensions.length > index) {
return c.dimensions[index];
} else if (c.measures.length + c.dimensions.length > index) {
return c.measures[index - c.dimensions.length];
}
} else if (parent instanceof MondrianDef.VirtualCubeDimension) {
MondrianDef.VirtualCubeDimension vcd = (MondrianDef.VirtualCubeDimension)parent;
} else if (parent instanceof MondrianDef.VirtualCubeMeasure) {
MondrianDef.VirtualCubeMeasure vcd = (MondrianDef.VirtualCubeMeasure)parent;
}
return null;
}
/** Returns the number of children of <code>parent</code>.
* Returns 0 if the node
* is a leaf or if it has no children. <code>parent</code> must be a node
* previously obtained from this data source.
*
* @param parent a node in the tree, obtained from this data source
* @return the number of children of the node <code>parent</code>
*
*/
public int getChildCount(Object parent) {
int childCount = 0;
if (parent instanceof MondrianDef.Cube) {
MondrianDef.Cube c = (MondrianDef.Cube)parent;
if( c.measures != null ) childCount += c.measures.length;
if( c.dimensions != null ) childCount += c.dimensions.length;
} else if (parent instanceof MondrianDef.Dimension) {
MondrianDef.Dimension d = (MondrianDef.Dimension)parent;
if( d.hierarchies != null ) childCount += d.hierarchies.length;
} else if (parent instanceof MondrianDef.ExpressionView) {
MondrianDef.ExpressionView ev = (MondrianDef.ExpressionView)parent;
if( ev.expressions != null ) childCount = ev.expressions.length;
} else if (parent instanceof MondrianDef.Hierarchy) {
MondrianDef.Hierarchy h = (MondrianDef.Hierarchy)parent;
if( h.memberReaderParameters != null ) childCount += h.memberReaderParameters.length;
if( h.levels != null ) childCount += h.levels.length;
} else if (parent instanceof MondrianDef.Level) {
MondrianDef.Level l = (MondrianDef.Level)parent;
if( l.properties != null ) childCount = l.properties.length;
} else if (parent instanceof MondrianDef.Schema) {
MondrianDef.Schema s = (MondrianDef.Schema)parent;
if( s.dimensions != null ) childCount += s.dimensions.length;
if( s.virtualCubes != null ) childCount += s.virtualCubes.length;
if( s.cubes != null ) childCount += s.cubes.length;
} else if (parent instanceof MondrianDef.View) {
MondrianDef.View v = (MondrianDef.View)parent;
if( v.selects != null ) childCount += v.selects.length;
} else if (parent instanceof MondrianDef.VirtualCube) {
MondrianDef.VirtualCube c = (MondrianDef.VirtualCube)parent;
if( c.measures != null ) childCount += c.measures.length;
if( c.dimensions != null ) childCount += c.dimensions.length;
}
return childCount;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?