Changeset 3725
- Timestamp:
- Sep 13, 2007, 12:59:38 AM (15 years ago)
- Location:
- trunk
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/config/dist/mysql-migration-queries.sql
r3675 r3725 1126 1126 1127 1127 /* selectMinimumReporters */ 1128 SELECT `id`, `reporterId` 1128 SELECT `id`, `reporterId`, `geneName`, `geneSymbol` 1129 1129 FROM `Reporter` 1130 1130 ORDER BY `id` -
trunk/doc/src/docbook/admindoc/installation_upgrade.xml
r3697 r3725 48 48 <para> 49 49 The first time installation is only to be performed once, 50 optionally followed by a migration. The migration can only be 51 done to a pristine (empty) BASE 2 server, and migration from 52 several BASE 1 installations to one BASE 2 server is not 53 supported. 50 optionally followed by a migration. The migration can only be done 51 to a pristine (empty) BASE 2 server with one exception; The 52 migration can be restarted if it fails during the RawBioAssaysData 53 transfer, for all other failure points the migration has to be 54 restarted with an empty database. Migration from several BASE 1 55 installations to one BASE 2 server is not supported. 54 56 </para> 55 57 … … 1008 1010 <xref linkend="user_administration"/>. 1009 1011 </para> 1012 <para> 1013 If you are planning to perform a migration of data from 1014 BASE 1.2.x please perform the steps in 1015 <xref linkend="installation_upgrade.migration"/> before 1016 doing anything else with your new BASE installation. 1017 </para> 1010 1018 </listitem> 1011 1019 </varlistentry> … … 1059 1067 1060 1068 <para> 1061 There is currently no way to restart a migration. The behaviour 1062 of migration is controlled 1063 through <filename>migration.properties</filename> file (see <xref linkend="appendix.migrate.properties"/>), but you 1064 should know what you do when you change parameters in this file. 1069 The behaviour of migration is controlled 1070 through <filename>migration.properties</filename> file (see 1071 <xref linkend="appendix.migrate.properties"/>), but you should 1072 know what you do when you change parameters in this file. 1073 </para> 1074 1075 <para> 1076 Migration can be restarted in one specific case only; If the 1077 migration fails during the RawBioAssaysData transfer simply 1078 restart the migration and the script will ask you to verify that 1079 a restart should be attempted. For all other failure points the 1080 migration has to be restarted with an empty database. 1065 1081 </para> 1066 1082 … … 1138 1154 ./migrate_from_1.2.sh</programlisting> 1139 1155 </para> 1156 <para> 1157 If the migration fails during the RawBioAssaysData 1158 transfer you can restart the migration at the point of 1159 failure. Simply restart the migration and the script will 1160 ask you to verify that a restart should be attempted. For 1161 all other failure points the migration has to be restarted 1162 with an empty database. 1163 </para> 1140 1164 </listitem> 1141 1165 -
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/CommonItemTransfer.java
r3679 r3725 62 62 private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger("net.sf.basedb.clients.migrate.CommonItemTransfer"); 63 63 64 CommonItemTransfer() 65 {} 64 66 65 67 CommonItemTransfer(UserTransfer userT, GroupTransfer groupT) -
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/GroupTransfer.java
r3683 r3725 68 68 private QuotaTransfer quotaT = null; 69 69 70 GroupTransfer() 71 {} 72 70 73 /** 71 74 @param userT Depends on a finnished UserTransfer. -
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/Migrater.java
r3679 r3725 31 31 import net.sf.basedb.core.SessionControl; 32 32 import java.io.BufferedReader; 33 import java.io.FileInputStream; 34 import java.io.FileOutputStream; 33 35 import java.io.IOException; 34 36 import java.io.InputStream; 35 37 import java.io.InputStreamReader; 38 import java.io.ObjectInputStream; 39 import java.io.ObjectOutputStream; 36 40 import java.sql.Connection; 37 41 import java.sql.DriverManager; … … 99 103 try 100 104 { 101 ReporterTransfer reporterT = new ReporterTransfer( );105 ReporterTransfer reporterT = new ReporterTransfer(false); 102 106 startTransfer(reporterT, "Reporter"); 103 107 RoleTransfer roleT = new RoleTransfer(); … … 108 112 startTransfer(userT, "User"); 109 113 GroupTransfer groupT = new GroupTransfer(userT, quotaT); 110 startTransfer(groupT, "Group"); 114 startTransfer(groupT, "Group"); 111 115 PluginTransfer pluginT = new PluginTransfer(userT, groupT); 112 116 startTransfer(pluginT, "Plugins"); … … 189 193 groupT, scanT, arrayTypeT, uploadFT, softwareT, sampleT); 190 194 startTransfer(rawBioAssayT, "RawBioAssay"); 195 createResumePoint(userT, groupT, rawBioAssayT); 191 196 RawBioAssayDataTransfer rawBioAssayDataT = new RawBioAssayDataTransfer( 192 userT, groupT, rawBioAssayT, arrayTypeT, reporterT);197 rawBioAssayT, reporterT); 193 198 startTransfer(rawBioAssayDataT, "RawBioAssayData"); 199 removeResumePoint(); 194 200 ExperimentTransfer experimentT = new ExperimentTransfer(userT, 195 201 groupT, rawBioAssayT); … … 203 209 System.exit(1); 204 210 } 205 catch ( Exceptione)211 catch (Throwable e) 206 212 { 207 213 log.error("The migration FAILED", e); … … 210 216 } 211 217 218 public void resume() 219 { 220 try 221 { 222 // Reporters must be mapped using external ID from BASE 1 and BASE 2 223 ReporterTransfer reporterT = new ReporterTransfer(true); 224 startTransfer(reporterT, "Reporter"); 225 226 // Pre-existing quota is loaded from BASE 2 227 QuotaTransfer quotaT = new QuotaTransfer(); 228 startTransfer(quotaT, "Quota"); 229 230 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("migration.tmp")); 231 // Map of user ID:s are read from file 232 UserTransfer userT = new UserTransfer(quotaT); 233 userT.setup(FROM, TO, sessionControl, BASE2, migrateProperties); 234 log.info("Loading users from 'migration.tmp' file..."); 235 userT.readRestorePointData(ois); 236 log.info("Found " + userT.getIdMap().size() + " users"); 237 if (log.isDebugEnabled()) log.debug("User ID Map (Base 1 --> Base2): " + userT.getIdMap()); 238 239 // Map of group ID:s are read from file 240 GroupTransfer groupT = new GroupTransfer(); 241 log.info("Loading groups from 'migration.tmp' file..."); 242 groupT.readRestorePointData(ois); 243 log.info("Found " + groupT.getIdMap().size() + " groups"); 244 if (log.isDebugEnabled()) log.debug("Group ID Map (Base 1 --> Base2): " + groupT.getIdMap()); 245 246 // Map of raw bioassay ID:s are read from file 247 RawBioAssayTransfer rawBioAssayT = new RawBioAssayTransfer(); 248 log.info("Loading raw bioassays from 'migration.tmp' file..."); 249 rawBioAssayT.readRestorePointData(ois); 250 log.info("Found " + rawBioAssayT.getIdMap().size() + " raw bioassays"); 251 if (log.isDebugEnabled()) log.debug("Raw bioassay ID Map (Base 1 --> Base2): " + rawBioAssayT.getIdMap()); 252 ois.close(); 253 254 // RawBioassayTransfer runs normally, but checks if a raw bioassay already has raw data 255 RawBioAssayDataTransfer rawBioAssayDataT = new RawBioAssayDataTransfer(rawBioAssayT, 256 reporterT); 257 startTransfer(rawBioAssayDataT, "RawBioAssayData"); 258 removeResumePoint(); 259 260 // Experiment transfter runs normally 261 ExperimentTransfer experimentT = new ExperimentTransfer(userT, 262 groupT, rawBioAssayT); 263 startTransfer(experimentT, "Experiment"); 264 265 // Runs normally 266 userT.finalizeQuota(); 267 268 print("END MIGRATION"); 269 log.info("Migration ended"); 270 Application.stop(); 271 System.exit(1); 272 273 } 274 catch (Throwable e) 275 { 276 log.error("The migration FAILED", e); 277 stop(); 278 } 279 } 280 281 private void createResumePoint(Transfer...transfers) 282 throws IOException 283 { 284 log.info("Creating resume point"); 285 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("migration.tmp")); 286 for (Transfer t: transfers) 287 { 288 log.info("Store to resume point: " + t); 289 t.writeRestorePointData(oos); 290 } 291 oos.close(); 292 } 293 294 private void removeResumePoint() 295 { 296 log.info("Removing resume point"); 297 java.io.File resumePoint = new java.io.File("migration.tmp"); 298 resumePoint.delete(); 299 } 300 212 301 private void startTransfer(Transfer transfer, String property) 213 302 { … … 474 563 System.err.println("-----------------------------------------------------------------------"); 475 564 565 java.io.File restorePoint = new java.io.File("migration.tmp"); 566 boolean resumeMigration = false; 567 476 568 if (args == null || args.length == 0 || !"disclaimer_understood".equals(args[0])) 477 569 { … … 479 571 System.exit(0); 480 572 } 573 else if (restorePoint.exists()) 574 { 575 System.err.println("FOUND DATA FROM A PREVIOUSLY INTERRUPTED MIGRATION."); 576 System.err.println("\n Press ENTER to resume the migration\nor\n Ctrl-C to abort\n"); 577 System.err.println("To start a new migration delete the './migration.tmp' file"); 578 System.err.println("before starting the migration program."); 579 waitForEnter(); 580 resumeMigration = true; 581 } 481 582 else 482 583 { … … 485 586 } 486 587 487 System.err.println( "Starting migration...");588 System.err.println(resumeMigration ? "Resuming migration" : "Starting migration..."); 488 589 Application.start(false); 489 590 Migrater migrater = new Migrater(); … … 493 594 migrater.prepareStatementsFromFile(); 494 595 log.info("Migration initialisation DONE"); 495 migrater.run(); 596 if (resumeMigration) 597 { 598 migrater.resume(); 599 } 600 else 601 { 602 migrater.run(); 603 } 496 604 } 497 605 … … 506 614 {} 507 615 } 508 509 616 510 617 } -
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/QuotaTransfer.java
r3683 r3725 95 95 quota.setName(formatBytes(totalQuota)); 96 96 dc.saveItem(quota); 97 quotas.put(totalQuota, quota); 97 98 } 98 99 else -
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/RawBioAssayDataTransfer.java
r3683 r3725 47 47 48 48 public class RawBioAssayDataTransfer 49 extends CommonItemTransfer49 extends Transfer 50 50 { 51 51 /** … … 77 77 @param groupT A finished {@link GroupTransfer} 78 78 */ 79 RawBioAssayDataTransfer(UserTransfer userT, GroupTransfer groupT, 80 RawBioAssayTransfer rbaT, ArrayTypeTransfer arrayTypeT, 81 ReporterTransfer reporterT) 82 { 83 super(userT, groupT); 79 RawBioAssayDataTransfer(RawBioAssayTransfer rbaT, ReporterTransfer reporterT) 80 { 81 super(); 84 82 log.debug("Checking that necessary transfers have been done before proceeding with RawBioAssayData"); 85 if (rbaT != null && rbaT.isDone() && arrayTypeT != null 86 && arrayTypeT.isDone() && reporterT != null 87 && reporterT.isDone()) 83 if (rbaT != null && rbaT.isDone() && 84 reporterT != null && reporterT.isDone()) 88 85 { 89 86 this.rbaT = rbaT; … … 93 90 { 94 91 if (!rbaT.isDone()) log.debug("Dependency: RawBioAssays haven't been transfered"); 95 if (!arrayTypeT.isDone()) log.debug("Dependency: ArrayTypes haven't been transfered");96 92 if (!reporterT.isDone()) log.debug("Dependency: Reporters haven't been transfered"); 97 93 dependencyFailure(); … … 133 129 log.debug("RawBioAssay '" + rawBioAssayId + "' " + (hasArrayDesign ? "has " : "no ") + "Array Design"); 134 130 } 135 transferRawBioAssayData(rawBioAssay, rawBioAssayId, hasArrayDesign); 131 if (!rawBioAssay.hasData()) 132 { 133 transferRawBioAssayData(rawBioAssay, rawBioAssayId, hasArrayDesign); 134 } 135 else 136 { 137 log.info("Skipping since it already has data"); 138 progress.increase(rawBioAssay.getSpots()); 139 } 136 140 progress.decrease(); // We do not want to count the RawBioAssays 137 141 if (log.isDebugEnabled()) … … 263 267 if (log.isInfoEnabled()) 264 268 { 265 log.info("Transfered " + rowCount + " rows of RawData for raw bioassay " + rawBioAssay.getName());269 log.info("Transfered " + rowCount + " rows of RawData for raw bioassay: " + rawBioAssay.getName()); 266 270 } 267 271 } -
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/RawBioAssayTransfer.java
r3683 r3725 63 63 private SampleTransfer sampleT = null; 64 64 65 RawBioAssayTransfer() 66 {} 67 65 68 /** 66 69 Constructs a new RawBioAssayTransfer. -
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/ReporterTransfer.java
r3683 r3725 90 90 91 91 /** 92 Flag that indicates if we should run in RESUME mode 93 (ie. NOT create new reporter items, only map ID:s) 94 */ 95 private boolean RESUME = false; 96 97 /** 92 98 Set string and text properties, order must match the select statement 93 99 except for the id and reporterId in the beginning Extended properties are … … 102 108 Reporters are independant from other transfers. 103 109 */ 104 ReporterTransfer() 105 {} 110 ReporterTransfer(boolean resume) 111 { 112 RESUME = resume; 113 } 106 114 107 115 public void start() 108 116 { 109 if (!QUICK_TRANSFER) log.info("Transferring reporters..."); 110 else log.info("Transferring reporters with minimum properties..."); 117 if (RESUME) QUICK_TRANSFER = true; 118 if (RESUME) 119 { 120 log.info("Loading reporters..."); 121 } 122 else if (!QUICK_TRANSFER) 123 { 124 log.info("Transferring reporters..."); 125 } 126 else 127 { 128 log.info("Transferring reporters with minimum properties..."); 129 } 111 130 112 131 int count = getInt("countReporters"); … … 199 218 rowCount++; 200 219 ReporterData item = createDataItem(rs); 201 if (item != null ) batcher.insert(item);220 if (item != null && !RESUME) batcher.insert(item); 202 221 progress.increase(); 203 222 } … … 319 338 } 320 339 rd = Reporter.getNew(externalId); 340 String name = rs.getString(3); 341 if (name == null || "".equals(name)) name = externalId; 342 rd.setName(name); 343 rd.setSymbol(rs.getString(4)); 321 344 if (!QUICK_TRANSFER) 322 345 { 323 String name = rs.getString(3);324 if (name == null || "".equals(name)) name = externalId;325 rd.setName(name);326 rd.setSymbol(rs.getString(4));327 346 int columnIndex = 5; 328 347 for (String property : stringProperties) -
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/SharedItemTransfer.java
r3679 r3725 83 83 private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger("net.sf.basedb.clients.migrate.SharedItemTransfer"); 84 84 85 SharedItemTransfer() 86 {} 87 85 88 SharedItemTransfer(UserTransfer userT, GroupTransfer groupT) 86 89 { -
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/Transfer.java
r3683 r3725 32 32 import net.sf.basedb.core.ItemAlreadyExistsException; 33 33 import net.sf.basedb.core.SessionControl; 34 35 import java.io.IOException; 36 import java.io.ObjectInputStream; 37 import java.io.ObjectOutputStream; 34 38 import java.sql.Connection; 35 39 import java.sql.PreparedStatement; … … 613 617 return Integer.parseInt(value); 614 618 } 619 620 /** 621 Store ID map and some boolean flags 622 */ 623 protected void writeRestorePointData(ObjectOutputStream out) 624 throws IOException 625 { 626 out.writeBoolean(dependencyFailed); 627 out.writeBoolean(done); 628 out.writeBoolean(idMap != null); 629 if (idMap != null) out.writeObject(idMap); 630 } 631 632 /** 633 Store ID map and some boolean flags 634 */ 635 @SuppressWarnings("unchecked") 636 protected void readRestorePointData(ObjectInputStream in) 637 throws IOException, ClassNotFoundException 638 { 639 dependencyFailed = in.readBoolean(); 640 done = in.readBoolean(); 641 if (in.readBoolean()) 642 { 643 idMap = (Map<Integer, Integer>)in.readObject(); 644 } 645 } 646 615 647 } -
trunk/src/clients/migrate/net/sf/basedb/clients/migrate/UserTransfer.java
r3683 r3725 36 36 import net.sf.basedb.core.SystemItems; 37 37 import net.sf.basedb.core.User; 38 39 import java.io.IOException; 40 import java.io.ObjectInputStream; 41 import java.io.ObjectOutputStream; 38 42 import java.sql.PreparedStatement; 39 43 import java.sql.ResultSet; … … 90 94 */ 91 95 private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger("net.sf.basedb.clients.migrate.UserTransfer"); 96 97 UserTransfer(QuotaTransfer quotaT) 98 { 99 this.quotaT = quotaT; 100 } 92 101 93 102 /** … … 323 332 } 324 333 334 /** 335 Store quota map 336 */ 337 protected void writeRestorePointData(ObjectOutputStream out) 338 throws IOException 339 { 340 super.writeRestorePointData(out); 341 out.writeObject(base1FileQuota); 342 } 343 344 /** 345 Store ID map and some boolean flags 346 */ 347 @SuppressWarnings("unchecked") 348 protected void readRestorePointData(ObjectInputStream in) 349 throws IOException, ClassNotFoundException 350 { 351 super.readRestorePointData(in); 352 base1FileQuota = (Map<Integer, Long>)in.readObject(); 353 } 354 325 355 public User getUserById(DbControl dc, int base1Id) 326 356 { -
trunk/src/clients/web/net/sf/basedb/clients/web/util/NameablePluginAdaptor.java
r3679 r3725 27 27 28 28 import net.sf.basedb.core.InvalidDataException; 29 import net.sf.basedb.core.InvalidUseOfNullException; 29 30 import net.sf.basedb.core.Item; 30 31 import net.sf.basedb.core.Nameable; … … 51 52 public NameablePluginAdaptor(PluginDefinition plugin) 52 53 { 54 if (plugin == null) throw new InvalidUseOfNullException("PluginDefinition cannot be null"); 53 55 this.plugin = plugin; 54 56 } -
trunk/src/core/net/sf/basedb/core/Type.java
r3679 r3725 467 467 if (value.indexOf('e') >= 0) 468 468 { 469 // Convert 'e' to 'E' (in scientific notation only 'E' is allowed) and try again470 return parseString(value.replace('e', 'E') , numberFormat, nullIfException);469 //Convert 'e' to 'E' (in scientific notation only 'E' is allowed) and try again 470 return parseString(value.replace('e', 'E').replace("E+", "E"), numberFormat, nullIfException); 471 471 } 472 472 else -
trunk/src/plugins/core/net/sf/basedb/plugins/Base1PluginExecuter.java
r3679 r3725 290 290 BioAssaySet bas = getCurrentBioAssaySet(dc); 291 291 int channels = bas.getRawDataType().getChannels(); 292 Integer maxChannels = (Integer) configuration.getValue(maxChannelsParameter.getName());293 Integer minChannels = (Integer) configuration.getValue(minChannelsParameter.getName());;292 int maxChannels = Values.getInt(String.valueOf(configuration.getValue(maxChannelsParameter.getName())), 0); 293 int minChannels = Values.getInt(String.valueOf(configuration.getValue(minChannelsParameter.getName())), 0); 294 294 if (channels < minChannels || ( maxChannels != 0 && channels > maxChannels)) 295 295 { 296 message = configuration.getPluginConfiguration().getName() + " can't work on " + channels + "-channel data; min=" + minChannels + "; max=" + maxChannels; 297 return message; 296 return configuration.getPluginConfiguration().getName() + " can't work on " + channels + "-channel data; min=" + minChannels + "; max=" + maxChannels; 298 297 } 299 298 List<String> extraValues = new ArrayList<String>(); … … 302 301 extraValues.add(ev.getExtraValueType().getExternalId()); 303 302 } 304 Pattern p = Pattern.compile("_xc_(.+)\\t?"); 305 Matcher m = p.matcher((CharSequence) configuration.getValue(usedFieldsParameter.getName())); 306 while (message == null && m.find()) 307 { 308 if (!extraValues.contains(m.group(1))) 309 { 310 throw new InvalidDataException("Requires extra value '"+ m.group(1) +"' attached to BioAssaySet"); 311 } 312 } 303 String[] usedFields = String.valueOf(configuration.getValue(usedFieldsParameter.getName())).split("\\\\t"); 304 for (String field : usedFields) 305 { 306 if (field.startsWith("_xc_") && !extraValues.contains(field.substring(4))) 307 { 308 return "Requires extra value '"+ field.substring(4) +"' attached to BioAssaySet"; 309 } 310 } 311 } 312 catch (Exception e) 313 { 314 message = ""+e.getMessage(); 315 e.printStackTrace(); 313 316 } 314 317 finally -
trunk/src/test/set_classpath.bat
r3675 r3725 31 31 REM Testdata 32 32 SET CP=%CP%;data 33 SET CP=%CP%;../../data 33 34 SET CP=%CP%;../../testdata 34 35 -
trunk/src/test/set_classpath.sh
r3675 r3725 31 31 # Testdata 32 32 CP=$CP:data 33 CP=$CP:../../data 33 34 CP=$CP:../../testdata 34 35 -
trunk/www/common/anytoany/edit_anytoany.jsp
r3675 r3725 37 37 import="net.sf.basedb.core.Nameable" 38 38 import="net.sf.basedb.core.PermissionDeniedException" 39 import="net.sf.basedb.core.ItemNotFoundException" 39 40 import="net.sf.basedb.clients.web.Base" 40 41 import="net.sf.basedb.clients.web.util.HTML" … … 44 45 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %> 45 46 <%! 46 private String getName(BasicItem item, boolean readItem )47 private String getName(BasicItem item, boolean readItem, boolean missingItem, Item itemType, int id) 47 48 { 48 49 String name = ""; … … 60 61 { 61 62 name = "<i>- denied -</i>"; 63 } 64 else if (missingItem) 65 { 66 name = "<i>- missing -</i> (" + itemType.toString() + "; id=" + id + ")"; 62 67 } 63 68 else if (item == null) … … 105 110 BasicItem to = null; 106 111 boolean readTo = true; 112 boolean missingTo = false; 107 113 108 114 BasicItem from = null; 109 115 boolean readFrom = true; 116 boolean missingFrom = false; 110 117 111 118 try … … 117 124 readTo = false; 118 125 } 126 catch (ItemNotFoundException ex) 127 { 128 missingTo = true; 129 } 119 130 120 131 try … … 126 137 readFrom = false; 127 138 } 128 129 toName = getName(to, readTo); 130 fromName = getName(from, readFrom); 139 catch (ItemNotFoundException ex) 140 { 141 missingFrom = true; 142 } 143 144 toName = getName(to, readTo, missingTo, anyToAny.getToType(), anyToAny.getToId()); 145 fromName = getName(from, readFrom, missingFrom, anyToAny.getFromType(), anyToAny.getFromId()); 131 146 } 132 147 if (anyToAny != null) anyToAny.checkPermission(Permission.WRITE); -
trunk/www/common/anytoany/list_anytoany.jsp
r3675 r3725 37 37 import="net.sf.basedb.core.ItemResultList" 38 38 import="net.sf.basedb.core.PermissionDeniedException" 39 import="net.sf.basedb.core.ItemNotFoundException" 39 40 import="net.sf.basedb.core.query.Orders" 40 41 import="net.sf.basedb.core.query.Hql" … … 105 106 BasicItem to = null; 106 107 boolean readTo = true; 108 boolean missingTo = false; 107 109 try 108 110 { … … 112 114 { 113 115 readTo = false; 116 } 117 catch (ItemNotFoundException ex) 118 { 119 missingTo = true; 114 120 } 115 121 … … 128 134 { 129 135 toLink = "<i>- denied -</i>"; 136 } 137 else if (missingTo) 138 { 139 toLink = "<i>- missing -</i> (" + ata.getToType().toString() + "; id=" + ata.getToId() + ")"; 130 140 } 131 141 else if (to == null) -
trunk/www/exception/exception.jsp
r3679 r3725 121 121 Main.hide('goback'); 122 122 } 123 if (window. opener != null)123 if (window.top != null && window.top.opener != null) 124 124 { 125 125 // popup window --> Hide menubar -
trunk/www/filemanager/upload/show_exception.jsp
r3675 r3725 51 51 sc.setSessionSetting("FileUploadProgress", null); 52 52 sc.setSessionSetting("UnpackProgress", null); 53 throw progress.getException();53 if (progress.getException() != null) throw progress.getException(); 54 54 %>
Note: See TracChangeset
for help on using the changeset viewer.