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

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