gov.jgi.meta.exec.TempCleanerCommand.java Source code

Java tutorial

Introduction

Here is the source code for gov.jgi.meta.exec.TempCleanerCommand.java

Source

/*
 * Copyright (c) 2010, The Regents of the University of California, through Lawrence Berkeley
 * National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy).
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, are permitted provided
 * that the following conditions are met:
 *
 * (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the
 * following disclaimer.
 *
 * (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions
 * and the following disclaimer in the documentation and/or other materials provided with the distribution.
 *
 * (3) Neither the name of the University of California, Lawrence Berkeley National Laboratory, U.S. Dept.
 * of Energy, nor the names of its contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * You are under no obligation whatsoever to provide any bug fixes, patches, or upgrades to the
 * features, functionality or performance of the source code ("Enhancements") to anyone; however,
 * if you choose to make your Enhancements available either publicly, or directly to Lawrence Berkeley
 * National Laboratory, without imposing a separate written license agreement for such Enhancements,
 * then you hereby grant the following license: a  non-exclusive, royalty-free perpetual license to install,
 * use, modify, prepare derivative works, incorporate into other computer software, distribute, and
 * sublicense such enhancements or derivative works thereof, in binary and source code form.
 */

package gov.jgi.meta.exec;

import gov.jgi.meta.MetaUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.log4j.Logger;

import java.io.*;
import java.util.*;

/**
 * class that cleans up the temp directories specified in the config file
 *
 */
public class TempCleanerCommand implements CommandLineProgram {

    final String DEFAULTTMPDIR = "/tmp";

    Logger log = Logger.getLogger(TempCleanerCommand.class);

    String cleanup_commandLine = null;

    String tmpDir = null;

    String stdout = null;
    String stderr = null;
    int exitValue = 0;

    Boolean doCleanup = true;

    /**
     * new blast command based on default parameters
     * @throws IOException if tmp working directory can't be created
     */
    public TempCleanerCommand() throws IOException {
        log.info("initializing");
        tmpDir = DEFAULTTMPDIR;
    }

    public TempCleanerCommand(Configuration config) throws IOException {
        log.info("initializing");
        String c;

        if ((c = config.get("cleaner.commandline")) != null) {
            cleanup_commandLine = c;
        } else {
            cleanup_commandLine = "/bin/sh rm -rf ";
        }

        if ((c = config.get("assembler.tmpdir")) != null) {
            tmpDir = c;
        } else {
            tmpDir = DEFAULTTMPDIR;
        }

        doCleanup = config.getBoolean("assembler.cleanup", true);

    }

    protected void finalize() throws Throwable {
        super.finalize();
    }

    public void cleanup() {
        log.info("Cleanup Task: cleaning up " + tmpDir);
        if (tmpDir != null) {
            Boolean r;
            r = MetaUtils.recursiveDelete(new File(tmpDir));
            if (!r) {
                log.info("unable to delete " + tmpDir);
            }
        }
    }

    /**
     * cleanup temp space
     *
     * @param seqDatabase is the key/value map of sequences that act as reference keyed by name
     * @return a list of sequence ids in the reference that match the cazy database
     */
    public Map<String, String> exec(String groupId, Map<String, String> seqDatabase, Reducer.Context context)
            throws IOException, InterruptedException {
        Map<String, String> s = new HashMap<String, String>();

        cleanup();

        return (s);
    }
}