Changeset 4035


Ignore:
Timestamp:
Dec 5, 2007, 9:13:35 AM (15 years ago)
Author:
Nicklas Nordborg
Message:

Fixes #860: Migration should create File entries even if physical file doesn't exists in BASE 1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/clients/migrate/net/sf/basedb/clients/migrate/UploadFileTransfer.java

    r3824 r4035  
    259259      // identifier
    260260      String md5 = QUICK_TRANSFER ? fileName : md5sum(location);
    261       if (md5 != null)
    262       {
    263         File file = getFileByMd5(dc, user, md5);
    264         if (file == null)
    265         {
    266           Directory homeDir = user.getHomeDirectory();
    267           if (homeDir == null)
    268           {
    269             log.info("...upload related files");
    270             {
    271               log.debug("User " + user.getName() + " is missing a home directory");
    272             // Something is wrong here homeDir is not null when you
    273             // look through the web interface
    274             // homeDir = Directory.createHomeDirectory(dc, user,
    275             // true);
    276             // dc.saveItem(homeDir);
    277             }
    278           }
    279           int prefix = 0;
    280           String prefixedFileName = fileName;
    281           while (File.exists(dc, homeDir, prefixedFileName))
    282           {
    283             prefixedFileName = prefix + "_" + fileName;
    284             prefix++;
    285           }
    286           // All files are stored in the users homedirectory
    287           file = File.getNew(dc, homeDir);
    288           setCommonItemData(dc, file, rs);
    289           file.setName(prefixedFileName); // Reset the filename incase
    290                           // we've prefixed it in the
    291                           // above while loop
    292           dc.saveItem(file);
    293           log.debug("File item is saved into BASE2");
    294           transferFile(file, location, md5);
    295           if (createRawBioAssay || createPrintmap) file.setWriteProtected(true);
    296           commit(dc);
    297           String fileMd5 = file.getMd5();
    298           if (fileMd5 != null)
    299           {
    300             // We assume that each file generates a unique md5sum
    301             md5ToIdMap.put(
    302                 user.getId() + "_" + fileMd5, file.getId());           
    303           }
    304           if (log.isDebugEnabled())
    305           {
    306             log.debug("Transfered File: " + file.getName() + "\tBASE1 id(" + rs.getInt(1) + ")");           
    307           }         
    308         }
    309         else
    310         {
    311           log.info( file.getName() + " already exists");
    312         }
    313         if (createProtocol)
    314         {
    315           protocolFileMap.put(rs.getInt(1), file.getId());
    316         }
    317         if (createImage)
    318         {
    319           imageFileMap.put(rs.getInt(1), file.getId());
    320         }
    321         if (createRawBioAssay)
    322         {
    323           rawBioAssayFileMap.put(rs.getInt(1), file.getId());
    324         }
    325         if (createPrintmap)
    326         {
    327           printmapFileMap.put(rs.getInt(1), file.getId());
    328         }
    329       }
    330       else
     261      if (md5 == null)
    331262      {
    332263        log.debug("Couldn't get md5 for file: " + fileName + ":" + rs.getString(ID));
    333264        log.warn("File:" + fileName + " with Base1Id:" + rs.getString(ID) + " will not be uploaded to BASE2");
     265        md5 = fileName;
     266      }
     267
     268      File file = getFileByMd5(dc, user, md5);
     269      if (file == null)
     270      {
     271        Directory homeDir = user.getHomeDirectory();
     272        if (homeDir == null)
     273        {
     274          log.info("...upload related files");
     275          {
     276            log.debug("User " + user.getName() + " is missing a home directory");
     277          // Something is wrong here homeDir is not null when you
     278          // look through the web interface
     279          // homeDir = Directory.createHomeDirectory(dc, user,
     280          // true);
     281          // dc.saveItem(homeDir);
     282          }
     283        }
     284        int prefix = 0;
     285        String prefixedFileName = fileName;
     286        while (File.exists(dc, homeDir, prefixedFileName))
     287        {
     288          prefixedFileName = prefix + "_" + fileName;
     289          prefix++;
     290        }
     291        // All files are stored in the users homedirectory
     292        file = File.getNew(dc, homeDir);
     293        setCommonItemData(dc, file, rs);
     294        file.setName(prefixedFileName); // Reset the filename incase
     295                        // we've prefixed it in the
     296                        // above while loop
     297        dc.saveItem(file);
     298        log.debug("File item is saved into BASE2");
     299        transferFile(file, location, md5);
     300        if (createRawBioAssay || createPrintmap) file.setWriteProtected(true);
     301        commit(dc);
     302        String fileMd5 = file.getMd5();
     303        if (fileMd5 != null)
     304        {
     305          // We assume that each file generates a unique md5sum
     306          md5ToIdMap.put(
     307              user.getId() + "_" + fileMd5, file.getId());           
     308        }
     309        if (log.isDebugEnabled())
     310        {
     311          log.debug("Transfered File: " + file.getName() + "\tBASE1 id(" + rs.getInt(1) + ")");           
     312        }
     313      }
     314      else
     315      {
     316        log.info( file.getName() + " already exists");
     317      }
     318      if (createProtocol)
     319      {
     320        protocolFileMap.put(rs.getInt(1), file.getId());
     321      }
     322      if (createImage)
     323      {
     324        imageFileMap.put(rs.getInt(1), file.getId());
     325      }
     326      if (createRawBioAssay)
     327      {
     328        rawBioAssayFileMap.put(rs.getInt(1), file.getId());
     329      }
     330      if (createPrintmap)
     331      {
     332        printmapFileMap.put(rs.getInt(1), file.getId());
    334333      }
    335334    }
Note: See TracChangeset for help on using the changeset viewer.