Revision: 3920
Author: [email protected]
Date: Wed Aug 25 08:24:31 2010
Log: Added an update function to the client datasource collection to find new data sources on the server.
http://code.google.com/p/power-architect/source/detail?r=3920

Modified:
/trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectClientSideSession.java /trunk/src/main/java/ca/sqlpower/architect/swingui/action/NewDataSourceAction.java

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectClientSideSession.java Fri Aug 20 11:26:13 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectClientSideSession.java Wed Aug 25 08:24:31 2010
@@ -369,13 +369,17 @@

         return super.close();
     }
-
+
        @Override
        public DataSourceCollection<JDBCDataSource> getDataSources() {
-               if (dataSourceCollection != null) {
-                       return dataSourceCollection;
-               }
-
+           if (dataSourceCollection != null) {
+            return dataSourceCollection;
+        } else {
+            return getDataSourcesFromServer();
+        }
+       }
+
+       private DataSourceCollection<JDBCDataSource> getDataSourcesFromServer() 
{
                ResponseHandler<DataSourceCollection<JDBCDataSource>> 
plIniHandler =
             new ResponseHandler<DataSourceCollection<JDBCDataSource>>() {
public DataSourceCollection<JDBCDataSource> handleResponse(HttpResponse response)
@@ -413,6 +417,33 @@
systemWorkspace.addChild(newType, systemWorkspace.getChildren(UserDefinedSQLType.class).size());
                             return newType;
                                            }
+
+                                           public SPDataSource 
getDataSource(String name) {
+                                               SPDataSource ds = 
super.getDataSource(name);
+                                               if (ds == null) {
+                                                   mergeNewDataSources();
+                                                   return 
super.getDataSource(name);
+                                               } else {
+                                                   return ds;
+                                               }
+                                           }
+
+ public <C extends SPDataSource> C getDataSource(String name, java.lang.Class<C> classType) {
+                                               C ds = 
super.getDataSource(name, classType);
+                            if (ds == null) {
+                                mergeNewDataSources();
+ return super.getDataSource(name, classType);
+                            } else {
+                                return ds;
+                            }
+                                           }
+
+                                           private void mergeNewDataSources() {
+ DataSourceCollection<JDBCDataSource> dsc = getDataSourcesFromServer(); + for (SPDataSource merge : dsc.getConnections()) {
+                                mergeDataSource(merge);
+                            }
+                                           }
                                        };
                     plIni.read(response.getEntity().getContent());
logger.debug("Data source collection has URI " + plIni.getServerBaseURI());
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/action/NewDataSourceAction.java Mon Jul 12 08:21:11 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/action/NewDataSourceAction.java Wed Aug 25 08:24:31 2010
@@ -31,8 +31,8 @@
         final JDBCDataSource dataSource = new JDBCDataSource(plDotIni);
         Runnable onAccept = new Runnable() {
             public void run() {
-                session.getDBTree().addSourceConnection(dataSource);
                 plDotIni.addDataSource(dataSource);
+                session.getDBTree().addSourceConnection(dataSource);
             }
         };
dataSource.setDisplayName(Messages.getString("DBTree.newConnectionName")); //$NON-NLS-1$

Reply via email to