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 + -
显示快捷键?