001package ca.bc.webarts.tools;
002
003import java.io.File;
004import java.io.FileWriter;
005// not necessary but saves headaches later if classes move
006import ca.bc.webarts.widgets.Util;
007
008public class SplitForBurn
009{
010  private static String sourceDir = "/home/tgutwin/cdstage/filesToBurn";
011  private static String splitsDir = "/home/tgutwin/cdstage/splitStagingDir";
012  private static String splitsSubDir = "cd";
013  private static String songListName = "SongList.txt";
014  private static int cdCounter = 1;
015  private static int maxFiles = 250;
016  private static long maxCDSize = 645l*1024l*1000;
017  private static long currSize = 0l;
018  private static int currFiles = 0;
019  private static String [] currSongList = new String [254];
020
021  private static void moveFile(File file)
022  {
023    if (file != null)
024    {
025      if (currSize < maxCDSize && currFiles < maxFiles)
026      {
027        System.out.print("Moving "+file.getAbsolutePath() + " --> ");
028        System.out.println(splitsDir + File.separator + splitsSubDir + String.valueOf(cdCounter));
029        currSize+=file.length();
030        Util.moveFile(file.getAbsolutePath(),
031          splitsDir + File.separator + splitsSubDir + String.valueOf(cdCounter));
032        currSongList[currFiles++] = file.getName();
033
034        System.out.print("    Size = "+currSize);
035        System.out.println("    files = "+currFiles);
036      }
037      else
038      {
039        // Save the dirlist to the last cd dir
040        try
041        {
042          FileWriter songListWriter = new FileWriter(splitsDir + File.separator +
043            splitsSubDir + String.valueOf(cdCounter) + File.separator +
044            songListName);
045          for (int i = 0; i < currFiles; i++)
046            songListWriter.write(currSongList[i] + System.getProperty("line.separator"));
047          songListWriter.close();
048        }
049        catch (Exception ex)
050        {
051          System.out.println("Cannot Save Song List for "+
052            splitsDir + File.separator + splitsSubDir + String.valueOf(cdCounter));
053        }
054
055        // create a new dir and move
056        try
057        {
058          File currSplitsDir = new File(splitsDir+ File.separator +
059                     splitsSubDir + String.valueOf(cdCounter++));
060          if (currSplitsDir != null)
061          {
062            System.out.println("Creating dir "+currSplitsDir.getAbsolutePath());
063            currSplitsDir.mkdir();
064            currFiles = 0;
065            currSize = 0;
066            System.out.print("Moving "+file.getAbsolutePath() + " --> ");
067            System.out.println(currSplitsDir.getAbsolutePath());
068            currSize+=file.length();
069            Util.moveFile(file.getAbsolutePath(), currSplitsDir.getAbsolutePath());
070            currSongList[currFiles++] = file.getName();
071            System.out.println("    Size = "+currSize);
072            System.out.println("    files = "+currFiles);
073          }
074
075        }
076        catch (Exception ex)
077        {
078          System.out.println("Cannot Move File: ");
079          if (file != null)
080            System.out.println(file.getAbsolutePath() + " to "+splitsDir +
081               File.separator + splitsSubDir +String.valueOf(cdCounter));
082          ex.printStackTrace();
083        }
084      }
085    }
086  }
087
088
089  /**
090   *  The main program method for this class
091   *
092   * @param  args  The command line arguments
093   */
094  public static void main(String[] args)
095  {
096    File srcDir = new File(sourceDir);
097    if (srcDir != null)
098    {
099      String[] files = srcDir.list();
100      try
101      {
102        java.util.Arrays.sort((Object[])files);
103      }
104      catch (Exception ex)
105      {
106        System.out.println("Cannot Sort Files ");
107      }
108      File tempFile;
109
110      //loop through all the files in the dir
111      for (int i = 0; i < files.length; i++)
112      {
113        tempFile = new File(sourceDir + File.separator + files[i]);
114        moveFile(tempFile);
115      }
116    }
117  }
118}
119