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;

Reply via email to