Exemplo n.º 1
0
 /**
  * Called when a transfer is finished from setEndOfTransfer
  *
  * @return True if it was already called before
  * @throws FtpNoTransferException
  */
 private boolean checkFtpTransferStatus() throws FtpNoTransferException {
   if (isCheckAlreadyCalled) {
     logger.warn("Check: ALREADY CALLED");
     return true;
   }
   if (isExecutingCommandFinished) {
     // already done
     logger.warn("Check: already Finished");
     if (commandFinishing != null) {
       commandFinishing.cancel();
     }
     throw new FtpNoTransferException("No transfer running");
   }
   if (!isDataNetworkHandlerReady) {
     // already done
     logger.warn("Check: already DNH not ready");
     throw new FtpNoTransferException("No connection");
   }
   isCheckAlreadyCalled = true;
   FtpTransfer executedTransfer = getExecutingFtpTransfer();
   // logger.debug("Check: command {}", executedTransfer.getCommand());
   // DNH is ready and Transfer is running
   if (FtpCommandCode.isListLikeCommand(executedTransfer.getCommand())) {
     if (executedTransfer.getStatus()) {
       // Special status for List Like command
       // logger.debug("Check: List OK");
       closeTransfer();
       return false;
     }
     // logger.debug("Check: List Ko");
     abortTransfer();
     return false;
   } else if (FtpCommandCode.isRetrLikeCommand(executedTransfer.getCommand())) {
     FtpFile file = null;
     try {
       file = executedTransfer.getFtpFile();
     } catch (FtpNoFileException e) {
       // logger.debug("Check: Retr no FtpFile for Retr");
       abortTransfer();
       return false;
     }
     try {
       if (file.isInReading()) {
         logger.debug("Check: Retr FtpFile still in reading KO");
         abortTransfer();
       } else {
         logger.debug("Check: Retr FtpFile no more in reading OK");
         closeTransfer();
       }
     } catch (CommandAbstractException e) {
       logger.warn("Retr Test is in Reading problem", e);
       closeTransfer();
     }
     return false;
   } else if (FtpCommandCode.isStoreLikeCommand(executedTransfer.getCommand())) {
     // logger.debug("Check: Store OK");
     closeTransfer();
     return false;
   } else {
     logger.warn("Check: Unknown command");
     abortTransfer();
   }
   return false;
 }