Revision: 3729
Author: [email protected]
Date: Wed Jul 14 07:55:26 2010
Log: Changed how the project loads UDTs, and made sure that newly created
tables have unique names.
http://code.google.com/p/power-architect/source/detail?r=3729
Modified:
/trunk/src/main/java/ca/sqlpower/architect/ProjectLoader.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/CreateTableAction.java
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/ProjectLoader.java Mon Jun
28 11:21:31 2010
+++ /trunk/src/main/java/ca/sqlpower/architect/ProjectLoader.java Wed Jul
14 07:55:26 2010
@@ -62,6 +62,7 @@
import ca.sqlpower.sqlobject.SQLRelationship;
import ca.sqlpower.sqlobject.SQLSchema;
import ca.sqlpower.sqlobject.SQLTable;
+import ca.sqlpower.sqlobject.SQLTypePhysicalPropertiesProvider;
import ca.sqlpower.sqlobject.UserDefinedSQLType;
import ca.sqlpower.sqlobject.SQLIndex.AscendDescend;
import ca.sqlpower.sqlobject.SQLIndex.Column;
@@ -70,12 +71,16 @@
import ca.sqlpower.sqlobject.SQLRelationship.UpdateDeleteRule;
import ca.sqlpower.swingui.SPSUtils;
import ca.sqlpower.util.BrowserUtil;
+import ca.sqlpower.util.DefaultUserPrompterFactory;
import ca.sqlpower.util.UserPrompter;
import ca.sqlpower.util.UserPrompter.UserPromptOptions;
import ca.sqlpower.util.UserPrompter.UserPromptResponse;
import ca.sqlpower.util.UserPrompterFactory.UserPromptType;
import ca.sqlpower.xml.UnescapingSaxParser;
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.ListMultimap;
+
public class ProjectLoader {
/*
@@ -304,6 +309,27 @@
}
}
+
+ /*
+ * In old versions of the architect, user defined types weren't
+ * available, so all columns stored their type as a JDBC type
code.
+ * For all columns in the playpen, we need to hook up upstream
user
+ * defined types.
+ */
+ ListMultimap<String, SQLColumn> columns =
ArrayListMultimap.create();
+ for (SQLTable table :
getSession().getTargetDatabase().getTables()) {
+ for (SQLColumn column :
table.getChildren(SQLColumn.class)) {
+ SQLColumn sourceColumn = column.getSourceColumn();
+ if (sourceColumn != null &&
sourceColumn.getPlatform() != null) {
+
columns.put(column.getSourceColumn().getPlatform(), column);
+ } else {
+
columns.put(SQLTypePhysicalPropertiesProvider.GENERIC_PLATFORM, column);
+ }
+ }
+ }
+ for (String platform : columns.keySet()) {
+ SQLColumn.assignTypes(columns.get(platform), dataSources,
platform, new DefaultUserPrompterFactory());
+ }
setModified(false);
} finally {
@@ -722,19 +748,6 @@
if (sqlTypeUUID != null ){
sqlType = session.findSQLTypeByUUID(sqlTypeUUID);
}
-
- // If userDefinedTypeUUID isn't in the file, probably because
it's
- // from an older version... or if the userDefinedTypeUUID
doesn't
- // exist in this system, then try to guess it by JDBC type.
- if (sqlTypeUUID == null || sqlType == null) {
- String type = attributes.getValue("type");
- int jdbcType = Integer.valueOf(type);
- // TODO: If a session contains more than one
UserDefinedSQLType
- // (most likely when loading into a server) with the same
JDBC
- // type, then it may not pick the 'right' one.
- sqlType = session.findSQLTypeByJDBCType(jdbcType);
- }
-
col.getUserDefinedSQLType().setUpstreamType(sqlType);
LoadSQLObjectAttributes(col, attributes);
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/CreateTableAction.java
Mon Jul 12 08:21:11 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/CreateTableAction.java
Wed Jul 14 07:55:26 2010
@@ -57,14 +57,22 @@
}
public void actionPerformed(ActionEvent evt) {
- getPlaypen().fireCancel();
+ PlayPen playpen = getPlaypen();
+ playpen.fireCancel();
SQLTable t = null;
t = new SQLTable();
t.initFolders(true);
- t.setName(NEW_TABLE_NAME); //$NON-NLS-1$
-
- TablePane tp = new TablePane(t, getPlaypen().getContentPane());
- TablePlacer tablePlacer = new TablePlacer(getPlaypen(), tp);
+
+ playpen.resetTableNames();
+ int suffix = playpen.uniqueTableSuffix(NEW_TABLE_NAME);
+ if (suffix != 0) {
+ t.setName(NEW_TABLE_NAME + "_" + suffix);
+ } else {
+ t.setName(NEW_TABLE_NAME);
+ }
+
+ TablePane tp = new TablePane(t, playpen.getContentPane());
+ TablePlacer tablePlacer = new TablePlacer(playpen, tp);
tablePlacer.dirtyup();
}
@@ -118,9 +126,9 @@
}
};
- ((TableEditPanel) editPanel).setNameText(NEW_TABLE_NAME);
- ((TableEditPanel)
editPanel).setPhysicalNameText(NEW_TABLE_NAME);
- ((TableEditPanel) editPanel).setPkNameText(NEW_TABLE_NAME
+ "_pk");
+ ((TableEditPanel)
editPanel).setNameText(tp.getModel().getName());
+ ((TableEditPanel)
editPanel).setPhysicalNameText(tp.getModel().getPhysicalName());
+ ((TableEditPanel)
editPanel).setPkNameText(tp.getModel().getName() + "_pk");
return editPanel;
}