Revision: 3824
Author: mo.jeff
Date: Fri Jul 30 12:56:08 2010
Log: Refactored snapshot creation out of ColumnEditPanel and placed it in
the SPObjectSnapshotHierarchyListener. I think this is a more appropriate
place for it, as it doesn't pollute GUI code and non-enterprise specific
code with unrelated functionality.
Also removed some checked exceptions that appear to be no longer thrown in
DomainCategorySnapshot.
TODO: I was hoping the listener would handle reverse engineering and
copy/paste, but doesn't yet. I was hoping to remove the old
UpstreamTypeUpdaterListener once that was fixed.
http://code.google.com/p/power-architect/source/detail?r=3824
Modified:
/trunk/src/main/java/ca/sqlpower/architect/SPObjectSnapshotHierarchyListener.java
/trunk/src/main/java/ca/sqlpower/architect/enterprise/DomainCategorySnapshot.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/ColumnEditPanel.java
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/SPObjectSnapshotHierarchyListener.java
Fri Jul 30 10:06:06 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/SPObjectSnapshotHierarchyListener.java
Fri Jul 30 12:56:08 2010
@@ -23,13 +23,16 @@
import ca.sqlpower.architect.enterprise.ArchitectClientSideSession;
import ca.sqlpower.architect.enterprise.DomainCategory;
+import ca.sqlpower.architect.enterprise.DomainCategorySnapshot;
import ca.sqlpower.object.AbstractSPListener;
import ca.sqlpower.object.SPChildEvent;
+import ca.sqlpower.object.SPObject;
import ca.sqlpower.object.SPObjectSnapshot;
import ca.sqlpower.sqlobject.SPObjectSnapshotUpdateListener;
import ca.sqlpower.sqlobject.SQLColumn;
import ca.sqlpower.sqlobject.SQLTable;
import ca.sqlpower.sqlobject.UserDefinedSQLType;
+import ca.sqlpower.sqlobject.UserDefinedSQLTypeSnapshot;
/**
* Add this listener to a SQLDatabase to have its columns have correct
snapshot listeners
@@ -53,9 +56,10 @@
e.getChild().addSPListener(this);
} else if (e.getChild() instanceof SQLColumn) {
SQLColumn sqlColumn = (SQLColumn) e.getChild();
- sqlColumn.getUserDefinedSQLType().addSPListener(this);
if (sqlColumn.getUserDefinedSQLType() != null) {
+ sqlColumn.getUserDefinedSQLType().addSPListener(this);
addUpdateListener(sqlColumn.getUserDefinedSQLType());
+ createSPObjectSnapshot(sqlColumn.getUserDefinedSQLType(),
sqlColumn.getUserDefinedSQLType().getUpstreamType());
}
}
}
@@ -76,6 +80,11 @@
public void propertyChanged(PropertyChangeEvent e) {
if (e.getSource() instanceof UserDefinedSQLType
&& e.getPropertyName().equals("upstreamType")) {
+
+ if (e.getNewValue() instanceof UserDefinedSQLType) {
+ createSPObjectSnapshot((UserDefinedSQLType) e.getSource(),
(UserDefinedSQLType) e.getNewValue());
+ }
+
//XXX Need to remove the old listener
UserDefinedSQLType columnProxyType =
(UserDefinedSQLType) e.getSource();
addUpdateListener(columnProxyType);
@@ -107,4 +116,40 @@
}
}
}
-}
+
+ private void createSPObjectSnapshot(UserDefinedSQLType typeProxy,
UserDefinedSQLType upstreamType) {
+ SPObject upstreamTypeParent = upstreamType.getParent();
+
+ if (upstreamTypeParent != null
&& !upstreamTypeParent.equals(session.getWorkspace()) &&
+ !(upstreamTypeParent instanceof DomainCategory &&
+
upstreamTypeParent.getParent().equals(session.getWorkspace()))) {
+ int systemRevision =
session.getSystemSession().getCurrentRevisionNumber();
+
+ boolean isDomainSnapshot = upstreamType.getParent() instanceof
DomainCategory;
+ UserDefinedSQLTypeSnapshot snapshot;
+ if (upstreamType.getUpstreamType() != null) {
+ //For domains
+ UserDefinedSQLType upUpStreamType =
upstreamType.getUpstreamType();
+ boolean isUpstreamDomainSnapshot =
upUpStreamType.getParent() instanceof DomainCategory;
+ UserDefinedSQLTypeSnapshot upstreamSnapshot = new
UserDefinedSQLTypeSnapshot(upUpStreamType, systemRevision,
isUpstreamDomainSnapshot);
+ session.getWorkspace().addChild(upstreamSnapshot, 0);
+
session.getWorkspace().addChild(upstreamSnapshot.getSPObject(), 0);
+ snapshot = new UserDefinedSQLTypeSnapshot(upstreamType,
systemRevision, isDomainSnapshot, upstreamSnapshot);
+ } else {
+ snapshot = new UserDefinedSQLTypeSnapshot(upstreamType,
systemRevision, isDomainSnapshot);
+ }
+ session.getWorkspace().addChild(snapshot, 0);
+ if ((upstreamType.getParent() instanceof DomainCategory)) {
+ DomainCategory parent = (DomainCategory)
upstreamType.getParent();
+ DomainCategorySnapshot domainSnapshot =
+ new DomainCategorySnapshot(parent, systemRevision);
+ session.getWorkspace().addChild(domainSnapshot, 0);
+
session.getWorkspace().addChild(domainSnapshot.getSPObject(), 0);
+
domainSnapshot.getSPObject().addChild(snapshot.getSPObject(), 0);
+ } else {
+ session.getWorkspace().addChild(snapshot.getSPObject(), 0);
+ }
+ typeProxy.setUpstreamType(snapshot.getSPObject());
+ }
+ }
+}
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/enterprise/DomainCategorySnapshot.java
Fri Jul 30 10:06:06 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/enterprise/DomainCategorySnapshot.java
Fri Jul 30 12:56:08 2010
@@ -22,7 +22,6 @@
import java.util.Collections;
import java.util.List;
-import ca.sqlpower.object.ObjectDependentException;
import ca.sqlpower.object.SPObject;
import ca.sqlpower.object.SystemSPObjectSnapshot;
import ca.sqlpower.object.annotation.Accessor;
@@ -42,8 +41,7 @@
}
public DomainCategorySnapshot(DomainCategory original,
- int systemRevision) throws IllegalArgumentException,
- ObjectDependentException {
+ int systemRevision) {
super(original.getUUID(), systemRevision);
setName(original.getName());
spObject = new DomainCategory(original.getName());
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/ColumnEditPanel.java
Fri Jul 30 09:40:47 2010
+++ /trunk/src/main/java/ca/sqlpower/architect/swingui/ColumnEditPanel.java
Fri Jul 30 12:56:08 2010
@@ -69,12 +69,9 @@
import org.apache.log4j.Logger;
import ca.sqlpower.architect.ddl.DDLUtils;
-import ca.sqlpower.architect.enterprise.DomainCategory;
-import ca.sqlpower.architect.enterprise.DomainCategorySnapshot;
import ca.sqlpower.architect.swingui.dbtree.DBTreeCellRenderer;
import ca.sqlpower.architect.swingui.dbtree.DBTreeModel;
import ca.sqlpower.object.AbstractPoolingSPListener;
-import ca.sqlpower.object.ObjectDependentException;
import ca.sqlpower.object.SPChildEvent;
import ca.sqlpower.object.SPListener;
import ca.sqlpower.sqlobject.SQLColumn;
@@ -82,9 +79,8 @@
import ca.sqlpower.sqlobject.SQLObjectException;
import ca.sqlpower.sqlobject.SQLObjectUtils;
import ca.sqlpower.sqlobject.SQLTypePhysicalPropertiesProvider;
-import ca.sqlpower.sqlobject.UserDefinedSQLType;
-import ca.sqlpower.sqlobject.UserDefinedSQLTypeSnapshot;
import
ca.sqlpower.sqlobject.SQLTypePhysicalPropertiesProvider.PropertyType;
+import ca.sqlpower.sqlobject.UserDefinedSQLType;
import ca.sqlpower.swingui.ChangeListeningDataEntryPanel;
import ca.sqlpower.swingui.DataEntryPanelChangeUtil;
import ca.sqlpower.swingui.PopupJTreeAction;
@@ -987,42 +983,7 @@
if (componentEnabledMap.get(colType).isSelected()) {
// Set upstream type on column
UserDefinedSQLType upstreamType = (UserDefinedSQLType)
colType.getLastSelectedPathComponent();
-
- if (upstreamType != null &&
session.isEnterpriseSession() &&
- !((upstreamType.getParent().equals(session.getWorkspace()))
|
| // not an already existing type snapshot
- (upstreamType.getParent() instanceof
DomainCategory &&
-
upstreamType.getParent().getParent().equals(session.getWorkspace())))) //
not an already existing domain snapshot
- {
- int systemRevision =
session.getEnterpriseSession().getSystemSession().getCurrentRevisionNumber();
- boolean isDomainSnapshot =
upstreamType.getParent() instanceof DomainCategory;
- UserDefinedSQLTypeSnapshot snapshot;
- if (upstreamType.getUpstreamType() != null) {
- //For domains
- UserDefinedSQLType upUpStreamType =
upstreamType.getUpstreamType();
- boolean isUpstreamDomainSnapshot =
upUpStreamType.getParent() instanceof DomainCategory;
- UserDefinedSQLTypeSnapshot upstreamSnapshot =
new UserDefinedSQLTypeSnapshot(upUpStreamType, systemRevision,
isUpstreamDomainSnapshot);
-
session.getWorkspace().addChild(upstreamSnapshot, 0);
-
session.getWorkspace().addChild(upstreamSnapshot.getSPObject(), 0);
- snapshot = new
UserDefinedSQLTypeSnapshot(upstreamType, systemRevision, isDomainSnapshot,
upstreamSnapshot);
- } else {
- snapshot = new
UserDefinedSQLTypeSnapshot(upstreamType, systemRevision, isDomainSnapshot);
- }
- session.getWorkspace().addChild(snapshot, 0);
-
column.getUserDefinedSQLType().setUpstreamType(snapshot.getSPObject());
- if ((upstreamType.getParent() instanceof
DomainCategory)) {
- DomainCategory parent = (DomainCategory)
upstreamType.getParent();
- DomainCategorySnapshot domainSnapshot =
- new DomainCategorySnapshot(parent,
systemRevision);
- session.getWorkspace().addChild(domainSnapshot,
0);
-
session.getWorkspace().addChild(domainSnapshot.getSPObject(), 0);
-
domainSnapshot.getSPObject().addChild(snapshot.getSPObject(), 0);
- } else {
-
session.getWorkspace().addChild(snapshot.getSPObject(), 0);
- }
-
- } else {
-
column.getUserDefinedSQLType().setUpstreamType(upstreamType);
- }
+
column.getUserDefinedSQLType().setUpstreamType(upstreamType);
// Set scale
if (typeOverrideMap.get(colScale).isSelected()) {
@@ -1087,10 +1048,6 @@
}
} catch (SQLObjectException e) {
throw new RuntimeException(e);
- } catch (IllegalArgumentException e) {
- throw new RuntimeException(e);
- } catch (ObjectDependentException e) {
- throw new RuntimeException(e);
} finally {
compoundEditRoot.commit();
}