package com.teleca.robin;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Worker extends Thread {
private boolean loop=true;
private boolean paused=false;
private int cnt=0;
final private JLabel consoleText;
Worker(JLabel lable)
{
consoleText=lable;
}
private long interval=1000;
void setInterval(long interval)
{
this.interval=interval;
}
private String executableFileName;
void setExecutableFileName(String file)
{
if(executableFileName!=null&&file!=null)
{
if(!executableFileName.equals(file))
cnt=0;
}
executableFileName=file;
}
public void doPause()
{
paused=true;
}
public void doResume()
{
paused=false;
interrupt();
}
public void die()
{
loop=false;
}
public void run()
{
while(loop)
{
if(paused||executableFileName==null)
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
}
else
{
BufferedReader stdout = null;
try {
Process p = null;
String line = null;
p = Runtime.getRuntime().exec(executableFileName, null, null);
stdout = new BufferedReader(new InputStreamReader(p
.getInputStream()));
while ((line = stdout.readLine()) != null) {
System.out.println(line);
}
stdout.close();
stdout=null;
} catch (IOException e) {
e.printStackTrace();
}finally{
if(stdout!=null)
try {
stdout.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
cnt++;
if(consoleText!=null)
consoleText.setText("Execute the file "+cnt+" times");
try {
Thread.sleep(interval);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
}
}
System.out.println("exit!");
}
}