Big refactoring 3
This commit is contained in:
@ -26,71 +26,61 @@ from .capi.obiview cimport Obiview_p, \
|
|||||||
DEFINITION_COLUMN, \
|
DEFINITION_COLUMN, \
|
||||||
QUALITY_COLUMN
|
QUALITY_COLUMN
|
||||||
|
|
||||||
from ._obidmscolumn cimport OBIDMS_column_p, \
|
|
||||||
OBIDMS_column
|
|
||||||
|
|
||||||
from ._obidms cimport OBIDMS
|
|
||||||
from obitools3.utils cimport tobytes, \
|
from obitools3.utils cimport tobytes, \
|
||||||
bytes2str, \
|
bytes2str, \
|
||||||
tostr
|
tostr
|
||||||
|
|
||||||
|
from .dms cimport DMS
|
||||||
|
|
||||||
cdef class OBIView:
|
|
||||||
|
cdef class View:
|
||||||
|
|
||||||
cdef OBIDMS _dms
|
cdef DMS _dms
|
||||||
cdef Obiview_p _pointer
|
cdef Obiview_p _pointer
|
||||||
cdef dict _columns
|
cdef dict _columns
|
||||||
|
|
||||||
cdef __init_columns__(self)
|
cdef __init_columns__(self)
|
||||||
|
|
||||||
cpdef OBIView clone(self,
|
cpdef View clone(self,
|
||||||
view_name,
|
object view_name,
|
||||||
comments=*)
|
object comments=*)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
cdef OBIView _new(OBIDMS dms,
|
cdef View _new(DMS dms,
|
||||||
bytes view_name,
|
bytes view_name,
|
||||||
bytes comments=*)
|
bytes comments=*)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
cdef OBIView _open(OBIDMS dms,
|
cdef View _open(DMS dms,
|
||||||
bytes view_name)
|
bytes view_name)
|
||||||
|
|
||||||
cpdef delete_column(self, column_name)
|
cpdef close(self)
|
||||||
cpdef add_column(self,
|
|
||||||
str column_name,
|
|
||||||
obiversion_t version_number=*,
|
|
||||||
object alias=*,
|
|
||||||
object type=*,
|
|
||||||
index_t nb_lines=*,
|
|
||||||
index_t nb_elements_per_line=*,
|
|
||||||
list elements_names=*,
|
|
||||||
object indexer_name=*,
|
|
||||||
object associated_column_name=*,
|
|
||||||
obiversion_t associated_column_version=*,
|
|
||||||
object comments=*,
|
|
||||||
bint create=*
|
|
||||||
)
|
|
||||||
|
|
||||||
|
cpdef delete_column(self,
|
||||||
|
object column_name)
|
||||||
|
|
||||||
|
cpdef rename_column(self,
|
||||||
|
object current_name,
|
||||||
|
object new_name)
|
||||||
|
|
||||||
cpdef change_column_alias(self, bytes current_alias, bytes new_alias)
|
|
||||||
cdef update_column_pointers(self)
|
cdef update_column_pointers(self)
|
||||||
|
|
||||||
cpdef OBIView_line_selection new_selection(self,
|
cpdef OBIView_line_selection new_selection(self,
|
||||||
list lines=*)
|
list lines=*)
|
||||||
|
|
||||||
cdef class OBIView_line_selection(list):
|
cdef class View_line_selection(list):
|
||||||
|
|
||||||
cdef OBIView _view
|
cdef View _view
|
||||||
cdef str _view_name
|
|
||||||
|
|
||||||
cdef index_t* __build_binary_list__(self)
|
cdef index_t* __build_binary_list__(self)
|
||||||
cpdef OBIView materialize(self,
|
|
||||||
str view_name,
|
cpdef View materialize(self,
|
||||||
str comments=*)
|
object view_name,
|
||||||
|
object comments=*)
|
||||||
|
|
||||||
cdef class OBIView_line :
|
cdef class View_line :
|
||||||
|
|
||||||
cdef index_t _index
|
cdef index_t _index
|
||||||
cdef OBIView _view
|
cdef View _view
|
||||||
|
|
||||||
|
|
@ -1,60 +1,52 @@
|
|||||||
#cython: language_level=3
|
#cython: language_level=3
|
||||||
|
|
||||||
|
|
||||||
cdef class OBIView :
|
cdef class View :
|
||||||
|
|
||||||
def __init__(self,dms,int __internalCall__):
|
def __init__(self,dms,int __internalCall__):
|
||||||
|
|
||||||
if __internalCall__!=987654:
|
if __internalCall__!=987654:
|
||||||
raise RuntimeError('OBIView constructor cannot be called directly')
|
raise RuntimeError('OBIView constructor cannot be called directly')
|
||||||
|
|
||||||
self._dms = dms
|
self._dms = dms
|
||||||
self._pointer = NULL
|
self._pointer = NULL
|
||||||
self._columns = {}
|
|
||||||
|
cpdef View clone(self,
|
||||||
cdef __init_columns__(self):
|
object view_name,
|
||||||
cdef size_t i
|
object comments=None):
|
||||||
cdef bytes col_alias
|
|
||||||
cdef OBIDMS_column_p column_p
|
|
||||||
cdef Obiview_p pointer = self._pointer
|
|
||||||
|
|
||||||
self._columns = {}
|
|
||||||
|
|
||||||
for i in range(pointer.infos.column_count) :
|
|
||||||
col_alias = pointer.infos.column_references[i].alias
|
|
||||||
column_p = <OBIDMS_column_p> (pointer.columns)[i]
|
|
||||||
subclass = OBIDMS_column.get_subclass_type(column_p)
|
|
||||||
self._columns[col_alias] = subclass(self, col_alias)
|
|
||||||
|
|
||||||
|
|
||||||
cpdef OBIView clone(self,
|
|
||||||
view_name,
|
|
||||||
comments=b""):
|
|
||||||
|
|
||||||
cdef OBIView view = OBIView(self._dms,
|
|
||||||
987654)
|
cdef bytes view_name_b = tobytes(view_name)
|
||||||
|
cdef bytes comments_b
|
||||||
|
cdef View view = View(self._dms,
|
||||||
|
987654)
|
||||||
|
|
||||||
|
if comments is not None:
|
||||||
|
comments_b = tobytes(comments)
|
||||||
|
else:
|
||||||
|
comments_b = b''
|
||||||
|
|
||||||
view._pointer = obi_new_view(self._pointer.dms,
|
view._pointer = obi_new_view(self._pointer.dms,
|
||||||
tobytes(view_name),
|
view_name_b,
|
||||||
self._pointer,
|
self._pointer,
|
||||||
NULL,
|
NULL,
|
||||||
tobytes(comments))
|
comments_b)
|
||||||
|
|
||||||
if view._pointer == NULL :
|
if view._pointer == NULL :
|
||||||
raise RuntimeError("Error : Cannot clone view %s into view %s"
|
raise RuntimeError("Error : Cannot clone view %s into view %s"
|
||||||
% (str(self.name),
|
% (str(self.name),
|
||||||
tobytes(view_name))
|
bytes2str(view_name_b))
|
||||||
)
|
)
|
||||||
|
|
||||||
view.__init_columns__()
|
|
||||||
|
|
||||||
return view
|
return view
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
cdef OBIView _new(OBIDMS dms,
|
cdef View _new(DMS dms,
|
||||||
bytes view_name,
|
bytes view_name,
|
||||||
bytes comments=b""):
|
bytes comments=b""):
|
||||||
|
|
||||||
cdef OBIView view = OBIView(dms,
|
cdef View view = OBIView(dms,
|
||||||
987654) # @DuplicatedSignature
|
987654) # @DuplicatedSignature
|
||||||
|
|
||||||
view._pointer = obi_new_view(dms._pointer,
|
view._pointer = obi_new_view(dms._pointer,
|
||||||
view_name,
|
view_name,
|
||||||
@ -64,24 +56,34 @@ cdef class OBIView :
|
|||||||
|
|
||||||
if view._pointer == NULL :
|
if view._pointer == NULL :
|
||||||
raise RuntimeError("Error : Cannot create view %s" % view_name)
|
raise RuntimeError("Error : Cannot create view %s" % view_name)
|
||||||
|
|
||||||
view.__init_columns__()
|
|
||||||
|
|
||||||
return view
|
return view
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def new(OBIDMS dms,
|
def new(OBIDMS dms,
|
||||||
view_name,
|
object view_name,
|
||||||
comments=b""):
|
object comments=None):
|
||||||
return OBIView._new(dms,tobytes(view_name),tobytes(comments))
|
|
||||||
|
cdef bytes view_name_b = tobytes(view_name)
|
||||||
|
cdef bytes comments_b
|
||||||
|
|
||||||
|
if comments is not None:
|
||||||
|
comments_b = tobytes(comments)
|
||||||
|
else:
|
||||||
|
comments_b = b''
|
||||||
|
|
||||||
|
|
||||||
|
return View._new(dms,
|
||||||
|
view_name_b,
|
||||||
|
comments_b)
|
||||||
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
cdef OBIView _open(OBIDMS dms,
|
cdef View _open(DMS dms,
|
||||||
bytes view_name):
|
bytes view_name):
|
||||||
|
|
||||||
cdef OBIView view = OBIView(dms,
|
cdef View view = View(dms,
|
||||||
987654) # @DuplicatedSignature
|
987654) # @DuplicatedSignature
|
||||||
|
|
||||||
view._pointer = obi_open_view(dms._pointer,
|
view._pointer = obi_open_view(dms._pointer,
|
||||||
view_name)
|
view_name)
|
||||||
@ -89,19 +91,22 @@ cdef class OBIView :
|
|||||||
if view._pointer == NULL :
|
if view._pointer == NULL :
|
||||||
raise RuntimeError("Error : Cannot open view %s" % bytes2str(view_name))
|
raise RuntimeError("Error : Cannot open view %s" % bytes2str(view_name))
|
||||||
|
|
||||||
view.__init_columns__()
|
|
||||||
|
|
||||||
return view
|
return view
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def open(OBIDMS dms, # @ReservedAssignment
|
def open(DMS dms, # @ReservedAssignment
|
||||||
view_name):
|
object view_name):
|
||||||
return OBIView._open(dms,tobytes(view_name))
|
|
||||||
|
|
||||||
def __dealloc__(self):
|
cdef bytes view_name_b = tobytes(view_name)
|
||||||
|
|
||||||
|
return View._open(dms,view_name_b)
|
||||||
|
|
||||||
|
cpdef close(self):
|
||||||
if (obi_save_and_close_view(self._pointer) < 0) :
|
if (obi_save_and_close_view(self._pointer) < 0) :
|
||||||
raise Exception("Problem closing a view")
|
raise Exception("Problem closing a view")
|
||||||
|
|
||||||
|
def __dealloc__(self):
|
||||||
|
self.close()
|
||||||
|
|
||||||
def __repr__(self) :
|
def __repr__(self) :
|
||||||
cdef str s
|
cdef str s
|
||||||
@ -400,4 +405,40 @@ cdef class OBIView_line :
|
|||||||
return str(line)
|
return str(line)
|
||||||
|
|
||||||
|
|
||||||
|
cpdef dict get_view_infos(self, str view_name) :
|
||||||
|
|
||||||
|
cdef Obiview_infos_p view_infos_p
|
||||||
|
cdef dict view_infos_d
|
||||||
|
cdef Alias_column_pair_p column_refs
|
||||||
|
cdef int i, j
|
||||||
|
cdef str column_name
|
||||||
|
|
||||||
|
view_infos_p = obi_view_map_file(self._pointer,
|
||||||
|
tobytes(view_name))
|
||||||
|
view_infos_d = {}
|
||||||
|
view_infos_d["name"] = bytes2str(view_infos_p.name)
|
||||||
|
view_infos_d["comments"] = bytes2str(view_infos_p.comments)
|
||||||
|
view_infos_d["view_type"] = bytes2str(view_infos_p.view_type)
|
||||||
|
view_infos_d["column_count"] = <int> view_infos_p.column_count
|
||||||
|
view_infos_d["line_count"] = <int> view_infos_p.line_count
|
||||||
|
view_infos_d["created_from"] = bytes2str(view_infos_p.created_from)
|
||||||
|
view_infos_d["creation_date"] = bytes2str(obi_format_date(view_infos_p.creation_date))
|
||||||
|
if (view_infos_p.all_lines) :
|
||||||
|
view_infos_d["line_selection"] = None
|
||||||
|
else :
|
||||||
|
view_infos_d["line_selection"] = {}
|
||||||
|
view_infos_d["line_selection"]["column_name"] = bytes2str((view_infos_p.line_selection).column_name)
|
||||||
|
view_infos_d["line_selection"]["version"] = <int> (view_infos_p.line_selection).version
|
||||||
|
view_infos_d["column_references"] = {}
|
||||||
|
column_references = view_infos_p.column_references
|
||||||
|
for j in range(view_infos_d["column_count"]) :
|
||||||
|
column_name = bytes2str((column_references[j]).alias)
|
||||||
|
view_infos_d["column_references"][column_name] = {}
|
||||||
|
view_infos_d["column_references"][column_name]["original_name"] = bytes2str((column_references[j]).column_refs.column_name)
|
||||||
|
view_infos_d["column_references"][column_name]["version"] = (column_references[j]).column_refs.version
|
||||||
|
|
||||||
|
obi_view_unmap_file(self._pointer, view_infos_p)
|
||||||
|
|
||||||
|
return view_infos_d
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user