package org.ourgrid.common.internal.requester;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.SQLQuery;
import org.ourgrid.common.internal.IResponseTO;
import org.ourgrid.common.internal.RequesterIF;
import org.ourgrid.common.internal.request.QueryRequestTO;
import org.ourgrid.common.internal.response.OperationSucceedResponseTO;
import org.ourgrid.common.statistics.util.hibernate.HibernateUtil;
public class QueryRequester implements RequesterIF<QueryRequestTO> {
public List<IResponseTO> execute(QueryRequestTO request) {
List<IResponseTO> responses = new ArrayList<IResponseTO>();
OperationSucceedResponseTO to = new OperationSucceedResponseTO();
to.setClientAddress(request.getClientAddress());
try {
String result = "";
HibernateUtil.getSession();
HibernateUtil.beginTransaction();
SQLQuery sqlQuery = HibernateUtil.getSession().createSQLQuery(request.getQuery());
List<?> list = sqlQuery.list();
if (list == null || list.isEmpty()) {
result = "No data available";
} else {
for (Object line : list) {
if (line == null) {
result = result + "null; ";
} else if (line instanceof Object[]) {
Object[] objects = (Object[]) line;
for (Object object : objects) {
result = result + (object == null ? "null " : object.toString()) + "; ";
}
} else {
result = result + line.toString() + "; ";
}
result += "\n";
}
}
HibernateUtil.closeSession();
to.setResult(result);
} catch (Exception e) {
to.setErrorCause(e);
}
responses.add(to);
return responses;
}
}