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);
+ }
}
}