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$

Reply via email to