;+
; Project
;          Hinode(SolarB) EIS
; Name
;          eis_write_science_component_database_table
;
; Purpose
;          Function to write science component database tables
;
; Category
;          EIS timeline planning
;
; Written
;          Chunkey Lepine, RAL
;
; Version  v0.1 2-Jun-2010
;               Tidied up - and got rid of stops?
;-
;************************************************************************
FUNCTION eis_write_science_component_database_table, science_component

IF (science_component.sequence_id EQ 0) THEN RETURN , 0

aec = science_component.aec_response
e1 = long(aec.respond_to_aec)

e2 = lonarr(5)
flare = science_component.eis_flare_response
    e2[0] = flare.respond_to_eis_flare
    e2[1] = flare.response_study_id
    e2[2] = flare.x_repoint
    e2[3] = flare.y_repoint
    e2[4] = flare.repoint_raster_index

e3 = lonarr(5)
event = science_component.eis_event_response
    e3[0] = event.respond_to_eis_event
    e3[1] = event.response_study_id
    e3[2] = event.x_repoint
    e3[3] = event.y_repoint
    e3[4] = event.repoint_raster_index

e4 = lonarr(7)
xrt = science_component.xrt_flare_response
    e4[0] = xrt.respond_to_xrt_flare
    e4[1] = xrt.response_study_id
    e4[2] = xrt.x_repoint
    e4[3] = xrt.y_repoint
    e4[4] = xrt.repoint_raster_index
    e4[5] = xrt.xrt_flare_in_FOV
    e4[6] = xrt.follow_on_study_id


;db_name = eis_get_db_name(_EXTRA = ex)
db_name = 'eis_science_db'
if (db_name eq '') then return, -1
dbhname = find_with_def(db_name+'.dbh', 'ZDBASE')

validFile = FILE_TEST( dbhname , /READ)
defsysv,'!PRIV', 2
IF (validFile NE 1) THEN RETURN , 0

dbopen, db_name , 1 , unavail = unavail

;status = eis_open_db(/SCIENCE, /UPDATE)

dbbuild                                , $
    science_component.sequence_id      , $
    science_component.solarb_science   , $
    science_component.obs_id           , $
    science_component.jop_id           , $
    science_component.observer         , $
    science_component.planner          , $
    science_component.tohbans          , $    ; 7
    science_component.obstitle         , $
    science_component.sci_obj          , $
    science_component.obs_dec          , $
    science_component.join_sb          , $
    science_component.noaa_num         , $
    science_component.eis_science      , $
    science_component.campaign         , $
    science_component.notes            , $
    science_component.disturbance      , $
    science_component.target           , $
    science_component.target_id        , $
    science_component.study_id         , $
    science_component.nrepeats         , $
    science_component.duration         , $
    science_component.volume           , $
    science_component.nrasters         , $
    science_component.slit_slot        , $   ; 24  
    e1                                 , $   ;     AEC
    e2                                 , $   ; 26  EISF
    e3                                 , $   ; 27  EISE (BP)
    e4                                 , $   ; 28  XRTF
    /SILENT,status=status

dbclose

sl = science_component.studyRasters
n  = science_component.nRasters

db_name = 'eis_science2_db'
IF (db_name eq '') then RETURN , 0
dbhname = find_with_def(db_name+'.dbh', 'ZDBASE')
validFile = FILE_TEST( dbhname , /READ)
defsysv,'!PRIV', 2
IF (validFile NE 1) THEN RETURN , 0



for i = 0, n-1 do begin

    dbopen, db_name , 1 , unavail = unavail

    ; Get studyRaster[ index ]
    sra = sl[i]

    aec = sra.aec_props
    e1 = lonarr(6)
        e1[0] = aec.upper_threshold
        e1[1] = aec.lower_threshold
        e1[2] = aec.upper_count_limit
        e1[3] = aec.lower_count_limit
        e1[4] = aec.exposure_id
        e1[5] = aec.max_run_time

    flare = sra.eis_flare_props
    e2 = lonarr(6)
        e2[0] = flare.x_centre
        e2[1] = flare.y_centre
        e2[2] = flare.x_pixel_threshold
        e2[3] = flare.y_pixel_threshold
        e2[4] = flare.x_min_limit
        e2[5] = flare.y_min_limit

    event = sra.eis_event_props
    e3 = lonarr(4)
        e3[0] = event.x_pixel_threshold
        e3[1] = event.y_pixel_threshold
        e3[2] = event.x_min_limit
        e3[3] = event.y_min_limit

    xrt = sra.xrt_flare_props
    e4 = long(xrt.xrt_flag)


    dbbuild                            , $
        science_component.sequence_id  , $
        sra.ra_index                   , $
        sra.ra_id                      , $
        sra.ra_repeats                 , $
        sra.ra_nwindows                , $
        sra.ra_compression             , $
        sra.ra_duration                , $
        sra.ra_volume                  , $
        aec.aec_flag                   , $  ; 9    25 elements
        e1                             , $  ; 10   6  elements  
        flare.flare_flag               , $  ; 11   25
        e2                             , $  ; 12   6
        event.event_flag               , $  ; 13   25
        e3                             , $  ; 14   4
        e4                             , $
        sra.asrc_enabled               , $
        sra.asrc_direction             , $
        sra.asrc_skip                  , $
        sra.asrc_nSteps                , $
        sra.mip                        , $
        sra.yip                        , $
        sra.x_point                    , $
        sra.y_point                    , $
        sra.cmp                        , $
        sra.ra_start_time              , $
        sra.ra_stop_time               , $
        sra.sc_x                       , $
        sra.sc_y                       , $
        /SILENT,status=status

ENDFOR

RETURN, 1


END
