/******************************************************************************* * 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.storage.utils; import java.sql.SQLException; import java.sql.Statement; import fr.inria.soctrace.lib.model.utils.SoCTraceException; import fr.inria.soctrace.lib.utils.Configuration; import fr.inria.soctrace.lib.utils.Configuration.SoCTraceProperty; /** * Class containing the SQL commands for some stored procedures * that can be used for manually inspecting the databases content. * * Note: SQLite DBMS does not support stored procedures * * @author "Generoso Pagano <generoso.pagano@inria.fr>" */ @Deprecated public class StoredProcedures { /* * C o n s t a n t s */ /** * Shows the parameters values of a given trace. * call TraceParamNameValue(trace-id); */ public final static String CREATE_STORED_PROCEDURE_TRACE_PARAM_NAME_VALUE = "CREATE PROCEDURE TraceParamNameValue(IN tid INT) " + "SELECT TRACE_PARAM_TYPE.NAME as NAME, TRACE_PARAM.VALUE as VALUE " + "FROM TRACE_PARAM_TYPE INNER JOIN TRACE_PARAM on TRACE_PARAM_TYPE.ID = TRACE_PARAM.TRACE_PARAM_TYPE_ID " + "WHERE TRACE_PARAM.TRACE_ID = tid"; /** * Shows the parameters values of a given event. * call EventParamNameValue(event-id); */ public final static String CREATE_STORED_PROCEDURE_EVENT_PARAM_NAME_VALUE = "CREATE PROCEDURE EventParamNameValue(IN eid INT) " + "SELECT EVENT_PARAM_TYPE.NAME as NAME, EVENT_PARAM.VALUE as VALUE " + "FROM EVENT_PARAM_TYPE INNER JOIN EVENT_PARAM on EVENT_PARAM_TYPE.ID = EVENT_PARAM.EVENT_PARAM_TYPE_ID " + "WHERE EVENT_PARAM.EVENT_ID = eid"; /** * Shows the event producer details for an event. * call EventProducer(event-id); */ public final static String CREATE_STORED_PROCEDURE_EVENT_PRODUCER = "CREATE PROCEDURE EventProducer(IN eid INT) " + "SELECT EVENT.ID as EVENT_ID, EVENT.TIMESTAMP as TIMESTAMP, " + "EVENT_PRODUCER.TYPE as EVENT_PRODUCER_TYPE, EVENT_PRODUCER.NAME as EVENT_PRODUCER_NAME, EVENT_PRODUCER.LOCAL_ID as EVENT_PRODUCER_LOCAL_ID " + "FROM EVENT INNER JOIN EVENT_PRODUCER on EVENT.EVENT_PRODUCER_ID = EVENT_PRODUCER.ID " + "WHERE EVENT.ID = eid"; /* * S t a t i c m e t h o d s */ public static void createSPTraceParamNameValue(Statement statement) throws SoCTraceException { try { checkDBMS(); statement.execute(StoredProcedures.CREATE_STORED_PROCEDURE_TRACE_PARAM_NAME_VALUE); } catch (SQLException e) { throw new SoCTraceException(e); } } public static void createSPEventParamNameValue(Statement statement) throws SoCTraceException { try { checkDBMS(); statement.execute(StoredProcedures.CREATE_STORED_PROCEDURE_EVENT_PARAM_NAME_VALUE); } catch (SQLException e) { throw new SoCTraceException(e); } } public static void createSPEventProducer(Statement statement) throws SoCTraceException { try { checkDBMS(); statement.execute(StoredProcedures.CREATE_STORED_PROCEDURE_EVENT_PRODUCER); } catch (SQLException e) { throw new SoCTraceException(e); } } private static void checkDBMS() throws SoCTraceException { String dbms = Configuration.getInstance().get(SoCTraceProperty.soctrace_dbms); if (dbms.equals("sqlite")) throw new SoCTraceException("DBMS '" + dbms + "' does not support Stored Procedures."); } }