Package org.openstreetmap.osmosis.replication.v0_6

Source Code of org.openstreetmap.osmosis.replication.v0_6.ReplicationFileMergerInitializer

// This software is released into the Public Domain.  See copying.txt for details.
package org.openstreetmap.osmosis.replication.v0_6;

import java.io.File;

import org.openstreetmap.osmosis.core.OsmosisRuntimeException;
import org.openstreetmap.osmosis.core.task.common.RunnableTask;
import org.openstreetmap.osmosis.core.util.FileBasedLock;
import org.openstreetmap.osmosis.core.util.ResourceFileManager;


/**
* Initialises the working directory for the replication file merger task.
*/
public class ReplicationFileMergerInitializer implements RunnableTask {
 
  private static final String LOCK_FILE_NAME = "download.lock";
  private static final String CONFIG_FILE_NAME = "configuration.txt";
  private static final String CONFIG_RESOURCE = "impl/replicationFileMergerConfiguration.txt";
  private static final String DATA_DIRECTORY = "data";
 
 
  private File workingDirectory;
 
 
  /**
   * Creates a new instance.
   *
   * @param workingDirectory
   *            The directory containing configuration and tracking files.
   */
  public ReplicationFileMergerInitializer(File workingDirectory) {
    this.workingDirectory = workingDirectory;
  }
 
 
  /**
   * Initializes a working directory.
   */
  private void initializeDirectory() {
    File configFile;
    File dataDirectory;
   
    ResourceFileManager resourceFileManager;
   
    // Instantiate utility objects.
    resourceFileManager = new ResourceFileManager();
   
    // Build file objects from file names.
    configFile = new File(workingDirectory, CONFIG_FILE_NAME);
   
    // Copy the template configuration file into the working directory.
    if (configFile.exists()) {
      throw new OsmosisRuntimeException("Config file " + configFile + " already exists.");
    }
    resourceFileManager.copyResourceToFile(getClass(), CONFIG_RESOURCE, configFile);
   
    // Create the data directory.
    dataDirectory = new File(workingDirectory, DATA_DIRECTORY);
    if (dataDirectory.exists()) {
      throw new OsmosisRuntimeException("Data directory " + dataDirectory + " already exists.");
    }
    if (!dataDirectory.mkdir()) {
      throw new OsmosisRuntimeException("Unable to create data directory " + dataDirectory + ".");
    }
  }
 
 
  /**
   * {@inheritDoc}
   */
  @Override
  public void run() {
    FileBasedLock fileLock;
   
    fileLock = new FileBasedLock(new File(workingDirectory, LOCK_FILE_NAME));
   
    try {
      fileLock.lock();
     
      initializeDirectory();
     
      fileLock.unlock();
     
    } finally {
      fileLock.release();
    }
  }
}
TOP

Related Classes of org.openstreetmap.osmosis.replication.v0_6.ReplicationFileMergerInitializer

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.