Author: kaiyi4
Date: Thu Aug 28 12:04:35 2008
New Revision: 2652
Modified:
trunk/src/ca/sqlpower/architect/swingui/olap/HierarchyEditPanel.java
trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateDimensionUsageAction.java
trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateLevelAction.java
Log:
The lowest level hierarchy in a shared dimension, which also without a
specified name, will by default take the cube's fact table and foreign key.
This objective is met in the instant when a dimension usage is first
created. We could then check if the dimension contains any empty-name
hierarchy, and modify it on the spot when we have the information about the
cube fact able and foreign key.
Modified:
trunk/src/ca/sqlpower/architect/swingui/olap/HierarchyEditPanel.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/swingui/olap/HierarchyEditPanel.java
(original)
+++ trunk/src/ca/sqlpower/architect/swingui/olap/HierarchyEditPanel.java
Thu Aug 28 12:04:35 2008
@@ -83,7 +83,7 @@
builder.append("Caption", captionField = new
JTextField(hierarchy.getCaption()));
builder.append("Has All", hasAll = new JCheckBox());
hasAll.setSelected(hierarchy.getHasAll() != null ?
hierarchy.getHasAll() : true);
- builder.append("All Level Name", allLevelName = new
JTextField(hierarchy.getAllLevelName() != null ?
hierarchy.getAllLevelName() : "(All)"));
+ builder.append("All Level Name", allLevelName = new
JTextField(hierarchy.getAllLevelName() != null ?
hierarchy.getAllLevelName() : "All"));
builder.append("Table", tableChooser = new JComboBox((new
Vector<SQLTable>(tables))));
builder.append("Primary Key", primaryKey = new JComboBox());
@@ -169,7 +169,6 @@
hierarchy.setPrimaryKey(column.getName());
}
}
-
hierarchy.endCompoundEdit();
return true;
}
Modified:
trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateDimensionUsageAction.java
==============================================================================
---
trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateDimensionUsageAction.java
(original)
+++
trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateDimensionUsageAction.java
Thu Aug 28 12:04:35 2008
@@ -33,6 +33,7 @@
import ca.sqlpower.architect.olap.MondrianModel.Cube;
import ca.sqlpower.architect.olap.MondrianModel.Dimension;
import ca.sqlpower.architect.olap.MondrianModel.DimensionUsage;
+import ca.sqlpower.architect.olap.MondrianModel.Hierarchy;
import ca.sqlpower.architect.swingui.ArchitectSwingSession;
import ca.sqlpower.architect.swingui.PlayPen;
import ca.sqlpower.architect.swingui.olap.CubePane;
@@ -71,7 +72,16 @@
final DataEntryPanel mep = new DimensionUsageEditPanel(du);
Callable<Boolean> okCall = new Callable<Boolean>() {
public Boolean call() throws Exception {
- return mep.applyChanges();
+ boolean changesApplied = mep.applyChanges();
+ if (!dimension.getHierarchies().isEmpty() &&
dimension.getHierarchies().get(0).getName()==null) {
+ Hierarchy hierarchy =
dimension.getHierarchies().get(0);
+ hierarchy.startCompoundEdit("Set lowest level
hierarchy to conform to cube fact table.");
+ hierarchy.setRelation(cube.getFact());
+ hierarchy.setPrimaryKey(du.getForeignKey());
+ hierarchy.endCompoundEdit();
+ return changesApplied;
+ }
+ return false;
}
};
Callable<Boolean> cancelCall = new Callable<Boolean>() {
Modified:
trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateLevelAction.java
==============================================================================
---
trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateLevelAction.java
(original)
+++
trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateLevelAction.java
Thu Aug 28 12:04:35 2008
@@ -45,7 +45,8 @@
// first, we have to find or make the parent hierarchy
Dimension d = pane.getModel();
if (d.getHierarchies().size() == 0) {
- d.addHierarchy(new Hierarchy());
+ Hierarchy h = new Hierarchy();
+ d.addHierarchy(h);
}
Hierarchy newParent;