Changeset 480


Ignore:
Timestamp:
Nov 16, 2007, 11:32:16 AM (15 years ago)
Author:
dominic
Message:

updated ebi-plugin-utils jar

Location:
trunk/uk/ac/ebi/Tab2MageExporter
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/uk/ac/ebi/Tab2MageExporter/src/uk/ac/ebi/nugo/common/Helper.java

    r449 r480  
    8282      }
    8383      Path path = new Path(pathString, Path.Type.FILE);   
    84      
    8584      file= File.getByPath(dc, path, true);
    8685      file.setMimeType("text/plain"); //set the type of the file
     
    135134   {
    136135     String fileName= file.getName();
    137      //System.out.println("\nThe file name is: " + fileName );
    138136     String ext= fileName.substring(fileName.lastIndexOf(".") + 1);
    139137     ext = ext.toLowerCase();
    140      //System.out.printf("The file ext is: %s\n", ext);
    141      return ext;
     138      return ext;
    142139   }
    143140   
     
    370367    return p;
    371368  }
     369 
     370  /**
     371    validates the directory parameter specified by user
     372    @param file, the zip file. its directory, is checked for the existence of directoryName given by the user
     373    @param directoryName, the name of the directory specified by the user
     374    @return TRUE if directory exist and FALSE otherwise
     375  */
     376  public static boolean validateDirectory (SessionControl sc ,File file, String directoryName)
     377  {
     378    DbControl dc = sc.newDbControl();
     379    try
     380    {
     381      file = File.getById(dc, file.getId());
     382      return Directory.exists(dc, file.getDirectory(), directoryName);
     383    }
     384    finally
     385    {
     386      if (dc != null) dc.close();
     387    }
     388  }
    372389}
  • trunk/uk/ac/ebi/Tab2MageExporter/src/uk/ac/ebi/nugo/common/ZipUnpacker.java

    r449 r480  
    99import java.io.IOException;
    1010import java.io.InputStream;
     11import java.text.SimpleDateFormat;
    1112import java.util.Date;
     13import java.util.Locale;
    1214import java.util.zip.ZipEntry;
    1315import java.util.zip.ZipInputStream;
    1416
    15 import net.sf.basedb.core.DatabaseException;
     17import net.sf.basedb.core.BaseException;
    1618import net.sf.basedb.core.DbControl;
    1719import net.sf.basedb.core.Directory;
    1820import net.sf.basedb.core.File;
     21import net.sf.basedb.core.ItemAlreadyExistsException;
    1922import net.sf.basedb.core.Location;
    2023import net.sf.basedb.core.PluginDefinition;
     
    5760    Unpacks a zip file, checking that there is enough space to accommodate
    5861    the zip file once it is unpacked.
    59       @throws NutribasePluginException
    60    */
    61   public void unpack() throws NutribasePluginException
     62    */
     63  public void unpack(String dirName)
    6264  {
    6365    log.info("Begin to unpack the files");
     
    7375      if (hasSpace)
    7476      {
     77        createSubDirectory( file, user, dirName);
     78        // now call the method to unpack the zip files
     79        PluginDefinition zipFilePlugin = PluginDefinition.getByClassName(dc, "net.sf.basedb.plugins.ZipFileUnpacker");
     80        FileUnpacker unpacker = zipFilePlugin.newInstance(net.sf.basedb.plugins.ZipFileUnpacker.class, null, dc.getSessionControl(), null, null);
     81        numUnpackedFiles=unpacker.unpack(dc, unzippedFilesDirectory,file.getDownloadStream(0), false,null);
     82      }
     83      else // if space is not enough
     84      {
     85        throw new BaseException("User do not have the required Disk Space. Please contact your BASE administrator or remove some files");
     86      }
     87      dc.commit();
     88      inStream.close();
     89    }
     90    catch (Throwable exc)
     91    {
     92      dc.close();
     93      log.info("File cannot be unpacked", exc);
     94      new BaseException("File cannot be unpacked :" +exc.getMessage());
     95    }
     96    finally
     97    {
     98      if (dc!=null)
     99        dc.close();
     100    }
     101  }
     102 
     103 
     104  /**
     105    Unpacks a zip file, checking that there is enough space to accommodate
     106    the zip file once it is unpacked.
     107      @throws NutribasePluginException
     108   */
     109  public void unpack()
     110  {
     111    log.info("Begin to unpack the files");
     112    DbControl dc=null;
     113    try
     114    {
     115      dc= sc.newDbControl();
     116      if (file==null)
     117        return;
     118      InputStream inStream =  file.getDownloadStream(0);
     119      //check if the logged in user has sufficient disk space. if yes go ahead with the unpacking
     120      boolean hasSpace= checkUserQuota(inStream, dc);
     121      if (hasSpace)
     122      {
    75123        createSubDirectory( file, user);
    76124        // now call the method to unpack the zip files
     
    81129      else // if space is not enough
    82130      {
    83         throw new NutribasePluginException("User do not have the required Disk Space. Please contact your NutriBASE administrator or remove some files");
     131        throw new BaseException("User do not have the required Disk Space. Please contact your BASE administrator or remove some files");
    84132      }
    85133      dc.commit();
     
    90138      dc.close();
    91139      log.info("File cannot be unpacked", exc);
    92       new NutribasePluginException(exc.getMessage());
     140      new BaseException(exc.getMessage());
    93141    }
    94142    finally
     
    98146    }
    99147  }
    100  
     148
    101149  /**
    102150    checks user quota
     
    122170    {
    123171      log.error("[disk space: "+remainingSpace+ " ] insufficient for unzipping of file size [" +zipFileSize + "] -- please contact your BASE administrator or remove some files");
    124       throw new NutribasePluginException("[disk space: "+remainingSpace+ " ] insufficient for unzipping of file size [" +zipFileSize + "] -- please contact your BASE administrator or remove some files");
     172      throw new BaseException("[disk space: "+remainingSpace+ " ] insufficient for unzipping of file size [" +zipFileSize + "] -- please contact your BASE administrator or remove some files");
    125173    }
    126174    else if ( remainingSpace > zipFileSize || quotaValue==-1 )
     
    153201      catch (IOException ioe)
    154202      {
    155         throw new NutribasePluginException("zip file size could not be obtained " + ioe.getMessage());
     203        throw new BaseException("zip file size could not be obtained " + ioe.getMessage());
    156204      }
    157205      return totalSize;
     
    161209      @param zipFile, the zip file to unpack
    162210      @param user, currently logged-in user
     211      @param
     212   
     213   */
     214  public void createSubDirectory(File zipFile, User user, String dirName)
     215  {
     216    DbControl dc=null;
     217    try
     218    {
     219      dc = sc.newDbControl();
     220      //get the parent directory
     221      Directory zipFileDir = zipFile.getDirectory();
     222      log.info("zipFile is located in dir " + zipFile.getPath());
     223      Directory d = Directory.getById(dc, zipFileDir.getId());
     224      //String timeStamp = getTime("ddMMyy_HHmmss"); // can be added to the time directory name
     225      Directory subDir = d.newSubDirectory();
     226      subDir.setName(dirName);
     227        subDir.setDescription("Unzippped directory created at "+new Date());
     228      if (subDir.isInDatabase())
     229      {
     230        throw new ItemAlreadyExistsException("The Directory ["+ subDir.getPath().toString()+ "] already exists");
     231      }
     232      else if (!subDir.isInDatabase())
     233      {
     234        dc.saveItem(subDir);
     235      }
     236      dc.commit();
     237        setUnzippedFilesDirectory(subDir);
     238    }
     239    catch (Throwable ex)
     240    {
     241      log.error("--Create subdirectory FAILED", ex);
     242    }
     243    finally
     244    {
     245      if (dc!=null) dc.close();
     246    }
     247           
     248   }
     249
     250  /**
     251    create a sub-directory to contain the unzip files
     252      @param zipFile, the zip file to unpack
     253      @param user, currently logged-in user
     254      @param
    163255   
    164256   */
     
    174266      Directory d = Directory.getById(dc, zipFileDir.getId());
    175267      Directory subDir = d.newSubDirectory();
     268      String fileName = zipFile.getName();
     269        String fileNameNoExt = fileName.substring(0, fileName.indexOf("."));
     270        subDir.setName(fileNameNoExt);
     271        subDir.setDescription("Unzippped directory created at "+new Date());
    176272      if (subDir.isInDatabase())
    177273      {
    178         throw new DatabaseException("The Directory ["+ subDir.getPath().toString()+ "] already exists");
     274        throw new ItemAlreadyExistsException("The Directory ["+ subDir.getPath().toString()+ "] already exists");
    179275      }
    180276      else if (!subDir.isInDatabase())
    181277      {
    182         String fileName = zipFile.getName();
    183           String fileNameNoExt = fileName.substring(0, fileName.indexOf("."));
    184           subDir.setName(fileNameNoExt);
    185           subDir.setDescription("Unzippped directory created at "+new Date());
    186           dc.saveItem(subDir);
     278        dc.saveItem(subDir);
    187279      }
    188280      dc.commit();
     
    192284    {
    193285      log.error("--Create subdirectory FAILED", ex);
     286      //throw new BaseException();
    194287    }
    195288    finally
     
    200293   }
    201294
    202 
    203295  void setUnzippedFilesDirectory(Directory unzippedFilesDirectory)
    204296  {
     
    210302    return unzippedFilesDirectory;
    211303  }
     304 
     305  private String getTime(String pattern)
     306  {
     307    SimpleDateFormat formatter;
     308    Locale currentLocale = Locale.getDefault();
     309    formatter = new SimpleDateFormat(pattern, currentLocale);
     310    String timeStamp = formatter.format(new Date());
     311    return timeStamp;
     312  }
    212313}
Note: See TracChangeset for help on using the changeset viewer.