Package se.unlogic.eagledns.utils

Source Code of se.unlogic.eagledns.utils.PrimaryZones2DB

package se.unlogic.eagledns.utils;

import java.util.ArrayList;
import java.util.Collection;

import javax.sql.DataSource;

import org.xbill.DNS.Zone;

import se.unlogic.eagledns.zoneproviders.db.beans.DBRecord;
import se.unlogic.eagledns.zoneproviders.db.beans.DBZone;
import se.unlogic.eagledns.zoneproviders.file.FileZoneProvider;
import se.unlogic.standardutils.dao.AnnotatedDAO;
import se.unlogic.standardutils.dao.SimpleAnnotatedDAOFactory;
import se.unlogic.standardutils.dao.SimpleDataSource;
import se.unlogic.standardutils.dao.TransactionHandler;


public class PrimaryZones2DB {

  public static void main(String[] args) throws Throwable{

    if(args.length != 5){

      System.out.println("Usage: PrimaryZones2DB zonedir driver url username password");

    }else{

      importZones(args[0], args[1], args[2], args[3], args[4]);
    }
  }

  public static void importZones(String directory, String driver, String url, String username, String password) throws Throwable {

    FileZoneProvider fileZoneProvider = new FileZoneProvider();

    fileZoneProvider.setZoneFileDirectory(directory);

    Collection<Zone> zones = fileZoneProvider.getPrimaryZones();

    ArrayList<DBZone> dbZones = new ArrayList<DBZone>();

    for(Zone zone : zones){

      System.out.println("Converting zone " + zone.getSOA().getName().toString() + "...");

      dbZones.add(new DBZone(zone,false));
    }

    DataSource dataSource = new SimpleDataSource(driver, url, username, password);

    SimpleAnnotatedDAOFactory annotatedDAOFactory = new SimpleAnnotatedDAOFactory();
    AnnotatedDAO<DBZone> zoneDAO  = new AnnotatedDAO<DBZone>(dataSource,DBZone.class, annotatedDAOFactory);
    AnnotatedDAO<DBRecord> recordDAO  = new AnnotatedDAO<DBRecord>(dataSource,DBRecord.class, annotatedDAOFactory);

    TransactionHandler transactionHandler = zoneDAO.createTransaction();

    try{

      for(DBZone zone : dbZones){

        System.out.println("Storing zone " + zone + "...");

        zoneDAO.add(zone, transactionHandler, null);

        for(DBRecord dbRecord : zone.getRecords()){

          System.out.println("Storing record " + dbRecord + "...");

          dbRecord.setZone(zone);

          recordDAO.add(dbRecord, transactionHandler, null);
        }
      }

      transactionHandler.commit();

    }catch(Throwable e){

      transactionHandler.abort();
     
      throw e;
    }
  }
}
TOP

Related Classes of se.unlogic.eagledns.utils.PrimaryZones2DB

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.