All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.venky.swf.plugins.background.db.model.DelayedTaskImpl Maven / Gradle / Ivy

There is a newer version: 1.5
Show newest version
package com.venky.swf.plugins.background.db.model;

import java.io.ObjectInputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.logging.Logger;

import com.venky.swf.db.Database;
import com.venky.swf.db.table.ModelImpl;
import com.venky.swf.db.table.Record;
import com.venky.swf.plugins.background.core.Task;

public class DelayedTaskImpl extends ModelImpl implements Comparable{

	public DelayedTaskImpl(DelayedTask proxy) {
		super(proxy);
	}
	
	
	public int compareTo(DelayedTask o2) {
		int ret = 0 ;
		Record r1 = getProxy().getRawRecord();
		Record r2 = o2.getRawRecord();
		
		for (String field: DelayedTask.DEFAULT_ORDER_BY_COLUMNS){
			if (ret == 0){
				Comparable v1 = (Comparable)r1.get(field);
				Comparable v2 = (Comparable)r2.get(field);
				
				ret = v1.compareTo(v2);
			}
		}
		
		return 0;
	}
	
	public void execute(){
		DelayedTask o = getProxy();
		DelayedTask locked = Database.getTable(DelayedTask.class).lock(o.getId());
		if (locked != null) {
			boolean success = false;
			try {
				ObjectInputStream is = new ObjectInputStream(locked.getData());
				Task task = (Task)is.readObject();
				task.execute();
				success = true;
			}catch(Exception ex){
				StringWriter sw = new StringWriter();
				PrintWriter w = new PrintWriter(sw);
				ex.printStackTrace(w);
				locked.setLastError(sw.toString());
				locked.setNumAttempts(locked.getNumAttempts()+1);
			}
			if (success){
				locked.destroy();
			}else {
				locked.save();
			}
		}else {
			Logger.getLogger(getClass().getName()).info("Task " + o.getId() + " already executed ");
		}
	}
	

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy