extensions/net.sf.basedb.xfiles/trunk/src/net/sf/basedb/xfiles/sftp/SftpConnectionManagerFactory.java

Code
Comments
Other
Rev Date Author Line
2518 24 Jun 14 nicklas 1 /**
2518 24 Jun 14 nicklas 2   $Id $
2518 24 Jun 14 nicklas 3
2518 24 Jun 14 nicklas 4   Copyright (C) 2014 Nicklas Nordborg
2518 24 Jun 14 nicklas 5
2518 24 Jun 14 nicklas 6   This file is part of BASE - BioArray Software Environment.
2518 24 Jun 14 nicklas 7   Available at http://base.thep.lu.se/
2518 24 Jun 14 nicklas 8
2518 24 Jun 14 nicklas 9   BASE is free software; you can redistribute it and/or
2518 24 Jun 14 nicklas 10   modify it under the terms of the GNU General Public License
2518 24 Jun 14 nicklas 11   as published by the Free Software Foundation; either version 3
2518 24 Jun 14 nicklas 12   of the License, or (at your option) any later version.
2518 24 Jun 14 nicklas 13
2518 24 Jun 14 nicklas 14   BASE is distributed in the hope that it will be useful,
2518 24 Jun 14 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
2518 24 Jun 14 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2518 24 Jun 14 nicklas 17   GNU General Public License for more details.
2518 24 Jun 14 nicklas 18
2518 24 Jun 14 nicklas 19   You should have received a copy of the GNU General Public License
2518 24 Jun 14 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
2518 24 Jun 14 nicklas 21 */
2518 24 Jun 14 nicklas 22 package net.sf.basedb.xfiles.sftp;
2518 24 Jun 14 nicklas 23
2518 24 Jun 14 nicklas 24 import java.net.URI;
2518 24 Jun 14 nicklas 25
2518 24 Jun 14 nicklas 26 import net.sf.basedb.util.uri.ConnectionParameters;
3804 22 Mar 16 nicklas 27 import net.schmizz.sshj.Config;
3804 22 Mar 16 nicklas 28 import net.schmizz.sshj.DefaultConfig;
2518 24 Jun 14 nicklas 29 import net.sf.basedb.util.uri.ConnectionManager;
2518 24 Jun 14 nicklas 30 import net.sf.basedb.util.uri.ConnectionManagerFactory;
2518 24 Jun 14 nicklas 31
2518 24 Jun 14 nicklas 32 /**
2518 24 Jun 14 nicklas 33   Access remote files via SFTP protocol. URI:s should
2518 24 Jun 14 nicklas 34   use 'sftp://' as schema. The host and port of the URI should point to the 
2518 24 Jun 14 nicklas 35   a server with SSH capabilities. A SSH fingerprint is required and must
2518 24 Jun 14 nicklas 36   match with the public key of the server.
2518 24 Jun 14 nicklas 37   
2518 24 Jun 14 nicklas 38   @author Nicklas
2518 24 Jun 14 nicklas 39   @since 1.0
2518 24 Jun 14 nicklas 40 */
2518 24 Jun 14 nicklas 41 public class SftpConnectionManagerFactory
2518 24 Jun 14 nicklas 42   implements ConnectionManagerFactory
2518 24 Jun 14 nicklas 43 {
2518 24 Jun 14 nicklas 44
2518 24 Jun 14 nicklas 45   
3804 22 Mar 16 nicklas 46   private final Config sshConfig;
2518 24 Jun 14 nicklas 47   private String id;
2518 24 Jun 14 nicklas 48   private String name;
2518 24 Jun 14 nicklas 49   private String description;
2518 24 Jun 14 nicklas 50   
2518 24 Jun 14 nicklas 51   public SftpConnectionManagerFactory()
3797 18 Mar 16 nicklas 52   {
3804 22 Mar 16 nicklas 53     this.sshConfig = new DefaultConfig();
3797 18 Mar 16 nicklas 54   }
2518 24 Jun 14 nicklas 55   
2518 24 Jun 14 nicklas 56   /*
2518 24 Jun 14 nicklas 57     From the ConnectionManagerFactory interface
2518 24 Jun 14 nicklas 58     -------------------------------------------
2518 24 Jun 14 nicklas 59   */
2518 24 Jun 14 nicklas 60   @Override
2518 24 Jun 14 nicklas 61   public String getId()
2518 24 Jun 14 nicklas 62   {
2518 24 Jun 14 nicklas 63     return id;
2518 24 Jun 14 nicklas 64   }
2518 24 Jun 14 nicklas 65   
2518 24 Jun 14 nicklas 66   @Override
2518 24 Jun 14 nicklas 67   public String getDisplayName()
2518 24 Jun 14 nicklas 68   {
2518 24 Jun 14 nicklas 69     return name;
2518 24 Jun 14 nicklas 70   }
2518 24 Jun 14 nicklas 71   
2518 24 Jun 14 nicklas 72   @Override
2518 24 Jun 14 nicklas 73   public String getDescription()
2518 24 Jun 14 nicklas 74   {
2518 24 Jun 14 nicklas 75     return description;
2518 24 Jun 14 nicklas 76   }
2518 24 Jun 14 nicklas 77
2518 24 Jun 14 nicklas 78   @Override
2518 24 Jun 14 nicklas 79   public boolean useAutoDetection()
2518 24 Jun 14 nicklas 80   {
2518 24 Jun 14 nicklas 81     return true;
2518 24 Jun 14 nicklas 82   }
2518 24 Jun 14 nicklas 83
2518 24 Jun 14 nicklas 84   @Override
2518 24 Jun 14 nicklas 85   public boolean supports(URI uri)
2518 24 Jun 14 nicklas 86   {
2518 24 Jun 14 nicklas 87     if (uri == null) throw new NullPointerException("uri");
2518 24 Jun 14 nicklas 88     String scheme = uri.getScheme();
2518 24 Jun 14 nicklas 89     return "sftp".equals(scheme);
2518 24 Jun 14 nicklas 90   }
2518 24 Jun 14 nicklas 91
2518 24 Jun 14 nicklas 92   @Override
2518 24 Jun 14 nicklas 93   public ConnectionManager createConnectionManager(URI uri, ConnectionParameters server)
2518 24 Jun 14 nicklas 94   {
3804 22 Mar 16 nicklas 95     return new SftpConnectionManager(uri, server, sshConfig);
2518 24 Jun 14 nicklas 96   }
2518 24 Jun 14 nicklas 97   // -------------------------------------
2518 24 Jun 14 nicklas 98
2518 24 Jun 14 nicklas 99   /**
2518 24 Jun 14 nicklas 100     Initialize this factory with some information.
2518 24 Jun 14 nicklas 101   */
2518 24 Jun 14 nicklas 102   public void init(String id, String name, String description)
2518 24 Jun 14 nicklas 103   {
2518 24 Jun 14 nicklas 104     this.id = id;
2518 24 Jun 14 nicklas 105     this.name = name;
2518 24 Jun 14 nicklas 106     this.description = description;
2518 24 Jun 14 nicklas 107   }
2518 24 Jun 14 nicklas 108
2518 24 Jun 14 nicklas 109 }