Revision: 3230
Author: silva.josemanuel1
Date: Mon Jan 18 09:19:18 2010
Log: ASSIGNED - bug 2507: Move the profile results settings to the project root
http://trillian.sqlpower.ca/bugzilla/show_bug.cgi?id=2507
http://code.google.com/p/power-architect/source/detail?r=3230

Modified:
 /trunk/regress/ca/sqlpower/architect/TestingArchitectSession.java
 /trunk/regress/ca/sqlpower/architect/profile/AbstractProfileResultTest.java
/trunk/regress/ca/sqlpower/architect/swingui/TestingArchitectSwingSession.java
 /trunk/src/ca/sqlpower/architect/ArchitectProject.java
 /trunk/src/ca/sqlpower/architect/ArchitectSession.java
 /trunk/src/ca/sqlpower/architect/ArchitectSessionImpl.java
 /trunk/src/ca/sqlpower/architect/profile/AbstractProfileResult.java
 /trunk/src/ca/sqlpower/architect/profile/ColumnProfileResult.java
 /trunk/src/ca/sqlpower/architect/profile/ColumnValueCount.java
 /trunk/src/ca/sqlpower/architect/profile/ProfileManager.java
 /trunk/src/ca/sqlpower/architect/profile/ProfileManagerImpl.java
 /trunk/src/ca/sqlpower/architect/profile/ProfileResult.java
 /trunk/src/ca/sqlpower/architect/profile/ProfileSettings.java
 /trunk/src/ca/sqlpower/architect/profile/TableProfileResult.java
 /trunk/src/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java

=======================================
--- /trunk/regress/ca/sqlpower/architect/TestingArchitectSession.java Fri Jan 15 15:02:04 2010 +++ /trunk/regress/ca/sqlpower/architect/TestingArchitectSession.java Mon Jan 18 09:19:18 2010
@@ -37,7 +37,6 @@
 import ca.sqlpower.architect.ddl.DDLGenerator;
 import ca.sqlpower.architect.olap.OLAPRootObject;
 import ca.sqlpower.architect.profile.ProfileManager;
-import ca.sqlpower.object.SPObject;
 import ca.sqlpower.sql.DataSourceCollection;
 import ca.sqlpower.sql.JDBCDataSource;
 import ca.sqlpower.sql.SPDataSource;
@@ -144,7 +143,7 @@
                 defaultResponse, dsCollection, buttonNames);
     }

-    public SPObject getWorkspace() {
+    public ArchitectProject getWorkspace() {
         // TODO Auto-generated method stub
         return null;
     }
=======================================
--- /trunk/regress/ca/sqlpower/architect/profile/AbstractProfileResultTest.java Thu Jan 29 12:02:55 2009 +++ /trunk/regress/ca/sqlpower/architect/profile/AbstractProfileResultTest.java Mon Jan 18 09:19:18 2010
@@ -19,8 +19,10 @@
 package ca.sqlpower.architect.profile;

 import java.util.Date;
+import java.util.List;

 import junit.framework.TestCase;
+import ca.sqlpower.object.SPObject;
 import ca.sqlpower.sqlobject.SQLObject;
 import ca.sqlpower.sqlobject.SQLTable;

@@ -30,6 +32,42 @@
         public TestingAbstractProfileResult(SQLObject s) {
             super(s);
         }
+
+        @Override
+        protected boolean removeChildImpl(SPObject child) {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+        public boolean allowsChildren() {
+            // TODO Auto-generated method stub
+            return false;
+        }
+
+ public int childPositionOffset(Class<? extends SPObject> childType) {
+            // TODO Auto-generated method stub
+            return 0;
+        }
+
+        public List<Class<? extends SPObject>> getAllowedChildTypes() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public List<? extends SPObject> getChildren() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public List<? extends SPObject> getDependencies() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public void removeDependency(SPObject dependency) {
+            // TODO Auto-generated method stub
+
+        }

     }

=======================================
--- /trunk/regress/ca/sqlpower/architect/swingui/TestingArchitectSwingSession.java Fri Jan 15 15:02:04 2010 +++ /trunk/regress/ca/sqlpower/architect/swingui/TestingArchitectSwingSession.java Mon Jan 18 09:19:18 2010
@@ -28,10 +28,11 @@
 import javax.swing.JDialog;
 import javax.swing.JMenu;

+import ca.sqlpower.architect.ArchitectProject;
 import ca.sqlpower.architect.ArchitectSession;
 import ca.sqlpower.architect.ArchitectSessionImpl;
-import ca.sqlpower.architect.ProjectLoader;
 import ca.sqlpower.architect.CoreUserSettings;
+import ca.sqlpower.architect.ProjectLoader;
 import ca.sqlpower.architect.ddl.DDLGenerator;
 import ca.sqlpower.architect.ddl.GenericDDLGenerator;
 import ca.sqlpower.architect.etl.kettle.KettleJob;
@@ -43,7 +44,6 @@
 import ca.sqlpower.architect.swingui.olap.OLAPEditSession;
 import ca.sqlpower.architect.undo.ArchitectUndoManager;
 import ca.sqlpower.object.ObjectDependentException;
-import ca.sqlpower.object.SPObject;
 import ca.sqlpower.sql.DataSourceCollection;
 import ca.sqlpower.sql.JDBCDataSource;
 import ca.sqlpower.sql.SPDataSource;
@@ -395,7 +395,7 @@
optionType, defaultResponseType, defaultResponse, dsCollection, buttonNames);
     }

-    public SPObject getWorkspace() {
+    public ArchitectProject getWorkspace() {
         // TODO Auto-generated method stub
         return null;
     }
=======================================
--- /trunk/src/ca/sqlpower/architect/ArchitectProject.java Fri Jan 15 15:02:04 2010 +++ /trunk/src/ca/sqlpower/architect/ArchitectProject.java Mon Jan 18 09:19:18 2010
@@ -26,6 +26,7 @@

 import ca.sqlpower.architect.ddl.DDLGenerator;
 import ca.sqlpower.architect.ddl.GenericDDLGenerator;
+import ca.sqlpower.architect.profile.ProfileManager;
 import ca.sqlpower.architect.profile.ProfileManagerImpl;
 import ca.sqlpower.object.AbstractSPObject;
 import ca.sqlpower.object.ObjectDependentException;
@@ -37,6 +38,15 @@
 import ca.sqlpower.sqlobject.SQLObjectRoot;
 import ca.sqlpower.util.SPSession;

+/**
+ *
+ * This class is the root object of an ArchitectSession. There is an ArchitectProject + * for every ArchitectSession. The ArchitectProject, and all its children, will be
+ * listened to and persisted to the JCR. This includes the SQL object tree,
+ * the profile manager, forward engineering settings, and compare DM settings.
+ *
+ */
+
 public class ArchitectProject extends AbstractSPObject {

     private final ArchitectSession session;
@@ -147,7 +157,7 @@
     public List<Class<? extends SPObject>> getAllowedChildTypes() {
List<Class<? extends SPObject>> childTypes = new ArrayList<Class<? extends SPObject>>();
         childTypes.add(SQLObjectRoot.class);
- // childTypes.add(ProfileManager.class); TODO make ProfileManager an SPObject
+        childTypes.add(ProfileManager.class);
// childTypes.add(DDLGenerator.class); TODO make DDLGenerator an SPObject
         childTypes.add(SQLDatabase.class);
         return childTypes;
@@ -156,8 +166,8 @@
     public List<SPObject> getChildren() {
         List<SPObject> allChildren = new ArrayList<SPObject>();
         allChildren.add(rootObject);
- // childTypes.add(profileManager); TODO make ProfileManager an SPObject
-        // childTypes.add(ddlGenerator); TODO make DDLGenerator an SPObject
+        allChildren.add(profileManager);
+ // allChildren.add(ddlGenerator); TODO make DDLGenerator an SPObject
         allChildren.add(db);
         return allChildren;
     }
=======================================
--- /trunk/src/ca/sqlpower/architect/ArchitectSession.java Fri Jan 15 15:02:04 2010 +++ /trunk/src/ca/sqlpower/architect/ArchitectSession.java Mon Jan 18 09:19:18 2010
@@ -22,7 +22,6 @@

 import ca.sqlpower.architect.ddl.DDLGenerator;
 import ca.sqlpower.architect.profile.ProfileManager;
-import ca.sqlpower.object.SPObject;
 import ca.sqlpower.sqlobject.SQLDatabase;
 import ca.sqlpower.sqlobject.SQLDatabaseMapping;
 import ca.sqlpower.sqlobject.SQLObjectException;
@@ -96,8 +95,14 @@
      */
     public void setDDLGenerator(DDLGenerator generator);

-    public SPObject getWorkspace();
-
+    /**
+ * Returns the workspace object which is the root object of the ArchitectSession, the ArchitectProject.
+     */
+    public ArchitectProject getWorkspace();
+
+    /**
+ * Returns the root SQL object of the session, which is the tree that contains Columns, Databases, etc.
+     */
     public SQLObjectRoot getRootObject();

 }
=======================================
--- /trunk/src/ca/sqlpower/architect/ArchitectSessionImpl.java Fri Jan 15 15:02:04 2010 +++ /trunk/src/ca/sqlpower/architect/ArchitectSessionImpl.java Mon Jan 18 09:19:18 2010
@@ -23,7 +23,6 @@

 import ca.sqlpower.architect.ddl.DDLGenerator;
 import ca.sqlpower.architect.profile.ProfileManagerImpl;
-import ca.sqlpower.object.SPObject;
 import ca.sqlpower.sql.DataSourceCollection;
 import ca.sqlpower.sql.JDBCDataSource;
 import ca.sqlpower.sql.SPDataSource;
@@ -169,24 +168,20 @@
defaultResponseType, defaultResponse, dsCollection, buttonNames);
     }

-    public SPObject getWorkspace() {
-        // TODO Auto-generated method stub
-        return null;
+    public ArchitectProject getWorkspace() {
+        return project;
     }

     public boolean isForegroundThread() {
-        // TODO Auto-generated method stub
-        return false;
+        return true;
     }

     public void runInBackground(Runnable runner) {
-        // TODO Auto-generated method stub
-
+        runner.run();
     }

     public void runInForeground(Runnable runner) {
-        // TODO Auto-generated method stub
-
+        runner.run();
     }

 }
=======================================
--- /trunk/src/ca/sqlpower/architect/profile/AbstractProfileResult.java Tue Jan 5 08:48:08 2010 +++ /trunk/src/ca/sqlpower/architect/profile/AbstractProfileResult.java Mon Jan 18 09:19:18 2010
@@ -25,6 +25,8 @@

 import ca.sqlpower.architect.profile.event.ProfileResultEvent;
 import ca.sqlpower.architect.profile.event.ProfileResultListener;
+import ca.sqlpower.object.AbstractSPObject;
+import ca.sqlpower.object.SPObject;
 import ca.sqlpower.object.SPObjectUtils;
 import ca.sqlpower.sqlobject.SQLCatalog;
 import ca.sqlpower.sqlobject.SQLColumn;
@@ -43,7 +45,7 @@
* The type of DatabaseObject this profile pertains to. For example,
  *            SQLTable or SQLColumn.
  */
-public abstract class AbstractProfileResult<T extends SQLObject>
+public abstract class AbstractProfileResult<T extends SQLObject> extends AbstractSPObject
     implements Comparable<AbstractProfileResult>, ProfileResult<T> {

private static final Logger logger = Logger.getLogger(AbstractProfileResult.class);
@@ -293,4 +295,10 @@
             profileResultListeners.get(i).profileCancelled(event);
         }
     }
-}
+
+    public List<? extends SPObject> getDependencies() {
+        List<SPObject> dependencies = new ArrayList<SPObject>();
+        dependencies.add(profiledObject);
+        return dependencies;
+    }
+}
=======================================
--- /trunk/src/ca/sqlpower/architect/profile/ColumnProfileResult.java Thu Jan 29 12:02:55 2009 +++ /trunk/src/ca/sqlpower/architect/profile/ColumnProfileResult.java Mon Jan 18 09:19:18 2010
@@ -23,6 +23,7 @@

 import org.apache.log4j.Logger;

+import ca.sqlpower.object.SPObject;
 import ca.sqlpower.sqlobject.SQLColumn;

 public class ColumnProfileResult extends AbstractProfileResult<SQLColumn> {
@@ -158,4 +159,37 @@
     public TableProfileResult getParentResult() {
         return parentResult;
     }
-}
+
+    @Override
+    protected boolean removeChildImpl(SPObject child) {
+        return false;
+    }
+
+    public boolean allowsChildren() {
+        return true;
+    }
+
+    public int childPositionOffset(Class<? extends SPObject> childType) {
+        if (childType.isAssignableFrom(ColumnValueCount.class)) {
+            return 0;
+        } else {
+            throw new IllegalArgumentException();
+        }
+    }
+
+    public List<Class<? extends SPObject>> getAllowedChildTypes() {
+ List<Class<? extends SPObject>> types = new ArrayList<Class<? extends SPObject>>();
+        types.add(ColumnValueCount.class);
+        return types;
+    }
+
+    public List<? extends SPObject> getChildren() {
+        List<SPObject> children = new ArrayList<SPObject>();
+        children.addAll(topTen);
+        return children;
+    }
+
+    public void removeDependency(SPObject dependency) {
+
+    }
+}
=======================================
--- /trunk/src/ca/sqlpower/architect/profile/ColumnValueCount.java Tue Mar 25 07:38:28 2008 +++ /trunk/src/ca/sqlpower/architect/profile/ColumnValueCount.java Mon Jan 18 09:19:18 2010
@@ -18,13 +18,19 @@
  */
 package ca.sqlpower.architect.profile;

+import java.util.Collections;
+import java.util.List;
+
+import ca.sqlpower.object.AbstractSPObject;
+import ca.sqlpower.object.SPObject;
+
 /**
  * A simple class for keeping track of a value, the number of occurrences
  * associated with it, and the percentage of occurences in the table.
  * Instances of this class are used in the "Top N most
  * frequent values" property of a column's profile.
  */
-public class ColumnValueCount {
+public class ColumnValueCount extends AbstractSPObject {

     private Object value;
     private int count;
@@ -87,4 +93,33 @@
         result = 37 * result + count;
         return result;
     }
-}
+
+    @Override
+    protected boolean removeChildImpl(SPObject child) {
+        return false;
+    }
+
+    public boolean allowsChildren() {
+        return false;
+    }
+
+    public int childPositionOffset(Class<? extends SPObject> childType) {
+        return 0;
+    }
+
+    public List<Class<? extends SPObject>> getAllowedChildTypes() {
+        return Collections.emptyList();
+    }
+
+    public List<? extends SPObject> getChildren() {
+        return Collections.emptyList();
+    }
+
+    public List<? extends SPObject> getDependencies() {
+        return Collections.emptyList();
+    }
+
+    public void removeDependency(SPObject dependency) {
+
+    }
+}
=======================================
--- /trunk/src/ca/sqlpower/architect/profile/ProfileManager.java Thu Jan 29 12:02:55 2009 +++ /trunk/src/ca/sqlpower/architect/profile/ProfileManager.java Mon Jan 18 09:19:18 2010
@@ -24,6 +24,7 @@
 import java.util.concurrent.Future;

 import ca.sqlpower.architect.profile.event.ProfileChangeListener;
+import ca.sqlpower.object.SPObject;
 import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLTable;

@@ -32,7 +33,7 @@
  * For now it can only be a list of TableProfileResults; some day we might
  * want to make it a generic type.
  */
-public interface ProfileManager {
+public interface ProfileManager extends SPObject {

     /**
      * A client property defined on an object to count how many profiles
=======================================
--- /trunk/src/ca/sqlpower/architect/profile/ProfileManagerImpl.java Mon Mar 2 07:47:13 2009 +++ /trunk/src/ca/sqlpower/architect/profile/ProfileManagerImpl.java Mon Jan 18 09:19:18 2010
@@ -34,9 +34,11 @@
 import ca.sqlpower.architect.ArchitectSession;
 import ca.sqlpower.architect.profile.event.ProfileChangeEvent;
 import ca.sqlpower.architect.profile.event.ProfileChangeListener;
-import ca.sqlpower.sqlobject.SQLObjectException;
+import ca.sqlpower.object.AbstractSPObject;
+import ca.sqlpower.object.SPObject;
 import ca.sqlpower.sqlobject.SQLDatabase;
 import ca.sqlpower.sqlobject.SQLObject;
+import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLObjectPreEvent;
 import ca.sqlpower.sqlobject.SQLObjectPreEventListener;
 import ca.sqlpower.sqlobject.SQLTable;
@@ -51,7 +53,7 @@
  *
  * @version $Id$
  */
-public class ProfileManagerImpl implements ProfileManager {
+public class ProfileManagerImpl extends AbstractSPObject implements ProfileManager {

     /**
      * Watches the session's root object, and reacts when SQLDatabase items
@@ -98,6 +100,8 @@
     }

private static final Logger logger = Logger.getLogger(ProfileManagerImpl.class);
+
+

     /**
      * The current list of listeners who want to know when the contents
@@ -374,5 +378,48 @@
     public void setCreator(TableProfileCreator tpc) {
         this.creator = tpc;
     }
+
+    @Override
+    protected boolean removeChildImpl(SPObject child) {
+        return false;
+    }
+
+    public boolean allowsChildren() {
+        return true;
+    }
+
+    public int childPositionOffset(Class<? extends SPObject> childType) {
+        if (childType.isAssignableFrom(ProfileSettings.class)) {
+            return 0;
+        } else if (results.size() > 0) {
+            return 1;
+        } else {
+            throw new IllegalArgumentException();
+        }
+    }
+
+    public List<Class<? extends SPObject>> getAllowedChildTypes() {
+ List<Class<? extends SPObject>> types = new ArrayList<Class<? extends SPObject>>();
+        types.add(ProfileSettings.class);
+        if (results.size() > 0) {
+            types.add(TableProfileResult.class);
+        }
+        return types;
+    }
+
+    public List<? extends SPObject> getChildren() {
+        List<SPObject> allChildren = new ArrayList<SPObject>();
+        allChildren.add(defaultProfileSettings);
+        allChildren.addAll(results);
+        return allChildren;
+    }
+
+    public List<? extends SPObject> getDependencies() {
+        return Collections.emptyList();
+    }
+
+    public void removeDependency(SPObject dependency) {
+
+    }

 }
=======================================
--- /trunk/src/ca/sqlpower/architect/profile/ProfileResult.java Thu Jan 29 12:02:55 2009 +++ /trunk/src/ca/sqlpower/architect/profile/ProfileResult.java Mon Jan 18 09:19:18 2010
@@ -19,6 +19,7 @@
 package ca.sqlpower.architect.profile;

 import ca.sqlpower.architect.profile.event.ProfileResultListener;
+import ca.sqlpower.object.SPObject;
 import ca.sqlpower.sqlobject.SQLObject;

 /**
@@ -30,7 +31,7 @@
  * @param T The type of SQLObject that this profile result calculates
  * and holds results for.
  */
-public interface ProfileResult<T extends SQLObject> {
+public interface ProfileResult<T extends SQLObject> extends SPObject {

     /**
      * Returns the SQLObject that is profiled by this ProfileResult.
=======================================
--- /trunk/src/ca/sqlpower/architect/profile/ProfileSettings.java Tue Mar 25 07:38:28 2008 +++ /trunk/src/ca/sqlpower/architect/profile/ProfileSettings.java Mon Jan 18 09:19:18 2010
@@ -18,7 +18,13 @@
  */
 package ca.sqlpower.architect.profile;

-public class ProfileSettings {
+import java.util.Collections;
+import java.util.List;
+
+import ca.sqlpower.object.AbstractSPObject;
+import ca.sqlpower.object.SPObject;
+
+public class ProfileSettings extends AbstractSPObject {

     private boolean findingMin = true;

@@ -123,4 +129,33 @@
     public void setTopNCount(String topNCount) {
         this.topNCount = Integer.valueOf(topNCount);
     }
-}
+
+    @Override
+    protected boolean removeChildImpl(SPObject child) {
+        return false;
+    }
+
+    public boolean allowsChildren() {
+        return false;
+    }
+
+    public int childPositionOffset(Class<? extends SPObject> childType) {
+        return 0;
+    }
+
+    public List<Class<? extends SPObject>> getAllowedChildTypes() {
+        return Collections.emptyList();
+    }
+
+    public List<? extends SPObject> getChildren() {
+        return Collections.emptyList();
+    }
+
+    public List<? extends SPObject> getDependencies() {
+        return Collections.emptyList();
+    }
+
+    public void removeDependency(SPObject dependency) {
+
+    }
+}
=======================================
--- /trunk/src/ca/sqlpower/architect/profile/TableProfileResult.java Wed Aug 12 14:56:31 2009 +++ /trunk/src/ca/sqlpower/architect/profile/TableProfileResult.java Mon Jan 18 09:19:18 2010
@@ -29,6 +29,7 @@

 import ca.sqlpower.architect.ddl.DDLGenerator;
 import ca.sqlpower.architect.ddl.DDLUtils;
+import ca.sqlpower.object.SPObject;
 import ca.sqlpower.sql.JDBCDataSource;
 import ca.sqlpower.sqlobject.SQLColumn;
 import ca.sqlpower.sqlobject.SQLObjectException;
@@ -205,4 +206,37 @@
     public void addColumnProfileResult(ColumnProfileResult profileResult) {
         columnProfileResults.add(profileResult);
     }
-}
+
+    @Override
+    protected boolean removeChildImpl(SPObject child) {
+        return false;
+    }
+
+    public boolean allowsChildren() {
+        return true;
+    }
+
+    public int childPositionOffset(Class<? extends SPObject> childType) {
+        if (childType.isAssignableFrom(ColumnProfileResult.class)) {
+            return 0;
+        } else {
+            throw new IllegalArgumentException();
+        }
+    }
+
+    public List<Class<? extends SPObject>> getAllowedChildTypes() {
+ List<Class<? extends SPObject>> types = new ArrayList<Class<? extends SPObject>>();
+        types.add(ColumnProfileResult.class);
+        return types;
+    }
+
+    public List<? extends SPObject> getChildren() {
+        List<SPObject> children = new ArrayList<SPObject>();
+        children.addAll(columnProfileResults);
+        return children;
+    }
+
+    public void removeDependency(SPObject dependency) {
+
+    }
+}
=======================================
--- /trunk/src/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java Fri Jan 15 15:02:04 2010 +++ /trunk/src/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java Mon Jan 18 09:19:18 2010
@@ -47,10 +47,11 @@

 import org.apache.log4j.Logger;

+import ca.sqlpower.architect.ArchitectProject;
 import ca.sqlpower.architect.ArchitectSession;
 import ca.sqlpower.architect.ArchitectSessionImpl;
-import ca.sqlpower.architect.ProjectLoader;
 import ca.sqlpower.architect.CoreUserSettings;
+import ca.sqlpower.architect.ProjectLoader;
 import ca.sqlpower.architect.UserSettings;
 import ca.sqlpower.architect.ddl.DDLGenerator;
 import ca.sqlpower.architect.etl.kettle.KettleJob;
@@ -69,7 +70,6 @@
 import ca.sqlpower.object.AbstractSPListener;
 import ca.sqlpower.object.SPChildEvent;
 import ca.sqlpower.object.SPListener;
-import ca.sqlpower.object.SPObject;
 import ca.sqlpower.sql.DataSourceCollection;
 import ca.sqlpower.sql.JDBCDataSource;
 import ca.sqlpower.sql.SPDataSource;
@@ -1004,7 +1004,7 @@
defaultResponseType, defaultResponse, dsCollection, buttonNames);
     }

-    public SPObject getWorkspace() {
+    public ArchitectProject getWorkspace() {
         return delegateSession.getWorkspace();
     }

Reply via email to