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

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