Package de.linwave.junit

Source Code of de.linwave.junit.SetupFreeDB

package de.linwave.junit;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.logging.Logger;
import java.util.zip.GZIPInputStream;

import org.odbms.ObjectContainer;

import de.linwave.gtm.GTM;
import freedb.Disc;

/**
*
* @author ljoeckel
*
*/
public class SetupFreeDB
{
  private static Logger logger = Logger.getLogger(SetupFreeDB.class.getName());
  static ObjectContainer db = GTM.getInstance();

  public SetupFreeDB() {
  }

  /**
   *
   * @return
   */
  public static int loadDB()
  {
    String tgzFile = "freedb_blues.tgz";
    int cnt = new SetupFreeDB().loadFreeDBDataFromTGZ(tgzFile);
    logger.info("Loaded " + cnt + " discs from " + tgzFile);
    return cnt;
  }

  /**
   *
   * @param tgzName
   * @return
   */
  private int loadFreeDBDataFromTGZ(String tgzName)
  {
    db.deleteClass(Disc.class);
    int cnt = 0;

    try {
      GZIPInputStream gzipInputStream = new GZIPInputStream(new FileInputStream(tgzName));
      LineNumberReader rd = new LineNumberReader(new InputStreamReader(gzipInputStream));

      StringBuilder disc = new StringBuilder();
      String line = null;
      File freedbFile = null;
      String discId = null;

      while ((line = rd.readLine()) != null) {
        if (rd.getLineNumber() == 1)
          continue;

        if (line.charAt(0) == 0) {
          try {
            FileWriter fw = new FileWriter(discId);
            fw.write(disc.toString());
            fw.close();

            freedbFile = new File(discId);
            db.store(new Disc(freedbFile));

          } catch (Exception ex) {
            logger.severe(ex.getMessage());
          }

          deleteFile(freedbFile);
          cnt++;

          disc = new StringBuilder();
          continue;
        }

        if (line.startsWith("DISCID=")) {
          discId = line.substring("DISCID=".length());
        }
        disc.append(line).append("\n");
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }

    return cnt;
  }

  private void deleteFile(File file)
  {
    if (!file.delete()) {
      logger.severe("Could not remove " + file);
    }
  }
}
TOP

Related Classes of de.linwave.junit.SetupFreeDB

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.