extensions/net.sf.basedb.meludi/trunk/src/net/sf/basedb/meludi/dao/Fileserver.java

Code
Comments
Other
Rev Date Author Line
2933 14 Nov 14 olle 1 package net.sf.basedb.meludi.dao;
2933 14 Nov 14 olle 2
2933 14 Nov 14 olle 3 import java.lang.reflect.Field;
2933 14 Nov 14 olle 4 import java.util.List;
2933 14 Nov 14 olle 5
2933 14 Nov 14 olle 6 import net.sf.basedb.core.DbControl;
2933 14 Nov 14 olle 7 import net.sf.basedb.core.FileServer;
2933 14 Nov 14 olle 8 import net.sf.basedb.core.Include;
2933 14 Nov 14 olle 9 import net.sf.basedb.core.InvalidDataException;
2933 14 Nov 14 olle 10 import net.sf.basedb.core.ItemNotFoundException;
2933 14 Nov 14 olle 11 import net.sf.basedb.core.ItemQuery;
2933 14 Nov 14 olle 12 import net.sf.basedb.core.Type;
2933 14 Nov 14 olle 13 import net.sf.basedb.core.query.Expressions;
2933 14 Nov 14 olle 14 import net.sf.basedb.core.query.Hql;
2933 14 Nov 14 olle 15 import net.sf.basedb.core.query.Restrictions;
2933 14 Nov 14 olle 16
2933 14 Nov 14 olle 17 /**
2933 14 Nov 14 olle 18   Used to define file servers for access to external files.
2933 14 Nov 14 olle 19   
2933 14 Nov 14 olle 20   @author nicklas
2933 14 Nov 14 olle 21   @since 2.16
2933 14 Nov 14 olle 22 */
2933 14 Nov 14 olle 23 public class Fileserver 
2933 14 Nov 14 olle 24 {
2933 14 Nov 14 olle 25
2933 14 Nov 14 olle 26   /**
2933 14 Nov 14 olle 27     The file server containing analyzed data files.
2933 14 Nov 14 olle 28   */
2933 14 Nov 14 olle 29   public static final Fileserver PROJECT_ARCHIVE = 
2933 14 Nov 14 olle 30     new Fileserver("ProjectArchive", "net.sf.basedb.xfiles.sftp-connection-manager", 
2933 14 Nov 14 olle 31       "File server containing secondary analysis results.");
2933 14 Nov 14 olle 32
2933 14 Nov 14 olle 33   /**
2933 14 Nov 14 olle 34     Get the file server by name of the static constant defined in this class.
2933 14 Nov 14 olle 35     
2933 14 Nov 14 olle 36     @param cName The name of the static constant
2933 14 Nov 14 olle 37     @return A bioplate type object or null if not found
2933 14 Nov 14 olle 38    */
2933 14 Nov 14 olle 39   public static Fileserver getByCName(String cName)
2933 14 Nov 14 olle 40   {
2933 14 Nov 14 olle 41     if (cName == null) return null;
2933 14 Nov 14 olle 42     Fileserver fs = null;
2933 14 Nov 14 olle 43     try
2933 14 Nov 14 olle 44     {
2933 14 Nov 14 olle 45       Field f = Fileserver.class.getDeclaredField(cName);
2933 14 Nov 14 olle 46       fs = (Fileserver)f.get(null);
2933 14 Nov 14 olle 47     }
2933 14 Nov 14 olle 48     catch (NoSuchFieldException ex)
2933 14 Nov 14 olle 49     {}
2933 14 Nov 14 olle 50     catch (IllegalAccessException ex)
2933 14 Nov 14 olle 51     {}
2933 14 Nov 14 olle 52     catch (ClassCastException ex)
2933 14 Nov 14 olle 53     {}
2933 14 Nov 14 olle 54     return fs;
2933 14 Nov 14 olle 55   }
2933 14 Nov 14 olle 56   
2933 14 Nov 14 olle 57   private final String name;
2933 14 Nov 14 olle 58   private final String connectionManagerId;
2933 14 Nov 14 olle 59   private final String description;
2933 14 Nov 14 olle 60   private int id;
2933 14 Nov 14 olle 61   
2933 14 Nov 14 olle 62   /**
2933 14 Nov 14 olle 63     Create a new definition
2933 14 Nov 14 olle 64     @param name The name of the subtype
2933 14 Nov 14 olle 65     @param connectionManagerId The connection manager to use 
2933 14 Nov 14 olle 66     @param subtype The subtype of biomaterial that can be placed on the bioplate
2933 14 Nov 14 olle 67   */
2933 14 Nov 14 olle 68   private Fileserver(String name, String connectionManagerId, String description)
2933 14 Nov 14 olle 69   {
2933 14 Nov 14 olle 70     this.name = name;
2933 14 Nov 14 olle 71     this.connectionManagerId = connectionManagerId;
2933 14 Nov 14 olle 72     this.description = description;
2933 14 Nov 14 olle 73   }
2933 14 Nov 14 olle 74     
2933 14 Nov 14 olle 75   /**
2933 14 Nov 14 olle 76     Get the name of the biomaterial list.
2933 14 Nov 14 olle 77   */
2933 14 Nov 14 olle 78   public String getName()
2933 14 Nov 14 olle 79   {
2933 14 Nov 14 olle 80     return name;
2933 14 Nov 14 olle 81   }
2933 14 Nov 14 olle 82   
2933 14 Nov 14 olle 83   /**
2933 14 Nov 14 olle 84     Get the list description.
2933 14 Nov 14 olle 85   */
2933 14 Nov 14 olle 86   public String getDescription()
2933 14 Nov 14 olle 87   {
2933 14 Nov 14 olle 88     return description;
2933 14 Nov 14 olle 89   }
2933 14 Nov 14 olle 90   
2933 14 Nov 14 olle 91   /**
2933 14 Nov 14 olle 92     Get the id of the connection manager to use.
2933 14 Nov 14 olle 93   */
2933 14 Nov 14 olle 94   public String getConnectionManagerId()
2933 14 Nov 14 olle 95   {
2933 14 Nov 14 olle 96     return connectionManagerId;
2933 14 Nov 14 olle 97   }
2933 14 Nov 14 olle 98   
2933 14 Nov 14 olle 99   /**
2933 14 Nov 14 olle 100     Load the file server as a BASE item
2933 14 Nov 14 olle 101     @param dc The DbControl to use for database access
2933 14 Nov 14 olle 102     @return An FileServer object
2933 14 Nov 14 olle 103   */
2933 14 Nov 14 olle 104   public FileServer load(DbControl dc)
2933 14 Nov 14 olle 105   {
2933 14 Nov 14 olle 106     FileServer list = null;
2933 14 Nov 14 olle 107     if (id == 0)
2933 14 Nov 14 olle 108     {
2933 14 Nov 14 olle 109       List<FileServer> result = list(dc);
2933 14 Nov 14 olle 110       if (result.size() == 0)
2933 14 Nov 14 olle 111       {
2933 14 Nov 14 olle 112         throw new ItemNotFoundException("FileServer["+getName()+"]");
2933 14 Nov 14 olle 113       }
2933 14 Nov 14 olle 114       else if (result.size() > 1)
2933 14 Nov 14 olle 115       {
2933 14 Nov 14 olle 116         throw new InvalidDataException("Found > 1 FileServer["+getName()+"]");
2933 14 Nov 14 olle 117       }
2933 14 Nov 14 olle 118       list = result.get(0);
2933 14 Nov 14 olle 119       id = list.getId();
2933 14 Nov 14 olle 120     }
2933 14 Nov 14 olle 121     else
2933 14 Nov 14 olle 122     {
2933 14 Nov 14 olle 123       list = FileServer.getById(dc, id);
2933 14 Nov 14 olle 124     }
2933 14 Nov 14 olle 125     return list;
2933 14 Nov 14 olle 126   }
2933 14 Nov 14 olle 127   
2933 14 Nov 14 olle 128   /**
2933 14 Nov 14 olle 129     List all file server registered in BASE with an name matching this 
2933 14 Nov 14 olle 130     definition. Normally, only a single file server should be returned.
2933 14 Nov 14 olle 131   */
2933 14 Nov 14 olle 132   public List<FileServer> list(DbControl dc)
2933 14 Nov 14 olle 133   {
2933 14 Nov 14 olle 134     ItemQuery<FileServer> query = FileServer.getQuery();
2933 14 Nov 14 olle 135     query.restrict(
2933 14 Nov 14 olle 136       Restrictions.eq(
2933 14 Nov 14 olle 137         Hql.property("name"), 
2933 14 Nov 14 olle 138         Expressions.parameter("name", getName(), Type.STRING)
2933 14 Nov 14 olle 139       ));
2933 14 Nov 14 olle 140     query.include(Include.ALL);
2933 14 Nov 14 olle 141     return query.list(dc);
2933 14 Nov 14 olle 142   }
2933 14 Nov 14 olle 143   
2933 14 Nov 14 olle 144
2933 14 Nov 14 olle 145   
2933 14 Nov 14 olle 146 }