^1640740807858
@
sname
shell
stext
生成简单SQL工具
sNO_TRIM
false
sCLOSE
true
sTITLE
true
sMIN
true
sMAX
true
sBORDER
false
sRESIZE
true
sON_TOP
false
sTOOL
false
sNO_FOCUS
false
swidth
640
sheight
480
scenterScreen
true
spack
false
smaximized
false
sfullScreen
false
sH_SCROLL
false
sV_SCROLL
false
sNO_BACKGROUND
false
sNO_MERGE_PAINTS
false
sNO_REDRAW_RESIZE
false
sNO_RADIO_GROUP
false
sEMBEDDED
false
sDOUBLE_BUFFERED
false
slabel
GenerateSimpleSQLDialog
scapture
false
senabled
true
sredraw
true
svisible
true
sdescriptors
xworker.swt.widgets.Shell
sth_createIndex
false
  @/@shellGridLayout
  sname
  shellGridLayout
  snumColumns
  3
  smakeColumnsEqualWidth
  false
  smarginWidth
  5
  smarginHeight
  5
  smarginLeft
  0
  smarginTop
  0
  smarginRight
  0
  smarginBottom
  0
  shorizontalSpacing
  5
  sverticalSpacing
  5
  sdescriptors
  xworker.swt.Layouts/@GridLayout
  sth_createIndex
  false
  sid
  shellGridLayout
  @/@selectLabel
  sname
  selectLabel
  sBORDER
  false
  stype
  HORIZONTAL
  sshadow
  SHADOW_OUT
  salignment
  LEFT
  stext
  选择字段：
  scapture
  false
  senabled
  true
  sredraw
  true
  svisible
  true
  sdescriptors
  xworker.swt.Widgets/@Label
  sth_createIndex
  false
  sid
  selectLabel
  @/@whereLabel
  sname
  whereLabel
  sBORDER
  false
  stype
  HORIZONTAL
  sshadow
  SHADOW_OUT
  salignment
  LEFT
  stext
  条件字段：
  scapture
  false
  senabled
  true
  sredraw
  true
  svisible
  true
  sdescriptors
  xworker.swt.Widgets/@Label
  sth_createIndex
  false
  sid
  whereLabel
  @/@sortLabel
  sname
  sortLabel
  sBORDER
  false
  stype
  HORIZONTAL
  sshadow
  SHADOW_OUT
  salignment
  LEFT
  stext
  排序字段：
  scapture
  false
  senabled
  true
  sredraw
  true
  svisible
  true
  sdescriptors
  xworker.swt.Widgets/@Label
  sth_createIndex
  false
  sid
  sortLabel
  @/@selectTable
  sname
  selectTable
  sselectStyle
  MULTI
  sV_SCROLL
  true
  sH_SCROLL
  true
  sCHECK
  true
  sFULL_SELECTION
  true
  sHIDE_SELECTION
  true
  sBORDER
  true
  slineVisible
  true
  smultipleColumns
  true
  sheaderVisible
  true
  ssortIndicator
  true
  smoveableColumns
  true
  sheadImages
  false
  ssubImages
  false
  sVIRTUAL
  false
  scapture
  false
  senabled
  true
  sredraw
  true
  svisible
  true
  sdescriptors
  xworker.swt.Widgets/@Table
  sth_createIndex
  false
  sid
  selectTable
    @/@selectTable/@tableGridData
    sname
    tableGridData
    sstyle
    FILL_BOTH
    shorizontalIndent
    0
    swidth
    -1
    sheight
    -1
    shorizontalAlignment
    BEGINNING
    sverticalAlignment
    CENTER
    shorizontalSpan
    1
    sverticalSpan
    1
    sgrabExcessHorizontalSpace
    false
    sgrabExcessVerticalSpace
    false
    sdescriptors
    xworker.swt.layout.LayoutDatas/@GridData
    sth_createIndex
    false
    sid
    tableGridData
    @/@selectTable/@DataStore
    sname
    DataStore
    sattachToParent
    true
    sloadBackground
    true
    sautoLoad
    false
    sautoSave
    false
    spaging
    extend
    spageSize
    50
    sstoreSortField
    _extend
    sstoreSortDir
    ASC
    seditable
    extend
    seditmethod
    extend
    sdescriptors
    xworker.swt.widgets.Table/@DataStore
    sth_createIndex
    false
    sid
    DataStore
      @/@selectTable/@DataStore/@dataObjects
      sname
      dataObjects
      sdescriptors
      xworker.swt.app.view.swt.data.DataStore/@DataObjects
      sth_createIndex
      false
      sid
      dataObjects
        @/@selectTable/@DataStore/@dataObjects/@AbstractDataObject
        sname
        AbstractDataObject
        seditCols
        2
        spaging
        false
        sreadUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectStore/@read
        screateUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectStore/@create
        supdateUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectStore/@update
        sdestroyUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectStore/@destroy
        LstoreAutoDestroy
        false
        sstoreAutoLoad
        false
        LstoreAutoSave
        true
        LstoreBatch
        true
        LstorePruneModifiedRecords
        false
        LstoreRemoteSort
        false
        LstoreRestful
        false
        sstoreRoot
        'rows'
        sstoreSuccessProperty
        'success'
        sstoreTotalProperty
        'totalCount'
        sstoreMessageProperty
        'msg'
        sgridEditable
        false
        sformReadUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectForm/@read
        sformCreateUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectForm/@create
        sformUpdateUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectForm/@update
        sformDestroyUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectForm/@delete
        spaging_afterPageText
        页 共
        spaging_beforePageText
        第
        Lpaging_displayInfo
        false
        spaging_displayMsg
        第{0}-第{1}条，共{2}条
        spaging_emptyMsg
        没有数据
        spaging_firstText
        首页
        spaging_lastText
        最后一页
        spaging_nextText
        下一页
        Lpaging_prependButtons
        false
        spaging_prevText
        上一页
        spaging_refreshText
        刷新
        sgridColumnLocking
        false
        sgridLockText
        '锁定'
        sgridUnlockText
        '解锁'
        scolumnGroup
        false
        sgridCheckable
        false
        sgridRowNumber
        false
        sgridGrouping
        false
        sgridGroupTextTpl
        '{text} ({[values.rs.length]} 条)'
        sgridRowExpander
        false
        sautoGenerateId
        false
        sidGenerateType
        action
        sidAction
        generateId
        sstoreSortDir
        ASC
        sautoInit
        false
        sautoInitAction
        autoInit
        scacheRelation
        false
        scacheRelationMaxSize
        1000
        scacheRelationReadnone
        false
        sdescriptors
        xworker.dataObject.DataObjects/@AbstractDataObject
        sth_createIndex
        false
        sid
        AbstractDataObject
          @/@selectTable/@DataStore/@dataObjects/@AbstractDataObject/@name
          sname
          name
          slabel
          名字
          stype
          string
          soptional
          true
          skey
          false
          sdataField
          true
          sviewField
          true
          sreadField
          true
          screateEditor
          true
          seditEditor
          true
          sviewEditor
          true
          sgridEditor
          true
          squeryEditor
          true
          sreadOnly
          false
          seditable
          true
          sdisabled
          false
          sshowLabel
          true
          slabelAlign
          right
          slabelVAlign
          baseline
          svalidateAllowBlank
          true
          LvalidateOnBlur
          true
          LallowDecimals
          true
          LallowNegative
          true
          sshowInTable
          true
          sgridWidth
          90
          sgridFixed
          false
          sgridHidden
          false
          sgridHideable
          true
          sgridSortable
          false
          scolumnLocked
          false
          sgridGroupable
          true
          sgridMenuDisabled
          false
          sgridResizable
          true
          sdescriptors
          xworker.dataObject.AbstractDataObject/@attribute
          sth_createIndex
          false
          sid
          name
          @/@selectTable/@DataStore/@dataObjects/@AbstractDataObject/@label
          sname
          label
          slabel
          标签
          stype
          string
          soptional
          true
          skey
          false
          sdataField
          true
          sviewField
          true
          sreadField
          true
          screateEditor
          true
          seditEditor
          true
          sviewEditor
          true
          sgridEditor
          true
          squeryEditor
          true
          sreadOnly
          false
          seditable
          true
          sdisabled
          false
          sshowLabel
          true
          slabelAlign
          right
          slabelVAlign
          baseline
          svalidateAllowBlank
          true
          LvalidateOnBlur
          true
          LallowDecimals
          true
          LallowNegative
          true
          sshowInTable
          true
          sgridWidth
          90
          sgridFixed
          false
          sgridHidden
          false
          sgridHideable
          true
          sgridSortable
          false
          scolumnLocked
          false
          sgridGroupable
          true
          sgridMenuDisabled
          false
          sgridResizable
          true
          sdescriptors
          xworker.dataObject.AbstractDataObject/@attribute
          sth_createIndex
          false
          sid
          label
  @/@whereTable
  sname
  whereTable
  sselectStyle
  MULTI
  sV_SCROLL
  true
  sH_SCROLL
  true
  sCHECK
  true
  sFULL_SELECTION
  true
  sHIDE_SELECTION
  true
  sBORDER
  true
  slineVisible
  true
  smultipleColumns
  true
  sheaderVisible
  true
  ssortIndicator
  true
  smoveableColumns
  true
  sheadImages
  false
  ssubImages
  false
  sVIRTUAL
  false
  scapture
  false
  senabled
  true
  sredraw
  true
  svisible
  true
  sdescriptors
  xworker.swt.Widgets/@Table
  sth_createIndex
  false
  sid
  whereTable
    @/@whereTable/@tableGridData
    sname
    tableGridData
    sstyle
    FILL_BOTH
    shorizontalIndent
    0
    swidth
    -1
    sheight
    -1
    shorizontalAlignment
    BEGINNING
    sverticalAlignment
    CENTER
    shorizontalSpan
    1
    sverticalSpan
    1
    sgrabExcessHorizontalSpace
    false
    sgrabExcessVerticalSpace
    false
    sdescriptors
    xworker.swt.layout.LayoutDatas/@GridData
    sth_createIndex
    false
    sid
    tableGridData
    @/@whereTable/@DataStore
    sname
    DataStore
    sattachToParent
    true
    sloadBackground
    true
    sautoLoad
    false
    sautoSave
    false
    spaging
    extend
    spageSize
    50
    sstoreSortField
    _extend
    sstoreSortDir
    ASC
    seditable
    extend
    seditmethod
    extend
    sdescriptors
    xworker.swt.widgets.Table/@DataStore
    sth_createIndex
    false
    sid
    DataStore
      @/@whereTable/@DataStore/@dataObjects
      sname
      dataObjects
      sdescriptors
      xworker.swt.app.view.swt.data.DataStore/@DataObjects
      sth_createIndex
      false
      sid
      dataObjects
        @/@whereTable/@DataStore/@dataObjects/@AbstractDataObject
        sname
        AbstractDataObject
        seditCols
        2
        spaging
        false
        sreadUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectStore/@read
        screateUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectStore/@create
        supdateUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectStore/@update
        sdestroyUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectStore/@destroy
        LstoreAutoDestroy
        false
        sstoreAutoLoad
        false
        LstoreAutoSave
        true
        LstoreBatch
        true
        LstorePruneModifiedRecords
        false
        LstoreRemoteSort
        false
        LstoreRestful
        false
        sstoreRoot
        'rows'
        sstoreSuccessProperty
        'success'
        sstoreTotalProperty
        'totalCount'
        sstoreMessageProperty
        'msg'
        sgridEditable
        false
        sformReadUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectForm/@read
        sformCreateUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectForm/@create
        sformUpdateUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectForm/@update
        sformDestroyUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectForm/@delete
        spaging_afterPageText
        页 共
        spaging_beforePageText
        第
        Lpaging_displayInfo
        false
        spaging_displayMsg
        第{0}-第{1}条，共{2}条
        spaging_emptyMsg
        没有数据
        spaging_firstText
        首页
        spaging_lastText
        最后一页
        spaging_nextText
        下一页
        Lpaging_prependButtons
        false
        spaging_prevText
        上一页
        spaging_refreshText
        刷新
        sgridColumnLocking
        false
        sgridLockText
        '锁定'
        sgridUnlockText
        '解锁'
        scolumnGroup
        false
        sgridCheckable
        false
        sgridRowNumber
        false
        sgridGrouping
        false
        sgridGroupTextTpl
        '{text} ({[values.rs.length]} 条)'
        sgridRowExpander
        false
        sautoGenerateId
        false
        sidGenerateType
        action
        sidAction
        generateId
        sstoreSortDir
        ASC
        sautoInit
        false
        sautoInitAction
        autoInit
        scacheRelation
        false
        scacheRelationMaxSize
        1000
        scacheRelationReadnone
        false
        sdescriptors
        xworker.dataObject.DataObjects/@AbstractDataObject
        sth_createIndex
        false
        sid
        AbstractDataObject
          @/@whereTable/@DataStore/@dataObjects/@AbstractDataObject/@name
          sname
          name
          slabel
          名字
          stype
          string
          soptional
          true
          skey
          false
          sdataField
          true
          sviewField
          true
          sreadField
          true
          screateEditor
          true
          seditEditor
          true
          sviewEditor
          true
          sgridEditor
          true
          squeryEditor
          true
          sreadOnly
          false
          seditable
          true
          sdisabled
          false
          sshowLabel
          true
          slabelAlign
          right
          slabelVAlign
          baseline
          svalidateAllowBlank
          true
          LvalidateOnBlur
          true
          LallowDecimals
          true
          LallowNegative
          true
          sshowInTable
          true
          sgridWidth
          90
          sgridFixed
          false
          sgridHidden
          false
          sgridHideable
          true
          sgridSortable
          false
          scolumnLocked
          false
          sgridGroupable
          true
          sgridMenuDisabled
          false
          sgridResizable
          true
          sdescriptors
          xworker.dataObject.AbstractDataObject/@attribute
          sth_createIndex
          false
          sid
          name
          @/@whereTable/@DataStore/@dataObjects/@AbstractDataObject/@label
          sname
          label
          slabel
          标签
          stype
          string
          soptional
          true
          skey
          false
          sdataField
          true
          sviewField
          true
          sreadField
          true
          screateEditor
          true
          seditEditor
          true
          sviewEditor
          true
          sgridEditor
          true
          squeryEditor
          true
          sreadOnly
          false
          seditable
          true
          sdisabled
          false
          sshowLabel
          true
          slabelAlign
          right
          slabelVAlign
          baseline
          svalidateAllowBlank
          true
          LvalidateOnBlur
          true
          LallowDecimals
          true
          LallowNegative
          true
          sshowInTable
          true
          sgridWidth
          90
          sgridFixed
          false
          sgridHidden
          false
          sgridHideable
          true
          sgridSortable
          false
          scolumnLocked
          false
          sgridGroupable
          true
          sgridMenuDisabled
          false
          sgridResizable
          true
          sdescriptors
          xworker.dataObject.AbstractDataObject/@attribute
          sth_createIndex
          false
          sid
          label
  @/@sortTable
  sname
  sortTable
  sselectStyle
  MULTI
  sV_SCROLL
  true
  sH_SCROLL
  true
  sCHECK
  true
  sFULL_SELECTION
  true
  sHIDE_SELECTION
  true
  sBORDER
  true
  slineVisible
  true
  smultipleColumns
  true
  sheaderVisible
  true
  ssortIndicator
  true
  smoveableColumns
  true
  sheadImages
  false
  ssubImages
  false
  sVIRTUAL
  false
  scapture
  false
  senabled
  true
  sredraw
  true
  svisible
  true
  sdescriptors
  xworker.swt.Widgets/@Table
  sth_createIndex
  false
  sid
  sortTable
    @/@sortTable/@tableGridData
    sname
    tableGridData
    sstyle
    FILL_BOTH
    shorizontalIndent
    0
    swidth
    -1
    sheight
    -1
    shorizontalAlignment
    BEGINNING
    sverticalAlignment
    CENTER
    shorizontalSpan
    1
    sverticalSpan
    1
    sgrabExcessHorizontalSpace
    false
    sgrabExcessVerticalSpace
    false
    sdescriptors
    xworker.swt.layout.LayoutDatas/@GridData
    sth_createIndex
    false
    sid
    tableGridData
    @/@sortTable/@DataStore
    sname
    DataStore
    sattachToParent
    true
    sloadBackground
    true
    sautoLoad
    false
    sautoSave
    false
    spaging
    extend
    spageSize
    50
    sstoreSortField
    _extend
    sstoreSortDir
    ASC
    seditable
    extend
    seditmethod
    extend
    sdescriptors
    xworker.swt.widgets.Table/@DataStore
    sth_createIndex
    false
    sid
    DataStore
      @/@sortTable/@DataStore/@dataObjects
      sname
      dataObjects
      sdescriptors
      xworker.swt.app.view.swt.data.DataStore/@DataObjects
      sth_createIndex
      false
      sid
      dataObjects
        @/@sortTable/@DataStore/@dataObjects/@AbstractDataObject
        sname
        AbstractDataObject
        seditCols
        2
        spaging
        false
        sreadUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectStore/@read
        screateUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectStore/@create
        supdateUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectStore/@update
        sdestroyUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectStore/@destroy
        LstoreAutoDestroy
        false
        sstoreAutoLoad
        false
        LstoreAutoSave
        true
        LstoreBatch
        true
        LstorePruneModifiedRecords
        false
        LstoreRemoteSort
        false
        LstoreRestful
        false
        sstoreRoot
        'rows'
        sstoreSuccessProperty
        'success'
        sstoreTotalProperty
        'totalCount'
        sstoreMessageProperty
        'msg'
        sgridEditable
        false
        sformReadUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectForm/@read
        sformCreateUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectForm/@create
        sformUpdateUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectForm/@update
        sformDestroyUrl
        do?sc=xworker.web.app.view.extjs.server.DataObjectForm/@delete
        spaging_afterPageText
        页 共
        spaging_beforePageText
        第
        Lpaging_displayInfo
        false
        spaging_displayMsg
        第{0}-第{1}条，共{2}条
        spaging_emptyMsg
        没有数据
        spaging_firstText
        首页
        spaging_lastText
        最后一页
        spaging_nextText
        下一页
        Lpaging_prependButtons
        false
        spaging_prevText
        上一页
        spaging_refreshText
        刷新
        sgridColumnLocking
        false
        sgridLockText
        '锁定'
        sgridUnlockText
        '解锁'
        scolumnGroup
        false
        sgridCheckable
        false
        sgridRowNumber
        false
        sgridGrouping
        false
        sgridGroupTextTpl
        '{text} ({[values.rs.length]} 条)'
        sgridRowExpander
        false
        sautoGenerateId
        false
        sidGenerateType
        action
        sidAction
        generateId
        sstoreSortDir
        ASC
        sautoInit
        false
        sautoInitAction
        autoInit
        scacheRelation
        false
        scacheRelationMaxSize
        1000
        scacheRelationReadnone
        false
        sdescriptors
        xworker.dataObject.DataObjects/@AbstractDataObject
        sth_createIndex
        false
        sid
        AbstractDataObject
          @/@sortTable/@DataStore/@dataObjects/@AbstractDataObject/@name
          sname
          name
          slabel
          名字
          stype
          string
          soptional
          true
          skey
          false
          sdataField
          true
          sviewField
          true
          sreadField
          true
          screateEditor
          true
          seditEditor
          true
          sviewEditor
          true
          sgridEditor
          true
          squeryEditor
          true
          sreadOnly
          false
          seditable
          true
          sdisabled
          false
          sshowLabel
          true
          slabelAlign
          right
          slabelVAlign
          baseline
          svalidateAllowBlank
          true
          LvalidateOnBlur
          true
          LallowDecimals
          true
          LallowNegative
          true
          sshowInTable
          true
          sgridWidth
          90
          sgridFixed
          false
          sgridHidden
          false
          sgridHideable
          true
          sgridSortable
          false
          scolumnLocked
          false
          sgridGroupable
          true
          sgridMenuDisabled
          false
          sgridResizable
          true
          sdescriptors
          xworker.dataObject.AbstractDataObject/@attribute
          sth_createIndex
          false
          sid
          name
          @/@sortTable/@DataStore/@dataObjects/@AbstractDataObject/@label
          sname
          label
          slabel
          标签
          stype
          string
          soptional
          true
          skey
          false
          sdataField
          true
          sviewField
          true
          sreadField
          true
          screateEditor
          true
          seditEditor
          true
          sviewEditor
          true
          sgridEditor
          true
          squeryEditor
          true
          sreadOnly
          false
          seditable
          true
          sdisabled
          false
          sshowLabel
          true
          slabelAlign
          right
          slabelVAlign
          baseline
          svalidateAllowBlank
          true
          LvalidateOnBlur
          true
          LallowDecimals
          true
          LallowNegative
          true
          sshowInTable
          true
          sgridWidth
          90
          sgridFixed
          false
          sgridHidden
          false
          sgridHideable
          true
          sgridSortable
          false
          scolumnLocked
          false
          sgridGroupable
          true
          sgridMenuDisabled
          false
          sgridResizable
          true
          sdescriptors
          xworker.dataObject.AbstractDataObject/@attribute
          sth_createIndex
          false
          sid
          label
  @/@codeText
  sname
  codeText
  sstyle
  MULTI
  sFULL_SELECTION
  false
  sREAD_ONLY
  false
  sWRAP
  false
  sH_SCROLL
  true
  sV_SCROLL
  true
  sBORDER
  true
  salign
  LEFT
  sNO_BACKGROUND
  false
  sNO_FOCUS
  false
  sNO_MERGE_PAINTS
  false
  sNO_REDRAW_RESIZE
  false
  sNO_RADIO_GROUP
  false
  sEMBEDDED
  false
  sDOUBLE_BUFFERED
  false
  scapture
  false
  senabled
  true
  sredraw
  true
  svisible
  true
  sdescriptors
  xworker.swt.Widgets/@StyledText
  sth_createIndex
  false
  sid
  codeText
    @/@codeText/@codeTextGridData
    sname
    codeTextGridData
    sstyle
    FILL_HORIZONTAL
    shorizontalIndent
    0
    swidth
    -1
    sheight
    150
    shorizontalAlignment
    BEGINNING
    sverticalAlignment
    CENTER
    shorizontalSpan
    3
    sverticalSpan
    1
    sgrabExcessHorizontalSpace
    false
    sgrabExcessVerticalSpace
    false
    sdescriptors
    xworker.swt.layout.LayoutDatas/@GridData
    sth_createIndex
    false
    sid
    codeTextGridData
  @/@8584
  sname
  buttonComposite
  sBORDER
  false
  sH_SCROLL
  false
  sV_SCROLL
  false
  sNO_BACKGROUND
  false
  sNO_FOCUS
  false
  sNO_MERGE_PAINTS
  false
  sNO_REDRAW_RESIZE
  false
  sNO_RADIO_GROUP
  false
  sEMBEDDED
  false
  sDOUBLE_BUFFERED
  false
  scapture
  false
  senabled
  true
  sredraw
  true
  svisible
  true
  sdescriptors
  xworker.swt.Widgets/@Composite
  sid
  8584
    @/@8584/@8585
    sname
    buttonCompositeGridData
    sstyle
    FILL_HORIZONTAL
    shorizontalIndent
    0
    swidth
    -1
    sheight
    -1
    shorizontalAlignment
    END
    sverticalAlignment
    CENTER
    shorizontalSpan
    3
    sverticalSpan
    1
    sgrabExcessHorizontalSpace
    false
    sgrabExcessVerticalSpace
    false
    sdescriptors
    xworker.swt.layout.LayoutDatas/@GridData
    sid
    8585
    @/@8584/@8586
    sname
    buttonCompositeRowLayout
    sfill
    false
    sjustify
    false
    smarginWidth
    0
    smarginHeight
    0
    smarginLeft
    3
    smarginTop
    3
    smarginRight
    3
    smarginBottom
    3
    spack
    true
    sspacing
    3
    stype
    SWT.HORIZONTAL
    swrap
    true
    sdescriptors
    xworker.swt.Layouts/@RowLayout
    sid
    8586
    @/@8584/@8587
    sname
    generateButton
    stext
    生成查询SQL
    stype
    SWT.PUSH
    sflat
    false
    sborder
    false
    sselected
    false
    scapture
    false
    senabled
    true
    sredraw
    true
    svisible
    true
    sdescriptors
    xworker.swt.Widgets/@Button
    sth_createIndex
    false
    sid
    8587
      @/@8584/@8587/@8588
      sname
      RowData
      sexclude
      false
      swidth
      80
      sheight
      -1
      sdescriptors
      xworker.swt.layout.LayoutDatas/@RowData
      sth_createIndex
      false
      sid
      8588
      @/@8584/@8587/@8589
      sname
      Listeners
      sdescriptors
      xworker.swt.widgets.Widget/@Listeners
      sth_createIndex
      false
      sid
      8589
        @/@8584/@8587/@8589/@8590
        sname
        generateButtonSelection
        stype
        Selection
        sdescriptors
        xworker.swt.events.Listeners/@listeners/@Listener
        sth_createIndex
        false
        sid
        8590
          @/@8584/@8587/@8589/@8590/@GroovyAction
          sname
          GroovyAction
          sisSynchronized
          false
          sthrowException
          true
          suseOtherAction
          false
          svarScope
          Local
          sdisableGlobalContext
          false
          Scode
#$@text#$@
String sql = "select ";

def items = getItems(selectTable);
for(int i=0; i<items.size(); i++){
    if(i != 0 && i != items.size() - 1){
        sql = sql + ",";
    }
    
    sql = sql + items.get(i)[0];
}

sql = sql + " from " + thing.getString("tableName");

//where
items = getItems(whereTable);
if(items.size() > 0){
    sql = sql + " where ";
    for(int i=0; i<items.size(); i++){
        if(i > 0){
            sql = sql + " and " + items.get(i)[0] + "=?";
        }else{
            sql = sql + items.get(i)[0] + "=?";
        }
    }
}

//sort
items = getItems(sortTable);
if(items.size() > 0){
    sql = sql + " order by ";
    for(int i=0; i<items.size(); i++){
        if(i > 0){
            sql = sql + ",";
        }
        
        sql = sql + items.get(i)[0];
    }
}

codeText.setText(sql);

def getItems(table){
    def items = [];
    for(item in table.getItems()){
        if(item.getChecked()){
            items.add(item.getData());
        }
    }
    
    return items;
}
#$@text#$@
          sinterpretationType
          Action
          sdescriptors
          xworker.lang.actions.Actions/@GroovyAction
          sth_createIndex
          false
          sid
          GroovyAction
    @/@8584/@85871
    sname
    generateSelectJavaButton
    stext
    生成查询Java
    stype
    SWT.PUSH
    sflat
    false
    sborder
    false
    sselected
    false
    scapture
    false
    senabled
    true
    sredraw
    true
    svisible
    true
    sdescriptors
    xworker.swt.Widgets/@Button
    sth_createIndex
    false
    sid
    85871
      @/@8584/@85871/@8588
      sname
      RowData
      sexclude
      false
      swidth
      80
      sheight
      -1
      sdescriptors
      xworker.swt.layout.LayoutDatas/@RowData
      sth_createIndex
      false
      sid
      8588
      @/@8584/@85871/@8589
      sname
      Listeners
      sdescriptors
      xworker.swt.widgets.Widget/@Listeners
      sth_createIndex
      false
      sid
      8589
        @/@8584/@85871/@8589/@8590
        sname
        generateButtonSelection
        stype
        Selection
        sdescriptors
        xworker.swt.events.Listeners/@listeners/@Listener
        sth_createIndex
        false
        sid
        8590
          @/@8584/@85871/@8589/@8590/@GroovyAction
          sname
          GroovyAction
          sisSynchronized
          false
          sthrowException
          true
          suseOtherAction
          false
          svarScope
          Local
          sdisableGlobalContext
          false
          Scode
#$@text#$@
String sql = "select ";

def items = getItems(selectTable);
for(int i=0; i<items.size(); i++){
    if(i != 0){
        sql = sql + ",";
    }
    
    sql = sql + items.get(i)[2];
}

sql = sql + " from " + thing.getString("tableName");

//where
items = getItems(whereTable);
if(items.size() > 0){
    sql = sql + " where ";
    for(int i=0; i<items.size(); i++){
        if(i > 0){
            sql = sql + " and " + items.get(i)[2] + "=?";
        }else{
            sql = sql + items.get(i)[2] + "=?";
        }
    }
}

//sort
items = getItems(sortTable);
if(items.size() > 0){
    sql = sql + " order by ";
    for(int i=0; i<items.size(); i++){
        if(i > 0){
            sql = sql + ",";
        }
        
        sql = sql + items.get(i)[2];
    }
}

String code = """
PreparedStatement pst = null;
ResultSet rs = null;
String sql = "${sql}";

try {
    pst = con.prepareStatement(sql);
""";

def attributes = thing.get("attribute@");
items = getItems(whereTable);
for(int i=0;i<items.size(); i++){
    def attr = getAttribute(items.get(i)[0], attributes);
    switch(attr.type){
        case "string":
            code = code + "\n    pst.setString(" + (i+1) + ", " + items.get(i)[0] + ");";
            break;
        case "byte":
        case "short":
        case "int":
            code = code + "\n    pst.setInt(" + (i+1) + ", " + items.get(i)[0] + ");";
            break;
        case "long":
            code = code + "\n    pst.setLong(" + (i+1) + ", " +  items.get(i)[0] + ");";
            break;
        case "float":
            code = code + "\n    pst.setFloat(" + (i+1) + ", " +  items.get(i)[0] + ");";
            break;
        case "double":
            code = code + "\n    pst.setDouble(" + (i+1) + ", " +  items.get(i)[0] + ");";
            break;
        case "boolean":
            code = code + "\n    pst.setBoolean(" + (i+1) + ", " +  items.get(i)[0] + ");";
            break;
        case "date":
            code = code + "\n    pst.setTimestamp(" + (i+1) + ", " +  items.get(i)[0] + ");";
            break;
        case "datetime":
            code = code + "\n    pst.setTimestamp(" + (i+1) + ", " +  items.get(i)[0] + ");";
            break;
        case "time":
            code = code + "\n    pst.setTimestamp(" + (i+1) + ", " +  items.get(i)[0] + ");";
            break;        
        
    }   
}

code = code + """    

    rs = pst.executeQuery();
    while(rs.next()){
        ${thing.getMetadata().getName()} data = new ${thing.getMetadata().getName()}();
""";

items = getItems(selectTable);
for(int i=0;i<items.size(); i++){
    def attr = getAttribute(items.get(i)[0], attributes);
    switch(attr.type){
        case "string":
            code = code + "\n        data.${items.get(i)[0]} = rs.getString(\"${items.get(i)[2]}\");";
            break;
        case "byte":
            code = code + "\n        data.${items.get(i)[0]} = rs.getByte(\"${items.get(i)[2]}\");";
            break;
        case "short":
            code = code + "\n        data.${items.get(i)[0]} = rs.getShort(\"${items.get(i)[2]}\");";
            break;
        case "int":
            code = code + "\n        data.${items.get(i)[0]} = rs.getInt(\"${items.get(i)[2]}\");";
            break;
        case "long":
            code = code + "\n        data.${items.get(i)[0]} = rs.getLong(\"${items.get(i)[2]}\");";
            break;
        case "float":
            code = code + "\n        data.${items.get(i)[0]} = rs.getFloat(\"${items.get(i)[2]}\");";
            break;
        case "double":
            code = code + "\n        data.${items.get(i)[0]} = rs.getDouble(\"${items.get(i)[2]}\");";
            break;
        case "boolean":
            code = code + "\n        data.${items.get(i)[0]} = rs.getBoolean(\"${items.get(i)[2]}\");";
            break;
        case "date":
            code = code + "\n        data.${items.get(i)[0]} = rs.getTimestamp(\"${items.get(i)[2]}\");";
            break;
        case "datetime":
            code = code + "\n        data.${items.get(i)[0]} = rs.getTimestamp(\"${items.get(i)[2]}\");";
            break;
        case "time":
            code = code + "\n        data.${items.get(i)[0]} = rs.getTimestamp(\"${items.get(i)[2]}\");";
            break;        
        
    }   
}

code = code + """    
    }
}finally{
    if(rs != null){
        rs.close();
    }
    if(pst != null){
        pst.close();
    }
    if(con != null){
        con.close();
    }
}
""";
codeText.setText(code);

def getAttribute(name, attributes){
    for(attr in attributes){
        if(name == attr.metadata.name){
            return attr;
        }
    }
}

def getItems(table){
    def items = [];
    for(item in table.getItems()){
        if(item.getChecked()){
            items.add(item.getData());
        }
    }
    
    return items;
}
#$@text#$@
          sinterpretationType
          Action
          sdescriptors
          xworker.lang.actions.Actions/@GroovyAction
          sth_createIndex
          false
          sid
          GroovyAction
    @/@8584/@858711
    sname
    generateUpdateButton
    stext
    生成更新Java
    stype
    SWT.PUSH
    sflat
    false
    sborder
    false
    sselected
    false
    scapture
    false
    senabled
    true
    sredraw
    true
    svisible
    true
    sdescriptors
    xworker.swt.Widgets/@Button
    sth_createIndex
    false
    sid
    858711
      @/@8584/@858711/@8588
      sname
      RowData
      sexclude
      false
      swidth
      80
      sheight
      -1
      sdescriptors
      xworker.swt.layout.LayoutDatas/@RowData
      sth_createIndex
      false
      sid
      8588
      @/@8584/@858711/@8589
      sname
      Listeners
      sdescriptors
      xworker.swt.widgets.Widget/@Listeners
      sth_createIndex
      false
      sid
      8589
        @/@8584/@858711/@8589/@8590
        sname
        generateButtonSelection
        stype
        Selection
        sdescriptors
        xworker.swt.events.Listeners/@listeners/@Listener
        sth_createIndex
        false
        sid
        8590
          @/@8584/@858711/@8589/@8590/@GroovyAction
          sname
          GroovyAction
          sisSynchronized
          false
          sthrowException
          true
          suseOtherAction
          false
          svarScope
          Local
          sdisableGlobalContext
          false
          Scode
#$@text#$@
String sql = "update " + thing.getString("tableName") + " set ";

def sitems = getItems(selectTable);
for(int i=0; i<sitems.size(); i++){
    if(i != 0){
        sql = sql + ",";
    }
    
    sql = sql + sitems.get(i)[2] + "=?";
}

//where
def items = getItems(whereTable);
if(items.size() > 0){
    sql = sql + " where ";
    for(int i=0; i<items.size(); i++){
        if(i > 0){
            sql = sql + " and " + items.get(i)[2] + "=?";
        }else{
            sql = sql + items.get(i)[2] + "=?";
        }
    }
}

String code = """
PreparedStatement pst = null;
ResultSet rs = null;
String sql = "${sql}";

try {
    pst = con.prepareStatement(sql);
""";

def attributes = thing.get("attribute@");
for(int i=0;i<sitems.size(); i++){
    def item = sitems.get(i);
    def attr = getAttribute(item[0], attributes);
    switch(attr.type){
        case "string":
            code = code + "\n    pst.setString(" + (i+1) + ", " + sitems.get(i)[0] + ");";
            break;
        case "byte":
        case "short":
        case "int":
            code = code + "\n    pst.setInt(" + (i+1) + ", " + sitems.get(i)[0] + ");";
            break;
        case "long":
            code = code + "\n    pst.setLong(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;
        case "float":
            code = code + "\n    pst.setFloat(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;
        case "double":
            code = code + "\n    pst.setDouble(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;
        case "boolean":
            code = code + "\n    pst.setBoolean(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;
        case "date":
            code = code + "\n    pst.setTimestamp(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;
        case "datetime":
            code = code + "\n    pst.setTimestamp(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;
        case "time":
            code = code + "\n    pst.setTimestamp(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;        
        
    }   
}
for(int i=0;i<items.size(); i++){
    def attr = getAttribute(items.get(i)[0], attributes);
    switch(attr.type){
        case "string":
            code = code + "\n    pst.setString(" + (i+1+sitems.size()) + ", " + items.get(i)[0] + ");";
            break;
        case "byte":
        case "short":
        case "int":
            code = code + "\n    pst.setInt(" + (i+1+sitems.size()) + ", " + items.get(i)[0] + ");";
            break;
        case "long":
            code = code + "\n    pst.setLong(" + (i+1+sitems.size()) + ", " +  items.get(i)[0] + ");";
            break;
        case "float":
            code = code + "\n    pst.setFloat(" + (i+1+sitems.size()) + ", " +  items.get(i)[0] + ");";
            break;
        case "double":
            code = code + "\n    pst.setDouble(" + (i+1+sitems.size()) + ", " +  items.get(i)[0] + ");";
            break;
        case "boolean":
            code = code + "\n    pst.setBoolean(" + (i+1+sitems.size()) + ", " +  items.get(i)[0] + ");";
            break;
        case "date":
            code = code + "\n    pst.setTimestamp(" + (i+1+sitems.size()) + ", " +  items.get(i)[0] + ");";
            break;
        case "datetime":
            code = code + "\n    pst.setTimestamp(" + (i+1+sitems.size()) + ", " +  items.get(i)[0] + ");";
            break;
        case "time":
            code = code + "\n    pst.setTimestamp(" + (i+1+sitems.size()) + ", " +  items.get(i)[0] + ");";
            break;        
        
    }   
}

code = code + """    

    pst.executeUpdate();
}finally{
    if(pst != null){
        pst.close();
    }
    if(con != null){
        con.close();
    }
}
""";
codeText.setText(code);

def getAttribute(name, attributes){
    for(attr in attributes){
        if(name == attr.metadata.name){
            return attr;
        }
    }
}

def getItems(table){
    def items = [];
    for(item in table.getItems()){
        if(item.getChecked()){
            items.add(item.getData());
        }
    }
    
    return items;
}
#$@text#$@
          sinterpretationType
          Action
          sdescriptors
          xworker.lang.actions.Actions/@GroovyAction
          sth_createIndex
          false
          sid
          GroovyAction
    @/@8584/@858712
    sname
    generateInsertButton
    stext
    生成插入Java
    stype
    SWT.PUSH
    sflat
    false
    sborder
    false
    sselected
    false
    scapture
    false
    senabled
    true
    sredraw
    true
    svisible
    true
    sdescriptors
    xworker.swt.Widgets/@Button
    sth_createIndex
    false
    sid
    858712
      @/@8584/@858712/@8588
      sname
      RowData
      sexclude
      false
      swidth
      80
      sheight
      -1
      sdescriptors
      xworker.swt.layout.LayoutDatas/@RowData
      sth_createIndex
      false
      sid
      8588
      @/@8584/@858712/@8589
      sname
      Listeners
      sdescriptors
      xworker.swt.widgets.Widget/@Listeners
      sth_createIndex
      false
      sid
      8589
        @/@8584/@858712/@8589/@8590
        sname
        generateButtonSelection
        stype
        Selection
        sdescriptors
        xworker.swt.events.Listeners/@listeners/@Listener
        sth_createIndex
        false
        sid
        8590
          @/@8584/@858712/@8589/@8590/@GroovyAction
          sname
          GroovyAction
          sisSynchronized
          false
          sthrowException
          true
          suseOtherAction
          false
          svarScope
          Local
          sdisableGlobalContext
          false
          Scode
#$@text#$@
String sql = "insert into " + thing.getString("tableName") + "(";

def sitems = getItems(selectTable);
for(int i=0; i<sitems.size(); i++){
    if(i != 0 && i != sitems.size() - 1){
        sql = sql + ",";
    }
    
    sql = sql + sitems.get(i)[2];
}

sql = sql + ") values(";

for(int i=0; i<sitems.size(); i++){
    if(i != 0){
        sql = sql + ",";
    }
    
    sql = sql + "?";
}
sql = sql + ")";

String code = """
PreparedStatement pst = null;
String sql = "${sql}";

try {
    pst = con.prepareStatement(sql);
""";

def attributes = thing.get("attribute@");
for(int i=0;i<sitems.size(); i++){
    def item = sitems.get(i);
    def attr = getAttribute(item[0], attributes);
    switch(attr.type){
        case "string":
            code = code + "\n    pst.setString(" + (i+1) + ", " + sitems.get(i)[0] + ");";
            break;
        case "byte":
        case "short":
        case "int":
            code = code + "\n    pst.setInt(" + (i+1) + ", " + sitems.get(i)[0] + ");";
            break;
        case "long":
            code = code + "\n    pst.setLong(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;
        case "float":
            code = code + "\n    pst.setFloat(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;
        case "double":
            code = code + "\n    pst.setDouble(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;
        case "boolean":
            code = code + "\n    pst.setBoolean(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;
        case "date":
            code = code + "\n    pst.setTimestamp(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;
        case "datetime":
            code = code + "\n    pst.setTimestamp(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;
        case "time":
            code = code + "\n    pst.setTimestamp(" + (i+1) + ", " +  sitems.get(i)[0] + ");";
            break;        
        
    }   
}

code = code + """    

    pst.executeUpdate();
}finally{
    if(pst != null){
        pst.close();
    }
    if(con != null){
        con.close();
    }
}
""";
codeText.setText(code);

def getAttribute(name, attributes){
    for(attr in attributes){
        if(name == attr.metadata.name){
            return attr;
        }
    }
}

def getItems(table){
    def items = [];
    for(item in table.getItems()){
        if(item.getChecked()){
            items.add(item.getData());
        }
    }
    
    return items;
}
#$@text#$@
          sinterpretationType
          Action
          sdescriptors
          xworker.lang.actions.Actions/@GroovyAction
          sth_createIndex
          false
          sid
          GroovyAction
    @/@8584/@85911
    sname
    selectAllButton
    stext
    拷贝
    stype
    SWT.PUSH
    sflat
    false
    sborder
    false
    sselected
    false
    scapture
    false
    senabled
    true
    sredraw
    true
    svisible
    true
    sdescriptors
    xworker.swt.Widgets/@Button
    sth_createIndex
    false
    sid
    85911
      @/@8584/@85911/@8592
      sname
      RowData
      sexclude
      false
      swidth
      80
      sheight
      -1
      sdescriptors
      xworker.swt.layout.LayoutDatas/@RowData
      sth_createIndex
      false
      sid
      8592
      @/@8584/@85911/@8593
      sname
      Listeners
      sdescriptors
      xworker.swt.widgets.Widget/@Listeners
      sth_createIndex
      false
      sid
      8593
        @/@8584/@85911/@8593/@8594
        sname
        cancelButtonSelection
        stype
        Selection
        sdescriptors
        xworker.swt.events.Listeners/@listeners/@Listener
        sth_createIndex
        false
        sid
        8594
          @/@8584/@85911/@8593/@8594/@GroovyAction
          sname
          GroovyAction
          sisSynchronized
          false
          sthrowException
          true
          suseOtherAction
          false
          svarScope
          Local
          sdisableGlobalContext
          false
          Scode
#$@text#$@
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.dnd.RTFTransfer;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;

Clipboard clipboard = new Clipboard(shell.getDisplay());
String plainText = codeText.getText();
TextTransfer textTransfer = TextTransfer.getInstance();
clipboard.setContents([plainText] as String[], [textTransfer] as Transfer[]);
clipboard.dispose();
#$@text#$@
          sinterpretationType
          Action
          sdescriptors
          xworker.lang.actions.Actions/@GroovyAction
          sth_createIndex
          false
          sid
          GroovyAction
    @/@8584/@8591
    sname
    cancelButton
    stext
    关闭
    stype
    SWT.PUSH
    sflat
    false
    sborder
    false
    sselected
    false
    scapture
    false
    senabled
    true
    sredraw
    true
    svisible
    true
    sdescriptors
    xworker.swt.Widgets/@Button
    sth_createIndex
    false
    sid
    8591
      @/@8584/@8591/@8592
      sname
      RowData
      sexclude
      false
      swidth
      80
      sheight
      -1
      sdescriptors
      xworker.swt.layout.LayoutDatas/@RowData
      sth_createIndex
      false
      sid
      8592
      @/@8584/@8591/@8593
      sname
      Listeners
      sdescriptors
      xworker.swt.widgets.Widget/@Listeners
      sth_createIndex
      false
      sid
      8593
        @/@8584/@8591/@8593/@8594
        sname
        cancelButtonSelection
        stype
        Selection
        sdescriptors
        xworker.swt.events.Listeners/@listeners/@Listener
        sth_createIndex
        false
        sid
        8594
          @/@8584/@8591/@8593/@8594/@ShellNormalActions
          sname
          closeShell
          sshellName
          shell
          smethod
          dispose
          sinterpretationType
          Self
          sattributeTemplate
          false
          svarScope
          Local
          sisSynchronized
          false
          sthrowException
          true
          suseOtherAction
          false
          sdisableGlobalContext
          false
          sdescriptors
          xworker.swt.actions.ShellActions/@ShellNormalActions1
          sth_createIndex
          false
          sid
          ShellNormalActions
  @/@init
  sname
  init
  sisSynchronized
  false
  sthrowException
  true
  suseOtherAction
  false
  svarScope
  Local
  sdisableGlobalContext
  false
  Scode
#$@text#$@
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.TableItem;

for(attr in thing.get("attribute@")){
    def texts = [attr.metadata.name, attr.metadata.label, attr.fieldName] as String[];
    def sitem = new TableItem(selectTable, SWT.NONE);
    sitem.setChecked(true);
    sitem.setText(texts);
    sitem.setData(texts);
    
    def witem = new TableItem(whereTable, SWT.NONE);
    witem.setText(texts);
    witem.setData(texts);
    
    def soitem = new TableItem(sortTable, SWT.NONE);
    soitem.setText(texts);
    soitem.setData(texts);
}
#$@text#$@
  sinterpretationType
  Action
  sdescriptors
  xworker.swt.Widgets/@Code
  sth_createIndex
  false
  sid
  init
