public UpdateOperation(Config config, UpdateOperationOptions options) { super(config); this.options = options; this.result = new UpdateOperationResult(); this.eventBus = LocalEventBus.getInstance(); }
@Override public void printResults(OperationResult operationResult) { UpdateOperationResult concreteOperationResult = (UpdateOperationResult) operationResult; switch (concreteOperationResult.getAction()) { case CHECK: printResultCheck(concreteOperationResult); return; default: out.println("Unknown action: " + concreteOperationResult.getAction()); } }
private void printResultCheck(UpdateOperationResult operationResult) { if (operationResult.getResultCode() == UpdateResultCode.OK) { AppInfo remoteAppInfo = operationResult.getAppInfo(); String localAppVersion = Client.getApplicationVersionFull(); String remoteAppVersion = remoteAppInfo.getAppVersion(); if (operationResult.isNewVersionAvailable()) { out.println("A new version is available. Local version is " + localAppVersion + ", remote version is " + remoteAppVersion); out.println("Download at " + remoteAppInfo.getDownloadUrl()); } else { out.println("Up to date, at version " + localAppVersion); } } else { out.println("Checking for updates failed. No connection? Try -d to get more details."); out.println(); } }
private UpdateOperationResult executeCheck() throws Exception { Version localAppVersion = Version.valueOf(Client.getApplicationVersion()); String appInfoResponseStr = getAppInfoResponseStr(); AppInfoResponse appInfoResponse = new Persister().read(AppInfoResponse.class, appInfoResponseStr); ArrayList<AppInfo> appInfoList = appInfoResponse.getAppInfoList(); if (appInfoList.size() > 0) { AppInfo remoteAppInfo = appInfoList.get(0); Version remoteAppVersion = Version.valueOf(remoteAppInfo.getAppVersion()); boolean newVersionAvailable = remoteAppVersion.greaterThan(localAppVersion); result.setResultCode(UpdateResultCode.OK); result.setAppInfo(remoteAppInfo); result.setNewVersionAvailable(newVersionAvailable); return result; } else { result.setResultCode(UpdateResultCode.NOK); return result; } }
@Override public void run() { try { UpdateOperation updateOperation = new UpdateOperation(null, concreteRequest.getOptions()); UpdateOperationResult operationResult = updateOperation.execute(); switch (operationResult.getResultCode()) { case OK: eventBus.post(new UpdateManagementResponse(UpdateManagementResponse.OK, operationResult, request.getId())); break; case NOK: eventBus.post(new UpdateManagementResponse(UpdateManagementResponse.NOK_FAILED_UNKNOWN, operationResult, request.getId())); break; } } catch (Exception e) { logger.log(Level.WARNING, "Error executing update management request.", e); eventBus.post(new UpdateManagementResponse(UpdateManagementResponse.NOK_OPERATION_FAILED, new UpdateOperationResult(), request.getId())); } } }, "UpdRq/" + concreteRequest.getOptions().getAction());
@Override public UpdateOperationResult execute() throws Exception { result.setAction(options.getAction()); switch (options.getAction()) { case CHECK: return executeCheck(); default: throw new Exception("Unknown action: " + options.getAction()); } }