Module labcom.DBstorer

汎用保存データの登録を制御する。

Classes

class DBstoreError (func, msg, code)
Expand source code
class DBstoreError(Exception):
    '''
    '''

    def __init__(self, func, msg, code):
        self.func = func
        self.msg = msg
        self.code = code

Ancestors

  • builtins.Exception
  • builtins.BaseException
class DBstorer
Expand source code
class DBstorer(object):
    '''
[ クラス名 ] DBstorer
< パブリックメンバー >
  なし
< 説明 >
  汎用保存データの登録制御クラス
    '''


    def __init__(self):
        '''
   [ コンストラクタ ]
        '''
        return
    
        
    def puts( self, shot, sub_shot, diag, mail_address, data_type, arc_data_array):
        '''
   [ 関数名 ] puts
   < 引数 >
     shot (int)           : ショット番号
     sub_shot (int)       : サブショット番号
     diag (string)        : データ名(計測名)
     mail_address (string): メールアドレス
     data_type (string)   : データ種別 'RAW','ANA'
     arc_data_array (list[ArcData]) 
                         : チャネルデータ配列
   < 返値 >
     なし
   < 説明 >
     チャネルデータ配列を保存する。
   < 例外 >
     TypeError
     DBstoreError : dbstoreライブラリからのエラー 
        '''
        dd = 0
        if arc_data_array is None :
            return
        if isinstance( arc_data_array, list) :
            if 0 == len( arc_data_array) :
                return
            data_array = arc_data_array
        elif isinstance( arc_data_array, ArcData ) :
            data_array = [arc_data_array]
        else :
            raise TypeError("arc_data_arry")
        
        for arc in data_array :
            if not isinstance( arc, ArcData ) :
                raise TypeError("arc_data_arry")
            
        try :
            dd = _dbstore.open(mail_address, diag, shot, sub_shot, data_type.upper())
#            enumerate : origin is 0.
            for ch, arc_data in enumerate(data_array) :
                ch_no = ch+1
                if arc_data.is_frame() :
                    _dbstore.open_frame(dd, ch_no, arc_data.samples.x_size, \
                                                arc_data.samples.y_size, arc_data.samples.image_type)
                    for fr, fr_data in enumerate( arc_data.samples.frames) :
                        _dbstore.write_frame(dd, ch_no, fr+1, fr_data.block_bin_str)
                       
                    _dbstore.close_frame(dd, ch_no, arc_data.parameters)
                else :
                    _dbstore.write(dd, ch_no, arc_data.parameters, 
                                           arc_data.samples.block_bin_str,
                                            arc_data.samples.image_type)

            _dbstore.close(dd)
            dd = 0
            
        except _dbstore.error as xxx_todo_changeme:
            (efunc,emes,ecode) = xxx_todo_changeme.args
            if dd !=  0 :
                _dbstore.abort(dd)
            raise DBstoreError(efunc, emes, ecode)
            return
    
        return
          
    @classmethod
    def version(cls):
        return _dbstore.version()

[ クラス名 ] DBstorer < パブリックメンバー > なし < 説明 > 汎用保存データの登録制御クラス

[ コンストラクタ ]

Static methods

def version()

Methods

def puts(self, shot, sub_shot, diag, mail_address, data_type, arc_data_array)
Expand source code
    def puts( self, shot, sub_shot, diag, mail_address, data_type, arc_data_array):
        '''
   [ 関数名 ] puts
   < 引数 >
     shot (int)           : ショット番号
     sub_shot (int)       : サブショット番号
     diag (string)        : データ名(計測名)
     mail_address (string): メールアドレス
     data_type (string)   : データ種別 'RAW','ANA'
     arc_data_array (list[ArcData]) 
                         : チャネルデータ配列
   < 返値 >
     なし
   < 説明 >
     チャネルデータ配列を保存する。
   < 例外 >
     TypeError
     DBstoreError : dbstoreライブラリからのエラー 
        '''
        dd = 0
        if arc_data_array is None :
            return
        if isinstance( arc_data_array, list) :
            if 0 == len( arc_data_array) :
                return
            data_array = arc_data_array
        elif isinstance( arc_data_array, ArcData ) :
            data_array = [arc_data_array]
        else :
            raise TypeError("arc_data_arry")
        
        for arc in data_array :
            if not isinstance( arc, ArcData ) :
                raise TypeError("arc_data_arry")
            
        try :
            dd = _dbstore.open(mail_address, diag, shot, sub_shot, data_type.upper())
#            enumerate : origin is 0.
            for ch, arc_data in enumerate(data_array) :
                ch_no = ch+1
                if arc_data.is_frame() :
                    _dbstore.open_frame(dd, ch_no, arc_data.samples.x_size, \
                                                arc_data.samples.y_size, arc_data.samples.image_type)
                    for fr, fr_data in enumerate( arc_data.samples.frames) :
                        _dbstore.write_frame(dd, ch_no, fr+1, fr_data.block_bin_str)
                       
                    _dbstore.close_frame(dd, ch_no, arc_data.parameters)
                else :
                    _dbstore.write(dd, ch_no, arc_data.parameters, 
                                           arc_data.samples.block_bin_str,
                                            arc_data.samples.image_type)

            _dbstore.close(dd)
            dd = 0
            
        except _dbstore.error as xxx_todo_changeme:
            (efunc,emes,ecode) = xxx_todo_changeme.args
            if dd !=  0 :
                _dbstore.abort(dd)
            raise DBstoreError(efunc, emes, ecode)
            return
    
        return

[ 関数名 ] puts < 引数 > shot (int) : ショット番号 sub_shot (int) : サブショット番号 diag (string) : データ名(計測名) mail_address (string): メールアドレス data_type (string) : データ種別 'RAW','ANA' arc_data_array (list[ArcData]) : チャネルデータ配列 < 返値 > なし < 説明 > チャネルデータ配列を保存する。 < 例外 > TypeError DBstoreError : dbstoreライブラリからのエラー