Introduced changes should work in parallel with existing API (unless it proves impossible)
'Old' methods and classes will be marked as deprecated
1. DB_ENTRY
1.1. Class structure:
Class keeps information about one, particular database entry (eg. pulse-file, HDC container, SQL-database, etc etc)
db_entry
class represents data accessible through Access Layerhdc_entry
,sql_entry
are examples of classes that represents IMAS data entry accessible via other mechanisms than AL (if they will be implemented in future)imas_entry
a parent class for all??_entry
classes. It will be implemented in future if any other mechanism of accessing data than AL will be used. Could be empty...
THIS PAGE FOCUSES ON DESIGN OF DB_ENTRY AND IDS CLASSES ONLY!
1.2. Definition (constructor)
DB Entry is defined by:
- backend_id - MDSPLUS_BACKEND, MEMORY_BACKEND, ASCII_BACKEND - mandatory -
- db name - eg.
test
- mandatory - shot - mandatory
- run - mandatory
- user name - eg.
g2bpalak
- optional - if None → $USER - data version - e.g. 3 - optional - currently not used, we should keep it as it will point us to a proper dir in imasdb structure, when we develop versions 4,5, etc - if None → 3
al_entry constructor
def __init__(self, backend_id, db_name, shot, run, user_name = None, data_version = 3) if userName is None: user = $USER
Additional "URI-based" constructor will be added in future...
1.3. Create/open/close
All parameters that defines db_entry
are set in constructor, so create, open, close
will have no arguments
al_entry create/open/close
def create(self, options = None) def open(self, options = None) def close(self, options = None) options - additional options (possibly backend specific)
1.4. Put/Get IDS
IDS GET
def get(self, idsName, occurrence = 0) # idsName (e.g. 'equilibrium') return ids
IDS PUT
def put(self, ids, occurrence = 0)
1.5. Any other method is needed to ba added to db_entry class?
getTime vector?