/*******************************************************************************
* Copyright (c) 2012-2015 INRIA.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Generoso Pagano - initial API and implementation
******************************************************************************/
package fr.inria.soctrace.lib.query;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.LinkedList;
import java.util.List;
import fr.inria.soctrace.lib.model.Tool;
import fr.inria.soctrace.lib.model.utils.SoCTraceException;
import fr.inria.soctrace.lib.storage.SystemDBObject;
import fr.inria.soctrace.lib.storage.utils.DBModelConstants.ToolTableModel;
import fr.inria.soctrace.lib.storage.utils.SQLConstants.FramesocTable;
/**
* Query class for Tool table.
*
* @author "Generoso Pagano <generoso.pagano@inria.fr>"
*
*/
public class ToolQuery extends ElementQuery {
/**
* The constructor.
* @param sysDB System DB object where the query is performed.
*/
public ToolQuery(SystemDBObject sysDB) {
super(sysDB);
super.clear();
}
@Override
public List<Tool> getList() throws SoCTraceException {
try {
StringBuilder toolQuery = new StringBuilder("SELECT * FROM " + FramesocTable.TOOL + " ");
if (where) {
toolQuery.append(" WHERE ");
}
if (elementWhere != null) {
toolQuery.append(elementWhere.getSQLString());
}
if (orderBy) {
toolQuery.append(" ORDER BY " + orderByColumn + " " + orderByCriterium);
}
if (isLimitSet()) {
toolQuery.append(" LIMIT " + getLimit());
}
String query = toolQuery.toString();
debug(query);
Statement stm = dbObj.getConnection().createStatement();
ResultSet rs = stm.executeQuery(query);
List<Tool> tools = new LinkedList<Tool>();
while (rs.next()) {
Tool t = new Tool(rs.getInt(ToolTableModel.ID.getPosition()));
t.setName(rs.getString(ToolTableModel.NAME.getPosition()));
t.setType(rs.getString(ToolTableModel.TYPE.getPosition()));
t.setCommand(rs.getString(ToolTableModel.COMMAND.getPosition()));
t.setPlugin(rs.getBoolean(ToolTableModel.IS_PLUGIN.getPosition()));
t.setDoc(rs.getString(ToolTableModel.DOC.getPosition()));
t.setExtensionId(rs.getString(ToolTableModel.EXTENSION_ID.getPosition()));
tools.add(t);
}
stm.close();
return tools;
} catch (SQLException e) {
throw new SoCTraceException(e);
}
}
}