Changeset 3650
- Timestamp:
- Aug 10, 2007, 11:46:50 AM (16 years ago)
- Location:
- trunk/src/clients/migrate/net/sf/basedb/clients/migrate
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/Migrater.java
r3529 r3650 38 38 import java.sql.SQLException; 39 39 import java.util.HashMap; 40 import java.util.HashSet; 40 41 import java.util.Properties; 42 import java.util.Set; 41 43 import java.util.regex.Matcher; 42 44 import java.util.regex.Pattern; … … 52 54 public class Migrater extends Manager 53 55 { 56 57 public static Set<String> supportedBase1Versions = new HashSet<String>(); 58 static 59 { 60 supportedBase1Versions.add("1.2.20"); 61 supportedBase1Versions.add("1.2.21"); 62 } 63 54 64 /** 55 65 Holds properties defined in migrate.properties … … 431 441 String schemaVersion = rs.getString(2); 432 442 ps.close(); 433 if (!s chemaVersion.equals("1.2.20"))443 if (!supportedBase1Versions.contains(schemaVersion)) 434 444 { 435 445 log.error("Migration cannot proceed due to incompatible schema version. Your schema version is " 436 + schemaVersion + " and this migration needs 1.2.20");446 + schemaVersion + " and this migration needs one of: " + supportedBase1Versions); 437 447 stop(); 438 448 } -
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/ReporterTransfer.java
r3634 r3650 105 105 106 106 int count = getInt("countReporters"); 107 startProgress(count*2, "Reporters"); // First pass creates reporters, second one reads in the new ID:s 107 // First pass creates reporters... 108 startProgress(count, "Reporters"); 108 109 PreparedStatement ps = QUICK_TRANSFER ? prepareStatementFromFile("selectMinimumReporters") 109 110 : prepareStatementFromFile("selectReporters"); … … 111 112 externalIdMap = new HashMap<String, Integer>(count); 112 113 duplicates = new HashMap<Integer, Integer>(); 113 DbControl dc = n ewDbControl();114 DbControl dc = null; 114 115 try 115 116 { 117 dc = newDbControl(); 116 118 batcher = ReporterBatcher.getNew(dc); 117 119 batcher.setBatchSize(getBatchSize()); … … 119 121 batcher.close(); 120 122 dc.commit(); 121 123 } 124 finally 125 { 126 if (dc != null) dc.close(); 127 progress.stop(); 128 } 129 130 // ... second pass reads in the new ID:s 131 progress = null; 132 startProgress(count, "Mapping reporter ID:s"); 133 try 134 { 122 135 reporterMap = new HashMap<Integer, ReporterData>(count); 136 dc = newDbControl(); 123 137 log.info("Mapping reporters in BASE 2..."); 124 mapReporters(0, getBatchSize()); 138 int start = 0; 139 int batchSize = getBatchSize(); 140 141 DataQuery<ReporterData> query = Reporter.getQuery(); 142 query.order(Orders.asc(Hql.property("id"))); 143 query.setMaxResults(batchSize); 144 while (start < count) 145 { 146 query.setFirstResult(start); 147 cleanUpMemory(); 148 mapMigratedReporters(dc, query); 149 start += batchSize; 150 } 125 151 cleanUpMemory(); 152 mapDuplicateReporters(); 126 153 } 127 154 finally … … 189 216 } 190 217 191 private void mapReporters(int from, int size) 192 { 193 cleanUpMemory(); 194 int rowCount = 0; 195 DbControl dc = newDbControl(); 218 private void mapMigratedReporters(DbControl dc, DataQuery<ReporterData> query) 219 { 196 220 DataResultIterator<ReporterData> result = null; 197 221 try 198 222 { 199 DataQuery<ReporterData> query = Reporter.getQuery();200 query.order(Orders.asc(Hql.property("id")));201 query.setFirstResult(from);202 query.setMaxResults(size);203 223 result = query.iterate(dc); 204 224 while (result.hasNext()) … … 207 227 Integer base1Id = externalIdMap.get(reporter.getExternalId()); 208 228 reporterMap.put(base1Id, new ReporterProxy(reporter)); 209 rowCount++;210 229 progress.increase(); 211 230 if (log.isDebugEnabled()) … … 215 234 } 216 235 } 217 218 // Map duplicates219 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);229 }230 }231 236 } 232 237 finally 233 238 { 234 239 if (result != null) result.close(); 235 if (dc != null) dc.close(); 236 } 237 if (rowCount == size) 238 { 239 mapReporters(from+size, size); 240 } 241 } 242 240 } 241 } 242 243 private void mapDuplicateReporters() 244 { 245 // The map contains base1Id of duplicate -> base1Id of transfered reporter 246 for (Map.Entry<Integer, Integer> entry : duplicates.entrySet()) 247 { 248 Integer duplicateId = entry.getKey(); 249 Integer migratedId = entry.getValue(); 250 ReporterData migratedReporter = reporterMap.get(migratedId); 251 reporterMap.put(duplicateId, migratedReporter); 252 progress.increase(); 253 if (log.isDebugEnabled()) 254 { 255 log.debug("Reporter: " + migratedReporter.getExternalId() + 256 " has been mapped to BASE 1 ID=" + duplicateId); 257 } 258 } 259 } 260 261 243 262 244 263 /**
Note: See TracChangeset
for help on using the changeset viewer.