package org.wikiwebserver.distribute.server;

import org.wikiwebserver.distribute.interfaces.Generator;
import org.wikiwebserver.distribute.interfaces.Processor;
import org.wikiwebserver.distribute.interfaces.Task;

public class TaskStub extends Task {
	
	private boolean issued;
	private boolean inputProcessor;
	private boolean outputGenerator;
	
	private Object output;
	private Object input;
	
	public TaskStub() {
		
	}
	
	public TaskStub(Task task) {
		this.setTaskId(task.getTaskId());
		this.setTaskClassName(task.getClass().getName());
		this.setTaskPassword(task.getTaskPassword());
		this.setTaskInputMeta(task.getTaskInputMeta());
		this.setTaskOutputMeta(task.getTaskOutputMeta());
		this.setOutputGenerator(task instanceof Generator);
		this.setInputProcessor(task instanceof Processor);
		this.setExpireTime(task.getExpireTime());
	}
	
	public boolean isIssued() {
		return this.issued;
	}
	public void setIssued(boolean issued) {
		this.issued = issued;
	}
	public boolean isInputProcessor() {
		return this.inputProcessor;
	}
	public void setInputProcessor(boolean inputProcessor) {
		this.inputProcessor = inputProcessor;
	}
	public boolean isOutputGenerator() {
		return this.outputGenerator;
	}
	public void setOutputGenerator(boolean outputGenerator) {
		this.outputGenerator = outputGenerator;
	}
	public Object getOutput() {
		return this.output;
	}
	public synchronized void setOutput(Object output) {
		this.output = output;
		notifyAll();
	}
	public Object getInput() {
		return this.input;
	}
	public void setInput(Object input) {
		this.input = input;
		notifyAll();
	}
}

