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

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