All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.puresoltechnologies.genesis.transformation.hadoop.HadoopCreateDirectoryStep Maven / Gradle / Ivy

The newest version!
package com.puresoltechnologies.genesis.transformation.hadoop;

import java.io.IOException;

import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.FsPermission;

import com.puresoltechnologies.genesis.commons.TransformationException;
import com.puresoltechnologies.genesis.commons.TransformationMetadata;

public class HadoopCreateDirectoryStep extends AbstractHadoopTransformationStep {

    private final TransformationMetadata transformationMetadata;
    private final Path directory;
    private final FsPermission permission;

    public HadoopCreateDirectoryStep(HadoopTransformationSequence sequence, Path directory, String developer,
	    String comment) {
	this(sequence, directory, null, developer, comment);
    }

    public HadoopCreateDirectoryStep(HadoopTransformationSequence sequence, Path directory, FsPermission permission,
	    String developer, String comment) {
	super(sequence);
	this.directory = directory;
	this.permission = permission;
	String command = "MakeDirectory " + directory + " " + (permission == null ? "default permission" : permission);
	transformationMetadata = new TransformationMetadata(sequence.getMetadata(), developer, command, comment);
    }

    @Override
    public TransformationMetadata getMetadata() {
	return transformationMetadata;
    }

    @Override
    public void transform() throws TransformationException {
	try {
	    FileSystem fileSystem = getFileSystem();
	    if (fileSystem.exists(directory)) {
		FileStatus fileStatus = fileSystem.getFileStatus(directory);
		if (!fileStatus.isDirectory()) {
		    throw new TransformationException(
			    "Could not create directory '" + directory + "'. Path exists, but is not a directory.");
		}
	    } else {
		if (permission == null) {
		    fileSystem.mkdirs(directory);
		} else {
		    fileSystem.mkdirs(directory, permission);
		}
	    }
	} catch (IOException e) {
	    throw new TransformationException("Could not create directory '" + directory + "'.", e);
	}
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy