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

Code
Comments
Other
Rev Date Author Line
2518 24 Jun 14 nicklas 1 /**
2518 24 Jun 14 nicklas 2   $Id: HdfsConnectionManagerActionFactory.java 1330 2011-04-01 08:16:40Z nicklas $
2518 24 Jun 14 nicklas 3
2518 24 Jun 14 nicklas 4   Copyright (C) 2011 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
2571 13 Aug 14 nicklas 24 import net.sf.basedb.core.DbControl;
2518 24 Jun 14 nicklas 25 import net.sf.basedb.core.plugin.About;
2518 24 Jun 14 nicklas 26 import net.sf.basedb.util.extensions.ActionFactory;
2518 24 Jun 14 nicklas 27 import net.sf.basedb.util.extensions.Extension;
2518 24 Jun 14 nicklas 28 import net.sf.basedb.util.extensions.ExtensionsUtil;
2518 24 Jun 14 nicklas 29 import net.sf.basedb.util.extensions.InvokationContext;
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   Action factory for sftp connection manager factory. This factory
2518 24 Jun 14 nicklas 34   will create a singleton instance of {@link SftpConnectionManagerFactory}
2518 24 Jun 14 nicklas 35   upon the first use. This instance will be used for all further
2518 24 Jun 14 nicklas 36   uses of this extension.
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 SftpConnectionManagerActionFactory
2518 24 Jun 14 nicklas 42   implements ActionFactory<ConnectionManagerFactory>
2518 24 Jun 14 nicklas 43 {
2518 24 Jun 14 nicklas 44   
2518 24 Jun 14 nicklas 45   private volatile SftpConnectionManagerFactory factory;
2518 24 Jun 14 nicklas 46   
2518 24 Jun 14 nicklas 47   public SftpConnectionManagerActionFactory()
2518 24 Jun 14 nicklas 48   {}
2518 24 Jun 14 nicklas 49   
2518 24 Jun 14 nicklas 50   /*
2518 24 Jun 14 nicklas 51     From the ActionFactory interface
2518 24 Jun 14 nicklas 52     ---------------------------------
2518 24 Jun 14 nicklas 53   */
2518 24 Jun 14 nicklas 54   @Override
2518 24 Jun 14 nicklas 55   public boolean prepareContext(
2518 24 Jun 14 nicklas 56       InvokationContext<? super ConnectionManagerFactory> context)
2518 24 Jun 14 nicklas 57   {
2518 24 Jun 14 nicklas 58     return true;
2518 24 Jun 14 nicklas 59   }
2518 24 Jun 14 nicklas 60   
2518 24 Jun 14 nicklas 61   @Override
2518 24 Jun 14 nicklas 62   public ConnectionManagerFactory[] getActions(
2518 24 Jun 14 nicklas 63       InvokationContext<? super ConnectionManagerFactory> context)
2518 24 Jun 14 nicklas 64   {
2518 24 Jun 14 nicklas 65     if (factory == null)
2518 24 Jun 14 nicklas 66     {
2518 24 Jun 14 nicklas 67       initFactory(context);
2518 24 Jun 14 nicklas 68     }
2583 18 Aug 14 nicklas 69     if (context.getClientContext() != null)
2571 13 Aug 14 nicklas 70     {
2583 18 Aug 14 nicklas 71       DbControl dc = context.getClientContext().getDbControl();
2583 18 Aug 14 nicklas 72       if (dc != null && !dc.isClosed())
2583 18 Aug 14 nicklas 73       {
2583 18 Aug 14 nicklas 74         // Initialize a connection cache hooked up to the current transaction
2583 18 Aug 14 nicklas 75         SftpConnectionManager.CONNECTION_CACHE.init(dc);
2583 18 Aug 14 nicklas 76       }
2571 13 Aug 14 nicklas 77     }
2518 24 Jun 14 nicklas 78     return new ConnectionManagerFactory[] { factory };
2518 24 Jun 14 nicklas 79   }
2518 24 Jun 14 nicklas 80   // --------------------------------------------
2518 24 Jun 14 nicklas 81   
4754 16 Apr 18 nicklas 82   private synchronized void initFactory(InvokationContext<?> context)
2518 24 Jun 14 nicklas 83   {
2518 24 Jun 14 nicklas 84     if (factory != null) return;
4754 16 Apr 18 nicklas 85     Extension<?> ext = context.getExtension();
2518 24 Jun 14 nicklas 86     About about = ext.getAbout();
2518 24 Jun 14 nicklas 87     
2518 24 Jun 14 nicklas 88     String id = ext.getId();
2518 24 Jun 14 nicklas 89     String name = ExtensionsUtil.getName(ext);
2518 24 Jun 14 nicklas 90     String description = about != null ? about.getDescription() : null;
2518 24 Jun 14 nicklas 91     
2518 24 Jun 14 nicklas 92     SftpConnectionManagerFactory tmp = new SftpConnectionManagerFactory();
2518 24 Jun 14 nicklas 93     tmp.init(id, name, description);
2518 24 Jun 14 nicklas 94     factory = tmp;
2518 24 Jun 14 nicklas 95   }
2518 24 Jun 14 nicklas 96   
2518 24 Jun 14 nicklas 97 }