Skip to content

Commit

Permalink
MONDRIAN: Additional fixes for PSW-11, added CalculatedMemberProperty…
Browse files Browse the repository at this point in the history
… option for Measures. Also fixed some potential null pointer bugs when building the tree model.

[git-p4: depot-paths = "//open/mondrian/": change = 13057]
  • Loading branch information
Will Gorman committed Sep 23, 2009
1 parent 0b45c8c commit 0dee5b2
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 14 deletions.
70 changes: 61 additions & 9 deletions src/main/mondrian/gui/SchemaExplorer.java
Expand Up @@ -3467,25 +3467,34 @@ protected void addCalculatedMemberProperty(ActionEvent evt) {
parentIndex--)
{
final Object p = tpath.getPathComponent(parentIndex);
if (p instanceof MondrianGuiDef.CalculatedMember) {
if (p instanceof MondrianGuiDef.CalculatedMember
|| p instanceof MondrianGuiDef.Measure)
{
path = p;
break;
}
}
}

if (!(path instanceof MondrianGuiDef.CalculatedMember)) {
if (path instanceof MondrianGuiDef.CalculatedMember) {
addCalcMemberPropToCalcMember(
(MondrianGuiDef.CalculatedMember)path, parentIndex, tpath);
} else if (path instanceof MondrianGuiDef.Measure) {
addCalcMemberPropToMeasure(
(MondrianGuiDef.Measure)path, parentIndex, tpath);
} else {
JOptionPane.showMessageDialog(
this, getResourceConverter().getString(
"schemaExplorer.calculatedMemberNotSelected.alert",
"Calculated Member not selected."),
"Calculated Member or Measure not selected."),
alert, JOptionPane.WARNING_MESSAGE);
return;
}
}

MondrianGuiDef.CalculatedMember calcMember =
(MondrianGuiDef.CalculatedMember) path;

protected void addCalcMemberPropToCalcMember(
MondrianGuiDef.CalculatedMember calcMember,
int parentIndex,
TreePath tpath)
{
MondrianGuiDef.CalculatedMemberProperty property =
new MondrianGuiDef.CalculatedMemberProperty();
property.name = "";
Expand Down Expand Up @@ -3522,6 +3531,48 @@ this, getResourceConverter().getString(
setTableCellFocus(0);
}

protected void addCalcMemberPropToMeasure(
MondrianGuiDef.Measure measure,
int parentIndex,
TreePath tpath)
{

MondrianGuiDef.CalculatedMemberProperty property =
new MondrianGuiDef.CalculatedMemberProperty();
property.name = "";

if (measure.memberProperties == null) {
measure.memberProperties =
new MondrianGuiDef.CalculatedMemberProperty[0];
}
property.name =
getNewName(
getResourceConverter().getString(
"schemaExplorer.newProperty.title",
"New Property"),
measure.memberProperties);
NodeDef[] temp = measure.memberProperties;
measure.memberProperties =
new MondrianGuiDef.CalculatedMemberProperty[temp.length + 1];
for (int i = 0; i < temp.length; i++) {
measure.memberProperties[i] =
(MondrianGuiDef.CalculatedMemberProperty) temp[i];
}

measure.memberProperties[measure.memberProperties.length - 1] =
property;

Object[] parentPathObjs = new Object[parentIndex + 1];
for (int i = 0; i <= parentIndex; i++) {
parentPathObjs[i] = tpath.getPathComponent(i);
}
TreePath parentPath = new TreePath(parentPathObjs);
tree.setSelectionPath(parentPath.pathByAddingChild(property));

refreshTree(tree.getSelectionPath());
setTableCellFocus(0);
}

/**
* @param evt
*/
Expand Down Expand Up @@ -4283,10 +4334,11 @@ public void showMenu(MouseEvent e) {
}
} else if (pathSelected instanceof MondrianGuiDef.Measure) {
jPopupMenu.add(addMeasureExp);
jPopupMenu.add(addCalculatedMemberProperty);
if (((MondrianGuiDef.Measure) pathSelected).measureExp
== null)
{
addMeasureExp.setEnabled(false);
addMeasureExp.setEnabled(true);
} else {
addMeasureExp.setEnabled(false);
}
Expand Down
10 changes: 6 additions & 4 deletions src/main/mondrian/gui/SchemaTreeModel.java
Expand Up @@ -65,7 +65,7 @@ private List<Object> getChildList(Object parent) {
// Return children in this order: fact table, dimensions, measures,
// calculatedMembers, namedSets
return new CompoundList<Object>(
Collections.singletonList(c.fact),
ifList(c.fact),
Arrays.asList(c.dimensions),
Arrays.asList(c.measures),
Arrays.asList(c.calculatedMembers),
Expand All @@ -82,7 +82,7 @@ private List<Object> getChildList(Object parent) {
return new CompoundList<Object>(
Arrays.asList(h.levels),
Arrays.asList(h.memberReaderParameters),
Collections.singletonList(h.relation));
ifList(h.relation));
} else if (parent instanceof MondrianGuiDef.Join) {
MondrianGuiDef.Join j = (MondrianGuiDef.Join) parent;
return Arrays.<Object>asList(
Expand All @@ -102,10 +102,12 @@ private List<Object> getChildList(Object parent) {
(MondrianGuiDef.CalculatedMember) parent;
return new CompoundList<Object>(
ifList(c.formulaElement),
Arrays.asList(c.memberProperties));
arrayList(c.memberProperties));
} else if (parent instanceof MondrianGuiDef.Measure) {
MondrianGuiDef.Measure m = (MondrianGuiDef.Measure) parent;
return ifList((Object) m.measureExp);
return new CompoundList<Object>(
ifList(m.measureExp),
arrayList(m.memberProperties));
} else if (parent instanceof MondrianGuiDef.NamedSet) {
MondrianGuiDef.NamedSet m = (MondrianGuiDef.NamedSet) parent;
return ifList((Object) m.formulaElement);
Expand Down
3 changes: 2 additions & 1 deletion src/main/mondrian/gui/resources/text.properties
Expand Up @@ -13,6 +13,7 @@ common.memberGrant.title=Member Grant
common.dimension.title=Dimension
common.dimensionUsage.title=Dimension Usage
common.expressionView.title=Expression View
common.expression.title=Expression
common.keyExpression.title=Key Expression
common.nameExpression.title=Name Expression
common.ordinalExpression.title=Ordinal Expression
Expand Down Expand Up @@ -263,7 +264,7 @@ schemaExplorer.roleElementParent.title=Role for {0} {1}
schemaExplorer.virtualCubeElementParent.title=Virtual Cube for {0} {1}
schemaExplorer.frame.title=Schema - {0} ({1}){2}
schemaExplorer.calculatedMemberNotSelected.alert=Calculated Member or Measure not selected.
propertyTableModel.attribute=Attribute
propertyTableModel.value=Value
propertyTableModel.unknown=?
Expand Down

0 comments on commit 0dee5b2

Please sign in to comment.