plugins/base2/uk.ac.ebi.tab2mage/trunk/Tab2MageImporter/src/uk/ac/ebi/nugo/common/Helper.java

Code
Comments
Other
Rev Date Author Line
477 12 Nov 07 dominic 1 package uk.ac.ebi.nugo.common;
477 12 Nov 07 dominic 2
477 12 Nov 07 dominic 3 import java.util.ArrayList;
477 12 Nov 07 dominic 4 import java.util.Arrays;
477 12 Nov 07 dominic 5 import java.util.List;
477 12 Nov 07 dominic 6 import java.util.Set;
477 12 Nov 07 dominic 7 import java.util.concurrent.ConcurrentHashMap;
477 12 Nov 07 dominic 8
477 12 Nov 07 dominic 9 import net.sf.basedb.core.AnnotationType;
477 12 Nov 07 dominic 10 import net.sf.basedb.core.ArrayBatch;
477 12 Nov 07 dominic 11 import net.sf.basedb.core.ArrayDesign;
477 12 Nov 07 dominic 12 import net.sf.basedb.core.ArraySlide;
477 12 Nov 07 dominic 13 import net.sf.basedb.core.BaseException;
477 12 Nov 07 dominic 14 import net.sf.basedb.core.BioSource;
477 12 Nov 07 dominic 15 import net.sf.basedb.core.DbControl;
477 12 Nov 07 dominic 16 import net.sf.basedb.core.Directory;
477 12 Nov 07 dominic 17 import net.sf.basedb.core.Extract;
477 12 Nov 07 dominic 18 import net.sf.basedb.core.File;
477 12 Nov 07 dominic 19 import net.sf.basedb.core.Include;
477 12 Nov 07 dominic 20 import net.sf.basedb.core.ItemAlreadyExistsException;
477 12 Nov 07 dominic 21 import net.sf.basedb.core.ItemQuery;
477 12 Nov 07 dominic 22 import net.sf.basedb.core.ItemResultList;
477 12 Nov 07 dominic 23 import net.sf.basedb.core.Label;
477 12 Nov 07 dominic 24 import net.sf.basedb.core.LabeledExtract;
477 12 Nov 07 dominic 25 import net.sf.basedb.core.Path;
477 12 Nov 07 dominic 26 import net.sf.basedb.core.Sample;
477 12 Nov 07 dominic 27 import net.sf.basedb.core.SessionControl;
477 12 Nov 07 dominic 28 import net.sf.basedb.core.Type;
477 12 Nov 07 dominic 29 import net.sf.basedb.core.User;
477 12 Nov 07 dominic 30 import net.sf.basedb.core.query.Expressions;
477 12 Nov 07 dominic 31 import net.sf.basedb.core.query.Hql;
477 12 Nov 07 dominic 32 import net.sf.basedb.core.query.Restrictions;
477 12 Nov 07 dominic 33
477 12 Nov 07 dominic 34 /**
477 12 Nov 07 dominic 35    A plugin utils class for the tab2mage export and export.  
477 12 Nov 07 dominic 36    @author Dominic  Oyeniran
477 12 Nov 07 dominic 37   @version 1.0
477 12 Nov 07 dominic 38 */
477 12 Nov 07 dominic 39
477 12 Nov 07 dominic 40 public class Helper 
477 12 Nov 07 dominic 41 {
477 12 Nov 07 dominic 42    /**
477 12 Nov 07 dominic 43        creates the exports files and throws an exception if the file is already exisiting
477 12 Nov 07 dominic 44        @param user, the logged in user
477 12 Nov 07 dominic 45        @param overwrite, false if an existing file should not be overwritten and true otherwise
477 12 Nov 07 dominic 46        @param pathString, the file path 
477 12 Nov 07 dominic 47        @throws ItemAlreadyExistsException
477 12 Nov 07 dominic 48    */
477 12 Nov 07 dominic 49      
477 12 Nov 07 dominic 50    public static File processFilePath (User user,boolean overwrite, DbControl dc, String pathString)
477 12 Nov 07 dominic 51    {
477 12 Nov 07 dominic 52      if (pathString.startsWith("~/"))
477 12 Nov 07 dominic 53       {
477 12 Nov 07 dominic 54        pathString = "~"+user.getLogin()+pathString.substring(1);
477 12 Nov 07 dominic 55       }
477 12 Nov 07 dominic 56       Path path = new Path(pathString, Path.Type.FILE);    
477 12 Nov 07 dominic 57       
477 12 Nov 07 dominic 58       File file = File.getByPath(dc, path, true); 
477 12 Nov 07 dominic 59       file.setMimeType("text/plain"); //set the type of the file
477 12 Nov 07 dominic 60       if (file.isInDatabase() && !overwrite && !file.isRemoved())
477 12 Nov 07 dominic 61       {  
477 12 Nov 07 dominic 62         throw new ItemAlreadyExistsException("File[path="+path+"]");      
477 12 Nov 07 dominic 63       }
477 12 Nov 07 dominic 64       else if(!file.isInDatabase())
477 12 Nov 07 dominic 65       {
477 12 Nov 07 dominic 66         dc.saveItem(file);
477 12 Nov 07 dominic 67       }
477 12 Nov 07 dominic 68       return file;
477 12 Nov 07 dominic 69    }
477 12 Nov 07 dominic 70   
477 12 Nov 07 dominic 71     
477 12 Nov 07 dominic 72    public static File processFilePath (User user,boolean overwrite, SessionControl sc, String pathString)
477 12 Nov 07 dominic 73    {
477 12 Nov 07 dominic 74     DbControl dc= null;
477 12 Nov 07 dominic 75     File file =null;
477 12 Nov 07 dominic 76      try
477 12 Nov 07 dominic 77      {
477 12 Nov 07 dominic 78       dc= sc.newDbControl();
477 12 Nov 07 dominic 79       if (pathString.startsWith("~/"))
477 12 Nov 07 dominic 80       {
477 12 Nov 07 dominic 81        pathString = "~"+user.getLogin()+pathString.substring(1);
477 12 Nov 07 dominic 82       }
477 12 Nov 07 dominic 83       Path path = new Path(pathString, Path.Type.FILE);    
477 12 Nov 07 dominic 84       file= File.getByPath(dc, path, true); 
477 12 Nov 07 dominic 85       file.setMimeType("text/plain"); //set the type of the file
477 12 Nov 07 dominic 86       if (file.isInDatabase() && !overwrite && !file.isRemoved())
477 12 Nov 07 dominic 87       {  
477 12 Nov 07 dominic 88         throw new ItemAlreadyExistsException("File[path="+path+"]");      
477 12 Nov 07 dominic 89       }
477 12 Nov 07 dominic 90       else if(!file.isInDatabase())
477 12 Nov 07 dominic 91       {
477 12 Nov 07 dominic 92         dc.saveItem(file);
477 12 Nov 07 dominic 93       }
477 12 Nov 07 dominic 94       dc.commit();
477 12 Nov 07 dominic 95     }
477 12 Nov 07 dominic 96     catch(Exception e)
477 12 Nov 07 dominic 97     {
477 12 Nov 07 dominic 98       dc.close();
477 12 Nov 07 dominic 99     }
477 12 Nov 07 dominic 100     finally
477 12 Nov 07 dominic 101     {
477 12 Nov 07 dominic 102       if (dc!=null)
477 12 Nov 07 dominic 103         dc.close();
477 12 Nov 07 dominic 104     }
477 12 Nov 07 dominic 105      
477 12 Nov 07 dominic 106     return file;
477 12 Nov 07 dominic 107    }
477 12 Nov 07 dominic 108   /**
477 12 Nov 07 dominic 109      Displays the content of the map. Helps to check that the content displayed is correct. 
477 12 Nov 07 dominic 110      @param map to be displayed.
477 12 Nov 07 dominic 111   */
477 12 Nov 07 dominic 112    public static <T> void displayMaps (ConcurrentHashMap<T,T> map)
477 12 Nov 07 dominic 113    {
477 12 Nov 07 dominic 114      for (Object mapEntrySet: map.entrySet())
477 12 Nov 07 dominic 115      {
477 12 Nov 07 dominic 116        System.out.println("The content of the map [ " +mapEntrySet.toString()+ "]\n");
477 12 Nov 07 dominic 117      }
477 12 Nov 07 dominic 118    }
477 12 Nov 07 dominic 119
477 12 Nov 07 dominic 120   public static void displayParameterHeader(Set<String> parameterSectionHeader)
477 12 Nov 07 dominic 121    {
477 12 Nov 07 dominic 122        for (String paramHyb : parameterSectionHeader)
477 12 Nov 07 dominic 123       {
477 12 Nov 07 dominic 124         System.out.println(paramHyb+"\n");
477 12 Nov 07 dominic 125       }
477 12 Nov 07 dominic 126    }
477 12 Nov 07 dominic 127    
477 12 Nov 07 dominic 128    /**
477 12 Nov 07 dominic 129       retrieves a given file extension
477 12 Nov 07 dominic 130       @param file, the name of the 
477 12 Nov 07 dominic 131       @return
477 12 Nov 07 dominic 132     */
477 12 Nov 07 dominic 133    public static String getFileExtension(File file)
477 12 Nov 07 dominic 134    {
477 12 Nov 07 dominic 135      String fileName= file.getName();
477 12 Nov 07 dominic 136      String ext= fileName.substring(fileName.lastIndexOf(".") + 1);
477 12 Nov 07 dominic 137      ext = ext.toLowerCase();
477 12 Nov 07 dominic 138       return ext;
477 12 Nov 07 dominic 139    }
477 12 Nov 07 dominic 140    
477 12 Nov 07 dominic 141    /**
477 12 Nov 07 dominic 142     gets an annotation type that matches a an annotation type name specified in 
477 12 Nov 07 dominic 143     the hyb parameter section
477 12 Nov 07 dominic 144     maybe more reasonable to get this by ID
477 12 Nov 07 dominic 145     of a tab2mage file
477 12 Nov 07 dominic 146     @param atName , annotation type name
477 12 Nov 07 dominic 147     @return annotationType,  <code>AnnotationType</code> 
477 12 Nov 07 dominic 148    */
477 12 Nov 07 dominic 149   public static AnnotationType getAnnotationTypeByName(String atName, DbControl dc)
477 12 Nov 07 dominic 150   {
477 12 Nov 07 dominic 151     AnnotationType annotationType =null;
477 12 Nov 07 dominic 152     ItemQuery<AnnotationType> atQuery = AnnotationType.getQuery(null);
477 12 Nov 07 dominic 153     atQuery.include(Include.MINE, Include.IN_PROJECT, Include.SHARED, Include.NOT_REMOVED);
477 12 Nov 07 dominic 154     ItemResultList<AnnotationType>  ats = atQuery.list(dc);
477 12 Nov 07 dominic 155     for (AnnotationType at : ats)
477 12 Nov 07 dominic 156     {
477 12 Nov 07 dominic 157       if (at.getName().equalsIgnoreCase(atName))
477 12 Nov 07 dominic 158       {
477 12 Nov 07 dominic 159         annotationType= at;
477 12 Nov 07 dominic 160         break;
477 12 Nov 07 dominic 161       }
477 12 Nov 07 dominic 162     }
477 12 Nov 07 dominic 163     return annotationType;
477 12 Nov 07 dominic 164   }
477 12 Nov 07 dominic 165    
477 12 Nov 07 dominic 166   /**
477 12 Nov 07 dominic 167       get the Label given the dye for the tab2mage file hyb section. Some labels are provided in base by default.
477 12 Nov 07 dominic 168       @param dye
477 12 Nov 07 dominic 169       @return
477 12 Nov 07 dominic 170    */
477 12 Nov 07 dominic 171   public static Label getLabel(String dye, DbControl dc)
477 12 Nov 07 dominic 172   {
477 12 Nov 07 dominic 173     Label lab = null;
477 12 Nov 07 dominic 174     //check if dye is "" or null 
477 12 Nov 07 dominic 175     ItemQuery<Label> labelQuery = Label.getQuery(); 
477 12 Nov 07 dominic 176     labelQuery.include(Include.MINE, Include.IN_PROJECT, Include.SHARED, Include.NOT_REMOVED);
477 12 Nov 07 dominic 177     ItemResultList<Label> labels = labelQuery.list(dc);
477 12 Nov 07 dominic 178     for (Label lb : labels)
477 12 Nov 07 dominic 179     {
477 12 Nov 07 dominic 180       if (lb.getName().equalsIgnoreCase(dye))
477 12 Nov 07 dominic 181       {
477 12 Nov 07 dominic 182         lab= lb;
477 12 Nov 07 dominic 183         break;
477 12 Nov 07 dominic 184       }
477 12 Nov 07 dominic 185     }
477 12 Nov 07 dominic 186     return lab;
477 12 Nov 07 dominic 187   }
477 12 Nov 07 dominic 188   /**
477 12 Nov 07 dominic 189      get an array design. this must have been created by the adminsitator before users can run the tab2mage importer.
477 12 Nov 07 dominic 190      @param acession, the accesion number
477 12 Nov 07 dominic 191      @return array design;
477 12 Nov 07 dominic 192    */
477 12 Nov 07 dominic 193   public static ArrayDesign  getArrayDesign (String accession, DbControl dc)
477 12 Nov 07 dominic 194   {
477 12 Nov 07 dominic 195     ArrayDesign aDesign = null;
477 12 Nov 07 dominic 196     ItemQuery<ArrayDesign> arrayDesignQuery = ArrayDesign.getQuery();
477 12 Nov 07 dominic 197     arrayDesignQuery.include(Include.MINE, Include.IN_PROJECT, Include.SHARED, Include.NOT_REMOVED);
477 12 Nov 07 dominic 198     arrayDesignQuery.restrict(Restrictions.eq(Hql.property("name"), Expressions.string(accession)));
477 12 Nov 07 dominic 199     if (arrayDesignQuery.list(dc).size()!=0)
477 12 Nov 07 dominic 200       return arrayDesignQuery.list(dc).get(0);
477 12 Nov 07 dominic 201     else
477 12 Nov 07 dominic 202       return  aDesign;
477 12 Nov 07 dominic 203   }
477 12 Nov 07 dominic 204   
477 12 Nov 07 dominic 205   /**
477 12 Nov 07 dominic 206      gets an array slide
477 12 Nov 07 dominic 207       @param dc
477 12 Nov 07 dominic 208       @param slide, slide name to find
477 12 Nov 07 dominic 209       @return an ArraySlide object
477 12 Nov 07 dominic 210    */
477 12 Nov 07 dominic 211   public static ArraySlide findArraySlide(DbControl dc, String slide)
477 12 Nov 07 dominic 212   {
477 12 Nov 07 dominic 213     ArraySlide as= null;
477 12 Nov 07 dominic 214     ItemQuery<ArraySlide> query = ArraySlide.getQuery();
477 12 Nov 07 dominic 215     query.include(Include.MINE, Include.IN_PROJECT, Include.SHARED, Include.NOT_REMOVED);
477 12 Nov 07 dominic 216     query.restrict(Restrictions.eq(Hql.property("name"), Expressions.string(slide)));
477 12 Nov 07 dominic 217     if (query.list(dc).size()!=0)
477 12 Nov 07 dominic 218       return query.list(dc).get(0);
477 12 Nov 07 dominic 219     else
477 12 Nov 07 dominic 220       return as;
477 12 Nov 07 dominic 221   }
477 12 Nov 07 dominic 222   
477 12 Nov 07 dominic 223   public static ArrayBatch findArrayBatch(DbControl dc, String accession)
477 12 Nov 07 dominic 224   {
477 12 Nov 07 dominic 225     ArrayBatch ab= null;
477 12 Nov 07 dominic 226     ItemQuery<ArrayBatch> query = ArrayBatch.getQuery();
477 12 Nov 07 dominic 227     query.include(Include.MINE, Include.IN_PROJECT, Include.SHARED, Include.NOT_REMOVED);
477 12 Nov 07 dominic 228     query.restrict(Restrictions.eq(Hql.property("name"), Expressions.string(accession)));
477 12 Nov 07 dominic 229     if (query.list(dc).size()!=0)
477 12 Nov 07 dominic 230       return query.list(dc).get(0);
477 12 Nov 07 dominic 231     else
477 12 Nov 07 dominic 232       return ab;
477 12 Nov 07 dominic 233   }
477 12 Nov 07 dominic 234   
477 12 Nov 07 dominic 235   /**
477 12 Nov 07 dominic 236      converts an array content as lowercases in to a list
477 12 Nov 07 dominic 237       @param array
477 12 Nov 07 dominic 238      @return list of the content of an array in lowercase
477 12 Nov 07 dominic 239    */
477 12 Nov 07 dominic 240   public static List<String> arrayContentToLowercase(String [] array)
477 12 Nov 07 dominic 241   {
477 12 Nov 07 dominic 242     List< String> ar = new ArrayList<String>();
477 12 Nov 07 dominic 243     for (String t : Arrays.asList(array))
477 12 Nov 07 dominic 244     {
477 12 Nov 07 dominic 245       ar.add(t.toLowerCase());
477 12 Nov 07 dominic 246     }
477 12 Nov 07 dominic 247     return  ar;
477 12 Nov 07 dominic 248   }
477 12 Nov 07 dominic 249
477 12 Nov 07 dominic 250   
477 12 Nov 07 dominic 251   /**
477 12 Nov 07 dominic 252      find a sample, can also find non -pooled samples
477 12 Nov 07 dominic 253       @param dc, the dbcontrol
477 12 Nov 07 dominic 254       @param sampleName, name of the sample to find
477 12 Nov 07 dominic 255       @param isPooled, true if pooled sample should be included in the query and false otherwise
477 12 Nov 07 dominic 256       @return Sample, the found sample or null if no sample is found
477 12 Nov 07 dominic 257    */
477 12 Nov 07 dominic 258   public static Sample findSample(DbControl dc, String sampleName,  boolean isPooled)
477 12 Nov 07 dominic 259   {
477 12 Nov 07 dominic 260     Sample s= null;
477 12 Nov 07 dominic 261     ItemQuery<Sample> query = Sample.getQuery();
477 12 Nov 07 dominic 262     query.include(Include.MINE, Include.NOT_REMOVED);
477 12 Nov 07 dominic 263     query.restrict(Restrictions.eq(Hql.property("name"), Expressions.string(sampleName)));
477 12 Nov 07 dominic 264     if (!isPooled)
477 12 Nov 07 dominic 265     {
477 12 Nov 07 dominic 266       query.restrict(Restrictions.eq(Hql.property("pooled"), Expressions.parameter("pool", Type.BOOLEAN)));
477 12 Nov 07 dominic 267       query.setParameter("pool",isPooled, Type.BOOLEAN);
477 12 Nov 07 dominic 268     }
477 12 Nov 07 dominic 269     if (query.list(dc).size()!=0)
477 12 Nov 07 dominic 270       return query.list(dc).get(0);
477 12 Nov 07 dominic 271     else
477 12 Nov 07 dominic 272       return s;    
477 12 Nov 07 dominic 273   }
477 12 Nov 07 dominic 274   
477 12 Nov 07 dominic 275   /**
477 12 Nov 07 dominic 276      find a extract, can also find non - pooled extract
477 12 Nov 07 dominic 277       @param dc, the dbcontrol
477 12 Nov 07 dominic 278       @param extractName, name of the extract to find
477 12 Nov 07 dominic 279       @param isPooled, true if pooled extract should be included in the query and false otherwise
477 12 Nov 07 dominic 280       @return Extract, the found extract or null if no extract is found
477 12 Nov 07 dominic 281    */
477 12 Nov 07 dominic 282   public static Extract findExtract(DbControl dc, String extractName, boolean isPooled)
477 12 Nov 07 dominic 283   {
477 12 Nov 07 dominic 284     Extract e= null;
477 12 Nov 07 dominic 285     ItemQuery<Extract> query = Extract.getQuery();
477 12 Nov 07 dominic 286     query.include(Include.MINE,Include.NOT_REMOVED);
477 12 Nov 07 dominic 287     query.restrict(Restrictions.eq(Hql.property("name"), Expressions.string(extractName)));
477 12 Nov 07 dominic 288     if (!isPooled)
477 12 Nov 07 dominic 289     {
477 12 Nov 07 dominic 290       query.restrict(Restrictions.eq(Hql.property("pooled"), Expressions.parameter("pool", Type.BOOLEAN)));
477 12 Nov 07 dominic 291       query.setParameter("pool",isPooled, Type.BOOLEAN);
477 12 Nov 07 dominic 292     }
477 12 Nov 07 dominic 293     if(query.list(dc).size()!=0)
477 12 Nov 07 dominic 294       e=query.list(dc).get(0);
477 12 Nov 07 dominic 295     return e;  
477 12 Nov 07 dominic 296   }
477 12 Nov 07 dominic 297   
477 12 Nov 07 dominic 298   /**
477 12 Nov 07 dominic 299      find a biosource
477 12 Nov 07 dominic 300       @param dc, the dbcontrol
477 12 Nov 07 dominic 301       @param biosourceName, name of the biosource to find
477 12 Nov 07 dominic 302       @return BioSource, the found biosource or null if no biosource is found
477 12 Nov 07 dominic 303    */
477 12 Nov 07 dominic 304   
477 12 Nov 07 dominic 305   public static BioSource findBiosource(DbControl dc, String biosourceName)
477 12 Nov 07 dominic 306   {
477 12 Nov 07 dominic 307     BioSource b= null;
477 12 Nov 07 dominic 308     ItemQuery<BioSource> query = BioSource.getQuery();
477 12 Nov 07 dominic 309     query.include(Include.MINE, Include.NOT_REMOVED);
477 12 Nov 07 dominic 310     query.restrict(Restrictions.eq(Hql.property("name"), Expressions.string(biosourceName)));
477 12 Nov 07 dominic 311     if (query.list(dc).size()!=0)
477 12 Nov 07 dominic 312       return query.list(dc).get(0);
477 12 Nov 07 dominic 313     else
477 12 Nov 07 dominic 314       return b;    
477 12 Nov 07 dominic 315   }
477 12 Nov 07 dominic 316   
477 12 Nov 07 dominic 317   /**
477 12 Nov 07 dominic 318      finds a labeled extract, can also find non -pooled labeled extract
477 12 Nov 07 dominic 319       @param dc, the dbcontrol
477 12 Nov 07 dominic 320       @param leName, name of the labeled extract name
477 12 Nov 07 dominic 321       @param isPooled, true if pooled labeled extract should be included in the query and false otherwise
477 12 Nov 07 dominic 322       @return LabeledExtract, the found labeled extract or null if no labeled extract is found
477 12 Nov 07 dominic 323    */
477 12 Nov 07 dominic 324   
477 12 Nov 07 dominic 325   public static LabeledExtract findLabeledExtract(DbControl dc, String leName, boolean isPooled )
477 12 Nov 07 dominic 326   {
477 12 Nov 07 dominic 327     LabeledExtract le= null;
477 12 Nov 07 dominic 328     ItemQuery<LabeledExtract> query = LabeledExtract.getQuery();
477 12 Nov 07 dominic 329     query.include(Include.MINE, Include.NOT_REMOVED);
477 12 Nov 07 dominic 330     query.restrict(Restrictions.eq(Hql.property("name"), Expressions.string(leName)));
477 12 Nov 07 dominic 331     if (!isPooled)
477 12 Nov 07 dominic 332     {
477 12 Nov 07 dominic 333       query.restrict(Restrictions.eq(Hql.property("pooled"), Expressions.parameter("pool", Type.BOOLEAN)));
477 12 Nov 07 dominic 334       query.setParameter("pool",isPooled, Type.BOOLEAN);
477 12 Nov 07 dominic 335     }
477 12 Nov 07 dominic 336     if (query.list(dc).size()!=0)
477 12 Nov 07 dominic 337       return query.list(dc).get(0);
477 12 Nov 07 dominic 338     else
477 12 Nov 07 dominic 339       return le;    
477 12 Nov 07 dominic 340   }
477 12 Nov 07 dominic 341   
477 12 Nov 07 dominic 342
477 12 Nov 07 dominic 343   /**
477 12 Nov 07 dominic 344      gets the currently looged in user default directory
477 12 Nov 07 dominic 345       @param sc, the seesion control
477 12 Nov 07 dominic 346       @return path of the user directory as a string object
477 12 Nov 07 dominic 347    */
477 12 Nov 07 dominic 348   public static String getUserDefaultDirectory( SessionControl sc)
477 12 Nov 07 dominic 349   {
477 12 Nov 07 dominic 350     DbControl  dc = sc.newDbControl();
477 12 Nov 07 dominic 351     String p ="";
477 12 Nov 07 dominic 352     try
477 12 Nov 07 dominic 353     {
477 12 Nov 07 dominic 354       User user = User.getById(dc, sc.getLoggedInUserId());
477 12 Nov 07 dominic 355       Directory dir= user.getHomeDirectory();
477 12 Nov 07 dominic 356       Path path = dir.getPath();
477 12 Nov 07 dominic 357       p=path.toString();
477 12 Nov 07 dominic 358     }
477 12 Nov 07 dominic 359     catch(Exception e)
477 12 Nov 07 dominic 360     {
477 12 Nov 07 dominic 361       new BaseException(e.getMessage());
477 12 Nov 07 dominic 362     }
477 12 Nov 07 dominic 363     finally
477 12 Nov 07 dominic 364     {
477 12 Nov 07 dominic 365       if (dc!=null) dc.close();
477 12 Nov 07 dominic 366     }
477 12 Nov 07 dominic 367     return p;
477 12 Nov 07 dominic 368   }
477 12 Nov 07 dominic 369   
477 12 Nov 07 dominic 370   /**
477 12 Nov 07 dominic 371      validates the directory parameter specified by user
477 12 Nov 07 dominic 372      @param file, the zip file. its directory, is checked for the existence of directoryName given by the user
477 12 Nov 07 dominic 373      @param directoryName, the name of the directory specified by the user
477 12 Nov 07 dominic 374      @return TRUE if directory exist and FALSE otherwise
477 12 Nov 07 dominic 375   */
477 12 Nov 07 dominic 376   public static boolean validateDirectory (SessionControl sc ,File file, String directoryName)
477 12 Nov 07 dominic 377   {
477 12 Nov 07 dominic 378     DbControl dc = sc.newDbControl();
477 12 Nov 07 dominic 379     try
477 12 Nov 07 dominic 380     {
477 12 Nov 07 dominic 381       file = File.getById(dc, file.getId());
477 12 Nov 07 dominic 382       return Directory.exists(dc, file.getDirectory(), directoryName);
477 12 Nov 07 dominic 383     }
477 12 Nov 07 dominic 384     finally
477 12 Nov 07 dominic 385     {
477 12 Nov 07 dominic 386       if (dc != null) dc.close();
477 12 Nov 07 dominic 387     } 
477 12 Nov 07 dominic 388   }
477 12 Nov 07 dominic 389 }