/** * add simple error to error container array * * @param errorContainer */ private void addError(ErrorContainer errorContainer) { String errorMessage = errorContainer.getError().toString(); String[] splitMessage = errorMessage.split("\n"); errorMessage = errorMessage.replaceAll("\n", "<br> "); errorContainer.setIndex(totalErrors); totalErrors = totalErrors + 1; errorContainer.setStatus(-1); // pending status errors.add(errorContainer); onAddError(errorContainer, splitMessage[0]); notifyObservers(new ImportEvent.ERRORS_PENDING()); }
/** Send existing errors in ErrorContainer array to server */ protected void sendErrors() { // create an omero client. client sc = null; client client = null; ServiceFactoryPrx session = null; try { if (sendLogs || sendFiles) { sc = new client(config.hostname.get(), config.port.get()); ServiceFactoryPrx entryEncrypted; if (!config.sessionKey.empty()) { entryEncrypted = sc.joinSession(config.sessionKey.get()); } else { entryEncrypted = sc.createSession(config.username.get(), config.password.get()); } client = sc.createClient(false); session = client.getSession(); } for (int i = 0; i < errors.size(); i++) { if (!isSend(i)) { onSent(i); continue; // Don't send file if not selected } if (cancelUploads) { onCancel(); break; } ErrorContainer errorContainer = errors.get(i); if (errorContainer.getStatus() != -1) // if file not pending, skip // it continue; Map<String, String> postList = new HashMap<String, String>(); postList.put("java_version", errorContainer.getJavaVersion()); postList.put("java_classpath", errorContainer.getJavaClasspath()); postList.put("app_version", errorContainer.getAppVersion()); postList.put("comment_type", errorContainer.getCommentType()); postList.put("os_name", errorContainer.getOSName()); postList.put("os_arch", errorContainer.getOSArch()); postList.put("os_version", errorContainer.getOSVersion()); postList.put("extra", errorContainer.getExtra()); postList.put("error", getStackTrace(errorContainer.getError())); postList.put("comment", errorContainer.getComment()); postList.put("email", errorContainer.getEmail()); postList.put("app_name", "2"); postList.put("import_session", "test"); postList.put("absolute_path", errorContainer.getAbsolutePath() + "/"); String sendUrl = config.getTokenUrl(); if (isSend(i)) { if (!sendFiles) { errorContainer.clearFiles(); } if (sendLogs || sendFiles) { File f = errorContainer.getSelectedFile(); if (f != null) { Long id = logFiles.get(f.getAbsolutePath()); // load the log File logFile = null; try { logFile = retrieveLogFile(id, session); } catch (Throwable e) { log.error("Cannot load log file", e); } if (logFile != null) { sendLogs = true; errorContainer.addFile(logFile.getAbsolutePath()); } else sendLogs = false; } else sendLogs = false; } } messenger = new HtmlMessenger(sendUrl, postList); serverReply = messenger.executePost(); if (sendFiles || sendLogs) { onSending(i); log.info("Sending File(s)..."); errorContainer.setToken(serverReply); fileUploader = new FileUploader(messenger.getCommunicationLink(config.getUploaderUrl())); fileUploader.addObserver(this); fileUploader.uploadFiles(config.getUploaderUrl(), 2000, errorContainer); onSent(i); } else { onNotSending(i, serverReply); } } } catch (Exception e) { log.error("Error during upload", e); } finally { if (client != null) client.__del__(); if (sc != null) sc.__del__(); } if (cancelUploads) { finishCancelled(); } if (fileUploadErrors) { finishWithErroredFiles(); notifyObservers(new ImportEvent.ERRORS_COMPLETE()); } else { finishComplete(); notifyObservers(new ImportEvent.ERRORS_COMPLETE()); } }