package org.ovirt.engine.core.dal;
import java.util.Arrays;
import java.util.Map;
import org.ovirt.engine.core.utils.log.Logged;
import org.ovirt.engine.core.utils.log.Logged.LogLevel;
import org.ovirt.engine.core.utils.log.LoggedUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Logged(errorLevel = LogLevel.WARN)
public abstract class VdcCommandBase {
protected final Logger log = LoggerFactory.getLogger(getClass());
protected String getCommandName() {
return getClass().getSimpleName().replace("Command", "");
}
public Object getReturnValue() {
return null;
}
public void setReturnValue(Object value) {
}
public void execute() {
String logId = LoggedUtils.getObjectId(this);
LoggedUtils.logEntry(log, logId, this);
try {
executeCommand();
LoggedUtils.logReturn(log, logId, this, getReturnValue() != null && getReturnValue() instanceof Map[] ? Arrays.asList((Map[])getReturnValue()) : getReturnValue());
} catch (Exception e) {
LoggedUtils.logError(log, logId, this, e);
IllegalStateException ise = new IllegalStateException();
ise.setStackTrace(e.getStackTrace());
throw ise;
}
}
@Override
public String toString() {
return getClass().getSimpleName();
}
protected abstract void executeCommand();
}