source: mauRepo/MolesManager/trunk/src/libs/epb.py @ 8180

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/mauRepo/MolesManager/trunk/src/libs/epb.py@8221
Revision 8180, 1.6 KB checked in by mnagni, 8 years ago (diff)

Global commit. In future Mylyn should manage a better per-ticket commit policy

Line 
1'''
2Created on 10 Jan 2012
3
4@author: mnagni
5'''
6from sqlalchemy.orm import subqueryload
7from sqlalchemy.sql.expression import text
8
9class EPB(object):
10
11    @classmethod
12    def buildFilter(self, key, keyValue):
13        try:
14            return '%s = \'%s\'' % (key, keyValue)
15        except RuntimeError as er:
16            print er
17
18    @classmethod
19    def search(self, clazz, inst_id, session):         
20        res = session.query(clazz).get(inst_id)
21        if res is None:
22            return None
23        return res
24
25    @classmethod
26    def searchEager(self, clazz, inst_id, session):         
27        res = session.query(clazz).options(subqueryload('*')).get(inst_id)
28        if res is None:
29            return None
30        return res
31
32    @classmethod   
33    def searchOrCreate(self, clazz, session, clazz_id = None):
34        if clazz_id is not None:
35            return EPB.search(clazz, clazz_id, session)
36        else:                       
37            return clazz()
38       
39
40    @classmethod
41    def getAllObjects(self, clazz, session):     
42        res = session.query(clazz)
43        if res is None:
44            return None
45        return res
46
47    @classmethod
48    def executeNative(self, sqlNative, session):
49        return session.execute(text(sqlNative))     
50
51    @classmethod
52    def _getSession(self, dbManager, session = None):
53        if session:
54            return session       
55        return dbManager.createDbSession()
56
57    @classmethod
58    def _closeSession(self, session):
59        if session is not None:
60            return
61        session.commit()
62        session.close()
Note: See TracBrowser for help on using the repository browser.