Author: thomasobrien95
Date: Wed Jan 7 09:20:36 2009
New Revision: 2906
Modified:
trunk/regress/ca/sqlpower/architect/TestSQLColumn.java
trunk/regress/ca/sqlpower/architect/swingui/TestArchitectFrame.java
trunk/regress/ca/sqlpower/architect/swingui/action/TestDeleteSelectedAction.java
trunk/regress/ca/sqlpower/architect/swingui/dbtree/TestDBTreeModel.java
trunk/src/ca/sqlpower/architect/SQLDatabase.java
trunk/src/ca/sqlpower/architect/swingui/DBTree.java
trunk/src/ca/sqlpower/architect/swingui/action/DeleteSelectedAction.java
Log:
Fixed a bug where dragging a column from a source database to the
play pen would not set the source property. (This bug was committed
in my last commit.) The root cause was the SQLDatabase parent was
always set to null.
Modified: trunk/regress/ca/sqlpower/architect/TestSQLColumn.java
==============================================================================
--- trunk/regress/ca/sqlpower/architect/TestSQLColumn.java (original)
+++ trunk/regress/ca/sqlpower/architect/TestSQLColumn.java Wed Jan 7
09:20:36 2009
@@ -953,6 +953,8 @@
final ArchitectSwingSession session = context.createSession(false);
SQLDatabase db = new SQLDatabase();
session.setSourceDatabaseList(Collections.singletonList(db));
+ session.getRootObject().addChild(session.getTargetDatabase());
+ assertEquals(session.getRootObject(),
session.getTargetDatabase().getParent());
final SQLTable sourceTable = new SQLTable(db, true);
SQLColumn sourceColumn = new SQLColumn(sourceTable, "Source
column", Types.VARCHAR, 10, 0);
@@ -960,7 +962,20 @@
SQLTable table = new SQLTable(session.getTargetDatabase(), true);
SQLColumn column = SQLColumn.getDerivedInstance(sourceColumn,
table);
+
+ SQLObject o1Parent = column;
+ while (o1Parent.getParent() != null) {
+ o1Parent = o1Parent.getParent();
+ System.out.println("Columns ancestor is " + o1Parent);
+ }
+ SQLObject o2Parent = sourceColumn;
+ while (o2Parent.getParent() != null) {
+ o2Parent = o2Parent.getParent();
+ System.out.println("Source Column ancestor is " + o2Parent);
+ }
+
+ assertTrue(ArchitectUtils.isInSameSession(column, sourceColumn));
- assertNull(column.getSourceColumn());
+ assertNotNull(column.getSourceColumn());
}
}
Modified:
trunk/regress/ca/sqlpower/architect/swingui/TestArchitectFrame.java
==============================================================================
--- trunk/regress/ca/sqlpower/architect/swingui/TestArchitectFrame.java
(original)
+++ trunk/regress/ca/sqlpower/architect/swingui/TestArchitectFrame.java Wed
Jan 7 09:20:36 2009
@@ -18,6 +18,10 @@
*/
package ca.sqlpower.architect.swingui;
+import java.io.File;
+import java.util.Arrays;
+import java.util.prefs.Preferences;
+
import junit.framework.TestCase;
public class TestArchitectFrame extends TestCase {
@@ -31,6 +35,9 @@
TestingArchitectSwingSessionContext context = new
TestingArchitectSwingSessionContext();
session = context.createSession();
af = session.getArchitectFrame();
+
+ File tmp = File.createTempFile("Architect", "Test");
+ ArchitectFrame.main(new String[]{tmp.getAbsolutePath()});
}
public void testAutoLayoutAction() {
@@ -38,5 +45,18 @@
assertSame(session.getPlayPen(),
af.getAutoLayoutAction().getPlayPen());
// FIXME: should check that the toolbar button of the action
exists!
+ }
+
+ /**
+ * Regression test for 1336. Loading a file from the command prompt
should be remembered.
+ */
+ public void testFileLoadFromCMDPrompt() throws Exception {
+ Preferences prefs =
Preferences.userNodeForPackage(ArchitectSwingSessionImpl.class);
+
+ String recentFile = prefs.get("recentFile0", null);
+
+ System.out.println(recentFile);
+ System.out.println("Key count " + prefs.keys().length);
+ System.out.println("Keys are " + Arrays.toString(prefs.keys()));
}
}
Modified:
trunk/regress/ca/sqlpower/architect/swingui/action/TestDeleteSelectedAction.java
==============================================================================
---
trunk/regress/ca/sqlpower/architect/swingui/action/TestDeleteSelectedAction.java
(original)
+++
trunk/regress/ca/sqlpower/architect/swingui/action/TestDeleteSelectedAction.java
Wed Jan 7 09:20:36 2009
@@ -20,17 +20,19 @@
import java.awt.Point;
import java.sql.Types;
+import java.util.List;
import junit.framework.TestCase;
import ca.sqlpower.architect.ArchitectException;
import ca.sqlpower.architect.SQLColumn;
+import ca.sqlpower.architect.SQLObject;
import ca.sqlpower.architect.SQLRelationship;
import ca.sqlpower.architect.SQLTable;
import ca.sqlpower.architect.swingui.ArchitectSwingSession;
import ca.sqlpower.architect.swingui.PlayPen;
import ca.sqlpower.architect.swingui.Relationship;
-import ca.sqlpower.architect.swingui.TestingArchitectSwingSessionContext;
import ca.sqlpower.architect.swingui.TablePane;
+import ca.sqlpower.architect.swingui.TestingArchitectSwingSessionContext;
import ca.sqlpower.architect.swingui.event.SelectionEvent;
public class TestDeleteSelectedAction extends TestCase {
@@ -135,5 +137,16 @@
assertEquals("Delete Table2 (Shortcut delete)",
deleteAction.getValue(DeleteSelectedAction.SHORT_DESCRIPTION));
tp2.setSelected(false,SelectionEvent.SINGLE_SELECT);
assertFalse ("Nothing is selected", deleteAction.isEnabled());
+ }
+
+ public void testRetrieveDeletableItems() throws Exception {
+ tp.setSelected(true, SelectionEvent.SINGLE_SELECT);
+ tp2.setSelected(true, SelectionEvent.SINGLE_SELECT);
+ assertEquals(2,
session.getArchitectFrame().getDbTree().getSelectionPaths().length);
+ List<SQLObject> list = deleteAction.retrieveDeletableItems();
+ assertEquals(2, list.size());
+ System.out.println(list);
+ assertTrue(list.contains(tp.getModel()));
+ assertTrue(list.contains(tp2.getModel()));
}
}
Modified:
trunk/regress/ca/sqlpower/architect/swingui/dbtree/TestDBTreeModel.java
==============================================================================
--- trunk/regress/ca/sqlpower/architect/swingui/dbtree/TestDBTreeModel.java
(original)
+++ trunk/regress/ca/sqlpower/architect/swingui/dbtree/TestDBTreeModel.java
Wed Jan 7 09:20:36 2009
@@ -30,6 +30,7 @@
import junit.framework.TestCase;
import ca.sqlpower.architect.ArchitectException;
+import ca.sqlpower.architect.ArchitectSession;
import ca.sqlpower.architect.ArchitectSessionContextImpl;
import ca.sqlpower.architect.ArchitectSessionImpl;
import ca.sqlpower.architect.SQLColumn;
@@ -37,10 +38,11 @@
import ca.sqlpower.architect.SQLObject;
import ca.sqlpower.architect.SQLRelationship;
import ca.sqlpower.architect.SQLTable;
-import ca.sqlpower.architect.swingui.dbtree.DBTreeModel;
public class TestDBTreeModel extends TestCase {
+ private ArchitectSession session;
+
private static class LoggingSwingTreeModelListener implements
TreeModelListener {
private int changeCount;
@@ -100,7 +102,7 @@
private DBTreeModel tm;
protected void setUp() throws Exception {
- ArchitectSessionImpl session = new ArchitectSessionImpl(new
ArchitectSessionContextImpl(), "TestSession");
+ session = new ArchitectSessionImpl(new
ArchitectSessionContextImpl(), "TestSession");
tm = new DBTreeModel(session.getRootObject());
tm.setTestMode(true);
}
@@ -143,5 +145,13 @@
assertTrue(actualPaths.contains(expectFkPath));
assertTrue(actualPaths.contains(expectPkPath));
+ }
+
+ public void testDBTreeRootParentNull() throws Exception {
+ assertNull(((SQLObject)tm.getRoot()).getParent());
+ }
+
+ public void testDBTreeRootMatchesSessionRoot() throws Exception {
+ assertEquals(session.getRootObject(), tm.getRoot());
}
}
Modified: trunk/src/ca/sqlpower/architect/SQLDatabase.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/SQLDatabase.java (original)
+++ trunk/src/ca/sqlpower/architect/SQLDatabase.java Wed Jan 7 09:20:36
2009
@@ -66,6 +66,8 @@
* Indicates the maximum number of connections held active ever.
*/
private int maxActiveConnections = 0;
+
+ private SQLObject parent;
/**
* Constructor for instances that connect to a real database by JDBC.
@@ -317,11 +319,11 @@
* @return <code>null</code>
*/
public SQLObject getParent() {
- return null;
+ return parent;
}
protected void setParent(SQLObject newParent) {
- // no parent
+ parent = newParent;
}
@Override
Modified: trunk/src/ca/sqlpower/architect/swingui/DBTree.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/swingui/DBTree.java (original)
+++ trunk/src/ca/sqlpower/architect/swingui/DBTree.java Wed Jan 7 09:20:36
2009
@@ -891,7 +891,7 @@
public TreePath getTreePathForNode(SQLObject obj) {
List<SQLObject> path = new ArrayList<SQLObject>();
- while (obj != null) {
+ while (obj != null && obj != session.getRootObject()) {
path.add(0, obj);
obj = obj.getParent();
}
Modified:
trunk/src/ca/sqlpower/architect/swingui/action/DeleteSelectedAction.java
==============================================================================
---
trunk/src/ca/sqlpower/architect/swingui/action/DeleteSelectedAction.java
(original)
+++
trunk/src/ca/sqlpower/architect/swingui/action/DeleteSelectedAction.java
Wed Jan 7 09:20:36 2009
@@ -83,7 +83,7 @@
return;
}
- List<SQLObject> deleteItems = getDeletableItems();
+ List<SQLObject> deleteItems = retrieveDeletableItems();
int tCount = 0;
int rCount = 0;
@@ -170,8 +170,9 @@
/**
* Extracts the list of items we should try to delete from the DBTree's
* selection list.
+ * Package private for testing.
*/
- private List<SQLObject> getDeletableItems() {
+ List<SQLObject> retrieveDeletableItems() {
TreePath[] selectionPaths = dbt.getSelectionPaths();
if (selectionPaths == null) return Collections.emptyList();
List <SQLObject> deleteItems = new
ArrayList<SQLObject>(selectionPaths.length);
@@ -229,7 +230,7 @@
*/
private void setupAction() {
String description;
- List<SQLObject> deletableItems = getDeletableItems();
+ List<SQLObject> deletableItems = retrieveDeletableItems();
if (deletableItems.size() == 0) {
setEnabled(false);
description =
Messages.getString("DeleteSelectedAction.deleteSelected"); //$NON-NLS-1$