Ejemplo n.º 1
0
 /*
  * (non-Javadoc)
  *
  * @see comeon.commons.Commons#upload(comeon.model.Picture,
  * in.yuvi.http.fluent.ProgressListener)
  */
 @Override
 public void upload(final Picture picture, final ProgressListener listener)
     throws NotLoggedInException, FailedLoginException, FailedUploadException, IOException {
   synchronized (this) {
     if (!this.api.isLoggedIn) {
       LOGGER.debug("Not logged in");
       this.login();
     }
   }
   final InputStream stream = Files.asByteSource(picture.getFile()).openBufferedStream();
   try {
     LOGGER.debug("Uploading");
     final ApiResult result =
         this.api.upload(
             picture.getFile().getName(),
             stream,
             picture.getFile().length(),
             picture.getRenderedTemplate(),
             MessageFormat.format(
                 UI.BUNDLE.getString("upload.comment"), UI.BUNDLE.getString("comeon")),
             true,
             listener);
     final ApiResult error = result.getNode("/api/error");
     if (error.getDocument() != null) {
       final String code = error.getString("@code");
       final String info = error.getString("@info");
       throw new FailedUploadException(code, info);
     }
     final List<ApiResult> warnings = result.getNodes("/api/warning");
     if (warnings != null && !warnings.isEmpty()) {
       for (final ApiResult warning : warnings) {
         final String code = warning.getString("@code");
         final String info = warning.getString("@info");
         LOGGER.warn("Upload warning. MediaWiki says: {}: {}", code, info);
       }
     }
   } catch (final IOException e) {
     throw new FailedUploadException(e);
   }
 }