Changeset 3634
- Timestamp:
- Aug 6, 2007, 2:48:44 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/ReporterTransfer.java
r3532 r3634 71 71 72 72 /** 73 Maps BASE 1 reporters that are considered duplicate by BASE 2 after 74 whitespace has been trimmed from the external ID. Only used temporary until the 75 reporterMap is generated. Map contain BASE 1 ID --> Base 1 ID where the value 76 is the "real" reporter that is migrated to BASE 2. 77 */ 78 private Map<Integer, Integer> duplicates = null; 79 80 /** 73 81 Used for inserting reporter into Base 2. 74 82 */ … … 102 110 103 111 externalIdMap = new HashMap<String, Integer>(count); 112 duplicates = new HashMap<Integer, Integer>(); 104 113 DbControl dc = newDbControl(); 105 114 try … … 120 129 if (dc != null) dc.close(); 121 130 externalIdMap.clear(); 131 duplicates.clear(); 122 132 progress.stop(); 123 133 } … … 152 162 rowCount++; 153 163 ReporterData item = createDataItem(rs); 154 batcher.insert(item);164 if (item != null) batcher.insert(item); 155 165 progress.increase(); 156 166 if (log.isDebugEnabled()) … … 195 205 { 196 206 ReporterData reporter = result.next(); 197 reporterMap.put(externalIdMap.get(reporter.getExternalId()), new ReporterProxy(reporter)); 207 Integer base1Id = externalIdMap.get(reporter.getExternalId()); 208 reporterMap.put(base1Id, new ReporterProxy(reporter)); 198 209 rowCount++; 199 210 progress.increase(); 200 211 if (log.isDebugEnabled()) 201 212 { 202 log.debug("Reporter: " + reporter.getExternalId() + " has been mapped"); 213 log.debug("Reporter: " + reporter.getExternalId() + 214 " has been mapped to BASE 1 ID="+base1Id); 215 } 216 } 217 218 // Map duplicates 219 for (Map.Entry<Integer, Integer> entry : duplicates.entrySet()) 220 { 221 Integer base1Id = entry.getKey(); 222 Integer migratedBase1Id = entry.getValue(); 223 ReporterData migratedReporter = reporterMap.get(migratedBase1Id); 224 reporterMap.put(base1Id, migratedReporter); 225 if (log.isDebugEnabled()) 226 { 227 log.debug("Reporter: " + migratedReporter.getExternalId() + 228 " has been mapped to BASE 1 ID=" + base1Id); 203 229 } 204 230 } … … 221 247 222 248 @param rs <code>ResultSet</code> containing the data for this item. 223 @return <code>ReporterData</code> 249 @return <code>ReporterData</code> or null if another reporter with same ID has already been created 224 250 @throws BaseException 225 251 @throws SQLException If current ResultSet position is invalid or number … … 230 256 { 231 257 // Populate a new ReporterData object 232 String externalId = rs.getString(2); 233 ReporterData rd = Reporter.getNew(externalId); 234 if (log.isDebugEnabled()) 235 { 236 log.debug("Transfering Reporter BASE1 id(" + rs.getInt(1) + ")\texternal Id(" + externalId + ")"); 237 } 238 externalIdMap.put(externalId, rs.getInt(1)); 239 if (!QUICK_TRANSFER) 240 { 241 String name = rs.getString(3); 242 if (name == null || "".equals(name)) name = externalId; 243 rd.setName(name); 244 rd.setSymbol(rs.getString(4)); 245 int columnIndex = 5; 246 for (String property : stringProperties) 247 { 248 rd.setExtended(property, rs.getString(columnIndex)); 249 columnIndex++; 250 } 251 // Set integer properties, integer properties should be listed 252 // last(after the string properties) in the select statement 253 String[] intProperties = { "length" }; 254 for (String property : intProperties) 255 { 256 rd.setExtended(property, rs.getInt(columnIndex)); 257 columnIndex++; 258 } 259 } 258 String externalId = rs.getString(2).trim(); 259 int base1Id = rs.getInt(1); 260 ReporterData rd = null; 261 if (externalIdMap.containsKey(externalId)) 262 { 263 Integer migratedBase1Id = externalIdMap.get(externalId); 264 log.warn("Duplicate reporter found in BASE 1 after trimming whitespace: id=" + 265 base1Id + "; externald ID=" + externalId + "; Merging this reporter with reporter id="+ 266 migratedBase1Id); 267 duplicates.put(base1Id, migratedBase1Id); 268 } 269 else 270 { 271 externalIdMap.put(externalId, base1Id); 272 if (log.isDebugEnabled()) 273 { 274 log.debug("Transfering Reporter BASE1 id(" + base1Id + ")\texternal Id(" + externalId + ")"); 275 } 276 rd = Reporter.getNew(externalId); 277 if (!QUICK_TRANSFER) 278 { 279 String name = rs.getString(3); 280 if (name == null || "".equals(name)) name = externalId; 281 rd.setName(name); 282 rd.setSymbol(rs.getString(4)); 283 int columnIndex = 5; 284 for (String property : stringProperties) 285 { 286 rd.setExtended(property, rs.getString(columnIndex)); 287 columnIndex++; 288 } 289 // Set integer properties, integer properties should be listed 290 // last(after the string properties) in the select statement 291 String[] intProperties = { "length" }; 292 for (String property : intProperties) 293 { 294 rd.setExtended(property, rs.getInt(columnIndex)); 295 columnIndex++; 296 } 297 } 298 } 260 299 return rd; 261 300 }
Note: See TracChangeset
for help on using the changeset viewer.