# -*- coding: ISO-8859-1 -*- ################################## # @program smon # @description simulation monitor # @copyright Copyright “(c)2009 Centre National de la Recherche Scientifique CNRS. # All Rights Reserved” # @svn_file $Id: repo_io.py 2599 2013-03-24 19:01:23Z jripsl $ # @version $Rev: 2599 $ # @lastrevision $Date: 2013-03-24 20:01:23 +0100 (Sun, 24 Mar 2013) $ # @license CeCILL (http://dods.ipsl.jussieu.fr/jripsl/smon/LICENSE) ################################## import sys import sqlite3 _conn=None timeout=1 def connect(): global _conn if _conn is not None: raise Exception() _conn=sqlite3.connect(":memory:",timeout) create_tables() def free(): global _conn if _conn is None: raise Exception() _conn.close() _conn=None def create_tables(): _conn.execute("create table simulation (id INTEGER PRIMARY KEY, name TEXT)") _conn.execute("create table message (id INTEGER PRIMARY KEY, simulation_id TEXT)") # TODO: check how to use INT datatype for simulation_id column def retrieve_simulation(name): c=_conn.cursor() c.execute("select name,id from simulation where name = ?",(name,)) rs=c.fetchone() if rs is None: raise Exception() return smon.types.Simulation(id=rs[1]) def delete_simulation(simulation): _conn.execute("delete from simulation where name = ?",(simulation.name,)) def create_simulation(simulation): _conn.execute("insert into simulation (name) values (?)",(simulation.name,)) def update_simulation_status(simulation): _conn.execute("update simulation set status=? where name = ?",(simulation.status,simulation.name)) def retrieve_messages(simulation): li=[] c=_conn.cursor() _conn.execute("select id from message where simulation_id = ?",(simulation.id,)) rs=c.fetchone() while rs is not None: li.append(smon.types.Message(id=rs[0])) rs=c.fetchone() return li def delete_messages(simulation): _conn.execute("delete from message where simulation_id = ?",(simulation.id,)) def create_message(message): _conn.execute("insert into message (simulation_id) values (?)",(message.simuid,)) def retrieve_last_message(simulation): c=_conn.cursor() _conn.execute("select id, content from message where simulation_id=? order by id desc limit 1",(simulation.id,)) rs=c.fetchone() if rs is None: raise Exception() return smon.types.Message(id=rs[0])