import org.ggf.drmaa.*;

public class DrmaaTest
{
	public static void main(String[] args)
	{
		if(args.length < 1)
		{
			System.err.println("No command provided.");
			System.exit(1);
		}
		
		Session session = SessionFactory.getFactory().getSession();
		try
		{
			session.init(null);
			
			JobTemplate jt = session.createJobTemplate();
			jt.setRemoteCommand(args[0]);
			jt.setWorkingDirectory(System.getProperty("user.dir"));
			
			if(args.length > 1)
			{
				String[] jobArgs = new String[args.length - 1];
				
				for(int i = 1; i < args.length; i++)
				{
					jobArgs[i - 1] = args[i];
				}
                jt.setArgs(jobArgs);
			}
			
			String id = session.runJob(jt);
			session.deleteJobTemplate(jt);
			
			while(session.getJobProgramStatus(id) != Session.RUNNING)
			{
				Thread.sleep(1000);
			}
			
			System.out.println("Job " + id + " is now running.");
			
			JobInfo info = session.wait(id, Session.TIMEOUT_WAIT_FOREVER);
			
			System.out.println("Job " + info.getJobId() + " exited with status: " + info.getExitStatus());
			
			session.exit();
		}
		catch(DrmaaException e)
		{
			System.out.println("DrmaaException: " + e.getMessage());
		} catch (InterruptedException e)
		{
			e.printStackTrace();
		}
	}
}
