Details
-
Improvement
-
Resolution: Fixed
-
Minor
-
None
-
None
-
None
Description
Sync data in list of object[] to a SQL table
/** |
* sync data from a list of object arrays to a SQL table
|
* @param theDebugMap optional debug map
|
* @param debugMapPrefix prefix for main entries. note nested entries will be additive
|
* @param connectionName DB conenction name for database
|
* @param tableName table name (could be qualified by schema)
|
* @param columnNames columns of table
|
* @param columnNamesPrimaryKey which columns are the primary key
|
* @param data list of object arrays must be in same order as columnNames
|
*/
|
public static void syncDataToSqlTable(Map<String, Object> theDebugMap, String debugMapPrefix, |
String connectionName, String tableName, List<String> columnNames, List<String> columnNamesPrimaryKey, List<Object[]> data) {
|
|
Note before 2.6.8 you can make a GSH function
import edu.internet2.middleware.grouperClient.jdbc.tableSync.*; |
import edu.internet2.middleware.grouperClient.util.GrouperClientUtils; |
|
|
/** |
* sync data from a list of object arrays to a SQL table
|
* @param theDebugMap optional debug map
|
* @param debugMapPrefix prefix for main entries. note nested entries will be additive
|
* @param connectionName DB conenction name for database
|
* @param tableName table name (could be qualified by schema)
|
* @param columnNames columns of table
|
* @param columnNamesPrimaryKey which columns are the primary key
|
* @param data list of object arrays must be in same order as columnNames
|
*/
|
public static void syncDataToSqlTable(Map<String, Object> theDebugMap, String debugMapPrefix, |
String connectionName, String tableName, List<String> columnNames, List<String> columnNamesPrimaryKey, List<Object[]> data) {
|
|
if (theDebugMap == null) { |
theDebugMap = new LinkedHashMap<String, Object>(); |
}
|
debugMapPrefix = GrouperClientUtils.defaultString(debugMapPrefix);
|
String columnsCommaSeparated = GrouperClientUtils.join(columnNames.iterator(), ","); |
// setup the table sync |
GcTableSync gcTableSync = new GcTableSync(); |
gcTableSync.setGcTableSyncConfiguration(new GcTableSyncConfiguration()); |
gcTableSync.setGcTableSyncOutput(new GcTableSyncOutput()); // setup the data from the database |
GcTableSyncTableBean gcTableSyncTableBeanSql = new GcTableSyncTableBean(gcTableSync); |
gcTableSyncTableBeanSql.configureMetadata(connectionName, tableName);
|
gcTableSync.setDataBeanTo(gcTableSyncTableBeanSql); GcTableSyncTableMetadata gcTableSyncTableMetadata = gcTableSyncTableBeanSql.getTableMetadata();
|
gcTableSyncTableMetadata.assignColumns(columnsCommaSeparated);
|
gcTableSyncTableMetadata.assignPrimaryKeyColumns(GrouperClientUtils.join(columnNamesPrimaryKey.iterator(), ",")); String sql = "select " + gcTableSyncTableMetadata.columnListAll() + " from " + gcTableSyncTableMetadata.getTableName(); |
long nowNanos = System.nanoTime(); |
|
List<Object[]> sqlResults = new GcDbAccess().connectionName(connectionName).sql(sql).selectList(Object[].class); theDebugMap.put(debugMapPrefix+"dbRows", GrouperClientUtils.length(sqlResults)); |
theDebugMap.put(debugMapPrefix+"sqlSelectMillis", (System.nanoTime() - nowNanos)/1000000); GcTableSyncTableData gcTableSyncTableDataSql = new GcTableSyncTableData(); |
gcTableSyncTableDataSql.init(gcTableSyncTableBeanSql, gcTableSyncTableMetadata.lookupColumns(columnsCommaSeparated), sqlResults);
|
gcTableSyncTableDataSql.indexData(); gcTableSyncTableBeanSql.setDataInitialQuery(gcTableSyncTableDataSql);
|
gcTableSyncTableBeanSql.setGcTableSync(gcTableSync); // setup the data from the WS |
GcTableSyncTableBean gcTableSyncTableBeanWs = new GcTableSyncTableBean(); |
gcTableSync.setDataBeanFrom(gcTableSyncTableBeanWs);
|
gcTableSyncTableBeanWs.setTableMetadata(gcTableSyncTableBeanSql.getTableMetadata());
|
gcTableSyncTableBeanWs.setGcTableSync(gcTableSync);
|
|
GcTableSyncTableData gcTableSyncTableDataWs = new GcTableSyncTableData(); |
gcTableSync.getDataBeanFrom().setDataInitialQuery(gcTableSyncTableDataWs); gcTableSyncTableDataWs.setColumnMetadata(gcTableSyncTableDataSql.getColumnMetadata()); gcTableSyncTableDataWs.setGcTableSyncTableBean(gcTableSyncTableDataSql.getGcTableSyncTableBean()); gcTableSyncTableDataWs.init(gcTableSyncTableBeanSql, gcTableSyncTableMetadata.lookupColumns(columnsCommaSeparated), data);
|
gcTableSyncTableDataWs.indexData(); GcTableSyncSubtype.fullSyncFull.syncData(theDebugMap, gcTableSync);
|
}
|
|
|