Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (C) 2014 Philip Helger (www.helger.com) philip[at]helger[dot]com Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 
 package com.helger.webbasics.ssh.generic.ftp;
 
 import java.util.List;
 
 
 
 
 public class FtpConnector implements IConnectorFileBased <FTPClientFTPFile>
 {
   private static final Logger s_aLogger = LoggerFactory.getLogger (FtpConnector.class);
   private FTPClient m_aChannel;
 
   public FtpConnector (@Nonnull final String sHostname)
   {
     this (new FftpConnectionDestination (sHostname));
   }
 
   public FtpConnector (@Nonnull final String sHostnamefinal boolean bEnterLocalPassiveMode)
   {
     this (new FftpConnectionDestination (sHostnamebEnterLocalPassiveMode));
   }
 
   public FtpConnector (@Nonnull final String sHostnamefinal int nPort)
   {
     this (new FftpConnectionDestination (sHostnamenPort));
   }
 
   public FtpConnector (@Nonnull final String sHostnamefinal int nPortfinal boolean bEnterLocalPassiveMode)
   {
     this (new FftpConnectionDestination (sHostnamenPortbEnterLocalPassiveMode));
   }
 
   public FtpConnector (@Nonnull final IFtpConnectionDestination aDestination)
   {
     if (aDestination == null)
       throw new NullPointerException ("destination");
      = aDestination;
   }
 
   @Nonnull
   {
     return ;
   }
 
   @Nullable
   public FTPClient getHandle ()
   {
     return ;
   }
 
   @Nonnull
   public EChange openConnection (@Nonnull final IAuthCredentials aCredentials)
   {
     // already open?
     if (isConnectionOpen ())
       return .;
 
     // open connection
      = .openConnection (aCredentials);
     return EChange.valueOf (isConnectionOpen ());
   }
 
   @Nonnull
   public EChange closeConnection ()
  {
    {
       = null;
      return .;
    }
    return .;
  }
  public boolean isConnectionOpen ()
  {
    return  != null;
  }
  public ESuccess getData (@Nonnull final String sFilename, @Nonnull @WillClose final OutputStream aOS)
  {
    try
    {
      if ( != null)
        try
        {
          // Does not close the output-stream!
          if (.retrieveFile (sFilenameaOS))
          {
            .info ("Successfully got data '" + sFilename + "'");
            return .;
          }
          .warn ("Failed to get data '" + sFilename + "': " + .getReplyString ());
        }
        catch (final IOException ex)
        {
          .error ("Error in get data '" + sFilename + "': " + .getReplyString (), ex);
        }
      return .;
    }
    finally
    {
      StreamUtils.close (aOS);
    }
  }
  public ESuccess putData (@Nonnull final String sFilename, @Nonnull @WillClose final InputStream aIS)
  {
    try
    {
      if ( != null)
        try
        {
          // Does not close the input-stream!
          if (.storeFile (sFilenameaIS))
          {
            .info ("Successfully put data '" + sFilename + "'");
            return .;
          }
          .warn ("Failed to put data '" + sFilename + "': " + .getReplyString ());
        }
        catch (final IOException ex)
        {
          .error ("Error putting data '" + sFilename + "': " + .getReplyString (), ex);
        }
      return .;
    }
    finally
    {
      StreamUtils.close (aIS);
    }
  }
  public ESuccess changeWorkingDirectory (final String sDirectory)
  {
    if ( != null)
      try
      {
        if (.changeWorkingDirectory (sDirectory))
        {
          .info ("Successfully changed directory to '" + sDirectory + "'");
          return .;
        }
        .warn ("Failed to change working directory to '" + sDirectory + "': " + .getReplyString ());
      }
      catch (final IOException ex)
      {
        .error ("Error changing working directory to '" + sDirectory + "': " + .getReplyString (),
                         ex);
      }
    return .;
  }
  {
    if ( != null)
      try
      {
        if (.changeToParentDirectory ())
        {
          .info ("Successfully changed directory to parent directory");
          return .;
        }
        .warn ("Failed to change to parent directory: " + .getReplyString ());
      }
      catch (final IOException ex)
      {
        .error ("Error changing to parent directory: " + .getReplyString (), ex);
      }
    return .;
  }
  public ESuccess deleteFile (@Nullable final String sFilename)
  {
    if ( != null)
      try
      {
        // listNames may return null
        if (ArrayHelper.contains (.listNames (null), sFilename))
        {
          if (!.deleteFile (sFilename))
          {
            .error ("Failed to delete file '" + sFilename + "': " + .getReplyString ());
            return .;
          }
          .info ("Successfully deleted file '" + sFilename + "'");
        }
        // Return success if file is not on server
        return .;
      }
      catch (final IOException ex)
      {
        .error ("Error deleting file '" + sFilename + "': " + .getReplyString (), ex);
      }
    return .;
  }
  public ESuccess listFiles (@Nullable final IFilter <FTPFileaFilter, @Nonnull final List <FTPFileaTargetList)
  {
    if (aTargetList == null)
      throw new NullPointerException ("targetList");
    if ( != null)
    {
      try
      {
        final FTPFile [] aFiles = .listFiles (null, FTPFileFilterFromIFilter.create (aFilter));
        for (final FTPFile aFile : aFiles)
          aTargetList.add (aFile);
        .info ("Successfully listed " + aTargetList.size () + " files");
        return .;
      }
      catch (final IOException ex)
      {
        .error ("Error listing files: " + .getReplyString (), ex);
      }
    }
    return .;
  }
New to GrepCode? Check out our FAQ X