uk.ac.sanger.cgp.wwdocker.callable.PushWork.java Source code

Java tutorial

Introduction

Here is the source code for uk.ac.sanger.cgp.wwdocker.callable.PushWork.java

Source

/**
 * Copyright (c) 2015 Genome Research Ltd.
 *
 * Author: Cancer Genome Project cgpit@sanger.ac.uk
 *
 * This file is part of WwDocker.
 *
 * WwDocker is free software: you can redistribute it and/or modify it under the
 * terms of the GNU Affero General Public License as published by the Free
 * Software Foundation; either version 3 of the License, or (at your option) any
 * later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
 * details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 *
 * 1. The usage of a range of years within a copyright statement contained
 * within this distribution should be interpreted as being equivalent to a list
 * of years including the first and last year specified and all consecutive
 * years between them. For example, a copyright statement that reads 'Copyright
 * (c) 2005, 2007- 2009, 2011-2012' should be interpreted as being identical to
 * a statement that reads 'Copyright (c) 2005, 2007, 2008, 2009, 2011, 2012' and
 * a copyright statement that reads "Copyright (c) 2005-2012' should be
 * interpreted as being identical to a statement that reads 'Copyright (c) 2005,
 * 2006, 2007, 2008, 2009, 2010, 2011, 2012'."
 */
package uk.ac.sanger.cgp.wwdocker.callable;

import com.jcraft.jsch.Session;
import java.io.File;
import java.nio.file.Files;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import org.apache.commons.configuration.BaseConfiguration;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import uk.ac.sanger.cgp.wwdocker.actions.Local;
import uk.ac.sanger.cgp.wwdocker.actions.Remote;

/**
 *
 * @author kr2
 */
public class PushWork implements Callable<Integer> {
    private static final Logger logger = LogManager.getLogger();
    private Thread t;
    private String threadName;
    private BaseConfiguration config;
    private String host;
    private List<File> toPush;
    private Map<String, String> envs;

    public PushWork(String threadName, BaseConfiguration config, String host, List<File> toPush,
            Map<String, String> envs) {
        this.threadName = threadName;
        this.config = config;
        this.host = host;
        this.toPush = toPush;
        this.envs = envs;
        System.out.println("Creating " + threadName);
    }

    public Integer call() {
        Integer result = new Integer(-1);
        logger.info("Running " + threadName);

        Session ssh = Remote.getSession(config, host);
        Local.pushFileSetToHost(toPush, host, config.getString("datastoreDir"), envs, ssh, null);
        Remote.closeSsh(ssh);
        result++;

        logger.info("Thread " + threadName + " exiting (" + result + ").");
        return result;
    }

    public String getHost() {
        return host;
    }
}