Author: kevin1219
Date: Tue Aug 26 12:09:17 2008
New Revision: 2611

Modified:
   trunk/src/ca/sqlpower/architect/olap/OLAPUtil.java
trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateCubeUsageAction.java trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateDimensionUsageAction.java

Log:
Added cases to isNameUnique(): private Dimension inside a Cube, DimensionUsage, CubeUsage. Now a message shows up if you try to create a CubeUsage or DimensionUsage that already exists or causes naming conflicts.

Modified: trunk/src/ca/sqlpower/architect/olap/OLAPUtil.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/olap/OLAPUtil.java  (original)
+++ trunk/src/ca/sqlpower/architect/olap/OLAPUtil.java Tue Aug 26 12:09:17 2008
@@ -340,6 +340,8 @@
             return olapSession.findCube(name) == null;
         } else if (type == Dimension.class && parent instanceof Schema) {
             return olapSession.findPublicDimension(name) == null;
+        } else if (type == Dimension.class && parent instanceof Cube) {
+ return olapSession.findCubeDimension(parent.getName(), name) == null;
         } else if (type == VirtualCube.class) {
             return olapSession.findVirtualCube(name) == null;
         } else if (type == Measure.class) {
@@ -367,6 +369,22 @@
                         return false;
                     }
                 } else if (name.equals(h.getName())) {
+                    return false;
+                }
+            }
+            return true;
+        } else if (type == CubeUsage.class) {
+            VirtualCube vCube = (VirtualCube) parent;
+            for (CubeUsage usage : vCube.getCubeUsage().getCubeUsages()) {
+                if (usage.getCubeName().equals(name)) {
+                    return false;
+                }
+            }
+            return true;
+        } else if (type == DimensionUsage.class) {
+            Cube c = (Cube) parent;
+            for (CubeDimension cd : c.getDimensions()) {
+                if (cd.getName().equals(name)) {
                     return false;
                 }
             }

Modified: trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateCubeUsageAction.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateCubeUsageAction.java (original) +++ trunk/src/ca/sqlpower/architect/swingui/olap/action/CreateCubeUsageAction.java Tue Aug 26 12:09:17 2008
@@ -19,8 +19,11 @@

 package ca.sqlpower.architect.swingui.olap.action;

+import javax.swing.JOptionPane;
+
 import org.apache.log4j.Logger;

+import ca.sqlpower.architect.olap.OLAPUtil;
 import ca.sqlpower.architect.olap.MondrianModel.CubeUsage;
 import ca.sqlpower.architect.swingui.ArchitectSwingSession;
 import ca.sqlpower.architect.swingui.PlayPen;
@@ -43,11 +46,17 @@

     @Override
     protected void createUsage(CubePane cp, VirtualCubePane vcp) {
-        CubeUsage cu = new CubeUsage();
-        cu.setCubeName(cp.getModel().getName());
-        vcp.getModel().getCubeUsage().addCubeUsage(cu);
- UsageComponent uc = new UsageComponent(playpen.getContentPane(), cu, cp, vcp); - playpen.getContentPane().add(uc, playpen.getContentPane().getComponentCount()); + if (OLAPUtil.isNameUnique(vcp.getModel(), CubeUsage.class, cp.getModel().getName())) {
+            CubeUsage cu = new CubeUsage();
+            cu.setCubeName(cp.getModel().getName());
+            vcp.getModel().getCubeUsage().addCubeUsage(cu);
+ UsageComponent uc = new UsageComponent(playpen.getContentPane(), cu, cp, vcp); + playpen.getContentPane().add(uc, playpen.getContentPane().getComponentCount());
+        } else {
+ String errorMsg = "Cube Usage \"" + cp.getModel().getName() + "\" alreadys exists in \"" + + vcp.getModel().getName() + "\"\nCube Usage was not created."; + JOptionPane.showMessageDialog(playpen, errorMsg, "Duplicate Cube Usage", JOptionPane.INFORMATION_MESSAGE);
+        }
     }

 }

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 Tue Aug 26 12:09:17 2008
@@ -19,8 +19,11 @@

 package ca.sqlpower.architect.swingui.olap.action;

+import javax.swing.JOptionPane;
+
 import org.apache.log4j.Logger;

+import ca.sqlpower.architect.olap.OLAPUtil;
 import ca.sqlpower.architect.olap.MondrianModel.DimensionUsage;
 import ca.sqlpower.architect.swingui.ArchitectSwingSession;
 import ca.sqlpower.architect.swingui.PlayPen;
@@ -43,12 +46,18 @@

     @Override
     protected void createUsage(DimensionPane dp, CubePane cp) {
-        DimensionUsage du = new DimensionUsage();
-        du.setName(dp.getModel().getName());
-        du.setSource(dp.getName());
-        cp.getModel().addChild(du);
- UsageComponent uc = new UsageComponent(playpen.getContentPane(), du, dp, cp); - playpen.getContentPane().add(uc, playpen.getContentPane().getComponentCount()); + if (OLAPUtil.isNameUnique(cp.getModel(), DimensionUsage.class, dp.getModel().getName())) {
+            DimensionUsage du = new DimensionUsage();
+            du.setName(dp.getModel().getName());
+            du.setSource(dp.getModel().getName());
+            cp.getModel().addChild(du);
+ UsageComponent uc = new UsageComponent(playpen.getContentPane(), du, dp, cp); + playpen.getContentPane().add(uc, playpen.getContentPane().getComponentCount());
+        } else {
+ String errorMsg = "Cube Dimension \"" + dp.getModel().getName() + "\" already exists in \"" + + cp.getModel().getName() + "\".\nDimension Usage was not created."; + JOptionPane.showMessageDialog(playpen, errorMsg, "Duplicate Cube Dimension", JOptionPane.INFORMATION_MESSAGE);
+        }
     }

 }

Reply via email to