org.openstreetmap.osmosis.xml.common.XmlTaskManagerFactory Maven / Gradle / Ivy
// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.xml.common;
import org.openstreetmap.osmosis.core.OsmosisRuntimeException;
import org.openstreetmap.osmosis.core.pipeline.common.TaskConfiguration;
import org.openstreetmap.osmosis.core.pipeline.common.TaskManagerFactory;
/**
* Extends the basic task manager factory functionality with xml task specific common methods.
*
* @author Brett Henderson
*/
public abstract class XmlTaskManagerFactory extends TaskManagerFactory {
private static final String ARG_COMPRESSION_METHOD = "compressionMethod";
private static final String ARG_ENCODING_HACK = "encodingHack";
private static final boolean DEFAULT_ENCODING_HACK = false;
/**
* Utility method for retrieving a CompressionMethod argument value from a
* Map of task arguments.
*
* @param taskConfig
* Contains all information required to instantiate and configure
* the task.
* @param fileName
* The file name used to determine the default compression
* method.
* @return The value of the argument.
*/
protected CompressionMethod getCompressionMethodArgument(
TaskConfiguration taskConfig, String fileName) {
CompressionMethod result;
String rawValue = getStringArgument(taskConfig, ARG_COMPRESSION_METHOD, "auto").toLowerCase();
if ("none".equals(rawValue)) {
result = CompressionMethod.None;
} else if ("gzip".equals(rawValue)) {
result = CompressionMethod.GZip;
} else if ("bzip2".equals(rawValue)) {
result = CompressionMethod.BZip2;
} else if ("auto".equals(rawValue)) {
result = new CompressionMethodDeriver().deriveCompressionMethod(fileName);
} else {
throw new OsmosisRuntimeException(
"Argument " + ARG_COMPRESSION_METHOD + " for task " + taskConfig.getId()
+ " must be one of none, gzip, bzip2 or auto.");
}
return result;
}
/**
* Utility method for retrieving the argument specifying whether to enable
* the production file encoding hack to work around a bug in the current
* production configuration.
*
* @param taskConfig
* Contains all information required to instantiate and configure
* the task.
* @return The value of the argument.
*/
protected boolean getProdEncodingHackArgument(
TaskConfiguration taskConfig) {
return getBooleanArgument(taskConfig, ARG_ENCODING_HACK, DEFAULT_ENCODING_HACK);
}
}