
package org.apache.hyracks.control.common.work;

import java.util.logging.Level;

public abstract class AbstractWork implements Runnable {
    public Level logLevel() {
        return Level.INFO;
    }

    public String getName() {
        final String className = getClass().getName();
        final int endIndex = className.endsWith("Work") ? className.length() - 4 : className.length();
        return className.substring(className.lastIndexOf('.') + 1, endIndex);
    }

    /**
     * run is executed on a single thread that services the work queue. As a result run should never wait or block as
     * this will delay processing for the whole queue.
     */
    public abstract void run();

    @Override
    public String toString() {
        return getName();
    }
}
