<?xml version="1.0" encoding="UTF-8"?>

<office:document xmlns:office="http://openoffice.org/2000/office" xmlns:style="http://openoffice.org/2000/style" xmlns:text="http://openoffice.org/2000/text" xmlns:table="http://openoffice.org/2000/table" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="http://openoffice.org/2000/meta" xmlns:number="http://openoffice.org/2000/datastyle" xmlns:svg="http://www.w3.org/2000/svg" xmlns:chart="http://openoffice.org/2000/chart" xmlns:dr3d="http://openoffice.org/2000/dr3d" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="http://openoffice.org/2000/form" xmlns:script="http://openoffice.org/2000/script" xmlns:config="http://openoffice.org/2001/config" office:class="text" office:version="1.0">
 <office:meta>
  <meta:generator>StarOffice 7 (Win32)
  </meta:generator><!--645m20(Build:8701),645m22s1(Build:8715)-->
  <dc:title>Database Access</dc:title>
  <meta:creation-date>2001-11-14T07:49:25</meta:creation-date>
  <dc:creator>Jürgen Schmidt</dc:creator>
  <dc:date>2004-01-16T17:41:26</dc:date>
  <meta:printed-by>Diane O&apos;Brien</meta:printed-by>
  <meta:print-date>2002-08-05T18:56:43</meta:print-date>
  <dc:language>en-US</dc:language>
  <meta:editing-cycles>1553</meta:editing-cycles>
  <meta:editing-duration>P13DT1H2M45S</meta:editing-duration>
  <meta:user-defined meta:name="Info 1"/>
  <meta:user-defined meta:name="Info 2"/>
  <meta:user-defined meta:name="Info 3"/>
  <meta:user-defined meta:name="Info 4"/>
  <meta:document-statistic meta:table-count="67" meta:image-count="30" meta:object-count="0" meta:page-count="90" meta:paragraph-count="2871" meta:word-count="26590" meta:character-count="208928"/>
 </office:meta>
 <office:settings>
  <config:config-item-set config:name="view-settings">
   <config:config-item config:name="ViewAreaTop" config:type="int">50426</config:config-item>
   <config:config-item config:name="ViewAreaLeft" config:type="int">0</config:config-item>
   <config:config-item config:name="ViewAreaWidth" config:type="int">30191</config:config-item>
   <config:config-item config:name="ViewAreaHeight" config:type="int">18443</config:config-item>
   <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
   <config:config-item config:name="ShowHeaderWhileBrowsing" config:type="boolean">false</config:config-item>
   <config:config-item config:name="ShowFooterWhileBrowsing" config:type="boolean">false</config:config-item>
   <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
   <config:config-item-map-indexed config:name="Views">
    <config:config-item-map-entry>
     <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
     <config:config-item config:name="ViewLeft" config:type="int">12354</config:config-item>
     <config:config-item config:name="ViewTop" config:type="int">61821</config:config-item>
     <config:config-item config:name="VisibleLeft" config:type="int">0</config:config-item>
     <config:config-item config:name="VisibleTop" config:type="int">50426</config:config-item>
     <config:config-item config:name="VisibleRight" config:type="int">30189</config:config-item>
     <config:config-item config:name="VisibleBottom" config:type="int">68868</config:config-item>
     <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
     <config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item>
     <config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
    </config:config-item-map-entry>
   </config:config-item-map-indexed>
  </config:config-item-set>
  <config:config-item-set config:name="configuration-settings">
   <config:config-item config:name="AddParaTableSpacing" config:type="boolean">false</config:config-item>
   <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
   <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
   <config:config-item-map-indexed config:name="ForbiddenCharacters">
    <config:config-item-map-entry>
     <config:config-item config:name="Language" config:type="string">en</config:config-item>
     <config:config-item config:name="Country" config:type="string">US</config:config-item>
     <config:config-item config:name="Variant" config:type="string"/>
     <config:config-item config:name="BeginLine" config:type="string"/>
     <config:config-item config:name="EndLine" config:type="string"/>
    </config:config-item-map-entry>
    <config:config-item-map-entry>
     <config:config-item config:name="Language" config:type="string">zh</config:config-item>
     <config:config-item config:name="Country" config:type="string">CN</config:config-item>
     <config:config-item config:name="Variant" config:type="string"/>
     <config:config-item config:name="BeginLine" config:type="string">﹀﹂﹄﹏､～￠々‖•·ˇˉ―--′</config:config-item>
     <config:config-item config:name="EndLine" config:type="string">.([{£¥&apos;&quot;‵〈《「『【〔〖（［｛￡￥〝︵︷︹︻︽︿﹁﹃﹙﹛﹝（｛</config:config-item>
    </config:config-item-map-entry>
   </config:config-item-map-indexed>
   <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
   <config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
   <config:config-item config:name="UpdateFromTemplate" config:type="boolean">false</config:config-item>
   <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
   <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
   <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
   <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
   <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
   <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
   <config:config-item config:name="PrinterSetup" config:type="base64Binary"> </config:config-item>
   <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
   <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
   <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
   <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
   <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
   <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
   <config:config-item config:name="AlignTabStopPosition" config:type="boolean">false</config:config-item>
   <config:config-item config:name="CurrentDatabaseDataSource" config:type="string">Adreßbuch</config:config-item>
   <config:config-item config:name="PrinterName" config:type="string">Xerox DocuPrint N24</config:config-item>
   <config:config-item config:name="PrintFaxName" config:type="string"/>
   <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
   <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
   <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">false</config:config-item>
   <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
   <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
   <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">false</config:config-item>
   <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
   <config:config-item config:name="PrinterIndependentLayout" config:type="string">disabled</config:config-item>
   <config:config-item config:name="UseOldNumbering" config:type="boolean">true</config:config-item>
   <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
   <config:config-item config:name="CurrentDatabaseCommand" config:type="string">adressen</config:config-item>
   <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
   <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
  </config:config-item-set>
 </office:settings>
 <office:script/>
 <office:font-decls>
  <style:font-decl style:name="ZapfDingbats" fo:font-family="ZapfDingbats" style:font-family-generic="decorative" style:font-pitch="variable" style:font-charset="x-symbol"/>
  <style:font-decl style:name="Palatino2" fo:font-family="Palatino" style:font-style-name="Bold"/>
  <style:font-decl style:name="Palatino1" fo:font-family="Palatino" style:font-style-name="Italic"/>
  <style:font-decl style:name="Palatino3" fo:font-family="Palatino" style:font-style-name="Regular"/>
  <style:font-decl style:name="Times New Roman" fo:font-family="&apos;Times New Roman&apos;"/>
  <style:font-decl style:name="Courier1" fo:font-family="Courier" style:font-family-generic="modern"/>
  <style:font-decl style:name="Arial1" fo:font-family="Arial" style:font-family-generic="swiss"/>
  <style:font-decl style:name="Courier New" fo:font-family="&apos;Courier New&apos;" style:font-family-generic="modern" style:font-pitch="fixed"/>
  <style:font-decl style:name="Courier New5" fo:font-family="&apos;Courier New&apos;" style:font-style-name="Fett" style:font-family-generic="modern" style:font-pitch="fixed"/>
  <style:font-decl style:name="Courier New1" fo:font-family="&apos;Courier New&apos;" style:font-style-name="Regular" style:font-family-generic="modern" style:font-pitch="fixed"/>
  <style:font-decl style:name="Courier New2" fo:font-family="&apos;Courier New&apos;" style:font-style-name="Standard" style:font-family-generic="modern" style:font-pitch="fixed"/>
  <style:font-decl style:name="Courier" fo:font-family="Courier" style:font-family-generic="roman" style:font-pitch="fixed"/>
  <style:font-decl style:name="Courier New3" fo:font-family="&apos;Courier New&apos;" style:font-family-generic="roman" style:font-pitch="fixed"/>
  <style:font-decl style:name="Arial Unicode MS" fo:font-family="&apos;Arial Unicode MS&apos;" style:font-pitch="variable"/>
  <style:font-decl style:name="HG Mincho Light J" fo:font-family="&apos;HG Mincho Light J&apos;" style:font-pitch="variable"/>
  <style:font-decl style:name="Palatino" fo:font-family="Palatino" style:font-family-generic="roman" style:font-pitch="variable"/>
  <style:font-decl style:name="Palatino Linotype" fo:font-family="&apos;Palatino Linotype&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
  <style:font-decl style:name="Thorndale" fo:font-family="Thorndale" style:font-family-generic="roman" style:font-pitch="variable"/>
  <style:font-decl style:name="Times" fo:font-family="Times" style:font-style-name="Fett Kursiv" style:font-family-generic="roman" style:font-pitch="variable"/>
  <style:font-decl style:name="Times New Roman3" fo:font-family="&apos;Times New Roman&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
  <style:font-decl style:name="Times New Roman2" fo:font-family="&apos;Times New Roman&apos;" style:font-style-name="Regular" style:font-family-generic="roman" style:font-pitch="variable"/>
  <style:font-decl style:name="Times New Roman1" fo:font-family="&apos;Times New Roman&apos;" style:font-style-name="Standard" style:font-family-generic="roman" style:font-pitch="variable"/>
  <style:font-decl style:name="Arial" fo:font-family="Arial" style:font-family-generic="swiss" style:font-pitch="variable"/>
  <style:font-decl style:name="Courier New4" fo:font-family="&apos;Courier New&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
  <style:font-decl style:name="Helvetica2" fo:font-family="Helvetica" style:font-family-generic="swiss" style:font-pitch="variable"/>
  <style:font-decl style:name="Helvetica3" fo:font-family="Helvetica" style:font-style-name="Fett" style:font-family-generic="swiss" style:font-pitch="variable"/>
  <style:font-decl style:name="Helvetica1" fo:font-family="Helvetica" style:font-style-name="Kursiv" style:font-family-generic="swiss" style:font-pitch="variable"/>
  <style:font-decl style:name="Helvetica" fo:font-family="Helvetica" style:font-style-name="Standard" style:font-family-generic="swiss" style:font-pitch="variable"/>
 </office:font-decls>
 <office:styles>
  <draw:gradient draw:name="Gradient 1" draw:style="linear" draw:start-color="#000000" draw:end-color="#ffffff" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 10" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 11" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 12" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 13" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 14" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 15" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 16" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 17" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 18" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 19" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 2" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 20" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 21" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 22" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 23" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 24" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 25" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 26" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 27" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 28" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 29" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 3" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 30" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 31" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 32" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 33" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 34" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 35" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 36" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 37" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 38" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 39" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 4" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 40" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 41" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 42" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 43" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 44" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 45" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 46" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 47" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 48" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 49" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 5" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 50" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 51" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 52" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 53" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 54" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 55" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 56" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 57" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 58" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 59" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 6" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 60" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 61" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 7" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 8" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:gradient draw:name="Hatch 9" draw:style="linear" draw:start-color="#000000" draw:end-color="#000000" draw:start-intensity="100%" draw:end-intensity="100%" draw:angle="0" draw:border="0%"/>
  <draw:fill-image draw:name="Bitmape 1"/>
  <draw:marker draw:name="Pfeil offen" svg:viewBox="0 0 8000 10010" svg:d="m0 10010 3974-10010 4026 9990-8000 20 1497-1003 5000-14-2517-6993-2483 7007z"/>
  <draw:marker draw:name="Raute geschlossen" svg:viewBox="0 0 458 458" svg:d="m229 458c-76-76-152-152-229-229 76-76 152-152 229-229 76 76 152 152 229 229-76 76-152 152-229 229z"/>
  <draw:marker draw:name="Raute offen" svg:viewBox="0 0 10000 10000" svg:d="m0 5000 5000-5000 5000 5000-5000 5000-5000-5000h1500l3500 3500 3500-3500-3500-3500-3500 3500z"/>
  <draw:stroke-dash draw:name="Dash 10" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 11" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 12" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 13" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 14" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 15" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 16" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 17" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 18" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 19" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 2" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 20" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 21" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 22" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 23" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 24" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 25" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 26" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 27" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 28" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 29" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 3" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 30" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 31" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 32" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 33" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 34" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 35" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 36" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 37" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 38" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 39" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 4" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 40" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 41" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 42" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 43" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 44" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 45" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 46" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 47" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 48" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 49" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 5" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 50" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 51" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 52" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 53" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 54" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 55" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 56" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 57" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 58" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 59" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 6" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 60" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 61" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 7" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 8" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <draw:stroke-dash draw:name="Dash 9" draw:style="rect" draw:dots1="1" draw:dots1-length="0.011cm" draw:dots2="1" draw:dots2-length="0.011cm" draw:distance="0.011cm"/>
  <style:default-style style:family="graphics">
   <style:properties draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" fo:color="#000000" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:font-name-asian="HG Mincho Light J" style:font-size-asian="12pt" style:language-asian="none" style:country-asian="none" style:font-name-complex="Arial Unicode MS" style:font-size-complex="12pt" style:language-complex="none" style:country-complex="none" style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb">
    <style:tab-stops/>
   </style:properties>
  </style:default-style>
  <style:default-style style:family="paragraph">
   <style:properties fo:color="#000000" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="US" style:font-name-asian="HG Mincho Light J" style:font-size-asian="12pt" style:language-asian="none" style:country-asian="none" style:font-name-complex="Arial Unicode MS" style:font-size-complex="12pt" style:language-complex="none" style:country-complex="none" fo:hyphenate="false" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.245cm" style:writing-mode="page"/>
  </style:default-style>
  <style:style style:name="Standard" style:family="paragraph" style:class="text">
   <style:properties fo:color="#000000" style:font-name="Times New Roman1" fo:language="en" fo:country="US"/>
  </style:style>
  <style:style style:name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
   <style:properties fo:margin-top="0cm" fo:margin-bottom="0.212cm" fo:color="#000000"/>
  </style:style>
  <style:style style:name="First line indent" style:family="paragraph" style:parent-style-name="Text body" style:class="text">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0.499cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Hanging indent" style:family="paragraph" style:parent-style-name="Text body" style:class="text">
   <style:properties fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="-0.499cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="0cm"/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Text body indent" style:family="paragraph" style:parent-style-name="Text body" style:class="text">
   <style:properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Salutation" style:family="paragraph" style:parent-style-name="Standard" style:class="text"/>
  <style:style style:name="Signature" style:family="paragraph" style:parent-style-name="Standard" style:class="text"/>
  <style:style style:name="List Indent" style:family="paragraph" style:parent-style-name="Text body" style:class="text">
   <style:properties fo:margin-left="5.001cm" fo:margin-right="0cm" fo:text-indent="-4.5cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="0cm"/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Marginalia" style:family="paragraph" style:parent-style-name="Text body" style:class="text">
   <style:properties fo:margin-left="4.001cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text body" style:class="text">
   <style:properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" fo:color="#000000" style:font-name="Arial" fo:font-size="14pt" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text body" style:class="text">
   <style:properties fo:font-size="115%" fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="Heading 2" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text body" style:class="text">
   <style:properties fo:font-size="14pt" fo:font-style="italic" fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="Heading 3" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text body" style:class="text">
   <style:properties fo:font-size="14pt" fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="Heading 4" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text body" style:class="text">
   <style:properties fo:font-size="85%" fo:font-style="italic" fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="Heading 5" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text body" style:class="text">
   <style:properties fo:font-size="85%" fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="Heading 6" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text body" style:class="text">
   <style:properties fo:font-size="75%" fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="Heading 7" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text body" style:class="text" style:master-page-name="">
   <style:properties fo:font-size="75%" fo:font-weight="bold" fo:hyphenate="false" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" fo:hyphenation-ladder-count="1" style:page-number="0"/>
  </style:style>
  <style:style style:name="Heading 8" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text body" style:class="text" style:master-page-name="">
   <style:properties fo:font-size="75%" fo:font-weight="bold" fo:hyphenate="false" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" fo:hyphenation-ladder-count="1" style:page-number="0"/>
  </style:style>
  <style:style style:name="Heading 9" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text body" style:class="text" style:master-page-name="">
   <style:properties fo:font-size="75%" fo:font-weight="bold" fo:hyphenate="false" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" fo:hyphenation-ladder-count="1" style:page-number="0"/>
  </style:style>
  <style:style style:name="Heading 10" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text body" style:class="text" style:master-page-name="">
   <style:properties fo:font-size="75%" fo:font-weight="bold" fo:hyphenate="false" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" fo:hyphenation-ladder-count="1" style:page-number="0"/>
  </style:style>
  <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text body" style:class="list">
   <style:properties style:font-name="Times New Roman"/>
  </style:style>
  <style:style style:name="Numbering 1 Start" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="1.251cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 1" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="1.251cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 1 End" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="1.251cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 1 Cont." style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="1.251cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 2 Start" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="2.499cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 2" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="2.499cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 2 End" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="2.499cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 2 Cont." style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="2.499cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 3 Start" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="3.75cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 3" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="3.75cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 3 End" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="3.75cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 3 Cont." style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="3.75cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 4 Start" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="5.001cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 4" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="5.001cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 4 End" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="5.001cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 4 Cont." style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="5.001cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 5 Start" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="6.249cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 5" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="6.249cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 5 End" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="6.249cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Numbering 5 Cont." style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="6.249cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 1 Start" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="1.251cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 1" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="1.251cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 1 End" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="1.251cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 1 Cont." style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="1.251cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 2 Start" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="2.499cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 2" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="2.499cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 2 End" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="2.499cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 2 Cont." style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="2.499cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 3 Start" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="3.75cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 3" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="3.75cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 3 End" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="3.75cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 3 Cont." style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="3.75cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 4 Start" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="5.001cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 4" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="5.001cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 4 End" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="5.001cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 4 Cont." style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="5.001cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 5 Start" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="6.249cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 5" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="6.249cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 5 End" style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="6.249cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="-0.497cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="List 5 Cont." style:family="paragraph" style:parent-style-name="List" style:class="list" style:master-page-name="">
   <style:properties fo:margin-left="6.249cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Header" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
   <style:properties fo:margin-left="2.54cm" fo:margin-right="0cm" fo:margin-top="0.499cm" fo:margin-bottom="0cm" fo:font-size="12pt" fo:text-indent="0cm" style:auto-text-indent="false" fo:padding="0cm" fo:border="none">
    <style:tab-stops>
     <style:tab-stop style:position="7.721cm" style:type="center"/>
     <style:tab-stop style:position="15.443cm" style:type="right"/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Header left" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
   <style:properties text:number-lines="false" text:line-number="0">
    <style:tab-stops>
     <style:tab-stop style:position="7.721cm" style:type="center"/>
     <style:tab-stop style:position="15.443cm" style:type="right"/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Header right" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
   <style:properties>
    <style:tab-stops>
     <style:tab-stop style:position="8.5cm" style:type="center"/>
     <style:tab-stop style:position="17.002cm" style:type="right"/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Footer" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
   <style:properties>
    <style:tab-stops>
     <style:tab-stop style:position="7.721cm" style:type="center"/>
     <style:tab-stop style:position="15.443cm" style:type="right"/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Footer left" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
   <style:properties fo:margin-left="0.199cm" fo:margin-right="0cm" style:font-name="Helvetica" fo:font-size="9pt" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="7.721cm" style:type="center"/>
     <style:tab-stop style:position="15.443cm" style:type="right"/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Footer right" style:family="paragraph" style:parent-style-name="Standard" style:class="extra" style:master-page-name="">
   <style:properties fo:margin-left="0cm" fo:margin-right="0.199cm" style:font-name="Helvetica" fo:font-size="8.5pt" fo:text-align="end" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops>
     <style:tab-stop style:position="7.721cm" style:type="center"/>
     <style:tab-stop style:position="15.443cm" style:type="right"/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Table Contents" style:family="paragraph" style:parent-style-name="Text body" style:class="extra"/>
  <style:style style:name="Table Heading" style:family="paragraph" style:parent-style-name="Table Contents" style:class="extra">
   <style:properties fo:font-style="italic" fo:font-weight="bold" fo:text-align="center" style:justify-single-word="false"/>
  </style:style>
  <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
   <style:properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" style:font-name="Times New Roman" fo:font-size="10pt" fo:font-style="italic"/>
  </style:style>
  <style:style style:name="Illustration" style:family="paragraph" style:parent-style-name="Caption" style:class="extra">
   <style:properties style:font-name="Palatino1" fo:font-size="9pt" fo:line-height="100%"/>
  </style:style>
  <style:style style:name="Table" style:family="paragraph" style:parent-style-name="Caption" style:class="extra"/>
  <style:style style:name="Text" style:family="paragraph" style:parent-style-name="Caption" style:class="extra"/>
  <style:style style:name="Frame contents" style:family="paragraph" style:parent-style-name="Text body" style:class="extra">
   <style:properties style:font-name="Helvetica" fo:font-size="18pt" fo:line-height="100%"/>
  </style:style>
  <style:style style:name="Footnote" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
   <style:properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:font-size="10pt" fo:text-indent="-0.499cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Addressee" style:family="paragraph" style:parent-style-name="Standard" style:class="extra" style:master-page-name="">
   <style:properties fo:margin-top="0cm" fo:margin-bottom="0.349cm" fo:font-style="italic" style:page-number="0"/>
  </style:style>
  <style:style style:name="Sender" style:family="paragraph" style:parent-style-name="Standard" style:class="extra" style:master-page-name="">
   <style:properties fo:margin-top="0cm" fo:margin-bottom="0cm" fo:font-style="italic" style:page-number="0"/>
  </style:style>
  <style:style style:name="Endnote" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
   <style:properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:font-size="10pt" fo:text-indent="-0.499cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
  </style:style>
  <style:style style:name="Drawing" style:family="paragraph" style:parent-style-name="Caption" style:class="extra"/>
  <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
   <style:properties style:font-name="Times New Roman"/>
  </style:style>
  <style:style style:name="Index Heading" style:family="paragraph" style:parent-style-name="Heading" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:font-size="16pt" fo:font-weight="bold" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Index 1" style:family="paragraph" style:parent-style-name="Index" style:class="index" style:master-page-name="">
   <style:properties fo:margin-left="0.3cm" fo:margin-right="0cm" fo:margin-top="0.049cm" fo:margin-bottom="0.049cm" style:font-name="Palatino" fo:font-size="9pt" fo:text-indent="-0.3cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Index 2" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Index 3" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Index Separator" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Contents Heading" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Under_Head1" style:class="index" style:master-page-name="">
   <style:properties fo:margin-left="2.54cm" fo:margin-right="0.838cm" fo:margin-top="2.499cm" fo:margin-bottom="0cm" fo:font-size="20pt" fo:font-weight="normal" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0" fo:padding="3.59cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.002cm solid #ffffff" fo:border-bottom="none"/>
  </style:style>
  <style:style style:name="Contents 1" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="2.499cm" fo:margin-right="0cm" fo:margin-top="0.61cm" fo:margin-bottom="0.254cm" style:font-name="Palatino" fo:font-size="10pt" fo:font-weight="bold" fo:text-indent="-0.54cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="15.443cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Contents 2" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="3.54cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0.279cm" style:font-name="Palatino" fo:font-size="10pt" fo:font-weight="normal" fo:text-indent="-1.041cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="14.944cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Contents 3" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="3.54cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0.279cm" style:font-name="Palatino" fo:font-size="10pt" fo:text-indent="-0.54cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="14.444cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Contents 4" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="1.498cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="15.505cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Contents 5" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="1.997cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="15.005cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="User Index Heading" style:family="paragraph" style:parent-style-name="Heading" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:font-size="16pt" fo:font-weight="bold" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="User Index 1" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="17.002cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="User Index 2" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="16.503cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="User Index 3" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="0.998cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="16.004cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="User Index 4" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="1.498cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="15.505cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="User Index 5" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="1.997cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="15.005cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Contents 6" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="2.496cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="12.947cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Contents 7" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="2.995cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="12.448cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Contents 8" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="3.494cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="11.949cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Contents 9" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="3.993cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="11.449cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Contents 10" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="4.493cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="10.95cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Illustration Index Heading" style:family="paragraph" style:parent-style-name="Heading" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:font-size="16pt" fo:font-weight="bold" fo:text-indent="0cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
  </style:style>
  <style:style style:name="Illustration Index 1" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="15.443cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Object index heading" style:family="paragraph" style:parent-style-name="Heading" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:font-size="16pt" fo:font-weight="bold" fo:text-indent="0cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
  </style:style>
  <style:style style:name="Object index 1" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="15.443cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Table index heading" style:family="paragraph" style:parent-style-name="Heading" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:font-size="16pt" fo:font-weight="bold" fo:text-indent="0cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
  </style:style>
  <style:style style:name="Table index 1" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="15.443cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Bibliography Heading" style:family="paragraph" style:parent-style-name="Heading" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:font-size="16pt" fo:font-weight="bold" fo:text-indent="0cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
  </style:style>
  <style:style style:name="Bibliography 1" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="15.443cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="User Index 6" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="2.496cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="12.947cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="User Index 7" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="2.995cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="12.448cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="User Index 8" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="3.494cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="11.949cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="User Index 9" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="3.993cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="11.449cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="User Index 10" style:family="paragraph" style:parent-style-name="Index" style:class="index">
   <style:properties fo:margin-left="4.493cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops>
     <style:tab-stop style:position="10.95cm" style:type="right" style:leader-char="."/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Title" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Subtitle" style:class="chapter">
   <style:properties fo:font-size="18pt" fo:font-weight="bold" fo:text-align="start" style:justify-single-word="false"/>
  </style:style>
  <style:style style:name="Subtitle" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text body" style:class="chapter">
   <style:properties fo:font-size="14pt" fo:font-style="italic" fo:text-align="center" style:justify-single-word="false"/>
  </style:style>
  <style:style style:name="Quotations" style:family="paragraph" style:parent-style-name="Standard" style:class="html">
   <style:properties fo:margin-left="1cm" fo:margin-right="1cm" fo:margin-top="0cm" fo:margin-bottom="0.349cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Preformatted Text" style:family="paragraph" style:parent-style-name="Standard" style:class="html">
   <style:properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:font-name="Courier" fo:font-size="10pt"/>
  </style:style>
  <style:style style:name="Horizontal Line" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text body" style:class="html">
   <style:properties fo:margin-top="0cm" fo:margin-bottom="0.499cm" fo:font-size="6pt" style:border-line-width-bottom="0.002cm 0.035cm 0.002cm" fo:padding="0cm" fo:border-left="none" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.039cm double #808080"/>
  </style:style>
  <style:style style:name="List Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="html">
   <style:properties fo:margin-left="0.998cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="List Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="List Contents" style:class="html">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Texttable" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
   <style:properties fo:margin-top="0cm" fo:margin-bottom="0cm" fo:font-size="9.5pt" fo:line-height="0.39cm" fo:hyphenate="false" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" fo:hyphenation-ladder-count="1" style:page-number="0"/>
  </style:style>
  <style:style style:name="HeadlineIndex" style:family="paragraph" style:parent-style-name="Header">
   <style:properties fo:font-size="20pt" fo:padding="3.191cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.002cm solid #ffffff" fo:border-bottom="none"/>
  </style:style>
  <style:style style:name="PartNumText" style:family="paragraph" style:parent-style-name="Illustration">
   <style:properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:font-name="Helvetica1" fo:font-size="7pt" fo:font-style="normal"/>
  </style:style>
  <style:style style:name="TitelText" style:family="paragraph" style:parent-style-name="Frame contents" style:master-page-name="">
   <style:properties fo:font-size="24pt" fo:text-align="end" style:justify-single-word="false" style:page-number="0"/>
  </style:style>
  <style:style style:name="SubTitelText" style:family="paragraph" style:parent-style-name="Frame contents" style:master-page-name="">
   <style:properties fo:font-size="16pt" fo:text-align="end" style:justify-single-word="false" style:page-number="0"/>
  </style:style>
  <style:style style:name="Code" style:family="paragraph" style:parent-style-name="Paragraph" style:master-page-name="">
   <style:properties fo:margin-left="2.54cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:font-name="Courier New" fo:font-size="70%" style:text-underline="none" fo:orphans="4" fo:widows="4" fo:hyphenate="false" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" fo:hyphenation-ladder-count="1" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0" fo:background-color="#e6e6e6" fo:keep-with-next="false">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Reference Header" style:family="paragraph" style:parent-style-name="Heading 5" style:next-style-name="Text body" style:auto-update="true" style:master-page-name="">
   <style:properties fo:margin-left="2.54cm" fo:margin-right="0cm" fo:margin-top="0.379cm" fo:margin-bottom="0.25cm" fo:text-align="start" style:justify-single-word="false" fo:orphans="2" fo:widows="2" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0" fo:break-before="auto" fo:break-after="auto"/>
  </style:style>
  <style:style style:name="Table Title" style:family="paragraph" style:parent-style-name="Table" style:next-style-name="Table Heading" style:master-page-name="">
   <style:properties fo:margin-left="2.54cm" fo:margin-right="0cm" style:font-name="Palatino2" fo:font-style="italic" fo:font-weight="normal" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0"/>
  </style:style>
  <style:style style:name="CopyrightText" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.15cm" fo:margin-bottom="0cm" style:font-name="Palatino" fo:font-size="9pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" fo:hyphenation-ladder-count="no-limit" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Figure Code" style:family="paragraph" style:parent-style-name="Code" style:master-page-name="">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0.102cm" style:font-name="Courier New1" fo:font-size="9pt" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops>
     <style:tab-stop style:position="6.35cm"/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Figure Code Map" style:family="paragraph" style:parent-style-name="Figure Code">
   <style:properties style:font-name="Times New Roman2"/>
  </style:style>
  <style:style style:name="ReviewComment" style:family="paragraph" style:parent-style-name="Standard">
   <style:properties fo:font-size="10pt" fo:background-color="#ffcc99">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="CodeInLists" style:family="paragraph" style:parent-style-name="Numbering 1" style:master-page-name="">
   <style:properties fo:margin-left="3.048cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:font-name="Courier New1" fo:font-size="7pt" fo:line-height="100%" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0"/>
  </style:style>
  <style:style style:name="ParagraphInList" style:family="paragraph" style:parent-style-name="Numbering 1">
   <style:properties fo:margin-left="3.048cm" fo:margin-right="0cm" fo:margin-top="0.28cm" fo:margin-bottom="0.28cm" style:font-name="Palatino3" fo:font-size="9.5pt" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Figure Code 2" style:family="paragraph" style:parent-style-name="Code">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0.051cm" fo:font-size="8pt" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Head 1" style:family="paragraph" style:parent-style-name="Heading 1" style:next-style-name="Under_Head1" style:master-page-name="Chapter_Start">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="2.499cm" fo:margin-bottom="0cm" fo:color="#000000" style:font-name="Palatino" fo:font-size="24pt" fo:font-weight="normal" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0" fo:break-before="auto" fo:break-after="auto"/>
  </style:style>
  <style:style style:name="Under_Head1" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Paragraph">
   <style:properties fo:font-size="9.5pt" fo:padding="0.15cm" fo:border-left="none" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="ChapterText" style:family="paragraph" style:parent-style-name="Heading 2" style:master-page-name="">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-transform="uppercase" style:font-name="Helvetica" fo:font-size="10pt" fo:font-style="normal" fo:font-weight="normal" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0">
    <style:tab-stops>
     <style:tab-stop style:position="2.2cm" style:type="right"/>
    </style:tab-stops>
   </style:properties>
  </style:style>
  <style:style style:name="Paragraph" style:family="paragraph" style:parent-style-name="Text body" style:master-page-name="">
   <style:properties fo:margin-left="2.54cm" fo:margin-right="0cm" fo:margin-top="0.229cm" fo:margin-bottom="0.229cm" fo:color="#000000" style:font-name="Palatino" fo:font-size="10pt" fo:orphans="2" fo:widows="2" fo:hyphenate="true" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" fo:hyphenation-ladder-count="no-limit" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0"/>
  </style:style>
  <style:style style:name="Head 2" style:family="paragraph" style:parent-style-name="Heading 2" style:next-style-name="Paragraph" style:master-page-name="">
   <style:properties fo:margin-left="2.54cm" fo:margin-right="0cm" fo:margin-top="1cm" fo:margin-bottom="0.4cm" fo:color="#000000" style:font-name="Palatino" fo:font-size="18pt" fo:font-style="normal" fo:font-weight="bold" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0"/>
  </style:style>
  <style:style style:name="Head 3" style:family="paragraph" style:parent-style-name="Heading 3" style:next-style-name="Paragraph">
   <style:properties fo:margin-left="2.54cm" fo:margin-right="0cm" fo:margin-top="1cm" fo:margin-bottom="0.3cm" fo:color="#000000" style:font-name="Palatino" fo:font-size="16pt" fo:font-weight="normal" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Head 4" style:family="paragraph" style:parent-style-name="Heading 4" style:next-style-name="Paragraph">
   <style:properties fo:margin-left="2.54cm" fo:margin-right="0cm" fo:margin-top="0.891cm" fo:margin-bottom="0.199cm" fo:color="#000000" style:font-name="Palatino" fo:font-size="14pt" fo:font-style="normal" fo:font-weight="normal" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Head 5" style:family="paragraph" style:parent-style-name="Heading 5" style:next-style-name="Paragraph" style:master-page-name="">
   <style:properties fo:margin-left="2.54cm" fo:margin-right="0cm" fo:margin-top="0.589cm" fo:margin-bottom="0.101cm" fo:color="#000000" style:font-name="Palatino" fo:font-size="12pt" fo:font-style="italic" fo:font-weight="normal" fo:text-indent="0cm" style:auto-text-indent="false" style:page-number="0"/>
  </style:style>
  <style:style style:name="Head 6" style:family="paragraph" style:parent-style-name="Heading 6" style:next-style-name="Paragraph">
   <style:properties fo:margin-left="2.54cm" fo:margin-right="0cm" fo:margin-top="0.589cm" fo:margin-bottom="0.101cm" fo:color="#000000" style:font-name="Palatino" fo:font-size="10pt" fo:font-style="italic" fo:font-weight="normal" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="TextInTable" style:family="paragraph" style:parent-style-name="Table Contents" style:master-page-name="">
   <style:properties fo:margin-top="0.28cm" fo:margin-bottom="0.28cm" fo:color="#000000" style:font-name="Palatino" fo:font-size="9pt" fo:hyphenate="true" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" fo:hyphenation-ladder-count="no-limit" style:page-number="0"/>
  </style:style>
  <style:style style:name="TableHead" style:family="paragraph" style:parent-style-name="Table Heading" style:master-page-name="">
   <style:properties fo:color="#000000" style:font-name="Palatino" fo:font-size="10pt" fo:font-style="normal" fo:text-align="start" style:justify-single-word="false" fo:hyphenate="true" fo:hyphenation-remain-char-count="4" fo:hyphenation-push-char-count="4" fo:hyphenation-ladder-count="no-limit" style:page-number="0"/>
  </style:style>
  <style:style style:name="PropText" style:family="paragraph" style:parent-style-name="Preformatted Text">
   <style:properties fo:margin-left="2.54cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:color="#000000" style:font-name="Courier New2" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="TOC_Head" style:family="paragraph" style:parent-style-name="Contents Heading" style:next-style-name="Under_Head1" style:master-page-name="TOC_Start">
   <style:properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:font-name="Palatino" style:page-number="0" fo:padding="0cm" fo:border="none"/>
  </style:style>
  <style:style style:name="TOC_Level1" style:family="paragraph" style:parent-style-name="Contents 1"/>
  <style:style style:name="TOC_Level2" style:family="paragraph" style:parent-style-name="Contents 2"/>
  <style:style style:name="TOC_Level3" style:family="paragraph" style:parent-style-name="Contents 3"/>
  <style:style style:name="Index_Head" style:family="paragraph" style:parent-style-name="Index Heading" style:master-page-name="Index_Start">
   <style:properties style:page-number="0"/>
  </style:style>
  <style:style style:name="Index_Separation" style:family="paragraph" style:parent-style-name="Index Separator" style:master-page-name="">
   <style:properties fo:margin-top="0.499cm" fo:margin-bottom="0cm" style:font-name="Helvetica2" fo:font-weight="bold" style:page-number="0" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Index_Level1" style:family="paragraph" style:parent-style-name="Index 1">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:font-size="10pt" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="Index_Level2" style:family="paragraph" style:parent-style-name="Index 2">
   <style:properties style:font-name="Palatino" fo:font-size="10pt"/>
  </style:style>
  <style:style style:name="Copyright" style:family="paragraph" style:parent-style-name="Head 2">
   <style:properties fo:margin-left="0cm" fo:margin-right="0.838cm" fo:font-size="16pt" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="BottomTitelLine" style:family="paragraph" style:parent-style-name="Frame contents">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:font-size="8pt" fo:text-indent="0cm" style:auto-text-indent="false" fo:padding="0.049cm" fo:border-left="none" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table_Note" style:family="paragraph" style:parent-style-name="Paragraph">
   <style:properties fo:margin-left="2.799cm" fo:margin-right="0cm" fo:margin-top="0.079cm" fo:margin-bottom="0cm" fo:font-size="8pt" fo:font-style="normal" fo:text-indent="-0.259cm" style:auto-text-indent="false">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Figure" style:family="paragraph" style:parent-style-name="Caption"/>
  <style:style style:name="TitledListBody" style:family="paragraph" style:parent-style-name="Paragraph">
   <style:properties fo:margin-left="3.05cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0.28cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="TitledListHead" style:family="paragraph" style:parent-style-name="Paragraph" style:next-style-name="TitledListBody" style:master-page-name="">
   <style:properties fo:margin-top="0.28cm" fo:margin-bottom="0cm" fo:font-style="italic" style:page-number="0" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="TipInTable" style:family="paragraph" style:parent-style-name="TextInTable"/>
  <style:style style:name="TitledListCode" style:family="paragraph" style:parent-style-name="TitledListBody">
   <style:properties fo:margin-top="0cm" fo:margin-bottom="0cm" style:font-name="Courier New1" fo:font-size="70%" fo:background-color="#e6e6e6">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="TableHeadLeft" style:family="paragraph" style:parent-style-name="TableHead">
   <style:properties fo:margin-left="0.3cm" fo:margin-right="0cm" fo:text-align="start" style:justify-single-word="false" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="TableCode" style:family="paragraph" style:parent-style-name="TextInTable">
   <style:properties style:font-name="Courier New1" fo:font-size="90%"/>
  </style:style>
  <style:style style:name="MethodSignatures" style:family="paragraph" style:parent-style-name="Paragraph">
   <style:properties fo:margin-left="3.039cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:font-name="Courier New1" fo:font-size="7pt" fo:text-indent="0cm" style:auto-text-indent="false">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Listing" style:family="paragraph" style:parent-style-name="Paragraph" style:next-style-name="Paragraph">
   <style:properties fo:margin-top="0.101cm" fo:margin-bottom="0.28cm" fo:font-size="9pt" fo:font-style="italic"/>
  </style:style>
  <style:style style:name="Output" style:family="paragraph" style:parent-style-name="Code">
   <style:properties fo:background-color="#ffffff" fo:padding="0.049cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="TableFootnote" style:family="paragraph" style:parent-style-name="Paragraph">
   <style:properties fo:margin-left="2.799cm" fo:margin-right="0cm" fo:margin-top="0.079cm" fo:margin-bottom="0cm" style:font-name="Palatino3" fo:font-size="8pt" fo:text-indent="-0.259cm" style:auto-text-indent="false">
    <style:tab-stops/>
   </style:properties>
  </style:style>
  <style:style style:name="Footnote Symbol" style:family="text"/>
  <style:style style:name="Caption characters" style:family="text"/>
  <style:style style:name="Numbering Symbols" style:family="text"/>
  <style:style style:name="Bullet Symbols" style:family="text">
   <style:properties style:font-name="ZapfDingbats" fo:font-size="6pt"/>
  </style:style>
  <style:style style:name="Internet link" style:family="text">
   <style:properties fo:color="#000080" style:text-underline="single" style:text-underline-color="font-color"/>
  </style:style>
  <style:style style:name="Visited Internet Link" style:family="text">
   <style:properties fo:color="#800000" style:text-underline="single" style:text-underline-color="font-color"/>
  </style:style>
  <style:style style:name="Placeholder" style:family="text">
   <style:properties fo:font-variant="small-caps" fo:color="#008080" style:text-underline="dotted" style:text-underline-color="font-color"/>
  </style:style>
  <style:style style:name="Footnote anchor" style:family="text">
   <style:properties style:text-position="super 58%"/>
  </style:style>
  <style:style style:name="Emphasis" style:family="text">
   <style:properties fo:font-style="italic"/>
  </style:style>
  <style:style style:name="Strong Emphasis" style:family="text">
   <style:properties fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="Source Text" style:family="text">
   <style:properties style:font-name="Courier New3"/>
  </style:style>
  <style:style style:name="Example" style:family="text">
   <style:properties style:font-name="Courier New3"/>
  </style:style>
  <style:style style:name="User Entry" style:family="text">
   <style:properties style:font-name="Courier New3"/>
  </style:style>
  <style:style style:name="Definition" style:family="text"/>
  <style:style style:name="PageNumber" style:family="text">
   <style:properties style:font-name="Helvetica3" fo:font-size="9pt" fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="ChapterNummer" style:family="text">
   <style:properties style:font-name="Helvetica3" fo:font-size="18pt" fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="White" style:family="text"/>
  <style:style style:name="Code (in text)" style:family="text">
   <style:properties fo:color="#000000" style:font-name="Courier New1" fo:font-size="9pt"/>
  </style:style>
  <style:style style:name="Default Paragraph Font" style:family="text" style:parent-style-name="Normal">
   <style:properties style:font-name="Times New Roman" fo:font-size="12pt"/>
  </style:style>
  <style:style style:name="Normal" style:family="text">
   <style:properties style:font-name="Arial1" fo:font-size="10pt"/>
  </style:style>
  <style:style style:name="Page_Number" style:family="text">
   <style:properties style:font-name="Helvetica3" fo:font-size="9pt" fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="Enumeration_1" style:family="text" style:parent-style-name="Bullet Symbols"/>
  <style:style style:name="CITE" style:family="text">
   <style:properties fo:font-style="italic"/>
  </style:style>
  <style:style style:name="CODE" style:family="text">
   <style:properties style:font-name="Courier New4"/>
  </style:style>
  <style:style style:name="EM" style:family="text">
   <style:properties fo:font-style="italic"/>
  </style:style>
  <style:style style:name="KBD" style:family="text">
   <style:properties style:font-name="Courier New4"/>
  </style:style>
  <style:style style:name="SAMP" style:family="text">
   <style:properties style:font-name="Courier New4"/>
  </style:style>
  <style:style style:name="STRONG" style:family="text">
   <style:properties fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="VAR" style:family="text">
   <style:properties fo:font-style="italic"/>
  </style:style>
  <style:style style:name="TT" style:family="text">
   <style:properties style:font-name="Courier New4"/>
  </style:style>
  <style:style style:name="DFN" style:family="text"/>
  <style:style style:name="Q" style:family="text">
   <style:properties fo:color="#000000" style:text-outline="false" style:text-crossing-out="none" style:text-position="0% 100%" style:font-name="Times New Roman3" fo:font-size="12pt" fo:letter-spacing="normal" fo:language="de" fo:country="DE" fo:font-style="normal" fo:text-shadow="none" style:text-underline="none" fo:font-weight="normal" fo:score-spaces="true" style:letter-kerning="false"/>
  </style:style>
  <style:style style:name="LANG" style:family="text">
   <style:properties fo:color="#000000" style:text-outline="false" style:text-crossing-out="none" style:text-position="0% 100%" style:font-name="Times New Roman3" fo:font-size="12pt" fo:letter-spacing="normal" fo:language="de" fo:country="DE" fo:font-style="normal" fo:text-shadow="none" style:text-underline="none" fo:font-weight="normal" fo:score-spaces="true" style:letter-kerning="false"/>
  </style:style>
  <style:style style:name="AU" style:family="text">
   <style:properties fo:color="#000000" style:text-outline="false" style:text-crossing-out="none" style:text-position="0% 100%" style:font-name="Times New Roman3" fo:font-size="12pt" fo:letter-spacing="normal" fo:language="de" fo:country="DE" fo:font-style="normal" fo:text-shadow="none" style:text-underline="none" fo:font-weight="normal" fo:score-spaces="true" style:letter-kerning="false"/>
  </style:style>
  <style:style style:name="PERSON" style:family="text">
   <style:properties fo:color="#000000" style:text-outline="false" style:text-crossing-out="none" style:text-position="0% 100%" style:font-name="Times New Roman3" fo:font-size="12pt" fo:letter-spacing="normal" fo:language="de" fo:country="DE" fo:font-style="normal" fo:text-shadow="none" style:text-underline="none" fo:font-weight="normal" fo:score-spaces="true" style:letter-kerning="false"/>
  </style:style>
  <style:style style:name="ACRONYM" style:family="text">
   <style:properties fo:color="#000000" style:text-outline="false" style:text-crossing-out="none" style:text-position="0% 100%" style:font-name="Times New Roman3" fo:font-size="12pt" fo:letter-spacing="normal" fo:language="de" fo:country="DE" fo:font-style="normal" fo:text-shadow="none" style:text-underline="none" fo:font-weight="normal" fo:score-spaces="true" style:letter-kerning="false"/>
  </style:style>
  <style:style style:name="ABBREV" style:family="text">
   <style:properties fo:color="#000000" style:text-outline="false" style:text-crossing-out="none" style:text-position="0% 100%" style:font-name="Times New Roman3" fo:font-size="12pt" fo:letter-spacing="normal" fo:language="de" fo:country="DE" fo:font-style="normal" fo:text-shadow="none" style:text-underline="none" fo:font-weight="normal" fo:score-spaces="true" style:letter-kerning="false"/>
  </style:style>
  <style:style style:name="INS" style:family="text">
   <style:properties fo:color="#000000" style:text-outline="false" style:text-crossing-out="none" style:text-position="0% 100%" style:font-name="Times New Roman3" fo:font-size="12pt" fo:letter-spacing="normal" fo:language="de" fo:country="DE" fo:font-style="normal" fo:text-shadow="none" style:text-underline="none" fo:font-weight="normal" fo:score-spaces="true" style:letter-kerning="false"/>
  </style:style>
  <style:style style:name="DEL" style:family="text">
   <style:properties fo:color="#000000" style:text-outline="false" style:text-crossing-out="none" style:text-position="0% 100%" style:font-name="Times New Roman3" fo:font-size="12pt" fo:letter-spacing="normal" fo:language="de" fo:country="DE" fo:font-style="normal" fo:text-shadow="none" style:text-underline="none" fo:font-weight="normal" fo:score-spaces="true" style:letter-kerning="false"/>
  </style:style>
  <style:style style:name="BLINK" style:family="text">
   <style:properties fo:color="#ffff00" fo:text-shadow="1pt 1pt"/>
  </style:style>
  <style:style style:name="Kapitälchen" style:family="text">
   <style:properties fo:font-variant="small-caps" fo:font-size="11pt"/>
  </style:style>
  <style:style style:name="Tasten" style:family="text">
   <style:properties style:font-name="Times" fo:font-size="11pt" fo:font-style="italic" fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="Großbuch" style:family="text">
   <style:properties fo:text-transform="uppercase"/>
  </style:style>
  <style:style style:name="CODE Comment" style:family="text" style:parent-style-name="CODE">
   <style:properties fo:color="#008000"/>
  </style:style>
  <style:style style:name="CODE KeyWord" style:family="text" style:parent-style-name="CODE">
   <style:properties fo:color="#000000" fo:font-size="9pt"/>
  </style:style>
  <style:style style:name="CODE String" style:family="text" style:parent-style-name="CODE">
   <style:properties fo:color="#008080"/>
  </style:style>
  <style:style style:name="CODE Emphasis" style:family="text" style:parent-style-name="CodeEmphasis"/>
  <style:style style:name="www/ftp/email" style:family="text" style:parent-style-name="Emphasis"/>
  <style:style style:name="Buttons/Menus" style:family="text">
   <style:properties fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="CodeEmphasis" style:family="text" style:parent-style-name="DefaultCode">
   <style:properties fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="Reference" style:family="text">
   <style:properties fo:font-style="italic"/>
  </style:style>
  <style:style style:name="DefaultParagraph" style:family="text">
   <style:properties style:font-name="Palatino3" fo:font-size="10pt"/>
  </style:style>
  <style:style style:name="MethodSignatureEmphasis" style:family="text" style:parent-style-name="DefaultParagraph">
   <style:properties style:font-name="Courier New5" fo:font-size="7pt" fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="DefaultCode" style:family="text" style:parent-style-name="DefaultParagraph">
   <style:properties style:font-name="Courier New1" fo:font-size="7pt"/>
  </style:style>
  <style:style style:name="ChapterRef" style:family="text">
   <style:properties fo:font-style="italic"/>
  </style:style>
  <style:style style:name="Frame" style:family="graphics">
   <style:properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" fo:margin-left="0.201cm" fo:margin-right="0.201cm" fo:margin-top="0.201cm" fo:margin-bottom="0.201cm" style:wrap="none" style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph-content" fo:background-color="transparent" style:background-transparency="100%" fo:padding="0cm" fo:border="none">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Graphics" style:family="graphics">
   <style:properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" style:wrap="none" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="center" style:horizontal-rel="paragraph"/>
  </style:style>
  <style:style style:name="OLE" style:family="graphics">
   <style:properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" style:wrap="none" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="center" style:horizontal-rel="paragraph"/>
  </style:style>
  <style:style style:name="Formula" style:family="graphics">
   <style:properties text:anchor-type="as-char" svg:y="0cm" style:vertical-pos="top" style:vertical-rel="baseline"/>
  </style:style>
  <style:style style:name="Labels" style:family="graphics" style:auto-update="true">
   <style:properties text:anchor-type="as-char" svg:y="0cm" fo:margin-left="0.201cm" fo:margin-right="0.201cm" style:protect="size position" style:vertical-pos="top" style:vertical-rel="baseline"/>
  </style:style>
  <style:style style:name="ChapterFrame" style:family="graphics">
   <style:properties svg:width="2.54cm" fo:min-height="0.801cm" text:anchor-type="page" svg:x="0cm" svg:y="0cm" style:wrap="run-through" style:vertical-pos="top" style:vertical-rel="page-content" style:horizontal-pos="left" style:horizontal-rel="page-content" fo:padding="0.049cm" fo:border-left="none" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Illustration" style:family="graphics">
   <style:properties text:anchor-type="page" svg:x="0cm" svg:y="0cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.499cm" fo:margin-bottom="0.499cm" style:wrap="none" style:vertical-pos="from-top" style:vertical-rel="page-content" style:horizontal-pos="from-left" style:horizontal-rel="page-content" fo:background-color="transparent" style:background-transparency="100%" fo:padding="0cm" fo:border="none">
    <style:background-image/>
    <style:columns fo:column-count="0" fo:column-gap="0cm"/>
   </style:properties>
  </style:style>
  <text:outline-style>
   <text:outline-level-style text:level="1" text:style-name="White" style:num-suffix=" " style:num-format="1">
    <style:properties text:min-label-width="2.54cm"/>
   </text:outline-level-style>
   <text:outline-level-style text:level="2" style:num-suffix=" " style:num-format="1" text:display-levels="2"/>
   <text:outline-level-style text:level="3" style:num-suffix=" " style:num-format="1" text:display-levels="3"/>
   <text:outline-level-style text:level="4" style:num-format=""/>
   <text:outline-level-style text:level="5" style:num-format=""/>
   <text:outline-level-style text:level="6" style:num-format="1" text:display-levels="6"/>
   <text:outline-level-style text:level="7" style:num-format="1" text:display-levels="7"/>
   <text:outline-level-style text:level="8" style:num-format="1" text:display-levels="7"/>
   <text:outline-level-style text:level="9" style:num-format="1" text:display-levels="7"/>
   <text:outline-level-style text:level="10" style:num-format="1" text:display-levels="7"/>
  </text:outline-style>
  <text:list-style style:name="Numbering 1">
   <text:list-level-style-number text:level="1" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="2" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="0.499cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="3" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="0.999cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="4" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="1.498cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="5" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="1.997cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="6" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="2.496cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="7" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="2.995cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="8" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="3.494cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="9" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="3.994cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="10" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="4.493cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
  </text:list-style>
  <text:list-style style:name="Numbering 3">
   <text:list-level-style-number text:level="1" text:style-name="Numbering Symbols" style:num-format="1">
    <style:properties text:min-label-width="3cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="2" text:style-name="Numbering Symbols" style:num-format="1" text:start-value="2">
    <style:properties text:space-before="3.001cm" text:min-label-width="3cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="3" text:style-name="Numbering Symbols" style:num-format="1" text:start-value="3">
    <style:properties text:space-before="6.001cm" text:min-label-width="3cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="4" text:style-name="Numbering Symbols" style:num-format="1" text:start-value="4">
    <style:properties text:space-before="9.002cm" text:min-label-width="3cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="5" text:style-name="Numbering Symbols" style:num-format="1" text:start-value="5">
    <style:properties text:space-before="12.002cm" text:min-label-width="3cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="6" text:style-name="Numbering Symbols" style:num-format="1" text:start-value="6">
    <style:properties text:space-before="15.002cm" text:min-label-width="3cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="7" text:style-name="Numbering Symbols" style:num-format="1" text:start-value="7">
    <style:properties text:space-before="18.003cm" text:min-label-width="3cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="8" text:style-name="Numbering Symbols" style:num-format="1" text:start-value="8">
    <style:properties text:space-before="21.003cm" text:min-label-width="3cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="9" text:style-name="Numbering Symbols" style:num-format="1" text:start-value="9">
    <style:properties text:space-before="24.003cm" text:min-label-width="3cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="10" text:style-name="Numbering Symbols" style:num-format="1" text:start-value="10">
    <style:properties text:space-before="27.004cm" text:min-label-width="3cm"/>
   </text:list-level-style-number>
  </text:list-style>
  <text:list-style style:name="List 1">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" text:bullet-char="n">
    <style:properties text:min-label-width="0.499cm" fo:font-family="ZapfDingbats" style:font-family-generic="decorative" style:font-pitch="variable"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" text:bullet-char="n">
    <style:properties text:space-before="0.395cm" text:min-label-width="0.499cm" fo:font-family="ZapfDingbats" style:font-family-generic="decorative" style:font-pitch="variable"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" text:bullet-char="n">
    <style:properties text:space-before="0.79cm" text:min-label-width="0.499cm" fo:font-family="ZapfDingbats" style:font-family-generic="decorative" style:font-pitch="variable"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" text:bullet-char="n">
    <style:properties text:space-before="1.186cm" text:min-label-width="0.499cm" fo:font-family="ZapfDingbats" style:font-family-generic="decorative" style:font-pitch="variable"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" text:bullet-char="n">
    <style:properties text:space-before="1.581cm" text:min-label-width="0.499cm" fo:font-family="ZapfDingbats" style:font-family-generic="decorative" style:font-pitch="variable"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" text:bullet-char="n">
    <style:properties text:space-before="1.976cm" text:min-label-width="0.499cm" fo:font-family="ZapfDingbats" style:font-family-generic="decorative" style:font-pitch="variable"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" text:bullet-char="n">
    <style:properties text:space-before="2.371cm" text:min-label-width="0.499cm" fo:font-family="ZapfDingbats" style:font-family-generic="decorative" style:font-pitch="variable"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" text:bullet-char="n">
    <style:properties text:space-before="2.766cm" text:min-label-width="0.499cm" fo:font-family="ZapfDingbats" style:font-family-generic="decorative" style:font-pitch="variable"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" text:bullet-char="n">
    <style:properties text:space-before="3.161cm" text:min-label-width="0.499cm" fo:font-family="ZapfDingbats" style:font-family-generic="decorative" style:font-pitch="variable"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" text:bullet-char="n">
    <style:properties text:space-before="3.556cm" text:min-label-width="0.499cm" fo:font-family="ZapfDingbats" style:font-family-generic="decorative" style:font-pitch="variable"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="List 2">
   <text:list-level-style-bullet text:level="1" text:style-name="Numbering Symbols" text:bullet-char="–">
    <style:properties text:min-label-width="0.296cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Numbering Symbols" text:bullet-char="–">
    <style:properties text:space-before="0.297cm" text:min-label-width="0.296cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Numbering Symbols" text:bullet-char="–">
    <style:properties text:space-before="0.593cm" text:min-label-width="0.296cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Numbering Symbols" text:bullet-char="–">
    <style:properties text:space-before="0.889cm" text:min-label-width="0.296cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Numbering Symbols" text:bullet-char="–">
    <style:properties text:space-before="1.186cm" text:min-label-width="0.296cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Numbering Symbols" text:bullet-char="–">
    <style:properties text:space-before="1.482cm" text:min-label-width="0.296cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Numbering Symbols" text:bullet-char="–">
    <style:properties text:space-before="1.778cm" text:min-label-width="0.296cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Numbering Symbols" text:bullet-char="–">
    <style:properties text:space-before="2.075cm" text:min-label-width="0.296cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Numbering Symbols" text:bullet-char="–">
    <style:properties text:space-before="2.371cm" text:min-label-width="0.296cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Numbering Symbols" text:bullet-char="–">
    <style:properties text:space-before="2.667cm" text:min-label-width="0.296cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="Enumeration_1">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="">
    <style:properties text:space-before="0.499cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="">
    <style:properties text:space-before="0.999cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="">
    <style:properties text:space-before="1.498cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="">
    <style:properties text:space-before="1.997cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="">
    <style:properties text:space-before="2.496cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="">
    <style:properties text:space-before="2.995cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="">
    <style:properties text:space-before="3.494cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="">
    <style:properties text:space-before="3.994cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="">
    <style:properties text:space-before="4.493cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:footnotes-configuration text:citation-style-name="Footnote Symbol" text:citation-body-style-name="Footnote anchor" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
  <text:endnotes-configuration style:num-format="i" text:start-value="0"/>
  <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
 </office:styles>
 <office:automatic-styles>
  <style:style style:name="Table11" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table11.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table11.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table42" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table42.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table42.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table24" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table24.A" style:family="table-column">
   <style:properties style:column-width="4.713cm" style:rel-column-width="20005*"/>
  </style:style>
  <style:style style:name="Table24.B" style:family="table-column">
   <style:properties style:column-width="10.726cm" style:rel-column-width="45530*"/>
  </style:style>
  <style:style style:name="Table24.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table24.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table24.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table44" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table44.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table44.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table25" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table25.A" style:family="table-column">
   <style:properties style:column-width="2.45cm" style:rel-column-width="8933*"/>
  </style:style>
  <style:style style:name="Table25.B" style:family="table-column">
   <style:properties style:column-width="15.529cm" style:rel-column-width="56602*"/>
  </style:style>
  <style:style style:name="Table25.A1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table25.B1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table2" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Table2.A" style:family="table-column">
   <style:properties style:column-width="3.424cm" style:rel-column-width="14532*"/>
  </style:style>
  <style:style style:name="Table2.B" style:family="table-column">
   <style:properties style:column-width="12.016cm" style:rel-column-width="51003*"/>
  </style:style>
  <style:style style:name="Table2.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table2.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table2.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table66" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table66.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table66.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table3" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Table3.A" style:family="table-column">
   <style:properties style:column-width="3.422cm" style:rel-column-width="14525*"/>
  </style:style>
  <style:style style:name="Table3.B" style:family="table-column">
   <style:properties style:column-width="12.017cm" style:rel-column-width="51010*"/>
  </style:style>
  <style:style style:name="Table3.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table3.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table3.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table48" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table48.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table48.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table27" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Table27.A" style:family="table-column">
   <style:properties style:column-width="3.369cm" style:rel-column-width="14300*"/>
  </style:style>
  <style:style style:name="Table27.B" style:family="table-column">
   <style:properties style:column-width="12.07cm" style:rel-column-width="51235*"/>
  </style:style>
  <style:style style:name="Table27.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table27.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table27.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table29" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table29.A" style:family="table-column">
   <style:properties style:column-width="3.404cm" style:rel-column-width="14450*"/>
  </style:style>
  <style:style style:name="Table29.B" style:family="table-column">
   <style:properties style:column-width="12.035cm" style:rel-column-width="51085*"/>
  </style:style>
  <style:style style:name="Table29.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table29.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table29.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table28" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table28.A" style:family="table-column">
   <style:properties style:column-width="3.404cm" style:rel-column-width="14450*"/>
  </style:style>
  <style:style style:name="Table28.B" style:family="table-column">
   <style:properties style:column-width="12.035cm" style:rel-column-width="51085*"/>
  </style:style>
  <style:style style:name="Table28.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table28.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table28.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table10" style:family="table">
   <style:properties style:width="17.979cm" fo:margin-top="0.3cm" fo:margin-bottom="0.3cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table10.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table10.A1" style:family="table-cell">
   <style:properties fo:vertical-align="middle" fo:padding="0cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table4" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Table4.A" style:family="table-column">
   <style:properties style:column-width="3.413cm" style:rel-column-width="14487*"/>
  </style:style>
  <style:style style:name="Table4.B" style:family="table-column">
   <style:properties style:column-width="12.026cm" style:rel-column-width="51048*"/>
  </style:style>
  <style:style style:name="Table4.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table4.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table4.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table30" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table30.A" style:family="table-column">
   <style:properties style:column-width="3.424cm" style:rel-column-width="14532*"/>
  </style:style>
  <style:style style:name="Table30.B" style:family="table-column">
   <style:properties style:column-width="12.016cm" style:rel-column-width="51003*"/>
  </style:style>
  <style:style style:name="Table30.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table30.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table30.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table49" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table49.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table49.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table5" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Table5.A" style:family="table-column">
   <style:properties style:column-width="4.113cm" style:rel-column-width="17460*"/>
  </style:style>
  <style:style style:name="Table5.C" style:family="table-column">
   <style:properties style:column-width="2.427cm" style:rel-column-width="10299*"/>
  </style:style>
  <style:style style:name="Table5.D" style:family="table-column">
   <style:properties style:column-width="2.293cm" style:rel-column-width="9737*"/>
  </style:style>
  <style:style style:name="Table5.E" style:family="table-column">
   <style:properties style:column-width="2.492cm" style:rel-column-width="10579*"/>
  </style:style>
  <style:style style:name="Table5.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table5.E1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table5.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table5.E2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table12" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Table12.A" style:family="table-column">
   <style:properties style:column-width="4.106cm" style:rel-column-width="17430*"/>
  </style:style>
  <style:style style:name="Table12.B" style:family="table-column">
   <style:properties style:column-width="11.333cm" style:rel-column-width="48105*"/>
  </style:style>
  <style:style style:name="Table12.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table12.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table12.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table13" style:family="table">
   <style:properties style:width="9.64cm" fo:margin-left="2.54cm" fo:margin-right="5.8cm" table:align="margins" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Table13.A" style:family="table-column">
   <style:properties style:column-width="3.45cm" style:rel-column-width="23452*"/>
  </style:style>
  <style:style style:name="Table13.B" style:family="table-column">
   <style:properties style:column-width="2.831cm" style:rel-column-width="19241*"/>
  </style:style>
  <style:style style:name="Table13.C" style:family="table-column">
   <style:properties style:column-width="3.36cm" style:rel-column-width="22842*"/>
  </style:style>
  <style:style style:name="Table13.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table13.C1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table13.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table13.C2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table14" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Table14.A" style:family="table-column">
   <style:properties style:column-width="3.083cm" style:rel-column-width="13087*"/>
  </style:style>
  <style:style style:name="Table14.B" style:family="table-column">
   <style:properties style:column-width="12.356cm" style:rel-column-width="52448*"/>
  </style:style>
  <style:style style:name="Table14.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table14.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table14.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table15" style:family="table">
   <style:properties style:width="9.987cm" fo:margin-left="2.54cm" fo:margin-right="5.452cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table15.A" style:family="table-column">
   <style:properties style:column-width="2.607cm" style:rel-column-width="17105*"/>
  </style:style>
  <style:style style:name="Table15.B" style:family="table-column">
   <style:properties style:column-width="1.762cm" style:rel-column-width="11565*"/>
  </style:style>
  <style:style style:name="Table15.C" style:family="table-column">
   <style:properties style:column-width="1.018cm" style:rel-column-width="6675*"/>
  </style:style>
  <style:style style:name="Table15.D" style:family="table-column">
   <style:properties style:column-width="4.6cm" style:rel-column-width="30190*"/>
  </style:style>
  <style:style style:name="Table15.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table15.D1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table15.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table15.D2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table43" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table43.A" style:family="table-column">
   <style:properties style:column-width="2.45cm" style:rel-column-width="8933*"/>
  </style:style>
  <style:style style:name="Table43.B" style:family="table-column">
   <style:properties style:column-width="15.529cm" style:rel-column-width="56602*"/>
  </style:style>
  <style:style style:name="Table43.A1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table43.B1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table8" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Table8.A" style:family="table-column">
   <style:properties style:column-width="3.42cm" style:rel-column-width="14517*"/>
  </style:style>
  <style:style style:name="Table8.B" style:family="table-column">
   <style:properties style:column-width="12.019cm" style:rel-column-width="51018*"/>
  </style:style>
  <style:style style:name="Table8.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table8.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table8.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table8.A5" style:family="table-cell">
   <style:properties fo:background-color="transparent" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table9" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table9.A" style:family="table-column">
   <style:properties style:column-width="3.424cm" style:rel-column-width="14532*"/>
  </style:style>
  <style:style style:name="Table9.B" style:family="table-column">
   <style:properties style:column-width="12.016cm" style:rel-column-width="51003*"/>
  </style:style>
  <style:style style:name="Table9.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table9.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table9.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table45" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table45.A" style:family="table-column">
   <style:properties style:column-width="3.889cm" style:rel-column-width="16509*"/>
  </style:style>
  <style:style style:name="Table45.B" style:family="table-column">
   <style:properties style:column-width="11.55cm" style:rel-column-width="49026*"/>
  </style:style>
  <style:style style:name="Table45.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6ff" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table45.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table45.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table46" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table46.A" style:family="table-column">
   <style:properties style:column-width="3.895cm" style:rel-column-width="16531*"/>
  </style:style>
  <style:style style:name="Table46.B" style:family="table-column">
   <style:properties style:column-width="11.545cm" style:rel-column-width="49004*"/>
  </style:style>
  <style:style style:name="Table46.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6ff" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table46.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table46.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table47" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Table47.A" style:family="table-column">
   <style:properties style:column-width="4.937cm" style:rel-column-width="20953*"/>
  </style:style>
  <style:style style:name="Table47.B" style:family="table-column">
   <style:properties style:column-width="4.359cm" style:rel-column-width="18504*"/>
  </style:style>
  <style:style style:name="Table47.C" style:family="table-column">
   <style:properties style:column-width="6.144cm" style:rel-column-width="26078*"/>
  </style:style>
  <style:style style:name="Table47.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table47.C1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table47.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table47.C2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table50" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table50.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table50.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table32" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table32.A" style:family="table-column">
   <style:properties style:column-width="2.45cm" style:rel-column-width="8933*"/>
  </style:style>
  <style:style style:name="Table32.B" style:family="table-column">
   <style:properties style:column-width="15.529cm" style:rel-column-width="56602*"/>
  </style:style>
  <style:style style:name="Table32.A1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table32.B1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table51" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table51.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table51.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Tabelle1" style:family="table">
   <style:properties style:width="17.979cm" fo:margin-top="0.3cm" fo:margin-bottom="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Tabelle1.A" style:family="table-column">
   <style:properties style:column-width="2.45cm" style:rel-column-width="8933*"/>
  </style:style>
  <style:style style:name="Tabelle1.B" style:family="table-column">
   <style:properties style:column-width="15.529cm" style:rel-column-width="56602*"/>
  </style:style>
  <style:style style:name="Tabelle1.A1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Tabelle1.B1" style:family="table-cell">
   <style:properties fo:background-color="transparent" fo:padding="0.099cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table31" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table31.A" style:family="table-column">
   <style:properties style:column-width="2.45cm" style:rel-column-width="8933*"/>
  </style:style>
  <style:style style:name="Table31.B" style:family="table-column">
   <style:properties style:column-width="15.529cm" style:rel-column-width="56602*"/>
  </style:style>
  <style:style style:name="Table31.A1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table31.B1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table17" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" table:align="margins" style:may-break-between-rows="false"/>
  </style:style>
  <style:style style:name="Table17.A" style:family="table-column">
   <style:properties style:column-width="1.261cm" style:rel-column-width="5355*"/>
  </style:style>
  <style:style style:name="Table17.B" style:family="table-column">
   <style:properties style:column-width="2.487cm" style:rel-column-width="10554*"/>
  </style:style>
  <style:style style:name="Table17.C" style:family="table-column">
   <style:properties style:column-width="2.588cm" style:rel-column-width="10981*"/>
  </style:style>
  <style:style style:name="Table17.D" style:family="table-column">
   <style:properties style:column-width="3.588cm" style:rel-column-width="15228*"/>
  </style:style>
  <style:style style:name="Table17.E" style:family="table-column">
   <style:properties style:column-width="1.425cm" style:rel-column-width="6052*"/>
  </style:style>
  <style:style style:name="Table17.F" style:family="table-column">
   <style:properties style:column-width="1.221cm" style:rel-column-width="5183*"/>
  </style:style>
  <style:style style:name="Table17.G" style:family="table-column">
   <style:properties style:column-width="2.87cm" style:rel-column-width="12182*"/>
  </style:style>
  <style:style style:name="Table17.A1" style:family="table-cell">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table17.G1" style:family="table-cell">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table17.A2" style:family="table-cell" style:data-style-name="N5000">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table17.B2" style:family="table-cell">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table17.G2" style:family="table-cell" style:data-style-name="N37">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table19" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" style:may-break-between-rows="false"/>
  </style:style>
  <style:style style:name="Table19.A" style:family="table-column">
   <style:properties style:column-width="5.119cm" style:rel-column-width="21730*"/>
  </style:style>
  <style:style style:name="Table19.B" style:family="table-column">
   <style:properties style:column-width="5.159cm" style:rel-column-width="21902*"/>
  </style:style>
  <style:style style:name="Table19.C" style:family="table-column">
   <style:properties style:column-width="5.159cm" style:rel-column-width="21903*"/>
  </style:style>
  <style:style style:name="Table19.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table19.C1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table19.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table19.C2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table20" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table20.A" style:family="table-column">
   <style:properties style:column-width="5.094cm" style:rel-column-width="21620*"/>
  </style:style>
  <style:style style:name="Table20.B" style:family="table-column">
   <style:properties style:column-width="5.173cm" style:rel-column-width="21957*"/>
  </style:style>
  <style:style style:name="Table20.C" style:family="table-column">
   <style:properties style:column-width="5.173cm" style:rel-column-width="21958*"/>
  </style:style>
  <style:style style:name="Table20.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table20.C1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table20.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table20.C2" style:family="table-cell" style:data-style-name="N5037">
   <style:properties fo:vertical-align="bottom" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table52" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table52.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table52.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table53" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table53.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table53.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table7" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" fo:keep-with-next="false"/>
  </style:style>
  <style:style style:name="Table7.A" style:family="table-column">
   <style:properties style:column-width="3.422cm" style:rel-column-width="14525*"/>
  </style:style>
  <style:style style:name="Table7.B" style:family="table-column">
   <style:properties style:column-width="12.017cm" style:rel-column-width="51010*"/>
  </style:style>
  <style:style style:name="Table7.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table7.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table7.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table26" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table26.A" style:family="table-column">
   <style:properties style:column-width="5.094cm" style:rel-column-width="21620*"/>
  </style:style>
  <style:style style:name="Table26.B" style:family="table-column">
   <style:properties style:column-width="5.173cm" style:rel-column-width="21957*"/>
  </style:style>
  <style:style style:name="Table26.C" style:family="table-column">
   <style:properties style:column-width="5.173cm" style:rel-column-width="21958*"/>
  </style:style>
  <style:style style:name="Table26.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table26.C1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table26.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table26.C2" style:family="table-cell" style:data-style-name="N5037">
   <style:properties fo:vertical-align="bottom" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table21" style:family="table">
   <style:properties style:width="17.979cm" fo:margin-top="0.3cm" fo:margin-bottom="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table21.A" style:family="table-column">
   <style:properties style:column-width="2.45cm" style:rel-column-width="8933*"/>
  </style:style>
  <style:style style:name="Table21.B" style:family="table-column">
   <style:properties style:column-width="15.529cm" style:rel-column-width="56602*"/>
  </style:style>
  <style:style style:name="Table21.A1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table21.B1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table54" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table54.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table54.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table23" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table23.A" style:family="table-column">
   <style:properties style:column-width="6.174cm" style:rel-column-width="26208*"/>
  </style:style>
  <style:style style:name="Table23.B" style:family="table-column">
   <style:properties style:column-width="9.266cm" style:rel-column-width="39327*"/>
  </style:style>
  <style:style style:name="Table23.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table23.B1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table23.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table23.B2" style:family="table-cell" style:data-style-name="N5104">
   <style:properties fo:vertical-align="bottom" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table1" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" style:may-break-between-rows="false"/>
  </style:style>
  <style:style style:name="Table1.A" style:family="table-column">
   <style:properties style:column-width="1.035cm" style:rel-column-width="4396*"/>
  </style:style>
  <style:style style:name="Table1.B" style:family="table-column">
   <style:properties style:column-width="2.646cm" style:rel-column-width="11228*"/>
  </style:style>
  <style:style style:name="Table1.C" style:family="table-column">
   <style:properties style:column-width="2.464cm" style:rel-column-width="10456*"/>
  </style:style>
  <style:style style:name="Table1.D" style:family="table-column">
   <style:properties style:column-width="3.722cm" style:rel-column-width="15797*"/>
  </style:style>
  <style:style style:name="Table1.E" style:family="table-column">
   <style:properties style:column-width="1.626cm" style:rel-column-width="6906*"/>
  </style:style>
  <style:style style:name="Table1.F" style:family="table-column">
   <style:properties style:column-width="1.443cm" style:rel-column-width="6127*"/>
  </style:style>
  <style:style style:name="Table1.G" style:family="table-column">
   <style:properties style:column-width="2.503cm" style:rel-column-width="10625*"/>
  </style:style>
  <style:style style:name="Table1.A1" style:family="table-cell">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table1.G1" style:family="table-cell">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table1.A2" style:family="table-cell" style:data-style-name="N0">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table1.G2" style:family="table-cell" style:data-style-name="N5037">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table16" style:family="table">
   <style:properties style:width="15.429cm" fo:margin-left="2.54cm" fo:margin-right="0.011cm" table:align="margins" style:may-break-between-rows="false"/>
  </style:style>
  <style:style style:name="Table16.A" style:family="table-column">
   <style:properties style:column-width="1.849cm" style:rel-column-width="7853*"/>
  </style:style>
  <style:style style:name="Table16.B" style:family="table-column">
   <style:properties style:column-width="3.05cm" style:rel-column-width="12957*"/>
  </style:style>
  <style:style style:name="Table16.C" style:family="table-column">
   <style:properties style:column-width="3.09cm" style:rel-column-width="13129*"/>
  </style:style>
  <style:style style:name="Table16.D" style:family="table-column">
   <style:properties style:column-width="2.295cm" style:rel-column-width="9749*"/>
  </style:style>
  <style:style style:name="Table16.E" style:family="table-column">
   <style:properties style:column-width="1.808cm" style:rel-column-width="7681*"/>
  </style:style>
  <style:style style:name="Table16.F" style:family="table-column">
   <style:properties style:column-width="3.336cm" style:rel-column-width="14166*"/>
  </style:style>
  <style:style style:name="Table16.A1" style:family="table-cell">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table16.F1" style:family="table-cell">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table16.A2" style:family="table-cell" style:data-style-name="N0">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table16.F2" style:family="table-cell">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table18" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" style:may-break-between-rows="false"/>
  </style:style>
  <style:style style:name="Table18.A" style:family="table-column">
   <style:properties style:column-width="2.223cm" style:rel-column-width="9437*"/>
  </style:style>
  <style:style style:name="Table18.B" style:family="table-column">
   <style:properties style:column-width="2.018cm" style:rel-column-width="8568*"/>
  </style:style>
  <style:style style:name="Table18.C" style:family="table-column">
   <style:properties style:column-width="1.612cm" style:rel-column-width="6845*"/>
  </style:style>
  <style:style style:name="Table18.D" style:family="table-column">
   <style:properties style:column-width="2.715cm" style:rel-column-width="11519*"/>
  </style:style>
  <style:style style:name="Table18.E" style:family="table-column">
   <style:properties style:column-width="2.409cm" style:rel-column-width="10230*"/>
  </style:style>
  <style:style style:name="Table18.F" style:family="table-column">
   <style:properties style:column-width="4.461cm" style:rel-column-width="18936*"/>
  </style:style>
  <style:style style:name="Table18.A1" style:family="table-cell">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table18.F1" style:family="table-cell">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table18.A2" style:family="table-cell" style:data-style-name="N0">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table18.E2" style:family="table-cell" style:data-style-name="N5037">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table18.F2" style:family="table-cell" style:data-style-name="N5104">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table18.A3" style:family="table-cell" style:data-style-name="N0">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="none"/>
  </style:style>
  <style:style style:name="Table18.E3" style:family="table-cell" style:data-style-name="N5037">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="none"/>
  </style:style>
  <style:style style:name="Table18.F3" style:family="table-cell" style:data-style-name="N5104">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="none"/>
  </style:style>
  <style:style style:name="Table18.E4" style:family="table-cell" style:data-style-name="N5037">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table18.F4" style:family="table-cell" style:data-style-name="N5104">
   <style:properties fo:vertical-align="middle" fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table22" style:family="table">
   <style:properties style:width="17.979cm" fo:margin-top="0.3cm" fo:margin-bottom="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table22.A" style:family="table-column">
   <style:properties style:column-width="2.45cm" style:rel-column-width="8933*"/>
  </style:style>
  <style:style style:name="Table22.B" style:family="table-column">
   <style:properties style:column-width="15.529cm" style:rel-column-width="56602*"/>
  </style:style>
  <style:style style:name="Table22.A1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table22.B1" style:family="table-cell">
   <style:properties fo:padding="0.099cm" fo:border-left="none" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table55" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table55.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table55.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table56" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table56.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table56.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table57" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table57.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table57.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table58" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table58.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table58.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table6" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="Table6.A" style:family="table-column">
   <style:properties style:column-width="3.267cm" style:rel-column-width="13866*"/>
  </style:style>
  <style:style style:name="Table6.B" style:family="table-column">
   <style:properties style:column-width="12.173cm" style:rel-column-width="51669*"/>
  </style:style>
  <style:style style:name="Table6.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6e6" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table6.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table6.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table59" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table59.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table59.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table60" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table60.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table60.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table61" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table61.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table61.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table62" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table62.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table62.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table63" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table63.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table63.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table64" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table64.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table64.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table33" style:family="table">
   <style:properties style:width="15.429cm" fo:margin-left="2.544cm" fo:margin-right="0.007cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table33.A" style:family="table-column">
   <style:properties style:column-width="6.452cm" style:rel-column-width="27409*"/>
  </style:style>
  <style:style style:name="Table33.B" style:family="table-column">
   <style:properties style:column-width="8.976cm" style:rel-column-width="38126*"/>
  </style:style>
  <style:style style:name="Table33.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table33.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table33.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table34" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table34.A" style:family="table-column">
   <style:properties style:column-width="5.371cm" style:rel-column-width="22798*"/>
  </style:style>
  <style:style style:name="Table34.B" style:family="table-column">
   <style:properties style:column-width="10.068cm" style:rel-column-width="42737*"/>
  </style:style>
  <style:style style:name="Table34.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6ff" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table34.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table34.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table65" style:family="table">
   <style:properties style:width="17.979cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table65.A" style:family="table-column">
   <style:properties style:column-width="17.979cm" style:rel-column-width="65535*"/>
  </style:style>
  <style:style style:name="Table65.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="none"/>
  </style:style>
  <style:style style:name="Table40" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table40.A" style:family="table-column">
   <style:properties style:column-width="4.874cm" style:rel-column-width="20686*"/>
  </style:style>
  <style:style style:name="Table40.B" style:family="table-column">
   <style:properties style:column-width="10.566cm" style:rel-column-width="44849*"/>
  </style:style>
  <style:style style:name="Table40.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6ff" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table40.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table40.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table41" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table41.A" style:family="table-column">
   <style:properties style:column-width="6.488cm" style:rel-column-width="27537*"/>
  </style:style>
  <style:style style:name="Table41.B" style:family="table-column">
   <style:properties style:column-width="8.952cm" style:rel-column-width="37998*"/>
  </style:style>
  <style:style style:name="Table41.A1" style:family="table-cell">
   <style:properties fo:background-color="#e6e6ff" fo:padding="0.097cm" fo:border="0.002cm solid #000000">
    <style:background-image/>
   </style:properties>
  </style:style>
  <style:style style:name="Table41.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table41.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table35" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table35.A" style:family="table-column">
   <style:properties style:column-width="5.935cm" style:rel-column-width="25197*"/>
  </style:style>
  <style:style style:name="Table35.B" style:family="table-column">
   <style:properties style:column-width="9.504cm" style:rel-column-width="40338*"/>
  </style:style>
  <style:style style:name="Table35.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table35.B1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table35.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table35.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table36" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table36.A" style:family="table-column">
   <style:properties style:column-width="4.286cm" style:rel-column-width="18195*"/>
  </style:style>
  <style:style style:name="Table36.B" style:family="table-column">
   <style:properties style:column-width="11.153cm" style:rel-column-width="47340*"/>
  </style:style>
  <style:style style:name="Table36.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table36.B1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table36.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table36.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table37" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table37.A" style:family="table-column">
   <style:properties style:column-width="4.272cm" style:rel-column-width="18135*"/>
  </style:style>
  <style:style style:name="Table37.B" style:family="table-column">
   <style:properties style:column-width="11.167cm" style:rel-column-width="47400*"/>
  </style:style>
  <style:style style:name="Table37.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table37.B1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table37.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table37.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table38" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table38.A" style:family="table-column">
   <style:properties style:column-width="4.272cm" style:rel-column-width="18135*"/>
  </style:style>
  <style:style style:name="Table38.B" style:family="table-column">
   <style:properties style:column-width="11.167cm" style:rel-column-width="47400*"/>
  </style:style>
  <style:style style:name="Table38.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table38.B1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table38.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table38.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table39" style:family="table">
   <style:properties style:width="15.439cm" fo:margin-left="2.54cm" fo:margin-right="0cm" table:align="margins"/>
  </style:style>
  <style:style style:name="Table39.A" style:family="table-column">
   <style:properties style:column-width="4.277cm" style:rel-column-width="18158*"/>
  </style:style>
  <style:style style:name="Table39.B" style:family="table-column">
   <style:properties style:column-width="11.162cm" style:rel-column-width="47377*"/>
  </style:style>
  <style:style style:name="Table39.A1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table39.B1" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table39.A2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="Table39.B2" style:family="table-cell">
   <style:properties fo:padding="0.097cm" fo:border-left="0.002cm solid #000000" fo:border-right="0.002cm solid #000000" fo:border-top="none" fo:border-bottom="0.002cm solid #000000"/>
  </style:style>
  <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Header">
   <style:properties fo:color="#ffffff" style:text-background-color="#800000"/>
  </style:style>
  <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Footer right">
   <style:properties fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Head 1" style:master-page-name="Chapter_Start">
   <style:properties style:page-number="0"/>
  </style:style>
  <style:style style:name="P4" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L1"/>
  <style:style style:name="P5" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L2"/>
  <style:style style:name="P6" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L3"/>
  <style:style style:name="P7" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L4"/>
  <style:style style:name="P8" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L5"/>
  <style:style style:name="P9" style:family="paragraph" style:parent-style-name="Illustration">
   <style:properties fo:margin-top="0.31cm" fo:margin-bottom="0.21cm"/>
  </style:style>
  <style:style style:name="P10" style:family="paragraph" style:parent-style-name="Head 3">
   <style:properties fo:language="en" fo:country="US"/>
  </style:style>
  <style:style style:name="P11" style:family="paragraph" style:parent-style-name="TextInTable">
   <style:properties style:font-name="Courier New"/>
  </style:style>
  <style:style style:name="P12" style:family="paragraph" style:parent-style-name="TextInTable">
   <style:properties style:font-name="Palatino"/>
  </style:style>
  <style:style style:name="P13" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L6"/>
  <style:style style:name="P14" style:family="paragraph" style:parent-style-name="Paragraph" style:master-page-name="">
   <style:properties style:page-number="0" fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="P15" style:family="paragraph" style:parent-style-name="TextInTable" style:list-style-name="L7"/>
  <style:style style:name="P16" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L8"/>
  <style:style style:name="P17" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L9"/>
  <style:style style:name="P18" style:family="paragraph" style:parent-style-name="TextInTable">
   <style:properties style:font-name="Thorndale" style:font-name-asian="Thorndale" style:font-name-complex="Thorndale" fo:text-align="center" style:justify-single-word="false"/>
  </style:style>
  <style:style style:name="P19" style:family="paragraph" style:parent-style-name="TextInTable">
   <style:properties fo:text-align="center" style:justify-single-word="false"/>
  </style:style>
  <style:style style:name="P20" style:family="paragraph" style:parent-style-name="Code">
   <style:properties fo:keep-with-next="true"/>
  </style:style>
  <style:style style:name="P21" style:family="paragraph" style:parent-style-name="MethodSignatures" style:list-style-name="L10"/>
  <style:style style:name="P22" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L11"/>
  <style:style style:name="P23" style:family="paragraph" style:parent-style-name="TextInTable" style:list-style-name="L12"/>
  <style:style style:name="P24" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L13"/>
  <style:style style:name="P25" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L14"/>
  <style:style style:name="P26" style:family="paragraph" style:parent-style-name="TitledListBody" style:list-style-name="L15"/>
  <style:style style:name="P27" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L16">
   <style:properties fo:margin-left="2.491cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"/>
  </style:style>
  <style:style style:name="P28" style:family="paragraph" style:parent-style-name="Head 4" style:master-page-name="">
   <style:properties style:page-number="0"/>
  </style:style>
  <style:style style:name="P29" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L17"/>
  <style:style style:name="P30" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L18"/>
  <style:style style:name="P31" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L19"/>
  <style:style style:name="P32" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L20"/>
  <style:style style:name="P33" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L21"/>
  <style:style style:name="P34" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L22"/>
  <style:style style:name="P35" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L23"/>
  <style:style style:name="P36" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L24"/>
  <style:style style:name="P37" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L25"/>
  <style:style style:name="P38" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L26"/>
  <style:style style:name="P39" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L27"/>
  <style:style style:name="P40" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L28"/>
  <style:style style:name="P41" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L29"/>
  <style:style style:name="P42" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L30"/>
  <style:style style:name="P43" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L31"/>
  <style:style style:name="P44" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L32"/>
  <style:style style:name="P45" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L33"/>
  <style:style style:name="P46" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L34"/>
  <style:style style:name="P47" style:family="paragraph" style:parent-style-name="Paragraph" style:master-page-name="">
   <style:properties fo:margin-top="0.4cm" fo:margin-bottom="0cm" style:page-number="0"/>
  </style:style>
  <style:style style:name="P48" style:family="paragraph" style:parent-style-name="Code">
   <style:properties fo:margin-top="0.4cm" fo:margin-bottom="0cm"/>
  </style:style>
  <style:style style:name="P49" style:family="paragraph" style:parent-style-name="Paragraph" style:list-style-name="L35"/>
  <style:style style:name="T1" style:family="text">
   <style:properties fo:font-weight="normal"/>
  </style:style>
  <style:style style:name="T2" style:family="text">
   <style:properties fo:color="#000000" style:font-name="Palatino" fo:font-size="10pt" fo:language="en" fo:country="US"/>
  </style:style>
  <style:style style:name="T3" style:family="text">
   <style:properties fo:language="fr" fo:country="FR"/>
  </style:style>
  <style:style style:name="T4" style:family="text" style:parent-style-name="Code (in text)">
   <style:properties fo:font-size="10pt"/>
  </style:style>
  <style:style style:name="T5" style:family="text">
   <style:properties style:font-name="Palatino"/>
  </style:style>
  <style:style style:name="T6" style:family="text">
   <style:properties fo:language="en" fo:country="US"/>
  </style:style>
  <style:style style:name="T7" style:family="text" style:parent-style-name="ChapterRef">
   <style:properties fo:language="en" fo:country="US"/>
  </style:style>
  <style:style style:name="T8" style:family="text">
   <style:properties fo:font-weight="bold"/>
  </style:style>
  <style:style style:name="T9" style:family="text">
   <style:properties style:font-size-asian="9.5pt" style:font-size-complex="9.5pt"/>
  </style:style>
  <style:style style:name="T10" style:family="text" style:parent-style-name="Code (in text)">
   <style:properties style:font-size-asian="9.5pt" style:font-size-complex="9.5pt"/>
  </style:style>
  <style:style style:name="T11" style:family="text">
   <style:properties fo:font-style="italic" style:font-size-asian="9.5pt" style:font-style-asian="italic" style:font-size-complex="9.5pt" style:font-style-complex="italic"/>
  </style:style>
  <style:style style:name="T12" style:family="text" style:parent-style-name="Code (in text)">
   <style:properties fo:language="en" fo:country="US"/>
  </style:style>
  <style:style style:name="T13" style:family="text">
   <style:properties style:font-name-asian="Courier1" style:font-name-complex="Courier1"/>
  </style:style>
  <style:style style:name="T14" style:family="text" style:parent-style-name="Emphasis">
   <style:properties fo:font-weight="normal"/>
  </style:style>
  <style:style style:name="T15" style:family="text" style:parent-style-name="Code (in text)">
   <style:properties style:font-name-asian="Courier1" style:font-name-complex="Courier1"/>
  </style:style>
  <style:style style:name="T16" style:family="text" style:parent-style-name="Source Text">
   <style:properties style:font-name="Times New Roman3"/>
  </style:style>
  <style:style style:name="T17" style:family="text" style:parent-style-name="Code (in text)">
   <style:properties style:font-name="Courier New"/>
  </style:style>
  <style:style style:name="T18" style:family="text">
   <style:properties style:text-background-color="#cccccc"/>
  </style:style>
  <style:style style:name="T19" style:family="text">
   <style:properties fo:color="#000000" style:font-name="Times New Roman1" fo:language="en" fo:country="US"/>
  </style:style>
  <style:style style:name="T20" style:family="text" style:parent-style-name="Code (in text)">
   <style:properties style:font-name="Palatino Linotype"/>
  </style:style>
  <style:style style:name="T21" style:family="text">
   <style:properties style:font-name="Courier New4"/>
  </style:style>
  <style:style style:name="T22" style:family="text" style:parent-style-name="Source Text">
   <style:properties fo:color="#000000" style:font-name="Courier New" fo:font-size="7pt"/>
  </style:style>
  <style:style style:name="T23" style:family="text" style:parent-style-name="Code (in text)">
   <style:properties fo:font-weight="normal"/>
  </style:style>
  <style:style style:name="T24" style:family="text">
   <style:properties fo:color="#000000" style:font-name="Palatino" fo:font-size="9pt" fo:language="en" fo:country="US"/>
  </style:style>
  <style:style style:name="fr1" style:family="graphics" style:parent-style-name="ChapterFrame">
   <style:properties fo:padding="0.049cm" fo:border-left="none" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.018cm solid #000000"/>
  </style:style>
  <style:style style:name="fr2" style:family="graphics" style:parent-style-name="Frame">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:wrap="run-through" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="left" style:horizontal-rel="paragraph-content" fo:padding="0cm" fo:border="none"/>
  </style:style>
  <style:style style:name="fr3" style:family="graphics" style:parent-style-name="Graphics">
   <style:properties fo:margin-top="0cm" fo:margin-bottom="0.101cm" style:wrap="none" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" style:mirror="none" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="1" draw:color-inversion="false" draw:transparency="0%" draw:color-mode="standard"/>
  </style:style>
  <style:style style:name="fr4" style:family="graphics" style:parent-style-name="Graphics">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0.101cm" style:wrap="none" style:vertical-pos="from-top" style:vertical-rel="paragraph-content" style:horizontal-pos="from-left" style:horizontal-rel="paragraph-content" fo:padding="0cm" fo:border="none" style:shadow="none" style:mirror="none" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="1" draw:color-inversion="false" draw:transparency="0%" draw:color-mode="standard"/>
  </style:style>
  <style:style style:name="fr5" style:family="graphics" style:parent-style-name="Graphics">
   <style:properties style:wrap="right" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" style:mirror="none" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="1" draw:color-inversion="false" draw:transparency="0%" draw:color-mode="standard"/>
  </style:style>
  <style:style style:name="fr6" style:family="graphics" style:parent-style-name="Frame">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:wrap="run-through" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="left" style:horizontal-rel="paragraph-content" fo:padding="0cm" fo:border="none" style:shadow="none"/>
  </style:style>
  <style:style style:name="fr7" style:family="graphics" style:parent-style-name="Graphics">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0.101cm" style:wrap="none" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:padding="0cm" fo:border="none" style:shadow="none" style:mirror="none" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="1" draw:color-inversion="false" draw:transparency="0%" draw:color-mode="standard"/>
  </style:style>
  <style:style style:name="fr8" style:family="graphics" style:parent-style-name="Frame">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:wrap="run-through" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="left" style:horizontal-rel="paragraph-content" fo:padding="0cm" fo:border="none"/>
  </style:style>
  <style:style style:name="fr9" style:family="graphics" style:parent-style-name="Frame">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:wrap="run-through" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="left" style:horizontal-rel="paragraph-content" fo:padding="0cm" fo:border="none" style:shadow="none"/>
  </style:style>
  <style:style style:name="fr10" style:family="graphics" style:parent-style-name="Graphics">
   <style:properties fo:margin-top="0cm" fo:margin-bottom="0.101cm" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="left" style:horizontal-rel="paragraph" style:mirror="none" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="1" draw:color-inversion="false" draw:transparency="0%" draw:color-mode="standard"/>
  </style:style>
  <style:style style:name="fr11" style:family="graphics" style:parent-style-name="Frame">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0cm" style:run-through="foreground" style:wrap="run-through" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="left" style:horizontal-rel="paragraph-content" fo:padding="0cm" fo:border="none"/>
  </style:style>
  <style:style style:name="fr12" style:family="graphics" style:parent-style-name="Graphics">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0.101cm" style:run-through="foreground" style:wrap="none" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" fo:padding="0cm" fo:border="none" style:shadow="none" style:mirror="none" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="1" draw:color-inversion="false" draw:transparency="0%" draw:color-mode="standard"/>
  </style:style>
  <style:style style:name="fr13" style:family="graphics" style:parent-style-name="Graphics">
   <style:properties fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.101cm" fo:margin-bottom="0.101cm" style:wrap="none" style:vertical-pos="from-top" style:vertical-rel="paragraph-content" style:horizontal-pos="from-left" style:horizontal-rel="paragraph-content" fo:padding="0cm" fo:border="none" style:shadow="none" style:mirror="none" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="1" draw:color-inversion="false" draw:transparency="0%" draw:color-mode="standard"/>
  </style:style>
  <style:style style:name="fr14" style:family="graphics" style:parent-style-name="Graphics">
   <style:properties fo:margin-top="0cm" fo:margin-bottom="0.101cm" style:horizontal-pos="from-left" style:horizontal-rel="paragraph-content" style:mirror="none" fo:clip="rect(0cm 0cm 0cm 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="1" draw:color-inversion="false" draw:transparency="0%" draw:color-mode="standard"/>
  </style:style>
  <text:list-style style:name="L1">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L2">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L3">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L4">
   <text:list-level-style-number text:level="1" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="2" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="3" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="4" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="5" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="6" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="7" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="8" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="9" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="10" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
  </text:list-style>
  <text:list-style style:name="L5">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L6">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L7">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L8">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L9">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L10">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.499cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.999cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="1.498cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="1.997cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="2.496cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="2.995cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="3.494cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="3.994cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="4.493cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L11">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.499cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.999cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="1.498cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="1.997cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="2.496cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="2.995cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="3.494cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="3.994cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="4.493cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L12">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L13">
   <text:list-level-style-number text:level="1" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="2" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="3" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="4" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="5" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="6" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="7" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="8" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="9" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="10" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
  </text:list-style>
  <text:list-style style:name="L14">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L15">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L16">
   <text:list-level-style-number text:level="1" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="2" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="3" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="4" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="5" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="6" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="7" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="8" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="9" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="10" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
  </text:list-style>
  <text:list-style style:name="L17">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L18">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L19">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L20">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L21">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L22">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L23">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L24">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L25">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L26">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L27">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.08cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.159cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.238cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.318cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.397cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.476cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.556cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.635cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.715cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L28">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.08cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.159cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.238cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.318cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.397cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.476cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.556cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.635cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.715cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L29">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.08cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.159cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.238cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.318cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.397cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.476cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.556cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.635cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.715cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L30">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.08cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.159cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.238cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.318cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.397cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.476cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.556cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.635cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="–">
    <style:properties text:space-before="0.715cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L31">
   <text:list-level-style-number text:level="1" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="2" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="3" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="4" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="5" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="6" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="7" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="8" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="9" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
   <text:list-level-style-number text:level="10" text:style-name="Numbering Symbols" style:num-suffix="." style:num-format="1">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm"/>
   </text:list-level-style-number>
  </text:list-style>
  <text:list-style style:name="L32">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L33">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L34">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="2.501cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.001cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.502cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <text:list-style style:name="L35">
   <text:list-level-style-bullet text:level="1" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="0.748cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="2" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="1.995cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="3" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="3.242cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="4" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="4.489cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="5" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="5.736cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="6" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="6.983cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="7" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="8.23cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="8" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="9.478cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="9" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="10.725cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
   <text:list-level-style-bullet text:level="10" text:style-name="Bullet Symbols" style:num-suffix="." text:bullet-char="•">
    <style:properties text:space-before="11.972cm" text:min-label-width="0.499cm" fo:font-family="StarSymbol" style:font-charset="x-symbol"/>
   </text:list-level-style-bullet>
  </text:list-style>
  <style:page-master style:name="pm1" style:page-usage="mirrored">
   <style:properties fo:page-width="19.05cm" fo:page-height="22.86cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="2.337cm" fo:margin-right="1.27cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style>
    <style:properties fo:min-height="1.016cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.508cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm2">
   <style:properties fo:page-width="20.999cm" fo:page-height="29.699cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style/>
  </style:page-master>
  <style:page-master style:name="pm3" style:page-usage="left">
   <style:properties fo:page-width="19.05cm" fo:page-height="22.86cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="1.27cm" fo:margin-right="2.337cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style>
    <style:properties fo:min-height="1.016cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.508cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm4" style:page-usage="right">
   <style:properties fo:page-width="19.05cm" fo:page-height="22.86cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="2.337cm" fo:margin-right="1.27cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style>
    <style:properties fo:min-height="1.016cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.508cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm5">
   <style:properties fo:page-width="22.721cm" fo:page-height="11.4cm" style:num-format="1" style:print-orientation="landscape" fo:margin-top="0cm" fo:margin-bottom="0cm" fo:margin-left="0cm" fo:margin-right="0cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style/>
  </style:page-master>
  <style:page-master style:name="pm6">
   <style:properties fo:page-width="19.05cm" fo:page-height="22.86cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style/>
  </style:page-master>
  <style:page-master style:name="pm7">
   <style:properties fo:page-width="19.05cm" fo:page-height="22.86cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.91cm" fo:margin-bottom="1.91cm" fo:margin-left="2.341cm" fo:margin-right="1.27cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:columns fo:column-count="0" fo:column-gap="0cm"/>
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style/>
  </style:page-master>
  <style:page-master style:name="pm8" style:page-usage="left">
   <style:properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="1.27cm" fo:margin-right="1.27cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style>
    <style:properties fo:min-height="0.699cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.199cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm9" style:page-usage="left">
   <style:properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="1.27cm" fo:margin-right="2.337cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style/>
  </style:page-master>
  <style:page-master style:name="pm10" style:page-usage="right">
   <style:properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="2.337cm" fo:margin-right="1.27cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style/>
  </style:page-master>
  <style:page-master style:name="pm11" style:page-usage="right">
   <style:properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.91cm" fo:margin-bottom="1.91cm" fo:margin-left="2.341cm" fo:margin-right="1.27cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style>
    <style:properties svg:height="3.59cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="0cm"/>
   </style:header-style>
   <style:footer-style>
    <style:properties fo:min-height="0.699cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.199cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm12" style:page-usage="left">
   <style:properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="1.27cm" fo:margin-right="2.337cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style>
    <style:properties fo:min-height="1.016cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.508cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm13" style:page-usage="right">
   <style:properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="2.337cm" fo:margin-right="1.27cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style>
    <style:properties fo:min-height="1.016cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.508cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm14">
   <style:properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="2.337cm" fo:margin-right="1.27cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style>
    <style:properties svg:height="3.59cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="0cm"/>
   </style:header-style>
   <style:footer-style>
    <style:properties fo:min-height="0.699cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.199cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm15" style:page-usage="left">
   <style:properties fo:page-width="19.05cm" fo:page-height="22.86cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="1.27cm" fo:margin-right="2.337cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style>
    <style:properties fo:min-height="1.02cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.51cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm16" style:page-usage="right">
   <style:properties fo:page-width="19.05cm" fo:page-height="22.86cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="2.337cm" fo:margin-right="1.27cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style>
    <style:properties fo:min-height="1.02cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.51cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm17" style:page-usage="left">
   <style:properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="1.27cm" fo:margin-right="2.337cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:columns fo:column-count="2" fo:column-gap="0.84cm">
     <style:column style:rel-width="32767*" fo:margin-left="0cm" fo:margin-right="0.42cm"/>
     <style:column style:rel-width="32768*" fo:margin-left="0.42cm" fo:margin-right="0cm"/>
    </style:columns>
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style>
    <style:properties fo:min-height="1.02cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.51cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm18" style:page-usage="right">
   <style:properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.905cm" fo:margin-bottom="1.905cm" fo:margin-left="2.337cm" fo:margin-right="1.27cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:columns fo:column-count="2" fo:column-gap="0.84cm">
     <style:column style:rel-width="32767*" fo:margin-left="0cm" fo:margin-right="0.42cm"/>
     <style:column style:rel-width="32768*" fo:margin-left="0.42cm" fo:margin-right="0cm"/>
    </style:columns>
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style>
    <style:properties fo:min-height="1.02cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.51cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm19" style:page-usage="right">
   <style:properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.91cm" fo:margin-bottom="1.91cm" fo:margin-left="2.341cm" fo:margin-right="1.27cm" fo:border="none" fo:padding="0cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:columns fo:column-count="2" fo:column-gap="0.84cm">
     <style:column style:rel-width="32767*" fo:margin-left="0cm" fo:margin-right="0.42cm"/>
     <style:column style:rel-width="32768*" fo:margin-left="0.42cm" fo:margin-right="0cm"/>
    </style:columns>
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style>
    <style:properties svg:height="5.881cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="0.801cm" fo:border-top="none" fo:border-bottom="0.035cm solid #000000" fo:border-left="none" fo:border-right="none" fo:padding="0.499cm"/>
   </style:header-style>
   <style:footer-style>
    <style:properties fo:min-height="1.02cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.51cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm20" style:page-usage="right">
   <style:properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.91cm" fo:margin-bottom="1.91cm" fo:margin-left="2.341cm" fo:margin-right="1.27cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style>
    <style:properties fo:min-height="1.02cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.51cm"/>
   </style:footer-style>
  </style:page-master>
  <style:page-master style:name="pm21" style:page-usage="left">
   <style:properties fo:page-width="21.59cm" fo:page-height="27.94cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="1.91cm" fo:margin-bottom="1.91cm" fo:margin-left="1.27cm" fo:margin-right="2.341cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
    <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
   </style:properties>
   <style:header-style/>
   <style:footer-style>
    <style:properties fo:min-height="1.02cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.51cm"/>
   </style:footer-style>
  </style:page-master>
  <number:number-style style:name="N0" style:family="data-style">
   <number:number number:min-integer-digits="1"/>
  </number:number-style>
  <number:date-style style:name="N37" style:family="data-style" number:automatic-order="true">
   <number:day number:style="long"/>
   <number:text>.</number:text>
   <number:month number:style="long"/>
   <number:text>.</number:text>
   <number:year/>
  </number:date-style>
  <number:number-style style:name="N5000" style:family="data-style" number:language="en" number:country="US">
   <number:number number:min-integer-digits="1"/>
  </number:number-style>
  <number:date-style style:name="N5037" style:family="data-style" number:language="en" number:country="US" number:automatic-order="true">
   <number:month number:style="long"/>
   <number:text>/</number:text>
   <number:day number:style="long"/>
   <number:text>/</number:text>
   <number:year/>
  </number:date-style>
  <number:currency-style style:name="N5104P0" style:family="data-style" style:volatile="true" number:language="en" number:country="US">
   <number:currency-symbol number:language="en" number:country="US">$</number:currency-symbol>
   <number:number number:decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
  </number:currency-style>
  <number:currency-style style:name="N5104" style:family="data-style" number:language="en" number:country="US">
   <style:properties fo:color="#ff0000"/>
   <number:text>-</number:text>
   <number:currency-symbol number:language="en" number:country="US">$</number:currency-symbol>
   <number:number number:decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
   <style:map style:condition="value()&gt;=0" style:apply-style-name="N5104P0"/>
  </number:currency-style>
 </office:automatic-styles>
 <office:master-styles>
  <style:master-page style:name="Standard" style:page-master-name="pm1">
   <style:footer>
    <text:p text:style-name="Footer"/>
   </style:footer>
   <style:footer-left>
    <text:p text:style-name="Footer"/>
   </style:footer-left>
  </style:master-page>
  <style:master-page style:name="First Page" style:page-master-name="pm2" style:next-style-name="Standard"/>
  <style:master-page style:name="Left Page" style:page-master-name="pm3" style:next-style-name="Right Page">
   <style:footer>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Manual Title" text:name="BuchTitel"/>
     <text:user-field-decl text:value-type="string" text:string-value="March 2001" text:name="ReleaseDate"/>
     <text:user-field-decl text:value-type="string" text:string-value="Product name and Release number" text:name="SOVersion"/>
    </text:user-field-decls>
    <text:p text:style-name="Footer left"><text:page-number text:select-page="current">2</text:page-number> <text:s text:c="4"/><text:user-field-get text:name="SOVersion">Product name and Release number</text:user-field-get> <text:s/><text:user-field-get text:name="BuchTitel">Manual Title</text:user-field-get>  <text:user-field-get text:name="ReleaseDate">March 2001</text:user-field-get></text:p>
   </style:footer>
  </style:master-page>
  <style:master-page style:name="Right Page" style:page-master-name="pm4" style:next-style-name="Left Page">
   <style:footer>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Chapter" text:name="KapitelTitel"/>
    </text:user-field-decls>
    <text:p text:style-name="Footer right"><text:user-field-get text:name="KapitelTitel">Chapter</text:user-field-get> <text:s/><text:chapter text:display="number" text:outline-level="1"/> <text:s text:c="4"/><text:chapter text:display="name" text:outline-level="1"/> <text:s text:c="3"/><text:page-number text:select-page="current">2</text:page-number></text:p>
   </style:footer>
  </style:master-page>
  <style:master-page style:name="Envelope" style:page-master-name="pm5"/>
  <style:master-page style:name="Index" style:page-master-name="pm6"/>
  <style:master-page style:name="HTML" style:page-master-name="pm7"/>
  <style:master-page style:name="Vakat" style:page-master-name="pm8">
   <style:footer>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Manual Title" text:name="BuchTitel"/>
     <text:user-field-decl text:value-type="string" text:string-value="March 2001" text:name="ReleaseDate"/>
     <text:user-field-decl text:value-type="string" text:string-value="Product name and Release number" text:name="SOVersion"/>
    </text:user-field-decls>
    <text:p text:style-name="Footer left"><text:page-number text:select-page="current">2</text:page-number><text:span text:style-name="PageNumber"> <text:s text:c="4"/></text:span><text:s/><text:user-field-get text:name="SOVersion">Product name and Release number</text:user-field-get> <text:s text:c="2"/><text:user-field-get text:name="BuchTitel">Manual Title</text:user-field-get>  <text:user-field-get text:name="ReleaseDate">March 2001</text:user-field-get></text:p>
   </style:footer>
  </style:master-page>
  <style:master-page style:name="CopyrightPage" style:page-master-name="pm9"/>
  <style:master-page style:name="BookPage1" style:page-master-name="pm10" style:next-style-name="CopyrightPage"/>
  <style:master-page style:name="NoChapter" style:page-master-name="pm11" style:next-style-name="Page_Left">
   <style:header>
    <text:p text:style-name="Header"/>
   </style:header>
   <style:footer>
    <text:p text:style-name="Footer right"><text:page-number text:select-page="current">2</text:page-number></text:p>
   </style:footer>
  </style:master-page>
  <style:master-page style:name="NoChapter left" style:page-master-name="pm12" style:next-style-name="No chapter right">
   <style:footer>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Manual Title" text:name="BuchTitel"/>
     <text:user-field-decl text:value-type="string" text:string-value="March 2001" text:name="ReleaseDate"/>
     <text:user-field-decl text:value-type="string" text:string-value="Product name and Release number" text:name="SOVersion"/>
    </text:user-field-decls>
    <text:p text:style-name="Footer left"><text:page-number text:select-page="current">2</text:page-number> <text:s text:c="4"/><text:user-field-get text:name="SOVersion">Product name and Release number</text:user-field-get> <text:s text:c="2"/><text:user-field-get text:name="BuchTitel">Manual Title</text:user-field-get>  <text:user-field-get text:name="ReleaseDate">March 2001</text:user-field-get></text:p>
   </style:footer>
  </style:master-page>
  <style:master-page style:name="No chapter right" style:page-master-name="pm13" style:next-style-name="NoChapter left">
   <style:footer>
    <text:p text:style-name="Footer right"><text:s text:c="5"/><text:chapter text:display="name" text:outline-level="1"/> <text:s text:c="3"/><text:page-number text:select-page="current">2</text:page-number></text:p>
   </style:footer>
  </style:master-page>
  <style:master-page style:name="TOC_Start" style:page-master-name="pm14" style:next-style-name="TOC_Left">
   <style:header>
    <text:p text:style-name="Header"/>
   </style:header>
   <style:header-left>
    <text:p text:style-name="Header left"/>
   </style:header-left>
   <style:footer>
    <text:p text:style-name="Footer right"><text:s text:c="5"/><text:page-number style:num-format="1" text:select-page="current">2</text:page-number></text:p>
   </style:footer>
   <style:footer-left>
    <text:p text:style-name="Footer right"><text:page-number text:select-page="current">2</text:page-number></text:p>
   </style:footer-left>
  </style:master-page>
  <style:master-page style:name="TOC_Left" style:page-master-name="pm15" style:next-style-name="TOC_Right">
   <style:footer>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Manual Title" text:name="BuchTitel"/>
     <text:user-field-decl text:value-type="string" text:string-value="Product name and Release number" text:name="SOVersion"/>
    </text:user-field-decls>
    <text:p text:style-name="Footer left"><text:page-number text:select-page="current">2</text:page-number> <text:s text:c="4"/><text:user-field-get text:name="SOVersion">Product name and Release number</text:user-field-get> <text:s/><text:user-field-get text:name="BuchTitel">Manual Title</text:user-field-get></text:p>
   </style:footer>
   <style:footer-left>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Manual Title" text:name="BuchTitel"/>
     <text:user-field-decl text:value-type="string" text:string-value="Product name and Release number" text:name="SOVersion"/>
    </text:user-field-decls>
    <text:p text:style-name="Footer left"><text:page-number text:select-page="current">2</text:page-number> <text:s text:c="4"/><text:user-field-get text:name="SOVersion">Product name and Release number</text:user-field-get> <text:user-field-get text:name="BuchTitel">Manual Title</text:user-field-get></text:p>
   </style:footer-left>
  </style:master-page>
  <style:master-page style:name="TOC_Right" style:page-master-name="pm16" style:next-style-name="TOC_Left">
   <style:footer>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Contents" text:name="InhaltsverzTitel"/>
    </text:user-field-decls>
    <text:p text:style-name="Footer right"><text:user-field-get text:name="InhaltsverzTitel">Contents</text:user-field-get> <text:s text:c="4"/><text:page-number style:num-format="1" text:select-page="current">2</text:page-number></text:p>
   </style:footer>
   <style:footer-left>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Contents" text:name="InhaltsverzTitel"/>
    </text:user-field-decls>
    <text:p text:style-name="Footer right"><text:user-field-get text:name="InhaltsverzTitel">Contents</text:user-field-get> <text:s text:c="4"/><text:page-number text:select-page="current">2</text:page-number></text:p>
   </style:footer-left>
  </style:master-page>
  <style:master-page style:name="Index_Left" style:page-master-name="pm17" style:next-style-name="Index_Right">
   <style:footer>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Manual Title" text:name="BuchTitel"/>
     <text:user-field-decl text:value-type="string" text:string-value="March 2001" text:name="ReleaseDate"/>
     <text:user-field-decl text:value-type="string" text:string-value="Product name and Release number" text:name="SOVersion"/>
    </text:user-field-decls>
    <text:p text:style-name="Footer left"><text:page-number text:select-page="current">2</text:page-number><text:span text:style-name="T1"> <text:s text:c="3"/></text:span><text:s/><text:user-field-get text:name="SOVersion">Product name and Release number</text:user-field-get> <text:s/><text:user-field-get text:name="BuchTitel">Manual Title</text:user-field-get>  <text:user-field-get text:name="ReleaseDate">March 2001</text:user-field-get></text:p>
   </style:footer>
  </style:master-page>
  <style:master-page style:name="Index_Right" style:page-master-name="pm18" style:next-style-name="Index_Left">
   <style:footer>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Index" text:name="IndexTitel"/>
    </text:user-field-decls>
    <text:p text:style-name="Footer right"><text:user-field-get text:name="IndexTitel">Index</text:user-field-get> <text:s text:c="4"/><text:page-number text:select-page="current">2</text:page-number></text:p>
   </style:footer>
  </style:master-page>
  <style:master-page style:name="Chapter_Start" style:page-master-name="pm11" style:next-style-name="Page_Left">
   <style:header>
    <text:p text:style-name="P1"><draw:text-box draw:style-name="fr1" draw:name="Rahmen2" text:anchor-type="paragraph" svg:width="2.54cm" fo:min-height="0.801cm" draw:z-index="9">
      <text:p text:style-name="ChapterText"><text:user-field-get text:name="KapitelTitel">Chapter</text:user-field-get><text:tab-stop/> <text:chapter text:display="number" text:outline-level="1">1 </text:chapter></text:p>
     </draw:text-box></text:p>
   </style:header>
   <style:footer>
    <text:p text:style-name="Footer right"><text:page-number text:select-page="current">2</text:page-number></text:p>
   </style:footer>
   <style:footer-left>
    <text:p text:style-name="Footer right"><text:page-number text:select-page="current">2</text:page-number></text:p>
   </style:footer-left>
  </style:master-page>
  <style:master-page style:name="Index_Start" style:page-master-name="pm19" style:next-style-name="Index_Left">
   <style:header>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Index" text:name="IndexTitel"/>
    </text:user-field-decls>
    <text:p text:style-name="HeadlineIndex"><text:user-field-get text:name="IndexTitel">Index</text:user-field-get></text:p>
   </style:header>
   <style:footer>
    <text:p text:style-name="P2"><text:page-number text:select-page="current">2</text:page-number></text:p>
   </style:footer>
  </style:master-page>
  <style:master-page style:name="Page_Right" style:page-master-name="pm20" style:next-style-name="Page_Left">
   <style:footer>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Chapter" text:name="KapitelTitel"/>
    </text:user-field-decls>
    <text:p text:style-name="Footer right"><text:user-field-get text:name="KapitelTitel">Chapter</text:user-field-get> <text:s/><text:chapter text:display="number" text:outline-level="1">1 </text:chapter> <text:s text:c="4"/><text:chapter text:display="name" text:outline-level="1">Database Access</text:chapter> <text:s text:c="3"/><text:page-number text:select-page="current">2</text:page-number></text:p>
   </style:footer>
   <style:footer-left>
    <text:p text:style-name="Footer"/>
   </style:footer-left>
  </style:master-page>
  <style:master-page style:name="Page_Left" style:page-master-name="pm21" style:next-style-name="Page_Right">
   <style:footer>
    <text:user-field-decls>
     <text:user-field-decl text:value-type="string" text:string-value="Manual Title" text:name="BuchTitel"/>
     <text:user-field-decl text:value-type="string" text:string-value="March 2001" text:name="ReleaseDate"/>
     <text:user-field-decl text:value-type="string" text:string-value="Product name and Release number" text:name="SOVersion"/>
    </text:user-field-decls>
    <text:p text:style-name="Footer left"><text:page-number text:select-page="current">2</text:page-number> <text:s text:c="4"/><text:user-field-get text:name="SOVersion">Product name and Release number</text:user-field-get> <text:s/><text:user-field-get text:name="BuchTitel">Manual Title</text:user-field-get>  <text:user-field-get text:name="ReleaseDate">March 2001</text:user-field-get></text:p>
   </style:footer>
  </style:master-page>
 </office:master-styles>
 <office:body>
  <text:variable-decls>
   <text:variable-decl text:value-type="string" text:name="Version"/>
   <text:variable-decl text:value-type="string" text:name="HTML_ON"/>
   <text:variable-decl text:value-type="string" text:name="HTML_OFF"/>
   <text:variable-decl text:value-type="float" text:name="lala"/>
   <text:variable-decl text:value-type="string" text:name="TITEL"/>
   <text:variable-decl text:value-type="string" text:name="END"/>
   <text:variable-decl text:value-type="string" text:name="NAME"/>
   <text:variable-decl text:value-type="string" text:name="HREF"/>
   <text:variable-decl text:value-type="string" text:name="HelpID"/>
   <text:variable-decl text:value-type="string" text:name="MODIFY"/>
   <text:variable-decl text:value-type="string" text:name="REFNR"/>
   <text:variable-decl text:value-type="string" text:name="OS2"/>
   <text:variable-decl text:value-type="string" text:name="ELSE"/>
   <text:variable-decl text:value-type="string" text:name="UNIX"/>
   <text:variable-decl text:value-type="string" text:name="MAC"/>
   <text:variable-decl text:value-type="string" text:name="INDEX"/>
   <text:variable-decl text:value-type="string" text:name="DOKENDE"/>
   <text:variable-decl text:value-type="string" text:name="WIN"/>
   <text:variable-decl text:value-type="string" text:name="KEY"/>
   <text:variable-decl text:value-type="string" text:name="HFELD"/>
   <text:variable-decl text:value-type="string" text:name="AKTHLP"/>
   <text:variable-decl text:value-type="string" text:name="TabelleAnfang"/>
  </text:variable-decls>
  <text:sequence-decls>
   <text:sequence-decl text:display-outline-level="1" text:separation-character="." text:name="Illustration"/>
   <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
   <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
   <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
   <text:sequence-decl text:display-outline-level="0" text:name="CapterNumber"/>
   <text:sequence-decl text:display-outline-level="1" text:separation-character="." text:name="Figure"/>
   <text:sequence-decl text:display-outline-level="1" text:separation-character="." text:name="Tables"/>
  </text:sequence-decls>
  <text:user-field-decls>
   <text:user-field-decl text:value-type="string" text:string-value="Manual Title" text:name="BuchTitel"/>
   <text:user-field-decl text:value-type="string" text:string-value="March 2001" text:name="ReleaseDate"/>
   <text:user-field-decl text:value-type="string" text:string-value="Product name and Release number" text:name="SOVersion"/>
   <text:user-field-decl text:value-type="string" text:string-value="Chapter" text:name="KapitelTitel"/>
   <text:user-field-decl text:value-type="string" text:string-value="Contents" text:name="InhaltsverzTitel"/>
   <text:user-field-decl text:value-type="string" text:string-value="Index" text:name="IndexTitel"/>
   <text:user-field-decl text:value-type="string" text:string-value="" text:name="EinFeld"/>
   <text:user-field-decl text:value-type="string" text:string-value="" text:name="nocheins"/>
   <text:user-field-decl text:value-type="string" text:string-value="StarOffice 5.1" text:name="Version_renamed_1"/>
   <text:user-field-decl text:value-type="string" text:string-value="Setup &amp; Administration Guide" text:name="Titel_renamed_2"/>
   <text:user-field-decl text:value-type="string" text:string-value="" text:name="fuer"/>
   <text:user-field-decl text:value-type="string" text:string-value="" text:name="Anhang"/>
   <text:user-field-decl text:value-type="string" text:string-value="" text:name="Notizen"/>
   <text:user-field-decl text:value-type="string" text:string-value="StarOffice 5.1" text:name="Version_renamed_3"/>
   <text:user-field-decl text:value-type="string" text:string-value="Setup &amp; Administration Guide" text:name="Titel_renamed_4"/>
  </text:user-field-decls>
  <text:h text:style-name="P3" text:level="1"><text:alphabetical-index-mark text:string-value="database"/>Database Access</text:h>
  <text:p text:style-name="Under_Head1"/>
  <text:p text:style-name="Paragraph"/>
  <text:h text:style-name="Head 2" text:level="2">Overview</text:h>
  <text:h text:style-name="Head 3" text:level="3">Capabilities</text:h>
  <text:h text:style-name="Head 4" text:level="4">Platform Independence</text:h>
  <text:p text:style-name="Paragraph">The goal of the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API database integration is to provide platform independent database connectivity for <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API. Well it is necessary to access database abstraction layers, such as JDBC and ODBC, it is also desirable to have direct access to arbitrary data sources, if required.</text:p>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API database integration reaches this goal through an abstraction above the abstractions with the <text:alphabetical-index-mark-start text:id="IMark44876276"/>Star Database Connectivity (SDBC)<text:alphabetical-index-mark-end text:id="IMark44876276"/>. <text:alphabetical-index-mark-start text:id="IMark44657500"/>SDBC<text:alphabetical-index-mark-end text:id="IMark44657500"/> accesses data through SDBC drivers. Each SDBC driver knows how to get data from a particular source. Some drivers handle files themselves, others use a standard driver model, or existing drivers to retrieve data. The concept makes it possible to integrate database connectivity for <text:alphabetical-index-mark-start text:id="IMark44285828"/>MAPI<text:alphabetical-index-mark-end text:id="IMark44285828"/> address books, <text:alphabetical-index-mark-start text:id="IMark44952644"/>LDAP<text:alphabetical-index-mark-end text:id="IMark44952644"/> directories and [PRODUCTNAME] <text:alphabetical-index-mark-start text:id="IMark44940844"/>Calc<text:alphabetical-index-mark-end text:id="IMark44940844"/> into the current version of <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API.</text:p>
  <text:p text:style-name="Paragraph">Since SDBC drivers are UNO components, it is possible to write drivers for data sources and thus <text:s/>extend the database connectivity of <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Functioning of the [PRODUCTNAME] API Database Integration</text:h>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API database integration is based on <text:alphabetical-index-mark-start text:id="IMark44876276"/>SQL<text:alphabetical-index-mark-end text:id="IMark44876276"/>. This section discusses how the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API handles various SQL dialects and how it integrates with data sources that do not understand SQL.</text:p>
  <text:p text:style-name="Paragraph"><text:span text:style-name="T2">[PRODUCTNAME]</text:span> API has a built-in parser that tests and adjusts the syntax to be standard SQL. With the parser, differences between SQL dialects, such as case sensitivity, can be handled if the query composer is used. Data sources that do not understand SQL can be treated by an SDBC driver that is a database engine of its own, which translates from standard SQL to the mechanisms needed to read and write data using a non-SQL data source.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Integration with [PRODUCTNAME] API</text:h>
  <text:p text:style-name="Paragraph"><text:span text:style-name="T2">[PRODUCTNAME]</text:span> API employs SDBC data sources in Writer, Calc and Database Forms. In Writer, use form letter fields to access database tables, create email form letters, and drag tables and queries into a document to create tables or lists. </text:p>
  <text:p text:style-name="Paragraph">If a table is dragged into a Calc spreadsheet, the database range that can be updated from the database, and data pilots can be created from database connections. Conversely, drag a spreadsheet range onto a database to import the spreadsheet data into a database. </text:p>
  <text:p text:style-name="Paragraph">Another area of database connectivity are database forms. Form controls can be inserted into Writer or Calc documents to hook them up to database tables to get data aware forms.</text:p>
  <text:p text:style-name="Paragraph">While there is no API coverage for direct database integration in Writer, the database connectivity in Calc and Database Forms can be controlled through the API. Refer to the corresponding chapters <text:span text:style-name="ChapterRef">[CHAPTER:Spreadsheet.Working.Database]</text:span> and <text:span text:style-name="ChapterRef">[CHAPTER:Forms]</text:span> for more information. In Writer, database connectivity can be implemented by application programmers, for example, by accessing text field context. No API exists for merging complete selections into text.</text:p>
  <text:p text:style-name="Paragraph">Using the [PRODUCTNAME] API database integration enhances or automates the out-of-box database integration, creates customized office documents from databases, or provides simple, platform-independent database clients in the [PRODUCTNAME] API environment.</text:p>
  <text:h text:style-name="Head 3" text:level="3">Architecture</text:h>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API database integration is divided into three layers: SDBC, SDBCX, and SDB. Each layer extends the functionality of the layer below. </text:p>
  <text:unordered-list text:style-name="L1">
   <text:list-item>
    <text:p text:style-name="P4"><text:alphabetical-index-mark-start text:id="IMark44876276"/>Star Database (SDB)<text:alphabetical-index-mark-end text:id="IMark44876276"/> is the highest layer. This layer provides an application-centered view of the databases. Services, such as the database context, data sources, advanced connections, persistent query definitions and command definitions, as well as authentication<text:span text:style-name="T3"> </text:span>and row sets are in this layer.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:unordered-list text:style-name="L2">
   <text:list-item>
    <text:p text:style-name="P5"><text:alphabetical-index-mark-start text:id="IMark44876276"/>Star Database Connectivity Extension (SDBCX)<text:alphabetical-index-mark-end text:id="IMark44876276"/> is the middle layer which introduces abstractions, such as catalogs, tables, views, groups, users, columns, indexes, and keys, as well as the corresponding containers for these objects.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:unordered-list text:style-name="L3">
   <text:list-item>
    <text:p text:style-name="P6"><text:alphabetical-index-mark-start text:id="IMark44876276"/>Star Database Connectivity (SDBC)<text:alphabetical-index-mark-end text:id="IMark44876276"/> is the lowest layer. This layer contains the basic database functionality used by the higher layers, such as drivers, simple connections, statements and result sets.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:h text:style-name="Head 3" text:level="3">Example: Querying the Bibliography Database</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.RowSet]<text:alphabetical-index-mark text:string-value="RowSet"/>The following example queries the bibliography database that is delivered with the [PRODUCTNAME] distribution. The basic steps are:</text:p>
  <text:ordered-list text:style-name="L4">
   <text:list-item>
    <text:p text:style-name="P7">Create a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span>. </text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P7">Configure <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span> to select from the table &quot;biblio&quot; in the data source &quot;Bibliography&quot;.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P7">Execute it.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P7">Iterate over its rows.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P7">Insert a new row.</text:p>
   </text:list-item>
  </text:ordered-list>
  <text:p text:style-name="Paragraph">If the database requires login, set additional properties for user and password, or connect using interactive login. There are other options as well. For details, refer to the section <text:span text:style-name="ChapterRef">[CHAPTER:Database.Manipulate.RowSet]</text:span>. [SOURCE:Database/OpenQuery.java]</text:p>
  <text:p text:style-name="Code"><text:span text:style-name="CODE">protected</text:span> void openQuery() throws com.sun.star.uno.Exception, java.lang.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRemoteServiceManager = this.getRemoteServiceManager(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;uno:socket,host=localhost,port=2083;urp;StarOffice.ServiceManager&quot;); <text:s text:c="12"/></text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// first we create our RowSet object and get its XRowSet interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>Object rowSet = xRemoteServiceManager.<text:span text:style-name="CodeEmphasis">createInstanceWithContext</text:span>(</text:p>
  <text:p text:style-name="Code"><text:s text:c="7"/>&quot;<text:span text:style-name="CodeEmphasis">com.sun.star.sdb.RowSet</text:span>&quot;, xRemoteContext);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>com.sun.star.sdbc.XRowSet xRowSet = (com.sun.star.sdbc.XRowSet) </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>UnoRuntime.queryInterface(com.sun.star.sdbc.XRowSet.class, rowSet);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// set the properties needed to connect to a database</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xRowSet);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// the DataSourceName can be a data source registered with [PRODUCTNAME], among other possibilities</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;<text:span text:style-name="CodeEmphasis">DataSourceName</text:span>&quot;, &quot;Bibliography&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// the CommandType must be TABLE, QUERY or COMMAND – here we use COMMAND</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;<text:span text:style-name="CodeEmphasis">CommandType</text:span>&quot;, new Integer(com.sun.star.sdb.CommandType.COMMAND));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// the Command could be a table or query name or a SQL command, depending on the CommandType</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;<text:span text:style-name="CodeEmphasis">Command</text:span>&quot;, &quot;SELECT IDENTIFIER, AUTHOR FROM biblio&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// if your database requires logon, you can use the properties User and Password</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// xProp.setPropertyValue(&quot;User&quot;, &quot;JohnDoe&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// xProp.setPropertyValue(&quot;Password&quot;, &quot;mysecret&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRowSet.<text:span text:style-name="CodeEmphasis">execute</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// prepare the XRow and XColumnLocate interface for column access</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// XRow gets column values</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>com.sun.star.sdbc.XRow xRow = (com.sun.star.sdbc.XRow)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>com.sun.star.sdbc.XRow.class, xRowSet);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// XColumnLocate finds columns by name</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>com.sun.star.sdbc.XColumnLocate xLoc = (com.sun.star.sdbc.XColumnLocate)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>com.sun.star.sdbc.XColumnLocate.class, xRowSet);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// print output header</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Identifier\tAuthor&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;----------\t------&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// output result rows</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>while ( xRowSet.<text:span text:style-name="CodeEmphasis">next</text:span>() ) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String ident = xRow.<text:span text:style-name="CodeEmphasis">getString</text:span>(xLoc.findColumn(&quot;IDENTIFIER&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String author = xRow.<text:span text:style-name="CodeEmphasis">getString</text:span>(xLoc.findColumn(&quot;AUTHOR&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(ident + &quot;\t\t&quot; + author); <text:s text:c="15"/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// insert a new row</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// XResultSetUpdate for insertRow handling</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>com.sun.star.sdbc.XResultSetUpdate xResultSetUpdate = (com.sun.star.sdbc.XResultSetUpdate)</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>com.sun.star.sdbc.XResultSetUpdate.class, xRowSet);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// XRowUpdate for row updates</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>com.sun.star.sdbc.XRowUpdate xRowUpdate = (com.sun.star.sdbc.XRowUpdate)</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>com.sun.star.sdbc.XRowUpdate.class, xRowSet);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// move to insertRow buffer</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xResultSetUpdate.<text:span text:style-name="CodeEmphasis">moveToInsertRow</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// edit insertRow buffer</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRowUpdate.<text:span text:style-name="CodeEmphasis">updateString</text:span>(xLoc.findColumn(&quot;IDENTIFIER&quot;), &quot;GOF95&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRowUpdate.<text:span text:style-name="CodeEmphasis">updateString</text:span>(xLoc.findColumn(&quot;AUTHOR&quot;), &quot;Gamma, Helm, Johnson, Vlissides&quot;); </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// write buffer to database</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xResultSetUpdate.<text:span text:style-name="CodeEmphasis">insertRow</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// throw away the row set</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>com.sun.star.lang.XComponent xComp = (com.sun.star.lang.XComponent)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>com.sun.star.lang.XComponent.class, xRowSet);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xComp.dispose();</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 2" text:level="2">Data Sources in [PRODUCTNAME] API</text:h>
  <text:h text:style-name="Head 3" text:level="3"><text:alphabetical-index-mark-start text:id="IMark44876276"/>DatabaseContext<text:alphabetical-index-mark-end text:id="IMark44876276"/></text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.DatabaseContext]In the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> <text:s/>graphical user interface (GUI), define data sources using the data source administrator and access them in the database browser. A data source has four main aspects. It contains:</text:p>
  <text:unordered-list text:style-name="L5">
   <text:list-item>
    <text:p text:style-name="P8">The <text:span text:style-name="Emphasis">general information</text:span> necessary to connect to a data source.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P8">Settings to control the presentation of <text:span text:style-name="Emphasis">tables.</text:span></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P8">SQL <text:span text:style-name="Emphasis">query definitions.</text:span></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P8"><text:span text:style-name="Emphasis">Links</text:span> to <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API documents, primarily documents containing database forms.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">From the API perspective, these functions are mirrored in the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DatabaseContext]</text:span> service. The database context is a container for data sources. It is a singleton, that is, it may exist only once in a running <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API instance and can be accessed by creating it at the global service manager of the office. </text:p>
  <table:table table:name="Table11" table:style-name="Table11">
   <table:table-column table:style-name="Table11.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table11.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr2" draw:name="Frame2" text:anchor-type="paragraph" svg:y="0cm" svg:width="15.245cm" fo:min-height="9.761cm" draw:z-index="10">
        <text:p text:style-name="P9"><draw:image draw:style-name="fr3" draw:name="Screenshot of the Data Source Administration dialog" text:anchor-type="paragraph" svg:x="0cm" svg:width="14.79cm" svg:height="9.149cm" draw:z-index="11" xlink:href="DataSourceAdministration.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>Screenshot showing the Data Source Administration dialog</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration0" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.1</text:sequence>: The Dialog &quot;<text:alphabetical-index-mark text:string-value="Data Source Administration [dialog]"/>Data Source Administration&quot;</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">The database context is the entry point for applications that need to connect to a data source already defined in the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API. Additionally, it is used to create new data sources and add them to <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API. The following figure shows the relationship between the database context, the data sources and the connection over a data source.</text:p>
  <table:table table:name="Table42" table:style-name="Table42">
   <table:table-column table:style-name="Table42.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table42.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr2" draw:name="Frame21" text:anchor-type="paragraph" svg:y="0cm" svg:width="14.584cm" style:rel-width="82%" fo:min-height="18.32cm" draw:z-index="12">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of com.sun.star.sdb.DatabaseContext" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="14.6cm" svg:height="17.84cm" draw:z-index="13" xlink:href="DatabaseContext.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the com.sun.star.sdb.DatabaseContext service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration1" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.2</text:sequence>: <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DatabaseContext]</text:span></text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">The database context is used to get a data source that provides a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Connection]</text:span> through its <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XCompletedConnection]</text:span> interface.</text:p>
  <text:p text:style-name="Paragraph">Existing data sources are obtained from the database context at its interfaces <text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XNameAccess]</text:span> and <text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XEnumeration]</text:span>. Their methods <text:span text:style-name="T4">getByName</text:span><text:span text:style-name="Code (in text)">()</text:span> and <text:span text:style-name="Code (in text)">createEnumeration()</text:span> deliver the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DataSource]</text:span> services defined in the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> GUI.</text:p>
  <text:p text:style-name="Paragraph">The code below shows how to print all available data sources: [SOURCE:Database/CodeSamples.java]</text:p>
  <text:p text:style-name="Code">// prints all data sources</text:p>
  <text:p text:style-name="Code">public static void printDataSources(XMultiServiceFactory _rMSF) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// retrieve the DatabaseContext and get its com.sun.star.container.XNameAccess interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xNameAccess = (XNameAccess)UnoRuntime.<text:span text:style-name="DefaultCode">queryInterface</text:span>(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XNameAccess.class, _rMSF.<text:span text:style-name="CODE Emphasis">createInstance(&quot;com.sun.star.sdb.DatabaseContext&quot;)</text:span>);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// print all DataSource names</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>String aNames [] = xNameAccess.<text:span text:style-name="CodeEmphasis">getElementNames</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>for (int i=0;i&lt;aNames.length;++i)</text:p>
  <text:p text:style-name="Code"><text:a xlink:type="simple" xlink:href="" text:style-name="Internet link" text:visited-style-name="Visited Internet Link"><text:s text:c="8"/>System.out.println</text:a>(aNames[i]);</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="P10" text:level="3">DataSources</text:h>
  <text:h text:style-name="Head 4" text:level="4">The <text:alphabetical-index-mark-start text:id="IMark44876276"/>DataSource<text:alphabetical-index-mark-end text:id="IMark44876276"/> Service</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.DataSource]The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DataSource]</text:span> service includes all the features of a database defined in <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API. <text:span text:style-name="Code (in text)">DataSource</text:span> provides the following properties for its knowledge about how to connect to a database and which tables to display:</text:p>
  <table:table table:name="Table24" table:style-name="Table24">
   <table:table-column table:style-name="Table24.A"/>
   <table:table-column table:style-name="Table24.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table24.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DataSource]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table24.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSource:Name]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table24.B2" table:value-type="string">
     <text:p text:style-name="P11"><text:span text:style-name="Code (in text)">[readonly] string</text:span><text:span text:style-name="T5"> ─ The name of the data source.</text:span></text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table24.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSource:URL]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table24.B2" table:value-type="string">
     <text:p text:style-name="P12"><text:span text:style-name="Code (in text)">string</text:span> ─ Indicates a database URL. Valid URL formats are:<text:line-break/><text:span text:style-name="Code (in text)">jdbc: subprotocol : subname <text:s/><text:line-break/>sdbc: subprotocol : subname</text:span></text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table24.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSource:Info]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table24.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">sequence&lt; com.sun.star.beans.PropertyValue &gt;</text:span>. A list of arbitrary <text:span text:style-name="Code (in text)">string</text:span> tag or value pairs as connection arguments.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table24.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSource:User]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table24.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">String</text:span> ─ The login name of the current user.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table24.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSource:Password]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table24.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The password of the current user. It is not <text:s/>stored with the data source.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table24.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSource:IsPasswordRequired]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table24.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ Indicates that a password is always necessary and might be interactively requested from the user by an interaction handler.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table24.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSource:IsReadOnly]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table24.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] boolean</text:span> ─ Determines if database contents may be modified.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table24.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSource:NumberFormatsSupplier]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table24.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] </text:span>[idl.com.sun.star.util.XNumberFormatsSupplier]. Provides an object for number formatting.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table24.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSource:TableFilter]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table24.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">sequence&lt; string &gt;</text:span>. A list of tables the data source should display. If empty, all tables are hidden. Valid placeholders are % and ?.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table24.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSource:TableTypeFilter]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table24.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">sequence&lt; string &gt;.</text:span> A list of table types the DataSource should display. If empty, all table types are rejected. Possible type strings are TABLE, VIEW, and SYSTEM TABLE.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table24.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSource:SuppressVersionColumns]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table24.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ Indicates that components displaying data obtained from this data source should suppress columns used for versioning. </text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">All other capabilities of a <text:span text:style-name="Code (in text)">DataSource,</text:span>such as <text:s/>query definitions, document links, and the actual process of establishing connections and flushing pending configuration changes are available over its interfaces. </text:p>
  <text:unordered-list text:style-name="L6">
   <text:list-item>
    <text:p text:style-name="P13"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XQueryDefinitionsSupplier]</text:span> <text:alphabetical-index-mark text:string-value="XQueryDefinitionsSupplier"/>provides access to SQL query definitions for a database. The definition of queries is discussed in the next section, <text:span text:style-name="ChapterRef">[CHAPTER:Database.DataSources.DataSources.Queries]</text:span>.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P13"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XCompletedConnection]</text:span> <text:alphabetical-index-mark text:string-value="XCompletedConnection"/>connects to a database. It asks the user to supply necessary information before it connects. The section <text:span text:style-name="ChapterRef">[CHAPTER:Database.DataSources.Connection.DataSource]</text:span> shows how to establish a connection.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P13"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XBookmarksSupplier]</text:span> <text:alphabetical-index-mark text:string-value="XBookmarksSupplier"/>provides access to bookmarks pointing at documents associated with the <text:span text:style-name="T6">DataSource, primarily </text:span><text:span text:style-name="T2">[PRODUCTNAME]</text:span><text:span text:style-name="T6"> API documents containing form components. Although it is optional, it is implemented for all data sources in </text:span><text:span text:style-name="T2">[PRODUCTNAME]</text:span><text:span text:style-name="T6"> API. The section </text:span><text:span text:style-name="T7">[CHAPTER:Database.DataSources.DataSources.Forms]</text:span><text:span text:style-name="T6"> explains database bookmarks..</text:span></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P13"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.util.XFlushable]</text:span> <text:alphabetical-index-mark text:string-value="XFlushable"/>forces the data source to flush all information including the properties above to the configuration repository. However, changes work immediately and are <text:s/>stored in the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> configuration.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:h text:style-name="Head 5" text:level="5">Adding and Editing Datasources</text:h>
  <text:p text:style-name="Paragraph">New data sources have to be created by the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.lang.XSingleServiceFactory]</text:span> interface of the database context. A new data source must be registered with the database context at its <text:span text:style-name="Code (in text)">[IDL:com.sun.star.uno.XNamingService]</text:span> interface and the necessary properties set. </text:p>
  <text:p text:style-name="Paragraph">The lifetime of data sources is controlled through the interfaces <text:span text:style-name="Code (in text)">[IDL:com.sun.star.lang.XSingleServiceFactory]</text:span>, <text:span text:style-name="Code (in text)">[IDL:com.sun.star.uno.XNamingService]</text:span> and <text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XContainer]</text:span> of the database context.</text:p>
  <text:p text:style-name="Paragraph">The method <text:span text:style-name="Code (in text)">createInstance()</text:span> of XSingleServiceFactory creates new generic data sources. They are added to the database context using <text:span text:style-name="Code (in text)">registerObject()</text:span> at the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.uno.XNamingService]</text:span>. The <text:span text:style-name="Code (in text)">XNamingService</text:span> allows registering data sources, as well as revoking the registration. The following are the methods defined for <text:span text:style-name="Code (in text)">XNamingService</text:span>:</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">registerObject</text:span>( [in] string Name, [in] com::sun::star::uno::XInterface Object)</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">revokeObject</text:span>( [in] string Name)</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::uno::XInterface <text:span text:style-name="MethodSignatureEmphasis">getRegisteredObject</text:span>( [in] string Name)</text:p>
  <text:p text:style-name="Paragraph">In the following example, a data source is created for a previously generated Adabas D database named MYDB1 on the local machine. The <text:span text:style-name="Code (in text)">URL</text:span> property has to be present, and for Adabas D the property <text:span text:style-name="Code (in text)">IsPasswordRequired</text:span> should be <text:span text:style-name="Code (in text)">true</text:span>, otherwise no interactive connection can be established. The password dialog requests a user name by setting the <text:span text:style-name="Code (in text)">User</text:span> property. [SOURCE:Database/CodeSamples.java]</text:p>
  <text:p text:style-name="Code">// creates a new DataSource</text:p>
  <text:p text:style-name="Code">public static void createNewDataSource(XMultiServiceFactory _rMSF) throws <text:a xlink:type="simple" xlink:href="" text:style-name="Internet link" text:visited-style-name="Visited Internet Link">com.sun.star.uno.Exception </text:a>{</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// the XSingleServiceFactory of the database context creates new generic </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// com.sun.star.sdb.DataSources (!)</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// retrieve the database context at the global service manager and get its </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// XSingleServiceFactory interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XSingleServiceFactory xFac = (XSingleServiceFactory)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XSingleServiceFactory.class, _rMSF.<text:span text:style-name="DefaultCode">createInstance</text:span>(&quot;<text:a xlink:type="simple" xlink:href="" text:style-name="Internet link" text:visited-style-name="Visited Internet Link">com.sun.star.sdb.DatabaseContext</text:a>&quot;));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// instantiate an empty data source at the XSingleServiceFactory </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// interface of the DatabaseContext</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>Object xDs = xFac.<text:span text:style-name="CodeEmphasis">createInstance</text:span>();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// register it with the database context</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNamingService xServ = (XNamingService)UnoRuntime.queryInterface(XNamingService.class, xFac);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xServ.<text:span text:style-name="CodeEmphasis">registerObject</text:span>(&quot;NewDataSourceName&quot;, xDs);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// setting the necessary data source properties</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xDsProps = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xDs);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// Adabas D URL</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xDsProps.setPropertyValue(&quot;<text:span text:style-name="CODE Emphasis">URL</text:span>&quot;, &quot;sdbc:adabas::MYDB1&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// force password dialog</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xDsProps.setPropertyValue(&quot;<text:span text:style-name="CodeEmphasis">IsPasswordRequired</text:span>&quot;, new Boolean(true));<text:tab-stop/></text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// suggest dsadmin as user name</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xDsProps.setPropertyValue(&quot;User&quot;, &quot;dsadmin&quot;);</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph">The various possible database URLs are discussed in the section <text:span text:style-name="ChapterRef">[CHAPTER:Database.DataSources.Connection.DriverSpecifics]</text:span>.</text:p>
  <text:p text:style-name="Paragraph">To edit an existing data source, retrieve it by name from the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XNameAccess]</text:span> interface of the database context and use its <text:span text:style-name="Code (in text)">[IDL:com.sun.star.beans.XPropertySet]</text:span> interface to configure it, as required.</text:p>
  <text:h text:style-name="Head 4" text:level="4"><text:alphabetical-index-mark text:string-value="query"/>Queries</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.QueryDefinition]<text:alphabetical-index-mark text:string-value="QueryDefinition"/>A <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.QueryDefinition]</text:span> encapsulates a definition of an SQL statement stored in <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API. It is similar to a view or a stored procedure, because it can be reused, and executed and altered by the user in the GUI. It is <text:s/>possible to run a <text:alphabetical-index-mark-start text:id="IMark44018036"/><text:span text:style-name="Code (in text)">QueryDefinition</text:span><text:alphabetical-index-mark-end text:id="IMark44018036"/> against a different database by changing the underlying <text:span text:style-name="Code (in text)">DataSource</text:span> properties. It can also be created without being connected to a database.</text:p>
  <text:p text:style-name="Paragraph">The purpose of the query services available at a <text:span text:style-name="Code (in text)">DataSource</text:span> is to define and edit queries. The query services by themselves do not offer methods to execute queries. To open a query, use a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span> service or the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XCommandPreparation]</text:span> interface of a connection. See the sections <text:span text:style-name="ChapterRef">[CHAPTER:Database.Manipulate.RowSet]</text:span> and <text:span text:style-name="ChapterRef">[CHAPTER:Database.Manipulate.PreparedStatementsFromDataSourceQueries]</text:span> for additional details.</text:p>
  <text:h text:style-name="Head 5" text:level="5">Adding and Editing Predefined Queries</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.DefinitionContainer]<text:alphabetical-index-mark text:string-value="DefinitionContainer"/>The query definitions container <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DefinitionContainer]</text:span> is used to work with the query definitions of a data source. It is returned by the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XQueryDefinitionsSupplier]</text:span> <text:alphabetical-index-mark text:string-value="XQueryDefinitionsSupplier"/>interface of the data source, which has a single method for this purpose:</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::container::XNameAccess <text:span text:style-name="MethodSignatureEmphasis">getQueryDefinitions</text:span>()</text:p>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">DefinitionContainer</text:span> is not only an <text:span text:style-name="Code (in text)">XNameAccess</text:span>, but a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XNameContainer]</text:span>, that is, add new query definitions by name (see <text:span text:style-name="ChapterRef">[CHAPTER:FirstSteps]</text:span>). Besides the name access, obtain query definitions through <text:s/><text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XIndexAccess]</text:span> and <text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XEnumerationAccess]</text:span>.</text:p>
  <table:table table:name="Table44" table:style-name="Table44">
   <table:table-column table:style-name="Table44.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table44.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr2" draw:name="Frame31" text:anchor-type="paragraph" svg:y="0cm" svg:width="12.737cm" fo:min-height="17.803cm" draw:z-index="14">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of com.sun.star.sdb.DefintionContainer" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="12.651cm" svg:height="17.32cm" draw:z-index="15" xlink:href="QueryDefinition.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the com.sun.star.sdb.DefintionContainer service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration2" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.3</text:sequence>: DefinitionContainer And QueryDefinition</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">New query definitions are created by the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.lang.XSingleServiceFactory]</text:span> interface of the query definitions container. Its method <text:span text:style-name="Code (in text)">createInstance()</text:span> provides an empty <text:span text:style-name="Code (in text)">QueryDefinition</text:span> to configure, as required. Then, the new query definition is added to the <text:span text:style-name="Code (in text)">DefinitionContainer</text:span> using <text:span text:style-name="Code (in text)">insertByName()</text:span>at the <text:span text:style-name="Code (in text)">XNameContainer</text:span> interface.</text:p>
  <table:table table:name="Table25" table:style-name="Table25">
   <table:table-column table:style-name="Table25.A"/>
   <table:table-column table:style-name="Table25.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table25.A1" table:value-type="string">
      <text:p text:style-name="Table Contents"><draw:image draw:style-name="fr5" draw:name="Note" text:anchor-type="paragraph" svg:x="0.065cm" svg:y="0.026cm" svg:width="0.847cm" svg:height="0.847cm" draw:z-index="1" xlink:href="../interesting.gif" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
        <svg:desc>Note graphics marks a special text section</svg:desc>
       </draw:image></text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table25.B1" table:value-type="string">
      <text:p text:style-name="TipInTable">The optional interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.util.XRefreshable]</text:span> is not supported by the DefinitionContainer implementation.</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">A <text:span text:style-name="Code (in text)">QueryDefinition</text:span> is configured through the following properties:</text:p>
  <table:table table:name="Table2" table:style-name="Table2">
   <table:table-column table:style-name="Table2.A"/>
   <table:table-column table:style-name="Table2.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table2.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.QueryDefinition]</text:span> </text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table2.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.QueryDefinition:Name]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table2.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The name of the queryDefinition.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table2.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.QueryDefinition:Command]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table2.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The SQL SELECT command.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table2.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.QueryDefinition:EscapeProcessing]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table2.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ If <text:span text:style-name="Code (in text)">true</text:span>, determines that the query must not be touched by the built-in SQL parser of [PRODUCTNAME] API.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table2.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.QueryDefinition:UpdateCatalogName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table2.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The name of the update table catalog used to identify tables, supported by some databases.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table2.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.QueryDefinition:UpdateSchemaName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table2.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The name of the update table schema used to identify tables, supported by some databases.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table2.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.QueryDefinition:UpdateTableName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table2.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> The name of the update table catalog <text:s/>used to identify <text:s/>tables, supported by some databases The name of the table which should be updated. This is usually used for queries based on more than one table and makes such queries partially editable. The property <text:span text:style-name="Code (in text)">UpdateTableName</text:span> must contain the name of the table with unique rows in the result set. In a 1:n join this is usually the table on the n side of the join.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">The following example adds a new query definition <text:span text:style-name="Code (in text)">Query1</text:span> to the data source Bibliography that is provided with <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API. [SOURCE:Database/CodeSamples.java]</text:p>
  <text:p text:style-name="Code">// creates a new query definition named Query1</text:p>
  <text:p text:style-name="Code">public static void createQuerydefinition(XMultiServiceFactory _rMSF) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xNameAccess = (XNameAccess) UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XNameAccess.class, _rMSF.createInstance( &quot;com.sun.star.sdb.DatabaseContext&quot;) );</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// we use the datasource Bibliography</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XQueryDefinitionsSupplier xQuerySup = (XQueryDefinitionsSupplier) UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XQueryDefinitionsSupplier.class, xNameAccess.getByName( &quot;Bibliography&quot; )); </text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// get the container for query definitions</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xQDefs = xQuerySup.<text:span text:style-name="CodeEmphasis">getQueryDefinitions</text:span>();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// for new query definitions we need the com.sun.star.lang.XSingleServiceFactory interface </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// of the query definitions container</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XSingleServiceFactory xSingleFac = (XSingleServiceFactory)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XSingleServiceFactory.class, xQDefs);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// order a new query and get its com.sun.star.beans.XPropertySet interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet) UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XPropertySet.class, xSingleFac.<text:span text:style-name="CodeEmphasis">createInstance</text:span>());</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// configure the query</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.<text:span text:style-name="CodeEmphasis">setPropertyValue(&quot;Command&quot;,&quot;SELECT * FROM biblio&quot;);</text:span></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;EscapeProcessing&quot;, new Boolean(true));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// insert it into the query definitions container</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameContainer xCont = (XNameContainer) UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XNameContainer.class, xQDefs);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>xCont.<text:span text:style-name="CodeEmphasis">insertByName</text:span>(&quot;Query1&quot;, xProp);</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 5" text:level="5">Runtime Settings For <text:alphabetical-index-mark text:string-value="predefined queries"/>Predefined Queries</text:h>
  <text:p text:style-name="Paragraph">The queries in the user interface have a number of advanced settings concerning the formatting and filtering of the query and its columns. For the API, these settings are available as long as the data source is connected with the underlying database. The section <text:span text:style-name="ChapterRef">[CHAPTER:Database.DataSources.Connection.DataSource]</text:span> discusses how to get a connection from a data source. When the connection is made, its interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XQueriesSupplier]</text:span> returns query objects with the advanced settings above.</text:p>
  <table:table table:name="Table66" table:style-name="Table66">
   <table:table-column table:style-name="Table66.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table66.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr6" draw:name="Frame13" text:anchor-type="paragraph" svg:width="14.051cm" style:rel-width="79%" fo:min-height="18.69cm" draw:z-index="50">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of connection and Query" text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" svg:width="14.011cm" svg:height="18.21cm" draw:z-index="51" xlink:href="Connection.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram shwoing the relation between Connection and Query</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration3" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.4</text:sequence>: <text:alphabetical-index-mark-start text:id="IMark43864548"/>Connection<text:alphabetical-index-mark-end text:id="IMark43864548"/>, <text:alphabetical-index-mark-start text:id="IMark43971636"/>QueryComposer<text:alphabetical-index-mark-end text:id="IMark43971636"/> And <text:alphabetical-index-mark-start text:id="IMark43709532"/>Query<text:alphabetical-index-mark-end text:id="IMark43709532"/> in the <text:alphabetical-index-mark text:string-value="sdb module"/>sdb Module</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">Connection</text:span> gives you a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Container]</text:span> of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Query]</text:span> services. These <text:span text:style-name="Code (in text)">Query</text:span> objects are different from <text:span text:style-name="Code (in text)">QueryDefinitions</text:span>.</text:p>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Query]</text:span> service inherits both the properties from <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.QueryDefinition]</text:span> service described previously, and the properties defined in the service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DataSettings]</text:span>. Use <text:span text:style-name="Code (in text)">DataSettings</text:span> to customize the appearance of the query when used in the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API GUI or together with a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span>.</text:p>
  <table:table table:name="Table3" table:style-name="Table3">
   <table:table-column table:style-name="Table3.A"/>
   <table:table-column table:style-name="Table3.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table3.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DataSettings]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table3.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSettings:Filter]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table3.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ An additional filter for the data object, WHERE clause syntax.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table3.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSettings:ApplyFilter]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table3.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ Indicates if the filter should be applied, default is <text:span text:style-name="Code (in text)">FALSE</text:span>.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table3.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSettings:Order]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table3.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Is an additional sort order definition.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table3.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSettings:FontDescriptor]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table3.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">struct</text:span> <text:span text:style-name="Code (in text)">[IDL:com.sun.star.awt.FontDescriptor]</text:span>. Specifies the font attributes for displayed data.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table3.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSettings:RowHeight]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table3.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ Specifies the height of a data row.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table3.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSettings:TextColor]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table3.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ Specifies the text color for displayed text in 0xAARRGGBB notation</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">In addition to these properties, the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Query]</text:span> service offers a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XDataDescriptorFactory]</text:span> <text:alphabetical-index-mark text:string-value="XDataDescriptorFactory"/>to create new query descriptors based on the current query information. Use this query descriptor to append new queries to the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Container]</text:span> using its <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XAppend]</text:span> interface. This is an alternative to the connection-independent method to create new queries as discussed above. <text:s/>The section <text:span text:style-name="ChapterRef">[CHAPTER:Database.Design.SDBCX.DescriptorPattern]</text:span> explains how to use descriptors to append new elements to database objects.</text:p>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XRename]</text:span> <text:alphabetical-index-mark text:string-value="XRename"/>interface is used to rename a query. It has one method:</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">rename</text:span>( [in] string newName)</text:p>
  <text:p text:style-name="Paragraph">The interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XColumnsSupplier]</text:span> grants access to the column settings of the query through its single method <text:span text:style-name="Code (in text)">getColumns()</text:span>:</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::container::XNameAccess <text:span text:style-name="MethodSignatureEmphasis">getColumns</text:span>()</text:p>
  <text:p text:style-name="Paragraph">The columns returned by <text:span text:style-name="Code (in text)">getColumns()</text:span> are <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Column]</text:span> services that <text:s/>provide column information and the ability to improve the appearance of columns. This service is explained in the section <text:span text:style-name="ChapterRef">[CHAPTER:Database.DataSources.DataSources.TablesColumns]</text:span>.</text:p>
  <text:p text:style-name="Paragraph">The following code sample connects to Bibliography, and prints the column names and types of the previously defined query <text:span text:style-name="Code (in text)">Query1</text:span>. [SOURCE:Database/CodeSamples.java]</text:p>
  <text:p text:style-name="Code">public static void printQueryColumnNames(XMultiServiceFactory _rMSF) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess.class,_rMSF.createInstance(&quot;com.sun.star.sdb.DatabaseContext&quot;));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// we use Bibliography</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XDataSource xDS = (XDataSource)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XDataSource.class, xNameAccess.getByName(&quot;Bibliography&quot;));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// simple way to connect</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XConnection con = xDS.<text:span text:style-name="CodeEmphasis">getConnection</text:span>(&quot;&quot;, &quot;&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// we need the XQueriesSupplier interface of the connection</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XQueriesSupplier xQuerySup = (XQueriesSupplier)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XQueriesSupplier.class, con);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// get container with com.sun.star.sdb.Query services</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xQDefs = xQuerySup.<text:span text:style-name="CodeEmphasis">getQueries</text:span>();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// retrieve XColumnsSupplier of Query1</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XColumnsSupplier xColsSup = (XColumnsSupplier) UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XColumnsSupplier.class,xQDefs.<text:span text:style-name="CodeEmphasis">getByName(&quot;Query1&quot;)</text:span>);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xCols = xColsSup.<text:span text:style-name="CodeEmphasis">getColumns</text:span>();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// Access column property TypeName</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>String aNames [] = xCols.getElementNames();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>for (int i=0;i&lt;aNames.length;++i) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>Object col = xCols.getByName(aNames[i]);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XPropertySet xColumnProps = (XPropertySet)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XPropertySet.class, col);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(aNames[i] + &quot; &quot; + xColumnProps.<text:span text:style-name="CODE Emphasis">getPropertyValue(&quot;TypeName&quot;)</text:span>);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 5" text:level="5">The SQLQueryComposer</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.SQLQueryComposer]<text:alphabetical-index-mark text:string-value="SQLQueryComposer"/>The service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.SQLQueryComposer]</text:span> is a tool that composes SQL <text:span text:style-name="Code (in text)">SELECT</text:span> strings. It hides the complexity of parsing and evaluating SQL statements, and provides sophisticated methods to configure an SQL statement with filtering and ordering criteria. A query composer is retrieved over the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XSQLQueryComposerFactory]</text:span> interface of a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Connection]</text:span>:</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdb::XSQLQueryComposer <text:span text:style-name="MethodSignatureEmphasis">createQueryComposer</text:span>()</text:p>
  <text:p text:style-name="Paragraph">Its interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XSQLQueryComposer]</text:span> is <text:alphabetical-index-mark text:string-value="XSQLQueryComposer"/>used to supply the SQLQueryComposer with the necessary information. It has the following methods:</text:p>
  <text:p text:style-name="MethodSignatures">// provide SQL string</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setQuery</text:span>( [in] string command)</text:p>
  <text:p text:style-name="MethodSignatures">string <text:span text:style-name="MethodSignatureEmphasis">getQuery</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">string <text:span text:style-name="MethodSignatureEmphasis">getComposedQuery</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// control the WHERE clause</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setFilter</text:span>( [in] string filter)</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">appendFilterByColumn</text:span>( [in] com::sun::star::beans::XPropertySet column)</text:p>
  <text:p text:style-name="MethodSignatures">string <text:span text:style-name="MethodSignatureEmphasis">getFilter</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">sequence&lt; sequence&lt; com::sun::star::beans::PropertyValue &gt; &gt; <text:span text:style-name="MethodSignatureEmphasis">getStructuredFilter</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// control the ORDER BY clause</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setOrder</text:span>( [in] string order)</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">appendOrderByColumn</text:span>( [in] com::sun::star::beans::XPropertySet column, [in] boolean ascending)</text:p>
  <text:p text:style-name="MethodSignatures">string <text:span text:style-name="MethodSignatureEmphasis">getOrder</text:span>()</text:p>
  <text:p text:style-name="Paragraph">In the above method, a query command, such as &quot;SELECT Identifier, Address, Author FROM biblio&quot; is passed to <text:alphabetical-index-mark-start text:id="IMark43664164"/><text:span text:style-name="Code (in text)">setQuery()</text:span><text:alphabetical-index-mark-end text:id="IMark43664164"/>, then the criteria for <text:span text:style-name="Code (in text)">WHERE</text:span> and <text:span text:style-name="Code (in text)">ORDER</text:span> <text:span text:style-name="Code (in text)">BY</text:span> is added. The <text:span text:style-name="Code (in text)">WHERE</text:span> expressions are passed without the <text:span text:style-name="Code (in text)">WHERE </text:span>keyword to <text:alphabetical-index-mark-start text:id="IMark44031436"/><text:span text:style-name="Code (in text)">setFilter()</text:span><text:alphabetical-index-mark-end text:id="IMark44031436"/>, and the method <text:alphabetical-index-mark-start text:id="IMark43912948"/><text:span text:style-name="Code (in text)">setOrder()</text:span><text:alphabetical-index-mark-end text:id="IMark43912948"/> with comma-separated <text:span text:style-name="Code (in text)">ORDER</text:span> <text:span text:style-name="Code (in text)">BY</text:span> columns or column numbers is provided. </text:p>
  <text:p text:style-name="Paragraph">As an alternative, add <text:span text:style-name="Code (in text)">WHERE</text:span> conditions using <text:alphabetical-index-mark-start text:id="IMark43664164"/><text:span text:style-name="Code (in text)">appendFilterByColumn()</text:span><text:alphabetical-index-mark-end text:id="IMark43664164"/>. This method expects a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DataColumn]</text:span> service providing the name and the value for the filter. Similarly, the method <text:alphabetical-index-mark-start text:id="IMark44952644"/><text:span text:style-name="Code (in text)">appendOrderByColumn()</text:span><text:alphabetical-index-mark-end text:id="IMark44952644"/> adds columns that are used for ordering. These columns could come from the <text:span text:style-name="Code (in text)">RowSet</text:span>.</text:p>
  <text:p text:style-name="Paragraph">Retrieve the resulting SQL string from <text:alphabetical-index-mark-start text:id="IMark43664164"/><text:span text:style-name="Code (in text)">getComposedQuery()</text:span><text:alphabetical-index-mark-end text:id="IMark43664164"/>. </text:p>
  <text:p text:style-name="Paragraph">The methods <text:alphabetical-index-mark-start text:id="IMark43664164"/><text:span text:style-name="Code (in text)">getQuery()</text:span><text:alphabetical-index-mark-end text:id="IMark43664164"/>, <text:alphabetical-index-mark-start text:id="IMark45166372"/><text:span text:style-name="Code (in text)">getFilter()</text:span><text:alphabetical-index-mark-end text:id="IMark45166372"/> and <text:alphabetical-index-mark-start text:id="IMark44952644"/><text:span text:style-name="Code (in text)">getOrder()</text:span><text:alphabetical-index-mark-end text:id="IMark44952644"/> return the <text:span text:style-name="Code (in text)">SELECT</text:span>, <text:span text:style-name="Code (in text)">WHERE</text:span> and <text:s/><text:span text:style-name="Code (in text)">ORDER</text:span> <text:span text:style-name="Code (in text)">BY</text:span> part of the SQL command as a string.</text:p>
  <text:p text:style-name="Paragraph">The method <text:alphabetical-index-mark-start text:id="IMark43664164"/><text:span text:style-name="Code (in text)">getStructuredFilter()</text:span><text:alphabetical-index-mark-end text:id="IMark43664164"/> returns the filter split into OR levels. Within each OR level, filters are provided as AND criteria with the name of the column and the filter condition string.</text:p>
  <text:p text:style-name="Paragraph">The following example prints the structured filter. </text:p>
  <text:p text:style-name="Code">// prints the structured filter</text:p>
  <text:p text:style-name="Code">public static void printStructeredFilter(XMultiServiceFactory _rMSF) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XNameAccess.class, _rMSF.createInstance(&quot;com.sun.star.sdb.DatabaseContext&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// we use the first datasource</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XDataSource xDS = (XDataSource)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XDataSource.class, xNameAccess.getByName(&quot;Bibliography&quot;)); </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XConnection con = xDS.getConnection(&quot;&quot;, &quot;&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XQueriesSupplier xQuerySup = (XQueriesSupplier)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XQueriesSupplier.class, con); </text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xQDefs = xQuerySup.getQueries();</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xQuery = (XPropertySet) UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XPropertySet.class,xQDefs.getByName(&quot;Query1&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>String sCommand = (String)xQuery.getPropertyValue(&quot;Command&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XSQLQueryComposerFactory xQueryFac = (XSQLQueryComposerFactory) UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XSQLQueryComposerFactory.class, con); </text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XSQLQueryComposer xQComposer = xQueryFac.createQueryComposer();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xQComposer.setQuery(sCommand);</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>PropertyValue aFilter [][] = xQComposer.getStructuredFilter();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>for (int i=0; i&lt;aFilter.length; ) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;( &quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>for (int j=0; j&lt;aFilter[i].length; ++j)</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot;Name: &quot; + aFilter[i][j].Name + &quot; Value: &quot; + aFilter[i][j].Value);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot;)&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>++i;</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>if (i&lt;aFilter.length )</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>System.out.println(&quot; OR &quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph">The interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XTablesSupplier]</text:span> <text:alphabetical-index-mark text:string-value="XTablesSupplier"/>provides access to the tables that are used in the “FROM” part of the SQL-Statement:</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::container::XNameAccess <text:span text:style-name="MethodSignatureEmphasis">getTables</text:span>()</text:p>
  <text:p text:style-name="Paragraph">The interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XColumnsSupplier]</text:span> <text:alphabetical-index-mark text:string-value="XColumnsSupplier"/>provides the selected columns, which are listed after the SELECT keyword:</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::container::XNameAccess <text:span text:style-name="MethodSignatureEmphasis">getColumns</text:span>()</text:p>
  <text:h text:style-name="Head 4" text:level="4">Forms and Other Links</text:h>
  <text:p text:style-name="P14">Each data source can maintain an arbitrary number of document links. The primary purpose of this function is to provide a collection of database forms used with a database. These links are available at the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XBookmarksSupplier]</text:span> <text:alphabetical-index-mark text:string-value="XBookmarksSupplier"/>interface of a data source that has one method:</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::container::XNameAccess <text:span text:style-name="MethodSignatureEmphasis">getBookmarks</text:span>()</text:p>
  <text:p text:style-name="Paragraph">The returned service is a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DefinitionContainer]</text:span>. The <text:span text:style-name="Code (in text)">DefinitionContainer</text:span> is not only an <text:span text:style-name="Code (in text)">XNameAccess</text:span>, but a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XNameContainer]</text:span>, that is, <text:s/>new links are added using <text:span text:style-name="Code (in text)">insertByName()</text:span> as described in the chapter <text:span text:style-name="ChapterRef">[CHAPTER:FirstSteps]</text:span>. Besides the name access, links are obtained through <text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XIndexAccess]</text:span> and <text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XEnumerationAccess]</text:span>.</text:p>
  <text:p text:style-name="Paragraph">The returned bookmarks are simple strings containing URLs. Usually forms are are stored at <text:span text:style-name="www/ftp/email">file:///</text:span> URLs. The following example adds a new document to the data source Bibliography: </text:p>
  <text:p text:style-name="Code">public static void addDocumentLink(XMultiServiceFactory _rMSF) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XNameAccess.class,_rMSF.createInstance(&quot;com.sun.star.sdb.DatabaseContext&quot;));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// we use the predefined Bibliography data source</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XDataSource xDS = (XDataSource)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XDataSource.class, xNameAccess.getByName(&quot;Bibliography&quot;));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// we need the XBookmarksSupplier interface of the data source</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XBookmarksSupplier xBookmarksSupplier = ( XBookmarksSupplier )UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XBookmarksSupplier.class, xDS);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// get container with bookmark URLs</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xBookmarks = xBookmarksSupplier.getBookmarks();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameContainer xBookmarksContainer = (XNameContainer)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XNameContainer.class, xBookmarks);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// insert new link</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xBookmarksContainer.insertByName(&quot;MyLink&quot;, &quot;file:///home/ada01/Form_Ada01_DSADMIN.Table1.sxw&quot;);</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph">To load a linked document, use the bookmark URL with the method <text:span text:style-name="Code (in text)">loadComponentFromUrl()</text:span> at the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.frame.XComponentLoader]</text:span> interface of the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.frame.Desktop]</text:span> singleton that is available at the global service manager. For details about the <text:span text:style-name="Code (in text)">Desktop,</text:span> see <text:span text:style-name="ChapterRef">[CHAPTER:OfficeDev]</text:span>.</text:p>
  <text:h text:style-name="Head 4" text:level="4"><text:alphabetical-index-mark text:string-value="tables"/>Tables and <text:alphabetical-index-mark text:string-value="columns"/>Columns</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.Table;com.sun.star.sdb.Column]<text:alphabetical-index-mark text:string-value="Column"/><text:alphabetical-index-mark text:string-value="Column"/>A <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Table]</text:span> <text:alphabetical-index-mark text:string-value="Table"/><text:alphabetical-index-mark text:string-value="Table"/>encapsulates tables in a <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API data source. The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Table]</text:span> service changes the appearance of a table and its columns in the GUI, and it contains read-only information about the table definition, such as the table name and type, the schema and catalog name, and access privileges. </text:p>
  <text:p text:style-name="Paragraph">It is also possible to alter the table definition at the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Table]</text:span> service. This is discussed in the section <text:span text:style-name="ChapterRef">[CHAPTER:Database.Design]</text:span> below.</text:p>
  <text:p text:style-name="Paragraph">The table related services in the database context are unable to access the data in a database table. <text:s/>Use the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span> service, or to establish a connection to a database and use its <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XCommandPreparation]</text:span> interface to manipulate table data. For details, see the sections <text:span text:style-name="ChapterRef">[CHAPTER:Database.Manipulate.RowSet]</text:span> and <text:span text:style-name="ChapterRef">[CHAPTER:Database.Manipulate.PreparedStatementsFromDataSourceQueries]</text:span>.</text:p>
  <text:p text:style-name="Paragraph">The following illustration shows the relationship between the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Connection]</text:span> and the <text:span text:style-name="Code (in text)">Table</text:span> objects it provides, and the services included in <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Table]</text:span>.</text:p>
  <table:table table:name="Table48" table:style-name="Table48">
   <table:table-column table:style-name="Table48.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table48.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr2" draw:name="Frame41" text:anchor-type="paragraph" svg:y="0cm" svg:width="14.139cm" fo:min-height="15.457cm" draw:z-index="16">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr7" draw:name="UML diagram of Connection and Table" text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" svg:width="14.092cm" svg:height="14.91cm" draw:z-index="17" xlink:href="TableSettings.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the relation between Connection and Table</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration4" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.5</text:sequence>: Connection and Tables</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XTablesSupplier]</text:span> <text:alphabetical-index-mark text:string-value="XTablesSupplier"/>interface of a <text:span text:style-name="Code (in text)">Connection</text:span> supplies a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Container]</text:span> of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Table]</text:span> services through its method <text:alphabetical-index-mark-start text:id="IMark45007268"/><text:span text:style-name="Code (in text)">getTables()</text:span><text:alphabetical-index-mark-end text:id="IMark45007268"/>. The container administers Table services by name, index or as enumeration.</text:p>
  <text:p text:style-name="Paragraph">Just like queries, tables include the display properties specified in <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DataSettings]</text:span>:</text:p>
  <table:table table:name="Table27" table:style-name="Table27">
   <table:table-column table:style-name="Table27.A"/>
   <table:table-column table:style-name="Table27.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table27.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DataSettings]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table27.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSettings:Filter]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table27.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ An additional filter for the data object, WHERE clause syntax.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table27.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSettings:ApplyFilter]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table27.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ Indicates if the filter should be applied. The default is FALSE.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table27.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSettings:Order]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table27.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Is an additional sort order definition. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table27.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSettings:FontDescriptor]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table27.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">Struct</text:span> <text:span text:style-name="Code (in text)">[idl:com.sun.star.awt.FontDescriptor]</text:span>. Specifies the font attributes for displayed data.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table27.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSettings:RowHeight]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table27.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ Specifies the height of a data row.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table27.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.DataSettings:TextColor]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table27.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ Specifies the text color for displayed text in 0xAARRGGBB notation</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">Basic table information is included in the properties included with <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Table]</text:span>:</text:p>
  <table:table table:name="Table29" table:style-name="Table29">
   <table:table-column table:style-name="Table29.A"/>
   <table:table-column table:style-name="Table29.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table29.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Table]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table29.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Table:Name]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table29.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] string</text:span> ─ Table name.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table29.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Table:CatalogName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table29.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] string</text:span> ─ Catalog name.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table29.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Table:SchemaName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table29.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] string</text:span> ─ Schema name.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table29.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Table:Description]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table29.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] string</text:span> ─ Table Description, if supported by the driver.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table29.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Table:Type]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table29.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] string</text:span> ─ Table type, possible values are TABLE, VIEW, SYSTEM TABLE or an empty string if the driver does not support different table types.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">The service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Table]</text:span> is an extension of the service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Table]</text:span>. It introduces an additional property called <text:span text:style-name="Code (in text)">Privileges</text:span>. The <text:span text:style-name="Code (in text)">Privileges</text:span> property indicates the actions the current user may carry out on the table.</text:p>
  <table:table table:name="Table28" table:style-name="Table28">
   <table:table-column table:style-name="Table28.A"/>
   <table:table-column table:style-name="Table28.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table28.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Table]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table28.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.Table:Privileges]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table28.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">[readonly] long, constants group <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Privilege]</text:span>. The property contains a bitwise AND combination of the following privileges:</text:p>
     <text:unordered-list text:style-name="L7">
      <text:list-item>
       <text:p text:style-name="P15">SELECT user can read the data.</text:p>
      </text:list-item>
      <text:list-item>
       <text:p text:style-name="P15">INSERT user can insert new data.</text:p>
      </text:list-item>
      <text:list-item>
       <text:p text:style-name="P15">UPDATE user can update data.</text:p>
      </text:list-item>
      <text:list-item>
       <text:p text:style-name="P15">DELETE user can delete data.</text:p>
      </text:list-item>
      <text:list-item>
       <text:p text:style-name="P15">READ user can read the structure of a definition object.</text:p>
      </text:list-item>
      <text:list-item>
       <text:p text:style-name="P15">CREATE user can create a definition object.</text:p>
      </text:list-item>
      <text:list-item>
       <text:p text:style-name="P15">ALTER user can alter an existing object.</text:p>
      </text:list-item>
      <text:list-item>
       <text:p text:style-name="P15">REFERENCE user can set foreign keys for a table.</text:p>
      </text:list-item>
      <text:list-item>
       <text:p text:style-name="P15">DROP user can drop a definition object.</text:p>
      </text:list-item>
     </text:unordered-list>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">The appearance of single columns in a table can be changed. The following illustration depicts the service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Column]</text:span> and its relationship with the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Table]</text:span> service.</text:p>
  <table:table table:name="Table10" table:style-name="Table10">
   <table:table-column table:style-name="Table10.A"/>
   <table:table-row>
    <table:table-cell table:style-name="Table10.A1" table:value-type="string">
     <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr8" draw:name="Frame5" text:anchor-type="paragraph" svg:width="14.09cm" fo:min-height="17.383cm" draw:z-index="7">
       <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of Table and TableColumns" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="14.011cm" svg:height="16.9cm" draw:z-index="8" xlink:href="Sdb_Column.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
         <svg:desc>UML diagram showing Table and TableColumns</svg:desc>
        </draw:image>Illustration <text:sequence text:ref-name="refIllustration5" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.6</text:sequence>: Table and Table Column</text:p>
      </draw:text-box></text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">For this purpose, <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Table]</text:span> supports the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XColumnsSupplier]</text:span>. <text:alphabetical-index-mark text:string-value="XColumnsSupplier"/>Its method <text:alphabetical-index-mark-start text:id="IMark44952644"/><text:span text:style-name="Code (in text)">getColumns()</text:span><text:alphabetical-index-mark-end text:id="IMark44952644"/> returns a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Container]</text:span> with the additional column-related interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XColumnLocate]</text:span> that is useful to get the column number for a certain column in a table:</text:p>
  <text:p text:style-name="MethodSignatures">long <text:span text:style-name="MethodSignatureEmphasis">findColumn</text:span>( [in] string columnName)</text:p>
  <text:p text:style-name="Paragraph">The service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Column]</text:span> combines <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Column]</text:span> and the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.ColumnSettings]</text:span> <text:alphabetical-index-mark text:string-value="ColumnSettings"/>to form a column service with the opportunity to alter the visual appearance of a column.</text:p>
  <table:table table:name="Table4" table:style-name="Table4">
   <table:table-column table:style-name="Table4.A"/>
   <table:table-column table:style-name="Table4.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table4.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.ColumnSettings]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table4.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ColumnSettings:FormatKey]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table4.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ Contains the index of the number format that is used for the column. <text:line-break/>The proper value can be determined using the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.util.XNumberFormatter]</text:span> interface. If the value is void, a default number format is used according to the data type of the column.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table4.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ColumnSettings:Align]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table4.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ Specifies the alignment of column text. Possible values are:</text:p>
     <text:p text:style-name="TextInTable">0: left<text:line-break/>1: center<text:line-break/>2: right</text:p>
     <text:p text:style-name="TextInTable">If the value is void, a default alignment is used according to the data type of the column.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table4.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ColumnSettings:Width]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table4.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ Specifies the width of the column displayed in a grid. The unit is 10th mm. If the value is void, a default width should be used according to the label of the column.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table4.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ColumnSettings:Position]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table4.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ The ordinal position of the column within a grid. If the value is void, the default position should be used according to their order of appearance in <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XResultSetMetaData]</text:span>.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table4.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ColumnSettings:Hidden]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table4.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ Determines if the column should be displayed.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table4.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ColumnSettings:ControlModel]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table4.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.beans.XPropertySet]</text:span>. May contain a control model that defines the settings for layout. The default is NULL.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table4.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ColumnSettings:HelpText]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table4.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Describes an optional help text that can be used by UI components when representing this column.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table4.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ColumnSettings:ControlDefault]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table4.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Contains the default value that should be displayed by a control when moving to a new row.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">The Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Column]</text:span> are readonly and can be used for information purposes:</text:p>
  <table:table table:name="Table30" table:style-name="Table30">
   <table:table-column table:style-name="Table30.A"/>
   <table:table-column table:style-name="Table30.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table30.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Column]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table30.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:Name]</text:span> </text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table30.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] string</text:span> ─ The name of the column. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table30.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:Type]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table30.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] long</text:span> ─ The <text:span text:style-name="Code (in text)">[idl:com.sun.star.sdbc.DataType]</text:span> of the column. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table30.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:TypeName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table30.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] string</text:span> ─ The type name used by the database. If the column type is a user-defined type, then a fully-qualified type name is returned. May be empty. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table30.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:Precision]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table30.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] long</text:span> ─ The number of decimal digits or chars.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table30.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:Scale]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table30.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] long</text:span> ─ Number of digits after the decimal point. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table30.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:IsNullable]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table30.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] long</text:span>, constants group <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.ColumnValue]</text:span>. Indicates if values may be NULL <text:s/>in the designated column. Possible values are: </text:p>
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">NULLABLE</text:span>: column allows NULL values. <text:line-break/><text:span text:style-name="Code (in text)">NO_NULLS</text:span>: column does not allow NULL values. <text:s/><text:line-break/><text:span text:style-name="Code (in text)">NULLABLE_UNKNOWN</text:span> : it is unknown whether or not NULL is allowed</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table30.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:IsAutoIncrement]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table30.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] boolean</text:span> ─ Indicates if the column is automatically numbered.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table30.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:IsCurrency]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table30.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] boolean</text:span> ─ Indicates if the column is a cash value. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table30.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:IsRowVersion]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table30.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] boolean</text:span> ─ Indicates whether the column contains a type of time or date stamp used to track updates.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table30.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:Description]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table30.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] string</text:span> ─ Keeps a description of the object. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table30.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:DefaultValue]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table30.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] string</text:span> ─ Keeps a default value for a column, and is provided as a string. </text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:h text:style-name="Head 3" text:level="3">Connections</text:h>
  <text:h text:style-name="Head 4" text:level="4">Understanding <text:alphabetical-index-mark text:string-value="connections"/>Connections</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.Connection]A <text:alphabetical-index-mark text:string-value="Connection"/><text:span text:style-name="Emphasis">connection</text:span> is an open communication channel to a database. A connection is required to work with data in a database or with a database definition. Connections are encapsulated in <text:span text:style-name="Code (in text)">Connection</text:span> objects in the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API. There are several possibilities to get a <text:span text:style-name="Code (in text)">Connection</text:span>:</text:p>
  <text:unordered-list text:style-name="L8">
   <text:list-item>
    <text:p text:style-name="P16">Connect to a data source that has already been set up in the database context of <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P16">Use the driver manager or a specific driver to connect to a database without using an existing data source from the database context.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P16">Get a connection from the connection pool maintained by <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P16">Reuse the connection of a database form which is currently open in the GUI.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">With the above possibilities, a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Connection]</text:span> is made or at least a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.Connection]</text:span>:</text:p>
  <table:table table:name="Table49" table:style-name="Table49">
   <table:table-column table:style-name="Table49.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table49.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr2" draw:name="Frame15" text:anchor-type="paragraph" svg:y="0cm" svg:width="11.25cm" fo:min-height="12.261cm" draw:z-index="18">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr7" draw:name="UML diagram of com.sun.star.sdb.Connection" text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" svg:width="11.21cm" svg:height="11.779cm" draw:z-index="19" xlink:href="Sdb_Connection.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the com.sun.star.sdb.Connection service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration6" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.7</text:sequence>: <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Connection]</text:span></text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">The service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.Connection]</text:span> has three main functions: communication, data definition and operation on the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API application level. The service:</text:p>
  <text:unordered-list text:style-name="L9">
   <text:list-item>
    <text:p text:style-name="P17">Handles the communication with a database including statement execution, transactions, database metadata and warnings through the simple connection service of the SDBC layer <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.Connection]</text:span>. </text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P17">Handles <text:s/>database definition tasks, primarily table definitions, through the service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.DatabaseDefinition]</text:span>. Optionally, it manages views, users and groups.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P17">Organizes query definitions on the application level and provides a method to open queries and tables defined in <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API. Query definitions are organized by the interfaces <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XQueriesSupplier]</text:span> and <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XSQLQueryComposerFactory]</text:span>. Queries and tables can be opened using <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XCommandPreparation]</text:span>. In case the underlying data source is needed, <text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XChild]</text:span> provides the parent data source. This is useful when using an existing connection, for instance, of a database form, to act upon its data source.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">Connections are central to all database activities. The connection interfaces are discussed later.</text:p>
  <text:h text:style-name="Head 5" text:level="5">Communication</text:h>
  <text:p text:style-name="Paragraph">The main interface of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.Connection]</text:span> is <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XConnection]</text:span>. Its methods control almost every aspect of communication with a database management system:</text:p>
  <text:p text:style-name="MethodSignatures">// general connection control</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">close</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">isClosed</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setReadOnly</text:span>( [in] boolean readOnly)</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">isReadOnly</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// commands and statements</text:p>
  <text:p text:style-name="MethodSignatures">// - generic SQL statement</text:p>
  <text:p text:style-name="MethodSignatures">// - prepared statement</text:p>
  <text:p text:style-name="MethodSignatures">// - stored procedure call<text:tab-stop/></text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XStatement <text:span text:style-name="MethodSignatureEmphasis">createStatement</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XPreparedStatement <text:span text:style-name="MethodSignatureEmphasis">prepareStatement</text:span>( [in] string sql)</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XPreparedStatement <text:span text:style-name="MethodSignatureEmphasis">prepareCall</text:span>( [in] string sql)</text:p>
  <text:p text:style-name="MethodSignatures">string <text:span text:style-name="MethodSignatureEmphasis">nativeSQL</text:span>( [in] string sql)</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// transactions</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setTransactionIsolation</text:span>( [in] long level)</text:p>
  <text:p text:style-name="MethodSignatures">long <text:span text:style-name="MethodSignatureEmphasis">getTransactionIsolation</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setAutoCommit</text:span>( [in] boolean autoCommit)</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">getAutoCommit</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">commit</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">rollback</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// database metadata</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XDatabaseMetaData <text:span text:style-name="MethodSignatureEmphasis">getMetaData</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// data type mapping (driver dependent)</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::container::XNameAccess <text:span text:style-name="MethodSignatureEmphasis">getTypeMap</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setTypeMap</text:span>( [in] com::sun::star::container::XNameAccess typeMap)</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// catalog (subspace in a database)</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setCatalog</text:span>( [in] string catalog)</text:p>
  <text:p text:style-name="MethodSignatures">string <text:span text:style-name="MethodSignatureEmphasis">getCatalog</text:span>()</text:p>
  <text:p text:style-name="Paragraph">The use of commands and statements are explained in the sections <text:span text:style-name="ChapterRef">[CHAPTER:Database.Manipulate]</text:span> and <text:span text:style-name="ChapterRef">[CHAPTER:Database.Design.DDL]</text:span>. Transactions are discussed in <text:span text:style-name="ChapterRef">[CHAPTER:Database.DBMSFeatures.Transactions]</text:span>. Database metadata are covered in <text:span text:style-name="ChapterRef">[CHAPTER:Database.Design.RetrievingInformation]</text:span>.</text:p>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XWarningsSupplier]</text:span> is a simple interface to handle SQL warnings:</text:p>
  <text:p text:style-name="MethodSignatures">any <text:span text:style-name="MethodSignatureEmphasis">getWarnings</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">clearWarnings</text:span>()</text:p>
  <text:p text:style-name="Paragraph">The exception <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.SQLWarning]</text:span> is usually not thrown, rather it is transported silently to objects supporting <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XWarningsSupplier]</text:span>. Refer to the API reference for more information about SQL warnings.</text:p>
  <text:h text:style-name="Head 5" text:level="5">Data Definition</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbcx.DatabaseDefinition]<text:alphabetical-index-mark text:string-value="DataDefinition"/>The interfaces of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.DatabaseDefinition]</text:span> are explained in the section <text:span text:style-name="ChapterRef">[CHAPTER:Database.Design.SDBCX]</text:span>.</text:p>
  <text:h text:style-name="Head 5" text:level="5">Operation on Application Level</text:h>
  <text:p text:style-name="Paragraph">Handling of query definitions through <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XQueriesSupplier]</text:span> and <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XSQLQueryComposerFactory]</text:span> is discussed in the section <text:span text:style-name="ChapterRef">[CHAPTER:Database.DataSources.DataSources.Queries]</text:span> .</text:p>
  <text:p text:style-name="Paragraph">Through <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XCommandPreparation]</text:span> <text:alphabetical-index-mark text:string-value="XCommandPreparation"/>get the necessary statement objects to open predefined queries and tables in a data source, and execute arbitrary SQL statements. </text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XPreparedStatement <text:span text:style-name="MethodSignatureEmphasis">prepareCommand</text:span>( [in] string command, [in] long commandType)</text:p>
  <text:p text:style-name="Paragraph">If the value of the parameter <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.CommandType]</text:span> is <text:span text:style-name="Code (in text)">TABLE</text:span> or <text:span text:style-name="Code (in text)">QUERY</text:span>, pass a table name or query name that exists in the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DataSource]</text:span> of the connection. The value <text:span text:style-name="Code (in text)">COMMAND</text:span> makes <text:span text:style-name="Code (in text)">prepareCommand()</text:span> expect an SQL string. The result is a prepared statement object that can be parameterized and executed. For details and an example, refer to section <text:span text:style-name="ChapterRef">[CHAPTER:Database.Manipulate.PreparedStatementsFromDataSourceQueries]</text:span>.</text:p>
  <text:p text:style-name="Paragraph">The interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XChild]</text:span> accesses the parent <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DataSource]</text:span> of the connection, if available.</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::uno::XInterface <text:span text:style-name="MethodSignatureEmphasis">getParent</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setParent</text:span>( [in] com::sun::star::uno::XInterface Parent)</text:p>
  <text:p text:style-name="Paragraph">Connecting Through A DataSource</text:p>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbc.XDataSource]Data<text:alphabetical-index-mark text:string-value="XDataSource"/> sources in the database context of <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API offer two methods to establish a connection, a non-interactive and an interactive procedure. Use the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDataSource]</text:span> interface to connect. It consists of:</text:p>
  <text:p text:style-name="MethodSignatures">// establish connection</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XConnection <text:span text:style-name="MethodSignatureEmphasis">getConnection</text:span>( [in] string user, [in] string password)</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// timeout for connection failure</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setLoginTimeout</text:span>( [in] long seconds)</text:p>
  <text:p text:style-name="MethodSignatures">long <text:span text:style-name="MethodSignatureEmphasis">getLoginTimeout</text:span>()</text:p>
  <text:p text:style-name="Paragraph">If a database does not support logins, pass empty strings to <text:alphabetical-index-mark-start text:id="IMark44161044"/><text:span text:style-name="Code (in text)">getConnection()</text:span><text:alphabetical-index-mark-end text:id="IMark44161044"/>. For instance, use <text:span text:style-name="Code (in text)">getConnection()</text:span> against dBase data sources like Bibliography:</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XNameAccess.class, _rMSF.createInstance(&quot;com.sun.star.sdb.DatabaseContext&quot;));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// we use the Bibliography data source</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XDataSource xDS = (XDataSource)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XDataSource.class, xNameAccess.getByName(&quot;Bibliography&quot;));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// simple way to connect</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XConnection xConnection = xDS.<text:span text:style-name="CodeEmphasis">getConnection</text:span>(&quot;&quot;, &quot;&quot;);</text:p>
  <text:p text:style-name="Paragraph">However if the database expects a login procedure, hard code the user and password, although this is not advisable. Data sources support an advanced login concept. Their interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XCompletedConnection]</text:span> starts<text:alphabetical-index-mark text:string-value="XCompletedConnection"/> an interactive login, if necessary:</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XConnection <text:span text:style-name="MethodSignatureEmphasis">connectWithCompletion</text:span>(</text:p>
  <text:p text:style-name="MethodSignatures"><text:tab-stop/><text:tab-stop/><text:tab-stop/>[in] com::sun::star::task::XInteractionHandler handler)</text:p>
  <text:p text:style-name="Paragraph">When you call <text:alphabetical-index-mark-start text:id="IMark43664164"/><text:span text:style-name="Code (in text)">connectWithCompletion()</text:span><text:alphabetical-index-mark-end text:id="IMark43664164"/>, <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API shows the common login dialog to the user if the data source property <text:span text:style-name="Code (in text)">IsPasswordRequired</text:span> is <text:span text:style-name="Code (in text)">true</text:span>. The login dialog is part of the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.InteractionHandler]</text:span> provided by the global service factory.</text:p>
  <text:p text:style-name="Code">// logs into a database and returns a connection</text:p>
  <text:p text:style-name="Code">// expects a reference to the global service manager</text:p>
  <text:p text:style-name="Code">com.sun.star.sdbc.XConnection logon(XMultiServiceFactory _rMSF) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// retrieve the DatabaseContext and get its com.sun.star.container.XNameAccess interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XNameAccess.class, _rMSF.createInstance(&quot;com.sun.star.sdb.DatabaseContext&quot;));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// get an Adabas D data source Ada01 generated in the GUI</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>Object dataSource = xNameAccess.getByName(&quot;Ada01&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// create a com.sun.star.sdb.InteractionHandler and get its XInteractionHandler interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>Object interactionHandler = _rMSF.<text:span text:style-name="CodeEmphasis">createInstance(&quot;com.sun.star.sdb.InteractionHandler&quot;)</text:span>;</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XInteractionHandler xInteractionHandler = (XInteractionHandler)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XInteractionHandler.class, interactionHandler);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// query for the XCompletedConnection interface of the data source</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XCompletedConnection xCompletedConnection = (XCompletedConnection)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XCompletedConnection.class, dataSource);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// connect with interactive login</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XConnection xConnection = xCompletedConnection.<text:span text:style-name="CodeEmphasis">connectWithCompletion(xInteractionHandler)</text:span>;</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>return XConnection;</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 4" text:level="4">Connecting Using the <text:alphabetical-index-mark-start text:id="IMark44161044"/>DriverManager<text:alphabetical-index-mark-end text:id="IMark44161044"/> and a Database URL</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbc.DriverManager]The database context and establishing connections to a database even if there is no data source for it in <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API can be avoided. </text:p>
  <text:p text:style-name="Paragraph">To create a connection ask the <text:span text:style-name="T6">driver manager</text:span> for it. The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.DriverManager]</text:span> manages database drivers. The methods of its interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDriverManager]</text:span> <text:alphabetical-index-mark text:string-value="XDriverManager"/>are used to connect to a database using a database URL:</text:p>
  <text:p text:style-name="MethodSignatures">// establish connection</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XConnection <text:span text:style-name="MethodSignatureEmphasis">getConnection</text:span>( [in] string url)</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XConnection <text:span text:style-name="MethodSignatureEmphasis">getConnectionWithInfo</text:span>( [in] string url, </text:p>
  <text:p text:style-name="MethodSignatures"><text:tab-stop/> [in] sequence &lt; com::sun::star::beans::PropertyValue &gt; info)</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// timeout for connection failure</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setLoginTimeout</text:span>( [in] long seconds)</text:p>
  <text:p text:style-name="MethodSignatures">long <text:span text:style-name="MethodSignatureEmphasis">getLoginTimeout</text:span>()</text:p>
  <text:p text:style-name="Paragraph">Additionally, the driver manager enumerates all available drivers, and is used to register and deregister drivers. A URL that identifies a driver and contains information about the database to connect to must be known. The <text:span text:style-name="Code (in text)">DriverManager</text:span> chooses the first registered driver that accepts this URL. The following line of code illustrates it generally:</text:p>
  <text:p text:style-name="Code">Connection xConnection = <text:span text:style-name="T6">DriverManager.getConnection</text:span>(url);</text:p>
  <text:p text:style-name="Paragraph">The structure of the URL consists of a protocol name, followed by the driver specific <text:span text:style-name="T6">sub-protocol.</text:span> The data source <text:span text:style-name="T6">administration dialog</text:span> shows the latest supported protocols. Some protocols are platform dependent. For example, ADO is only supported on Windows. </text:p>
  <text:p text:style-name="Paragraph">The URLs and conditions for the various drivers are explained in section <text:span text:style-name="ChapterRef">[CHAPTER:Database.DataSources.Connection.DriverSpecifics]</text:span> below.</text:p>
  <text:p text:style-name="Paragraph">Frequently a connection needs additional information, such as a user name, password or character set. Use the method <text:alphabetical-index-mark-start text:id="IMark44161044"/><text:span text:style-name="Code (in text)">getConnectionWithInfo()</text:span><text:alphabetical-index-mark-end text:id="IMark44161044"/><text:span text:style-name="Code (in text)"> </text:span>to provide this information. The method <text:span text:style-name="Code (in text)">getConnectionWithInfo()</text:span> takes a sequence of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.beans.PropertyValue]</text:span> structs. Usually <text:span text:style-name="Code (in text)">user</text:span> and <text:span text:style-name="Code (in text)">password</text:span> are supported. For other connection info properties, refer to the section <text:span text:style-name="ChapterRef">[CHAPTER:Database.DataSources.Connection.DriverSpecifics]</text:span>. [SOURCE:Database/CodeSamples.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// create the DriverManager</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>Object driverManager = xMultiServiceFactory.createInstance(&quot;com.sun.star.sdbc.DriverManager&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// query for the interface XDriverManager</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>com.sun.star.sdbc.XDriverManager xDriverManager;</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>xDriverManager = (XDriverManager)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XDriverManager.class, driverManager);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (xDriverManager != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// first create the database URL</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String adabasURL = &quot;sdbc:adabas::MYDB0&quot;;</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>// create the necessary sequence of PropertyValue structs for user and password</text:p>
  <text:p text:style-name="Code"><text:span text:style-name="T6"><text:s text:c="8"/>com.sun.star.beans.PropertyValue</text:span> [] adabasProps = new com.sun.star.beans.PropertyValue[] { </text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>new com.sun.star.beans.PropertyValue(&quot;user&quot;, 0, &quot;Scott&quot;,</text:p>
  <text:p text:style-name="Code"><text:span text:style-name="T6"><text:s text:c="16"/>com.sun.star.beans.PropertyState.DIRECT</text:span>_VALUE),</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>new com.sun.star.beans.PropertyValue(&quot;password&quot;, 0, &quot;huutsch&quot;,</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>com.sun.star.beans.PropertyState.DIRECT_VALUE)</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>};</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>// now create a connection to Adabas</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XConnection xConnection = xDriverManager.<text:span text:style-name="CodeEmphasis">getConnectionWithInfo</text:span>(adabasURL, adabasProps);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>if (adabasConnection != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot;Connection was created!&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="12"/>// now we dispose the connection to close it</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XComponent xComponent = (XComponent)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>XComponent.class, xConnection );</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="12"/>if (xComponent != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>// connection must be disposed to avoid memory leaks</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>xComponent.dispose();</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>System.out.println(&quot;Connection disposed!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>} else {</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot;Connection could not be created!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:h text:style-name="Head 4" text:level="4">Connecting Through a Specific Driver</text:h>
  <text:p text:style-name="Paragraph">The second method to create an independent, data-source connection is to use a particular driver implementation, such as writing a driver. There are also several implementations. Create an instance of the driver and ask it for a connection to decide what driver is used: [SOURCE:Database/CodeSamples.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// create the Driver using the implementation name</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>Object aDriver = xMultiServiceFactory.<text:span text:style-name="CodeEmphasis">createInstance</text:span>(&quot;com.sun.star.comp.sdbcx.adabas.ODriver&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// query for the XDriver interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>com.sun.star.sdbc.XDriver xDriver;</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xDriver = (XDriver)UnoRuntime.queryInterface(XDriver.class, aDriver);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (xDriver != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// first create the needed url</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String adabasURL = &quot;sdbc:adabas::MYDB0&quot;;</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>// second create the necessary properties</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>com.sun.star.beans.PropertyValue [] adabasProps = new com.sun.star.beans.PropertyValue[] {</text:p>
  <text:p text:style-name="Code"><text:tab-stop/> <text:s text:c="3"/>new com.sun.star.beans.PropertyValue(&quot;user&quot;, 0, &quot;test1&quot;,</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>com.sun.star.beans.PropertyState.DIRECT_VALUE),</text:p>
  <text:p text:style-name="Code"><text:tab-stop/> <text:s text:c="3"/>new com.sun.star.beans.PropertyValue(&quot;password&quot;, 0, &quot;test1&quot;,</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>com.sun.star.beans.PropertyState.DIRECT_VALUE)</text:p>
  <text:p text:style-name="Code"><text:s text:c="3"/><text:tab-stop/> <text:s text:c="3"/>};</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>// now create a connection to adabas</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XConnection adabasConnection = xDriver.connect(adabasURL,adabasProps);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>if (xConnection != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot;Connection was created!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>// now we dispose the connection to close it</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XComponent xComponent = (XComponent)UnoRuntime.queryInterface(XComponent.class, xConnection);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>if (xComponent != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>xComponent.dispose();</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>System.out.println(&quot;Connection disposed!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>} else {</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot;Connection could not be created!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:h text:style-name="Head 4" text:level="4">Driver Specifics</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbcx.Driver]<text:alphabetical-index-mark text:string-value="Driver"/>Currently, there are eight driver implementations. Some support only the simple <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.Driver]</text:span> service, some additionally the more extended service from <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Driver]</text:span> that includes the support for tables, columns, keys, indexes, groups and users. This section describes the capabilities and the missing functionality in some database drivers. Below is a list of all available drivers.</text:p>
  <table:table table:name="Table5" table:style-name="Table5">
   <table:table-column table:style-name="Table5.A" table:number-columns-repeated="2"/>
   <table:table-column table:style-name="Table5.C"/>
   <table:table-column table:style-name="Table5.D"/>
   <table:table-column table:style-name="Table5.E"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table5.A1" table:value-type="string">
      <text:p text:style-name="TableHead">Driver</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table5.A1" table:value-type="string">
      <text:p text:style-name="TableHead">URL</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table5.A1" table:value-type="string">
      <text:p text:style-name="TableHead">Solaris</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table5.A1" table:value-type="string">
      <text:p text:style-name="TableHead">Linux</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table5.E1" table:value-type="string">
      <text:p text:style-name="TableHead">Windows</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:alphabetical-index-mark-start text:id="IMark44161044" text:key1="driver"/>JDBC<text:alphabetical-index-mark-end text:id="IMark44161044"/></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">jdbc:subprotocol:</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.E2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:alphabetical-index-mark-start text:id="IMark44161044" text:key1="driver"/>ODBC 3.5<text:alphabetical-index-mark-end text:id="IMark44161044"/></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">sdbc:odbc:datasource name</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.E2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:alphabetical-index-mark-start text:id="IMark44161044" text:key1="driver"/>Adabas<text:alphabetical-index-mark-end text:id="IMark44161044"/> D</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">sdbc:adabas:database name</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.E2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:alphabetical-index-mark-start text:id="IMark44161044" text:key1="driver"/>ADO<text:alphabetical-index-mark-end text:id="IMark44161044"/></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">sdbc:ado:ADO specific</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P19"/>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P19"/>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.E2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:alphabetical-index-mark-start text:id="IMark44161044" text:key1="driver"/>dBase<text:alphabetical-index-mark-end text:id="IMark44161044"/></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">sdbc:dbase:Location of folder or file</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.E2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:alphabetical-index-mark-start text:id="IMark44161044" text:key1="driver"/>Flat file format (csv)<text:alphabetical-index-mark-end text:id="IMark44161044"/></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">sdbc:flat:Location of folder or file</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.E2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">[PRODUCTNAME] Calc</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">sdbc:calc:Location of [PRODUCTNAME] Calc file</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.E2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:alphabetical-index-mark-start text:id="IMark44161044" text:key1="driver"/>Mozilla addressbook<text:alphabetical-index-mark-end text:id="IMark44161044"/> (Mozilla, Outlook, Outlook Express and LDAP)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">sdbc:address:Kind of addressbook</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table5.E2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:h text:style-name="Head 5" text:level="5">The SDBC Driver for JDBC</text:h>
  <text:p text:style-name="Paragraph">The SDBC driver for JDBC is a mapping from SDBC API calls to the JDBC API, and vice versa. Basically, this driver is a direct bridge to JDBC. The SDBC driver for JDBC requires a special property called <text:span text:style-name="Code (in text)">JavaDriverClass </text:span>to know which JDBC driver should be used. The expected value of this property should be the complete class name of the JDBC driver. The following code snippet uses a MySQL JDBC driver to connect.</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// first create the needed url</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>String url = &quot;jdbc:mysql://localhost:3306/TestTables&quot;;</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// second create the necessary properties</text:p>
  <text:p text:style-name="P20"><text:s text:c="4"/>com.sun.star.beans.PropertyValue [] props = new com.sun.star.beans.PropertyValue[] {</text:p>
  <text:p text:style-name="P20"><text:s text:c="8"/>new <text:a xlink:type="simple" xlink:href="" text:style-name="Internet link" text:visited-style-name="Visited Internet Link">com.sun.star.beans.PropertyValue</text:a>(&quot;user&quot;, 0, &quot;test1&quot;, </text:p>
  <text:p text:style-name="P20"><text:s text:c="12"/>com.sun.star.beans.PropertyState.DIRECT_VALUE),</text:p>
  <text:p text:style-name="P20"><text:s text:c="8"/>new com.sun.star.beans.PropertyValue(&quot;password&quot;, 0, &quot;test1&quot;,</text:p>
  <text:p text:style-name="P20"><text:s text:c="12"/>com.sun.star.beans.PropertyState.DIRECT_VALUE),</text:p>
  <text:p text:style-name="P20"><text:s text:c="8"/>new com.sun.star.beans.PropertyValue(&quot;JavaDriverClass&quot;, 0, &quot;org.gjt.mm.mysql.Driver&quot;,</text:p>
  <text:p text:style-name="P20"><text:s text:c="12"/>com.sun.star.beans.PropertyState.DIRECT_VALUE)</text:p>
  <text:p text:style-name="P20"><text:s text:c="4"/>};</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// now create a connection to adabas</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xConnection = xDriverManager.getConnectionWithInfo(url, props);</text:p>
  <text:p text:style-name="Paragraph">Other properties that require setting during the connect process depend on the JDBC driver that is used.</text:p>
  <text:h text:style-name="Head 5" text:level="5">The SDBC Driver for ODBC</text:h>
  <text:p text:style-name="Paragraph">This driver is comparable to the SDBC driver for JDBC described above. It maps the ODBC functionality to the SDBC API, but not completely. However, some functionality the SDBC API supports may not work with ODBC, because an ODBC driver may not support this feature and throws an SQL Exception to indicate this. To create a new connection, the driver uses the following URL format:</text:p>
  <text:p text:style-name="MethodSignatures"><text:span text:style-name="T8">sdbc:odbc:</text:span> Name of a datasource defined in the system</text:p>
  <text:p text:style-name="Paragraph">Additionally, this driver supports several properties through the service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.ODBCConnectionProperties]</text:span>. These properties are set while creating a connection:</text:p>
  <table:table table:name="Table12" table:style-name="Table12">
   <table:table-column table:style-name="Table12.A"/>
   <table:table-column table:style-name="Table12.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table12.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.ODBCConnectionProperties]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table12.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.ODBCConnectionProperties:Silent]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table12.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ If True,the ODBC driver will not be asked for completion. This may happen<text:a xlink:type="simple" xlink:href="" text:style-name="Internet link" text:visited-style-name="Visited Internet Link"> if the user name and password are already known. Otherwise False.</text:a></text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table12.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.ODBCConnectionProperties:Timeout]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table12.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">int</text:span> ─ A value corresponding to the number of seconds to wait for any request on the connection to complete before returning to the application. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table12.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.ODBCConnectionProperties:UseCatalog]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table12.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ If <text:span text:style-name="Code (in text)">false</text:span>,the SDBC driver should not use catalogs. Otherwise True.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table12.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.ODBCConnectionProperties:SystemDriverSettings]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table12.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Settings that are submitted to the ODBC driver directly.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table12.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.ODBCConnectionProperties:CharSet]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table12.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Converts data from the ODBC driver into the corresponding text encoding. The value must be a value of the list from www.iana.org/assignments/character-sets. Only a few character sets are supported</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table12.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.ODBCConnectionProperties:ParameterNameSubstitution]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table12.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ If True,all occurrences of “?” as a parameter name will be replaced by a valid parameter name. This is <text:s/>for some drivers that mix the order of the parameters.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:h text:style-name="Head 5" text:level="5">The SDBC Driver for Adabas D</text:h>
  <text:p text:style-name="Paragraph">This driver was the first driver to support the extended service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Driver]</text:span>, that offers access to the structure of a database. The Adabas D driver implementation extends the Adabas ODBC driver through knowledge about database structure. The URL should look like this:</text:p>
  <text:p text:style-name="MethodSignatures"><text:span text:style-name="T8">sdbc:adabas::</text:span>DATABASENAME</text:p>
  <text:p text:style-name="Paragraph">or</text:p>
  <text:p text:style-name="MethodSignatures"><text:span text:style-name="T8">sdbc:adabas:</text:span><text:span text:style-name="T1">HOST</text:span>:DATABASENAME</text:p>
  <text:p text:style-name="Paragraph">To find the correct database name of an Adabas D database in <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API, select <text:span text:style-name="Buttons/Menus">Tools <text:s/>– Data Sources</text:span> and look in the <text:span text:style-name="Buttons/Menus">Data source URL</text:span> box of the <text:span text:style-name="Buttons/Menus">General</text:span> tab. Find the database folders in <text:span text:style-name="www/ftp/email">sql/wrk</text:span> in the Adabas installation folder.</text:p>
  <text:h text:style-name="Head 5" text:level="5">The SDBC Driver for ADO</text:h>
  <text:p text:style-name="Paragraph">The SDBC driver for ADO supports the service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Driver]</text:span>. ADO does not allow modification on the database structure unless the database is a Jet Engine. Information about the limitations for ADO are available on the Internet. The URL for SDBC driver for ADO looks like this:</text:p>
  <text:p text:style-name="MethodSignatures"><text:span text:style-name="T8">sdbc:ado:&lt;</text:span>ADO specific connection string&gt;</text:p>
  <text:p text:style-name="Paragraph">Possible connection strings are:</text:p>
  <text:unordered-list text:style-name="L10">
   <text:list-item>
    <text:p text:style-name="P21">sdbc:ado:PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=c:\northwind.mdb</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P21">sdbc:ado:Provider=msdaora;data source=testdb</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:h text:style-name="Head 5" text:level="5">The SDBC Driver for dBase</text:h>
  <text:p text:style-name="Paragraph">The dBase driver is one of the basic driver implementations and supports the service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Driver]</text:span>. This driver has a number of limitations concerning its abilities to modify the database structure and the extent of its SQL support. The URL for this driver is:</text:p>
  <text:p text:style-name="MethodSignatures"><text:span text:style-name="T8">sdbc:dbase:&lt;</text:span>folder or file url&gt; </text:p>
  <text:p text:style-name="Paragraph">For instance:</text:p>
  <text:p text:style-name="MethodSignatures"><text:span text:style-name="T8">sdbc:dbase:</text:span>file:///d:/user/database/biblio</text:p>
  <text:p text:style-name="Paragraph">Similar to the SDBC driver for ODBC, this driver supports the connection info property <text:span text:style-name="Code (in text)">CharSet</text:span> to set different text encodings. The second possible property is <text:span text:style-name="Code (in text)">ShowDeleted</text:span>. When it is set to <text:span text:style-name="Code (in text)">true</text:span>, deleted rows in a table are still visible. In this state, it is not allowed to delete rows.</text:p>
  <text:p text:style-name="Paragraph">The following table shows the shortcomings of the SDBCX part of the dBase driver.</text:p>
  <table:table table:name="Table13" table:style-name="Table13">
   <table:table-column table:style-name="Table13.A"/>
   <table:table-column table:style-name="Table13.B"/>
   <table:table-column table:style-name="Table13.C"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table13.A1" table:value-type="string">
      <text:p text:style-name="TableHead">Object</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table13.A1" table:value-type="string">
      <text:p text:style-name="TableHead">create</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table13.C1" table:value-type="string">
      <text:p text:style-name="TableHead">alter</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table13.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">table</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table13.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table13.C2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table13.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">column</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table13.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table13.C2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table13.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">key</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table13.A2" table:value-type="string">
     <text:p text:style-name="P19"/>
    </table:table-cell>
    <table:table-cell table:style-name="Table13.C2" table:value-type="string">
     <text:p text:style-name="P19"/>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table13.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">index</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table13.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table13.C2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table13.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">group</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table13.A2" table:value-type="string">
     <text:p text:style-name="P19"/>
    </table:table-cell>
    <table:table-cell table:style-name="Table13.C2" table:value-type="string">
     <text:p text:style-name="P19"/>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table13.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">user</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table13.A2" table:value-type="string">
     <text:p text:style-name="P19"/>
    </table:table-cell>
    <table:table-cell table:style-name="Table13.C2" table:value-type="string">
     <text:p text:style-name="P19"/>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">The driver has the following conditions in its support for SQL statements:</text:p>
  <text:unordered-list text:style-name="L11">
   <text:list-item>
    <text:p text:style-name="P22">The <text:span text:style-name="Code (in text)">SELECT</text:span> statement can not contain more than one table in the <text:span text:style-name="Code (in text)">FROM</text:span> clause.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P22">For comparisons the following operators are valid: <text:span text:style-name="Code (in text)">=</text:span>, <text:span text:style-name="Code (in text)">&lt;</text:span>, <text:span text:style-name="Code (in text)">&gt;</text:span>, <text:span text:style-name="Code (in text)">&lt;&gt;</text:span>, <text:span text:style-name="Code (in text)">&gt;=</text:span>, <text:span text:style-name="Code (in text)">&lt;=</text:span>, <text:span text:style-name="Code (in text)">LIKE</text:span>, <text:span text:style-name="Code (in text)">NOT LIKE</text:span>, <text:span text:style-name="Code (in text)">IS NULL</text:span>, <text:span text:style-name="Code (in text)">IS NOT NULL.</text:span></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P22">Parameters are allowed, but must be denoted with a leading colon (<text:span text:style-name="Code (in text)">SELECT * FROM biblio WHERE Author LIKE :MyParam</text:span>) or with a single question mark ( <text:span text:style-name="Code (in text)">SELECT * FROM biblio WHERE Author LIKE ?</text:span>).</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P22">The driver provides a <text:span text:style-name="Code (in text)">ResultSet</text:span> that supports bookmarks to records.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P22">The first instance of <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API that accesses a dbase database locks the files for exclusive writing. The lock is never released until the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API instance, which has obtained the exclusive write access, is closed. This severely limits the access to a dBase database in a network.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:h text:style-name="Head 5" text:level="5">The SDBC Driver for Flat File Formats</text:h>
  <text:p text:style-name="Paragraph">This driver is another basic driver available in <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API. It can only be used to fetch data from existing text files, and no modifications are allowed, that is, the whole connection is read-only. The URL for this driver is:</text:p>
  <text:p text:style-name="MethodSignatures"><text:span text:style-name="T8">sdbc:flat:&lt;</text:span>folder or file url &gt;</text:p>
  <text:p text:style-name="Paragraph">For instance:</text:p>
  <text:p text:style-name="MethodSignatures"><text:span text:style-name="T8">sdbc:file:</text:span>file:///d:/user/database/textbase1</text:p>
  <text:p text:style-name="Paragraph">Properties that can be set while creating a new connection.</text:p>
  <table:table table:name="Table14" table:style-name="Table14">
   <table:table-column table:style-name="Table14.A"/>
   <table:table-column table:style-name="Table14.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table14.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.FLATConnectionProperties]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table14.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.FLATConnectionProperties:Extension]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table14.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">string ─ Flat file formats are formats such as:</text:p>
     <text:unordered-list text:style-name="L12">
      <text:list-item>
       <text:p text:style-name="P23">comma separated values format (*.csv)</text:p>
      </text:list-item>
      <text:list-item>
       <text:p text:style-name="P23">sdf format (*.sdf)</text:p>
      </text:list-item>
      <text:list-item>
       <text:p text:style-name="P23"><text:a xlink:type="simple" xlink:href="" text:style-name="Internet link" text:visited-style-name="Visited Internet Link">text file format (*.txt)</text:a></text:p>
      </text:list-item>
     </text:unordered-list>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table14.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.FLATConnectionProperties:CharSet]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table14.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">string ─ Converts data from the ODBC driver into the corresponding text encoding. The value must be a value of the list from www.iana.org/assignments/character-sets. Only some are supported, but a new one can be added.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table14.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.FLATConnectionProperties:FixedLength]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table14.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">boolean ─ If true, all occurrences of &quot;?&quot; as a parameter name will be replaced by a valid parameter name. This is necessary, because some drivers mix the order of the parameters.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table14.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.FLATConnectionProperties:HeaderLine]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table14.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ If <text:span text:style-name="Code (in text)">true</text:span>, the first line is used for column generation.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table14.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.FLATConnectionProperties:FieldDelimiter]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table14.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Defines a character which should be used to separate fields and columns.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table14.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.FLATConnectionProperties:StringDelimiter]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table14.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Character to identify strings.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table14.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.FLATConnectionProperties:DecimalDelimiter]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table14.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Character to identify decimal values.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table14.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.FLATConnectionProperties:ThousandDelimiter]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table14.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Character to identify the thousand separator. Must be different from <text:span text:style-name="Code (in text)">DecimalDelimiter</text:span>.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:h text:style-name="Head 5" text:level="5">The SDBC Driver for [PRODUCTNAME] Calc Files</text:h>
  <text:p text:style-name="Paragraph">This driver is a basic driver for [PRODUCTNAME] Calc files. It can only be used to fetch data from existing tables and no modifications are allowed. The connection is read-only. The URL for this driver is:</text:p>
  <text:p text:style-name="MethodSignatures"><text:span text:style-name="T8">sdbc:calc:&lt;</text:span>file url to a [PRODUCTNAME] Calc file or any other extension known by this application&gt;</text:p>
  <text:p text:style-name="Paragraph">For instance:</text:p>
  <text:p text:style-name="MethodSignatures"><text:span text:style-name="T8">sdbc:calc:</text:span>file:///d:/calcfile.sxw</text:p>
  <text:h text:style-name="Head 5" text:level="5">The SDBC driver for addressbook</text:h>
  <text:p text:style-name="Paragraph">This driver allows <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API to connect to a system addressbook available on the local machine. It supports four different kinds of addressbooks.</text:p>
  <table:table table:name="Table15" table:style-name="Table15">
   <table:table-column table:style-name="Table15.A"/>
   <table:table-column table:style-name="Table15.B"/>
   <table:table-column table:style-name="Table15.C"/>
   <table:table-column table:style-name="Table15.D"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table15.A1" table:value-type="string">
      <text:p text:style-name="TableHead">Addressbook</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table15.A1" table:value-type="string">
      <text:p text:style-name="TableHead">Windows</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table15.A1" table:value-type="string">
      <text:p text:style-name="TableHead">Unix</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table15.D1" table:value-type="string">
      <text:p text:style-name="TableHead">URL</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table15.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Mozilla</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table15.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table15.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table15.D2" table:value-type="string">
     <text:p text:style-name="TextInTable">sdbc:address:mozilla</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table15.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">LDAP</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table15.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table15.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table15.D2" table:value-type="string">
     <text:p text:style-name="TextInTable">sdbc:address:ldap</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table15.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Outlook Express</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table15.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table15.A2" table:value-type="string">
     <text:p text:style-name="P19"/>
    </table:table-cell>
    <table:table-cell table:style-name="Table15.D2" table:value-type="string">
     <text:p text:style-name="TextInTable">sdbc:address:outlookexp</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table15.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Outlook</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table15.A2" table:value-type="string">
     <text:p text:style-name="P18">●</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table15.A2" table:value-type="string">
     <text:p text:style-name="P19"/>
    </table:table-cell>
    <table:table-cell table:style-name="Table15.D2" table:value-type="string">
     <text:p text:style-name="TextInTable">sdbc:address:outlook</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">All address book variants support read-only access. The driver itself is a wrapper for the Mozilla API.</text:p>
  <text:h text:style-name="Head 4" text:level="4"><text:alphabetical-index-mark text:string-value="connection pooling"/>Connection Pooling</text:h>
  <text:p text:style-name="Paragraph"><text:span text:style-name="T9">[TOPIC:com.sun.star.sdbc.XPooledConnection;com.sun.star.sdbc.ConnectionPool]In </text:span><text:alphabetical-index-mark text:string-value="XPooledConnection"/><text:span text:style-name="T9">a </text:span><text:alphabetical-index-mark text:string-value="ConnectionPool"/><text:span text:style-name="T9">basic implementation, there is a 1:1 relationship between the </text:span><text:span text:style-name="T10">[IDL:com.sun.star.sdb.Connection]</text:span><text:span text:style-name="T9"> object used by the client and physical database connection. When the </text:span><text:span text:style-name="T10">Connection</text:span><text:span text:style-name="T9"> object is closed, the physical connection is dropped, thus the </text:span>overhead of opening, initializing, and closing the physical connection is incurred for <text:span text:style-name="T9">each client session. A </text:span><text:span text:style-name="T11">connection pool </text:span><text:span text:style-name="T9">solves this problem by maintaining a cache of physical database </text:span>connections that can be reused across client sessions. Connection pooling improves performance and scalability, particularly in a three-tier environment where multiple clients can share a smaller number of physical database connections. In <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API, the connection pooling is part of a special service called the <text:span text:style-name="Code (in text)">ConnectionPool</text:span>. This service manages newly created connections and reuses old ones when they are currently unused. </text:p>
  <text:p text:style-name="Paragraph">The algorithm used to manage the connection pool is implementation-specific and varies between application servers. The application server provides its clients with an implementation of the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XPooledConnection]</text:span> interface that makes connection pooling transparent to the client. As a result, the client gets better performance and scalability. When an application is finished using a connection, it closes the logical connection using <text:span text:style-name="Code (in text)">close()</text:span>at the connection interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XConnection]</text:span>. This closes the logical connection, but not the physical connection. Instead, the physical connection is returned to the pool so that it can be reused. Connection pooling is completely transparent to the client: A client obtains a pooled connection from the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.ConnectionPool]</text:span> service calling <text:span text:style-name="Code (in text)">getConnectionWithInfo()</text:span> at its interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDriverManager]</text:span> and uses it just the same way it obtains and uses a non-pooled connection.</text:p>
  <text:p text:style-name="Paragraph">The following sequence of steps outlines what happens when an SDBC client requests a connection from a <text:span text:style-name="Code (in text)">ConnectionPool</text:span> object:</text:p>
  <text:ordered-list text:style-name="L13">
   <text:list-item>
    <text:p text:style-name="P24">The client obtains an instance of the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.ConnectionPool]</text:span> from the global service manager and calls the same methods on the <text:span text:style-name="Code (in text)">ConnectionPool</text:span> object as on the <text:span text:style-name="Code (in text)">DriverManager</text:span>. </text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P24">The application server providing the <text:span text:style-name="Code (in text)">ConnectionPool</text:span> implementation checks its connection pool for a suitable <text:span text:style-name="Code (in text)">PooledConnection</text:span> object, a physical database connection, that is available. Determining the suitability of a given <text:span text:style-name="Code (in text)">PooledConnection</text:span> object includes matching the client’s user authentication information or application type, as well as using other implementation-specific criteria. The lookup method and other methods associated with managing the connection pool are specific to the application server.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P24">If there are no suitable <text:span text:style-name="Code (in text)">PooledConnection</text:span> objects available, the application server creates a new physical connection and returns the <text:span text:style-name="Code (in text)">PooledConnection</text:span>. The <text:span text:style-name="Code (in text)">ConnectionPool</text:span> is not driver specific. It is implemented in a service called <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.ConnectionPool]</text:span>.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P24">Regardless if the <text:span text:style-name="Code (in text)">PooledConnection</text:span> has been retrieved from the pool or <text:s/>created, the application server does <text:s/>internal recording to indicate that the physical connection is now in use.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P24">The application server calls the method <text:span text:style-name="Code (in text)">PooledConnection.getConnection()</text:span> to get a logical <text:span text:style-name="Code (in text)">Connection</text:span> object. This logical <text:span text:style-name="Code (in text)">Connection</text:span> object is a <text:span text:style-name="Emphasis">handle</text:span> to a physical <text:span text:style-name="Code (in text)">PooledConnection</text:span> object. This handle is returned by the <text:span text:style-name="Code (in text)">XDriverManager</text:span> method <text:span text:style-name="Code (in text)">getConnectionWithInfo()</text:span>when connection pooling is in effect.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P24">The logical <text:span text:style-name="Code (in text)">Connection</text:span> object is returned to the SDBC client that uses the same Connection API as in the standard situation without a <text:span text:style-name="Code (in text)">ConnectionPool</text:span>. Note that the underlying physical connection cannot be reused until the client calls the <text:span text:style-name="Code (in text)">XConnection</text:span> method <text:span text:style-name="Code (in text)">close()</text:span>. </text:p>
   </text:list-item>
  </text:ordered-list>
  <text:p text:style-name="Paragraph">In <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API, connection pooling is enabled by default and can be controlled through <text:span text:style-name="Buttons/Menus">Tools – Options – Data Sources – Connections</text:span>. If a connection from a data source defined in <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API is returned, this setting applies to your connection, as well. To take advantage of the pool independently of <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API data sources, use the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.ConnectionPool]</text:span> instead of the <text:span text:style-name="Code (in text)">DriverManager</text:span>.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Piggyback Connections</text:h>
  <text:p text:style-name="Paragraph">Occasionally, there may already be a connected database row set and you want to use its connection. For instance, if a user has opened a database form. To access the same database as the row set of the form, use the connection the form is working with, not opening a second connection. For this purpose, the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span> has a property <text:span text:style-name="Code (in text)">ActiveConnection</text:span> that returns a connection.</text:p>
  <table:table table:name="Table43" table:style-name="Table43">
   <table:table-column table:style-name="Table43.A"/>
   <table:table-column table:style-name="Table43.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table43.A1" table:value-type="string">
      <text:p text:style-name="Table Contents"><draw:image draw:style-name="fr5" draw:name="Note2" text:anchor-type="paragraph" svg:x="0.065cm" svg:y="0.026cm" svg:width="0.847cm" svg:height="0.847cm" draw:z-index="6" xlink:href="../interesting.gif" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
        <svg:desc>Note graphics marks a special text section</svg:desc>
       </draw:image></text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table43.B1" table:value-type="string">
      <text:p text:style-name="TipInTable">Be aware of the fact that the row set owns the connection it uses. That means, once the row set is deleted, the connection is no longer valid.</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:h text:style-name="Head 2" text:level="2">Manipulating Data</text:h>
  <text:p text:style-name="Paragraph">There are two possibilities to manipulate data in a database with the [PRODUCTNAME] database connectivity. </text:p>
  <text:unordered-list text:style-name="L14">
   <text:list-item>
    <text:p text:style-name="P25">Use the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span> service that allows using data sources defined in [PRODUCTNAME] through their tables or queries, or through SQL commands.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P25">Communicate with a database directly using a <text:span text:style-name="Code (in text)">Statement</text:span> object. </text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">This section describes both possibilities.</text:p>
  <text:h text:style-name="Head 3" text:level="3">The <text:alphabetical-index-mark-start text:id="IMark43663828"/>RowSet<text:alphabetical-index-mark-end text:id="IMark43663828"/> Service</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.RowSet]The service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span> is a high-level client side row set that retrieves its data from a database table, a query, an SQL command or a row set reader, which does not have to support SQLl. It is a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.ResultSet]</text:span>.</text:p>
  <text:p text:style-name="Paragraph">The connection of the row set is a named <text:span text:style-name="Code (in text)">DataSource,</text:span> the URL of a data access component, or a previously instantiated connection. Depending on the property <text:span text:style-name="Code (in text)">ResultSetConcurrency</text:span>, the row set caches all data or uses an optimized method to retrieve data, such as refreshing rows by their keys or their bookmarks. In addition, it provides events for row set navigation and row set modifications to approve the actions, and to react upon them. </text:p>
  <text:p text:style-name="Paragraph">The row set can be in two different states, before and after execution. Before execution, set all the properties the row set needs for its work. After calling <text:span text:style-name="Code (in text)">execute()</text:span> on the <text:span text:style-name="Code (in text)">RowSet</text:span>, move through the result set, or update and delete rows.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Usage</text:h>
  <text:p text:style-name="Paragraph">To use a row set, create a <text:span text:style-name="Code (in text)">RowSet</text:span> instance at the global service manager through the service name <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span>. Next, the <text:span text:style-name="Code (in text)">RowSet</text:span> needs a <text:span text:style-name="Emphasis">connection</text:span> and a <text:span text:style-name="Emphasis">command</text:span> before it can be executed. These have to be configured through <text:span text:style-name="Code (in text)">RowSet</text:span> properties.</text:p>
  <text:p text:style-name="TitledListHead">Connection</text:p>
  <text:p text:style-name="TitledListBody">There are three different ways to establish a connection:</text:p>
  <text:unordered-list text:style-name="L15">
   <text:list-item>
    <text:p text:style-name="P26">Setting <text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:DataSourceName]</text:span> to a data source from the database context. If the <text:span text:style-name="Code (in text)">DataSourceName</text:span> is not a URL, then the <text:span text:style-name="Code (in text)">RowSet</text:span> uses the name to get the <text:span text:style-name="Code (in text)">DataSource</text:span> from the <text:span text:style-name="Code (in text)">DatabaseContext</text:span> to create a connection to that data source.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P26">Setting <text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:DataSourceName]</text:span> to a database URL. The row set tries to use this URL to establish a connection. Database URLs are described in <text:span text:style-name="ChapterRef">[CHAPTER:Database.DataSources.Connection.DriverManager]</text:span>.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P26">Setting <text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:ActiveConnection]</text:span> makes a row set ready for immediate use. The row set uses this connection. </text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="TitledListBody">The difference between the two properties is that in the first case the <text:span text:style-name="Code (in text)">RowSet</text:span> owns the connection. The <text:span text:style-name="Code (in text)">RowSet</text:span> disposes the connection when it is disposed. In the second case, the <text:span text:style-name="Code (in text)">RowSet</text:span> only <text:span text:style-name="Emphasis">uses</text:span> the connection. The user of a <text:span text:style-name="Code (in text)">RowSet</text:span> is responsible for the disposition of the connection. For a simple <text:span text:style-name="Code (in text)">RowSet,</text:span> use <text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:DataSourceName]</text:span>, but when <text:s/>sharing the connection between different row sets, then use <text:s text:c="2"/><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:ActiveConnection]</text:span>. </text:p>
  <text:p text:style-name="TitledListBody">If there is already a connection, for example, the user opened a database form, open another row set based upon the property <text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:ActiveConnection]</text:span> of the form. Put the <text:span text:style-name="Code (in text)">ActiveConnection</text:span> of the form into the <text:span text:style-name="Code (in text)">ActiveConnection</text:span> property of the new row set.</text:p>
  <text:p text:style-name="TitledListHead">Command</text:p>
  <text:p text:style-name="TitledListBody">With a connection and a command, the row set is ready to be executed calling <text:span text:style-name="Code (in text)">execute()</text:span> on the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XRowSet]</text:span> interface of the row set. For interactive logon, use <text:span text:style-name="Code (in text)">executeWithCompletion()</text:span>, see <text:span text:style-name="ChapterRef">[CHAPTER:Database.DataSources.Connection.DataSource]</text:span>. If interactive logon is not feasible for your application, the properties <text:span text:style-name="Code (in text)">User</text:span> and <text:span text:style-name="Code (in text)">Password</text:span> can be used to connect to a database that requires logon.</text:p>
  <text:p text:style-name="TitledListBody">Once the method for how <text:s/><text:span text:style-name="Code (in text)">RowSet </text:span>creates it connections has been determined, the properties <text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:Command]</text:span> and <text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:CommandType]</text:span> have to be set. The <text:span text:style-name="Code (in text)">CommandType</text:span> can be TABLE, QUERY or COMMAND where the <text:span text:style-name="Code (in text)">Command</text:span> can be a table or query name, or an SQL command.</text:p>
  <text:p text:style-name="Paragraph">The following table shows the properties supported by <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span>. </text:p>
  <table:table table:name="Table8" table:style-name="Table8">
   <table:table-column table:style-name="Table8.A"/>
   <table:table-column table:style-name="Table8.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table8.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:ActiveConnection]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XConnection]</text:span>. The active connection is generated by a <text:span text:style-name="Code (in text)">DataSource</text:span> or by a URL. It could also be set from the outside. If set from outside, the <text:span text:style-name="Code (in text)">RowSet</text:span> is not responsible for disposition of the connection.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:DataSourceName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The name of the<text:span text:style-name="T6"> </text:span><text:span text:style-name="T12">DataSource</text:span><text:span text:style-name="T6"> </text:span>to use. This could be a named <text:span text:style-name="Code (in text)">DataSource</text:span> or the URL of a data access component.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:Command]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The <text:span text:style-name="Code (in text)">Command</text:span> is the command that should be executed. The type of command depends on the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.CommandType]</text:span>.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A5" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:CommandType]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.CommandType]</text:span> Command type:</text:p>
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">TABLE</text:span>: indicates the command contains a table name that results in a command like &quot;select * from tablename&quot;.</text:p>
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">QUERY</text:span>: indicates the command contains a name of a query component that contains a certain statement.</text:p>
     <text:p text:style-name="TextInTable">COMMAND: indicates the command is an SQL-Statement.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:ActiveCommand]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] string</text:span> ─ he command which is currently used. <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.CommandType]</text:span></text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:IgnoreResult]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ Indicates if all results should be discarded.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:Filter]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Contains a additional filter for a<text:span text:style-name="T6"> RowSet</text:span>.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:ApplyFilter]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ Indicates if the filter should be applied. The default is false.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:Order]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">An additional sort order definition for a <text:span text:style-name="T12">RowSet</text:span>.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:Privileges]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] long</text:span>, constants group <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Privilege]</text:span>. Indicates the privileges for insert, update, and delete.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:IsModified]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] boolean</text:span> ─ Indicates if the current row is modified.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:IsNew]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] boolean</text:span> ─ Indicates if the current row is the <text:span text:style-name="Code (in text)">InsertRow</text:span> and can be inserted into the database.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:RowCount]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] boolean</text:span> ─ Contains the number of rows accessed in a the data source.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:IsRowCountFinal]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[readonly] boolean</text:span> ─ Indicates if all rows of the RowSet have been counted.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:UpdateTableName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The name of the table that should be updated. This is used for queries that relate to more than one table. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:UpdateSchemaName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The name of the table schema.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table8.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.RowSet:UpdateCatalogName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table8.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The name of the table catalog.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span> includes the service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.RowSet]</text:span> and its properties. Important settings such as <text:span text:style-name="Code (in text)">User</text:span> and <text:span text:style-name="Code (in text)">Password</text:span> come from this service:</text:p>
  <table:table table:name="Table9" table:style-name="Table9">
   <table:table-column table:style-name="Table9.A"/>
   <table:table-column table:style-name="Table9.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table9.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.RowSet]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table9.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.RowSet:DataSourceName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table9.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Is the name of a named datasource to use.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table9.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.RowSet:URL]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table9.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The connection URL. Can be used instead of the <text:span text:style-name="Code (in text)">DataSourceName</text:span>. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table9.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.RowSet:Command]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table9.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The command that should be executed. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table9.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.RowSet:TransactionIsolation]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table9.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ Indicates the transaction isolation level that should be used for the connection, according to <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.TransactionIsolation]</text:span></text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table9.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.RowSet:TypeMap]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table9.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">com::sun::star::container::XNameAccess</text:span>. The type map that is used for the custom mapping of SQL structured types and distinct types.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table9.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.RowSet:EscapeProcessing]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table9.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ Determines if escape processing is on or off. If escape scanning is on (the default), the driver does the <text:s/>escape substitution before sending the SQL to the database. This is only evaluated if the CommandType is COMMAND. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table9.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.RowSet:QueryTimeOut]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table9.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ Retrieves the number of seconds the driver waits for a Statement to execute. If the limit is exceeded, a SQLException is thrown. There is no limitation if set to zero. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table9.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.RowSet:MaxFieldSize]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table9.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ Returns the maximum number of bytes allowed for any column value. This limit is the maximum number of bytes that can be returned for any column value. The limit applies only to <text:span text:style-name="Code (in text)">DataType::BINARY</text:span> , <text:span text:style-name="Code (in text)">DataType::VARBINARY</text:span> , <text:span text:style-name="Code (in text)">DataType::LONGVARBINARY </text:span>, <text:span text:style-name="Code (in text)">DataType::CHAR</text:span> , <text:span text:style-name="Code (in text)">DataType::VARCHAR </text:span>, and <text:span text:style-name="Code (in text)">DataType::LONGVARCHAR</text:span> columns. If the limit is exceeded, the excess data is silently discarded. There is no limitation if set to zero.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table9.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.RowSet:MaxRows]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table9.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ Retrieves the maximum number of rows that a ResultSet can contain. If the limit is exceeded, the excess rows are silently dropped. There is no limitation if set to zero.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table9.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.RowSet:User]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table9.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Determines the user to open the connection for.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table9.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.RowSet:Password]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table9.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Determines the user to open the connection for. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table9.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.RowSet:ResultSetType]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table9.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ Determine the result set type according to <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.ResultSetType]</text:span></text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">If the command returns results, that is, it selects data, use <text:span text:style-name="Code (in text)">XRowSet</text:span> to manipulate the data, because <text:span text:style-name="Code (in text)">XRowSet</text:span> is derived from <text:span text:style-name="Code (in text)">XResultSet</text:span>. For details on manipulating a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.ResultSet]</text:span>, see <text:span text:style-name="ChapterRef">[CHAPTER:Database.Manipulate.ResultSets]</text:span>.</text:p>
  <text:p text:style-name="Paragraph">The code fragment below shows how to create a <text:span text:style-name="Code (in text)">RowSet</text:span>. [SOURCE:Database/RowSet.java]</text:p>
  <text:p text:style-name="Code">public static void useRowSet(XMultiServiceFactory _rMSF) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// first we create our RowSet object</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRowSet xRowRes = (XRowSet)UnoRuntime.queryInterface(XRowSet.class,</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>_rMSF.createInstance(&quot;com.sun.star.sdb.RowSet&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;RowSet created!&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// set the properties needed to connect to a database</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xRowRes);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;DataSourceName&quot;, &quot;Bibliography&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;Command&quot;, &quot;biblio&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;CommandType&quot;, new Integer(com.sun.star.sdb.CommandType.TABLE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRowRes.execute();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;RowSet executed!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XComponent xComp = (XComponent)UnoRuntime.queryInterface(XComponent.class, xRowRes);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xComp.dispose();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;RowSet destroyed!&quot;);</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph">The value of the read-only <text:span text:style-name="Code (in text)">RowSet</text:span> properties is only valid after the first call to <text:span text:style-name="Code (in text)">execute()</text:span> on the <text:span text:style-name="Code (in text)">RowSet</text:span>. This snippet shows how to read the privileges out of the <text:span text:style-name="Code (in text)">RowSet</text:span>: [SOURCE:Database/RowSet.java]</text:p>
  <text:p text:style-name="Code">public static void showRowSetReadOnlyProps(XMultiServiceFactory _rMSF) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// first we create our RowSet object</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRowSet xRowRes =</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>(XRowSet)UnoRuntime.queryInterface(XRowSet.class_rMSF.createInstance(</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>&quot;com.sun.star.sdb.RowSet&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;RowSet created!&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// set the properties needed to connect to a database</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xRowRes);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;DataSourceName&quot;, &quot;Bibliography&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;Command&quot;, &quot;biblio&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;CommandType&quot;, new Integer(com.sun.star.sdb.CommandType.TABLE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRowRes.execute();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;RowSet executed!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>Integer aPriv = (Integer)xProp.getPropertyValue(&quot;Privileges&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>int nPriv <text:s/>= aPriv.intValue();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>if ((nPriv &amp; Privilege.SELECT) == Privilege.SELECT) System.out.println(&quot;SELECT&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if ((nPriv &amp; Privilege.INSERT) == Privilege.INSERT) System.out.println(&quot;INSERT&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if ((nPriv &amp; Privilege.UPDATE) == Privilege.UPDATE) System.out.println(&quot;UPDATE&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if ((nPriv &amp; Privilege.DELETE) == Privilege.DELETE) System.out.println(&quot;DELETE&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XComponent xComp = (XComponent)UnoRuntime.queryInterface(XComponent.class, xRowRes);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xComp.dispose();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;RowSet destroyed!&quot;);</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph">The next example reads the properties <text:span text:style-name="Code (in text)">IsRowCountFinal</text:span> and <text:span text:style-name="Code (in text)">RowCount</text:span>. [SOURCE:Database/RowSet.java]</text:p>
  <text:p text:style-name="Code">public static void showRowSetRowCount(XMultiServiceFactory _rMSF) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// first we create our RowSet object</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRowSet xRowRes = (XRowSet)UnoRuntime.queryInterface(XRowSet.class,</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>_rMSF.createInstance(&quot;com.sun.star.sdb.RowSet&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;RowSet created!&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// set the properties needed to connect to a database</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class,xRowRes);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;DataSourceName&quot;,&quot;Bibliography&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;Command&quot;,&quot;biblio&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;CommandType&quot;,new Integer(com.sun.star.sdb.CommandType.TABLE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRowRes.execute();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;RowSet executed!&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// now look if the RowCount is already final</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;The RowCount is final: &quot; + xProp.getPropertyValue(&quot;IsRowCountFinal&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSet xRes = (XResultSet)UnoRuntime.queryInterface(XResultSet.class,xRowRes);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRes.last();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;The RowCount is final: &quot; + xProp.getPropertyValue(&quot;IsRowCountFinal&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;There are &quot; + xProp.getPropertyValue(&quot;RowCount&quot;) + &quot; rows!&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// now destroy the RowSet</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XComponent xComp = (XComponent)UnoRuntime.queryInterface(XComponent.class,xRowRes);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xComp.dispose();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;RowSet destroyed!&quot;);</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph">Occasionally, it is useful for the user to be notified when the <text:span text:style-name="Code (in text)">RowCount</text:span> is final. That is accomplished by adding a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.beans.XPropertyChangeListener]</text:span> for the property <text:span text:style-name="Code (in text)">IsRowCountFinal</text:span>.</text:p>
  <text:h text:style-name="Head 4" text:level="4"><text:alphabetical-index-mark text:string-value="event"/>Events and Other Notifications</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.XRowSetApproveBroadcaster;com.sun.star.sdb.XRowSetApproveListener;com.sun.star.sdbc.XRowSetListener;com.sun.star.lang.<text:span text:style-name="T13">EventObject</text:span>]The <text:alphabetical-index-mark text:string-value="XRowSetApproveBroadcaster"/><text:span text:style-name="Code (in text)">RowSet</text:span> <text:alphabetical-index-mark text:string-value="XRowSetApproveListener"/>supports <text:alphabetical-index-mark text:string-value="XRowSetListener"/>a <text:alphabetical-index-mark text:string-value="EventObject"/>number of events and notifications. First, there is the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XRowSetApproveBroadcaster]</text:span> interface of the <text:span text:style-name="Code (in text)">RowSet </text:span>that allows the user to add or remove objects derived from the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XRowSetApproveListener]</text:span>. The interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XRowSetApproveListener]</text:span> defines the following methods:</text:p>
  <table:table table:name="Table45" table:style-name="Table45">
   <table:table-column table:style-name="Table45.A"/>
   <table:table-column table:style-name="Table45.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table45.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Methods of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XRowSetApproveListener]</text:span> </text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table45.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.XRowSetApproveListener:approveCursorMove]()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table45.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Called before a <text:span text:style-name="Code (in text)">RowSet&apos;s</text:span> cursor is moved.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table45.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.XRowSetApproveListener:approveRowChange]()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table45.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Called before a row is inserted, updated, or deleted.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table45.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.XRowSetApproveListener:approveRowSetChange]()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table45.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Called before a <text:span text:style-name="Code (in text)">RowSet</text:span> is changed or before a <text:span text:style-name="Code (in text)">RowSet</text:span> is re-executed.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">All three methods return a <text:span text:style-name="Code (in text)">boolean</text:span> value that allows the <text:span text:style-name="Code (in text)">RowSet</text:span> to continue when it is true, <text:s/>otherwise the current action is stopped.</text:p>
  <text:p text:style-name="Paragraph">Additionally, the <text:span text:style-name="Code (in text)">RowSet</text:span> supports <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XRowSet]</text:span> that allows the user to add objects which are notified when the <text:span text:style-name="Code (in text)">RowSet</text:span> <text:span text:style-name="T14">has</text:span> changed. This has to be a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XRowSetListener]</text:span>. The methods are:</text:p>
  <table:table table:name="Table46" table:style-name="Table46">
   <table:table-column table:style-name="Table46.A"/>
   <table:table-column table:style-name="Table46.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table46.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Methods of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XRowSetListener]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table46.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.XRowSetListener:cursorMoved]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table46.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Called when a <text:span text:style-name="Code (in text)">RowSet&apos;s</text:span> cursor has been moved.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table46.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.XRowSetListener:rowChanged]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table46.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Called when a row has been inserted, updated, or deleted.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table46.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.XRowSetListener:rowSetChanged]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table46.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Called when the entire row set has changed, or when the row set has been re-executed.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">When an event occurs, the appropriate listener method is called to notify the registered listener(s). If a listener is not interested in a particular kind of event, it implements the method for that event as no-op. All listener methods take a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.lang.EventObject]</text:span> struct that ontains the <text:span text:style-name="T15">RowSet </text:span>object which is the source of the event.</text:p>
  <text:p text:style-name="Paragraph">The following table lists the order of events after a specific method call on the RowSet. First the movements.</text:p>
  <table:table table:name="Table47" table:style-name="Table47">
   <table:table-column table:style-name="Table47.A"/>
   <table:table-column table:style-name="Table47.B"/>
   <table:table-column table:style-name="Table47.C"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table47.A1" table:value-type="string">
      <text:p text:style-name="TableHead">Method Call</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table47.A1" table:value-type="string">
      <text:p text:style-name="TableHead">Event Call (before)</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table47.C1" table:value-type="string">
      <text:p text:style-name="TableHead">Event Call (after)</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table47.A2" table:value-type="string">
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">beforeFirst()</text:span></text:p>
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">first()</text:span></text:p>
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">next() </text:span></text:p>
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">previous()</text:span></text:p>
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">last()</text:span></text:p>
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">afterLast()</text:span></text:p>
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">absolute()</text:span></text:p>
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">relative()</text:span></text:p>
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">moveToBookmark()</text:span></text:p>
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">moveRelativeToBookmark()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table47.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">approveCursorMove()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table47.C2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">cursorMoved()</text:span>, only when the movement was successful</text:p>
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">modified()</text:span> event from <text:span text:style-name="Code (in text)">[IDL:com.sun.star.beans.XPropertySet]</text:span> of property RowCount, only when changed</text:p>
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">modified()</text:span> event from <text:span text:style-name="Code (in text)">[IDL:com.sun.star.beans.XPropertySet]</text:span> of property RowCountFinal, only when changed</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table47.A2" table:value-type="string">
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">updateRow()</text:span></text:p>
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">deleteRow()</text:span></text:p>
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">insertRow()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table47.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">approveRowChange()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table47.C2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">rowChanged()</text:span></text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table47.A2" table:value-type="string">
     <text:p text:style-name="Standard"><text:span text:style-name="Code (in text)">execute()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table47.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">approveRowSetChange()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table47.C2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">rowSetChanged()</text:span></text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">Consider a simple class which implements the two listener interfaces described above. [SOURCE:Database/RowSetEventListener.java]</text:p>
  <text:p text:style-name="Code">import com.sun.star.sdb.XRowSetApproveListener;</text:p>
  <text:p text:style-name="Code">import com.sun.star.sdbc.XRowSetListener;</text:p>
  <text:p text:style-name="Code">import com.sun.star.sdb.RowChangeEvent;</text:p>
  <text:p text:style-name="Code">import com.sun.star.lang.EventObject;</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code">public class RowSetEventListener implements XRowSetApproveListener,XRowSetListener {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// XEventListener</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>public void disposing(com.sun.star.lang.EventObject event) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;RowSet will be destroyed!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// XRowSetApproveBroadcaster</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>public boolean approveCursorMove(EventObject event) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;Before CursorMove!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>return true;</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>public boolean approveRowChange(RowChangeEvent event) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;Before row change!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>return true;</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>public boolean approveRowSetChange(EventObject event) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;Before RowSet change!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>return true;</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// XRowSetListener</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>public void cursorMoved(com.sun.star.lang.EventObject event) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;Cursor moved!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>public void rowChanged(com.sun.star.lang.EventObject event) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;Row changed!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>public void rowSetChanged(com.sun.star.lang.EventObject event) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;RowSet changed!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph">The following method uses the listener implementation above. [SOURCE:Database/RowSet.java]</text:p>
  <text:p text:style-name="Code">public static void showRowSetEvents(XMultiServiceFactory _rMSF) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// first we create our RowSet object</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRowSet xRowRes = (XRowSet)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XRowSet.class, _rMSF.createInstance(&quot;com.sun.star.sdb.RowSet&quot;));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;RowSet created!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// add our Listener</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Append our Listener!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>RowSetEventListener pRow = new RowSetEventListener();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRowSetApproveBroadcaster xApBroad = (XRowSetApproveBroadcaster)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XRowSetApproveBroadcaster.class, xRowRes);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xApBroad.addRowSetApproveListener(pRow);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRowRes.addRowSetListener(pRow);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// set the properties needed to connect to a database</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class,xRowRes);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;DataSourceName&quot;, &quot;Bibliography&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;Command&quot;, &quot;biblio&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;CommandType&quot;, new Integer(com.sun.star.sdb.CommandType.TABLE));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRowRes.execute();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;RowSet executed!&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// do some movements to check if we got all notifications</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSet xRes = (XResultSet)UnoRuntime.queryInterface(XResultSet.class, xRowRes);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;beforeFirst&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRes.beforeFirst();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// this should lead to no notifications because </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// we should stand before the first row at the beginning</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;We stand before the first row: &quot; + xRes.isBeforeFirst());</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;next&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRes.next();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;next&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRes.next();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;last&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRes.last();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;next&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRes.next();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;We stand after the last row: &quot; + xRes.isAfterLast());</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;first&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRes.first();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;previous&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRes.previous();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;We stand before the first row: &quot; + xRes.isBeforeFirst());</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;afterLast&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xRes.afterLast();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;We stand after the last row: &quot; + xRes.isAfterLast());</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// now destroy the RowSet</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XComponent xComp = (XComponent)UnoRuntime.queryInterface(XComponent.class, xRowRes);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xComp.dispose();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;RowSet destroyed!&quot;);</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 4" text:level="4">Clones of the RowSet Service</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.ResultSet;com.sun.star.sdb.XResultSetAccess]Occasionally, <text:alphabetical-index-mark text:string-value="XResultSetAccess"/>a <text:alphabetical-index-mark text:string-value="ResultSet"/>second or third <text:span text:style-name="Code (in text)">RowSet</text:span> that operates on the same data as the original <text:span text:style-name="Code (in text)">RowSet, </text:span>is required. This is useful when the rows should be displayed in a graphical representation. For the graphical part a clone can be used which only moves through the rows and displays the data. When a modification occurs on one specific row, the original <text:span text:style-name="Code (in text)">RowSet</text:span> can be used to do this task.</text:p>
  <text:p text:style-name="Paragraph">The new clone is an object that supports the service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.ResultSet]</text:span> if it was created using the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XResultSetAccess]</text:span> of the original <text:span text:style-name="Code (in text)">RowSet</text:span>. It is interoperable with the <text:span text:style-name="Code (in text)">RowSet</text:span> that created it, for example, bookmarks can be exchanged between both sets. If the original <text:span text:style-name="Code (in text)">RowSet</text:span> has not been executed before, <text:span text:style-name="Code (in text)">null</text:span> is returned.</text:p>
  <table:table table:name="Table50" table:style-name="Table50">
   <table:table-column table:style-name="Table50.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table50.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr9" draw:name="Frame4" text:anchor-type="paragraph" svg:y="0cm" svg:width="8.359cm" style:rel-width="47%" fo:min-height="9.805cm" draw:z-index="20">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr10" draw:name="Data access of RowSet and clone" text:anchor-type="paragraph" svg:width="8.23cm" svg:height="9.269cm" draw:z-index="52" xlink:href="RowSetClone.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>Graphic showing the data access of RowSet and clone</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration7" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.8</text:sequence>: Data access of RowSet and clone</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:h text:style-name="Head 3" text:level="3">Statements</text:h>
  <text:p text:style-name="Paragraph">The basic procedure to communicate with a database using an <text:alphabetical-index-mark-start text:id="IMark44161044"/>SQL statement<text:alphabetical-index-mark-end text:id="IMark44161044"/> is always the same: </text:p>
  <text:ordered-list text:style-name="L16">
   <text:list-item>
    <text:p text:style-name="P27">Get a connection object.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P27">Ask the connection for a statement.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P27">The statement executes a query or an update command. Use the appropriate method to execute the command.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P27">If the statement returns a result set, process the result set.</text:p>
   </text:list-item>
  </text:ordered-list>
  <text:h text:style-name="Head 4" text:level="4">Creating Statements</text:h>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=998954"/>[TOPIC:com.sun.star.sdbc.Statement]A <text:alphabetical-index-mark-start text:id="IMark44161044"/><text:span text:style-name="Code (in text)">Statement</text:span><text:alphabetical-index-mark-end text:id="IMark44161044"/> object is required to send SQL statements to the <text:alphabetical-index-mark-start text:id="IMark44952644"/>Database Management System (DBMS)<text:alphabetical-index-mark-end text:id="IMark44952644"/>. A <text:span text:style-name="Code (in text)">Statement</text:span> object is created using <text:alphabetical-index-mark-start text:id="IMark43663780"/><text:span text:style-name="Code (in text)">createStatement()</text:span><text:alphabetical-index-mark-end text:id="IMark43663780"/> at the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XConnection]</text:span> interface of the connection. It returns a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.Statement]</text:span> service. This <text:span text:style-name="Code (in text)">Statement</text:span> is generic, that is, it does not contain any SQL command. It can be used for all kinds of SQL commands. Its main interface is <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XStatement]</text:span>:</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XResultSet <text:span text:style-name="MethodSignatureEmphasis">executeQuery</text:span>( [in] string sql)</text:p>
  <text:p text:style-name="MethodSignatures">long <text:span text:style-name="MethodSignatureEmphasis">executeUpdate</text:span>( [in] string sql)</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">execute</text:span>( [in] string sql)</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XConnection <text:span text:style-name="MethodSignatureEmphasis">getConnection</text:span>()</text:p>
  <text:p text:style-name="Paragraph">Once a <text:span text:style-name="Code (in text)">Statement</text:span> is obtained, choose the appropriate execution method for the SQL command. For a <text:span text:style-name="Code (in text)">SELECT</text:span> statement, use the method <text:span text:style-name="Code (in text)">executeQuery()</text:span>. For <text:span text:style-name="Code (in text)">UPDATE</text:span>, <text:span text:style-name="Code (in text)">DELETE</text:span> and <text:span text:style-name="Code (in text)">INSERT</text:span> statements, the proper method is <text:span text:style-name="Code (in text)">executeUpdate()</text:span>. To have multiple result sets returned, use <text:span text:style-name="Code (in text)">execute()</text:span> together with the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XMultipleResults]</text:span> of the statement.</text:p>
  <table:table table:name="Table32" table:style-name="Table32">
   <table:table-column table:style-name="Table32.A"/>
   <table:table-column table:style-name="Table32.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table32.A1" table:value-type="string">
      <text:p text:style-name="Table Contents"><draw:image draw:style-name="fr5" draw:name="Tip" text:anchor-type="paragraph" svg:x="0.067cm" svg:y="0cm" svg:width="0.847cm" svg:height="0.847cm" draw:z-index="2" xlink:href="../tip.gif" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
        <svg:desc>Tip graphics marks a hint section in the text</svg:desc>
       </draw:image></text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table32.B1" table:value-type="string">
      <text:p text:style-name="TipInTable">Data definition commands, such as <text:span text:style-name="Code (in text)">CREATE</text:span>, <text:span text:style-name="Code (in text)">DROP</text:span>, <text:span text:style-name="Code (in text)">ALTER</text:span>, and <text:span text:style-name="Code (in text)">GRANT</text:span>, can be issued with <text:span text:style-name="Code (in text)">executeUpdate()</text:span>.</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">Consider how an <text:span text:style-name="Code (in text)">XConnection</text:span> is used to create an <text:span text:style-name="Code (in text)">XStatement</text:span> in the following example:</text:p>
  <text:p text:style-name="Code">public static void executeSelect(XMultiServiceFactory _rMSF) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="7"/>// retrieve the DatabaseContext and get its com.sun.star.container.XNameAccess interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XNameAccess.class, _rMSF.createInstance(&quot;com.sun.star.sdb.DatabaseContext&quot;));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// connect</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>Object dataSource = xNameAccess.getByName(&quot;Ada01&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XDataSource xDataSource = (XDataSource)UnoRuntime.queryInterface(XDataSource.class, dataSource);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>Object interactionHandler = _rMSF.createInstance(&quot;com.sun.star.sdb.InteractionHandler&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XInteractionHandler xInteractionHandler = (XInteractionHandler)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XInteractionHandler.class, interactionHandler);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XCompletedConnection xCompletedConnection = (XCompletedConnection)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XCompletedConnection.class, dataSource);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XConnection xConnection = xCompletedConnection.connectWithCompletion(xInteractionHandler);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// the connection creates a statement</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XStatement xStatement = xConnection.<text:span text:style-name="CodeEmphasis">createStatement</text:span>();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// The XStatement interface is used to execute a SELECT command</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// Double quotes for identifiers in the SELECT string must be escaped in Java</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSet xResult = xStatement.<text:span text:style-name="CodeEmphasis">executeQuery(&quot;Select * from \&quot;Table1\&quot;&quot;)</text:span>;</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// process the result ...</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRow xRow = (XRow)UnoRuntime.queryInterface(XRow.class, xResult);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>while (xResult != null &amp;&amp; xResult.next()) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(xRow.getString(1));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph">The remainder of this section discusses how to enter data into a table and retrieving the data later, using <text:span text:style-name="Code (in text)">INSERT</text:span> and <text:span text:style-name="Code (in text)">SELECT</text:span> commands with a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.Statement]</text:span>.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Inserting and Updating Data</text:h>
  <text:p text:style-name="Paragraph">The following examples use a sample Adabas D database. Generate an Adabas D database in the <text:s/><text:span text:style-name="T2">[PRODUCTNAME]</text:span> API installation and define a new table named SALESMAN. </text:p>
  <table:table table:name="Table51" table:style-name="Table51">
   <table:table-column table:style-name="Table51.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table51.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr11" draw:name="Frame61" text:anchor-type="paragraph" svg:y="0cm" svg:width="13.931cm" fo:min-height="10.031cm" draw:z-index="21">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr12" draw:name="Screenshot of the Table Design dialog" text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" svg:width="13.7cm" svg:height="9.55cm" draw:z-index="22" xlink:href="SalesmanDefinition.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>Screenshot of the Table Design dialog</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration8" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.9</text:sequence>: SALESMAN Table Design</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph"><text:sequence-ref text:reference-format="category-and-value" text:ref-name="refIllustration8">Illustration 1.9</text:sequence-ref> shows the definition of the SALESMAN table in the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API data source administrator. The description column shows the lengths defined for the text fields of the table. After all the fields are defined, right-click the row header of the column SNR and choose <text:span text:style-name="Buttons/Menus">Primary Key </text:span>to make SNR the primary key. Afterwards a small key icon in the row header shows that SNR is the primary key of the table SALESMAN. When completed, save the table as SALESMAN. It is important to use uppercase letters for the table name, otherwise the example SQL code will not work.</text:p>
  <text:p text:style-name="Paragraph">The table does not contain any data. Use the following <text:span text:style-name="Code (in text)">INSERT</text:span> command to insert data into the table one row at a time:</text:p>
  <text:p text:style-name="Code">INSERT INTO SALESMAN (</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>SNR,</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>FIRSTNAME,</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>LASTNAME,</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>STREET,</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>STATE,</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>ZIP,</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>BIRTHDATE</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>)</text:p>
  <text:p text:style-name="Code">VALUES (</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>1, </text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>&apos;Joseph&apos;, </text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>&apos;Smith&apos;,</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>&apos;Bond Street&apos;,</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>&apos;CA&apos;,</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>&apos;95460&apos;,</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>&apos;1946-07-02&apos;</text:p>
  <text:p text:style-name="Code"><text:s text:c="2"/>)</text:p>
  <table:table table:name="Tabelle1" table:style-name="Tabelle1">
   <table:table-column table:style-name="Tabelle1.A"/>
   <table:table-column table:style-name="Tabelle1.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Tabelle1.A1" table:value-type="string">
      <text:p text:style-name="Table Contents"><draw:image draw:style-name="fr5" draw:name="Note3" text:anchor-type="paragraph" svg:x="0.065cm" svg:y="0.026cm" svg:width="0.847cm" svg:height="0.847cm" draw:z-index="5" xlink:href="../interesting.gif" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
        <svg:desc>Note graphics marks a special text section</svg:desc>
       </draw:image></text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Tabelle1.B1" table:value-type="string">
      <text:p text:style-name="TipInTable">Note the single quotes around the values for the text fields. Single quotes denote character strings in SQL, while double quotes are used for case-sensitive identifiers,such as table and column names.</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=999083"/>The following code sample inserts one row of data with the value <text:span text:style-name="Code (in text)">1</text:span><text:span text:style-name="Source Text"> </text:span>in the column <text:span text:style-name="Source Text">SNR</text:span>, <text:span text:style-name="Code (in text)">&apos;Joseph&apos;</text:span><text:span text:style-name="Source Text"> </text:span><text:span text:style-name="T16">in</text:span><text:span text:style-name="Source Text"> </text:span><text:span text:style-name="Code (in text)">FIRSTNAME</text:span>, <text:span text:style-name="Code (in text)">&apos;</text:span><text:span text:style-name="T17">Smith&apos;</text:span> <text:span text:style-name="T16">in </text:span><text:span text:style-name="Code (in text)">LASTNAME</text:span><text:span text:style-name="Source Text">,</text:span>with other information in the following columns of the table SALESMAN. To issue the command against the database, create a <text:span text:style-name="Source Text">Statement</text:span> object and then execute it using the method <text:span text:style-name="Source Text">executeUpdate():</text:span></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XStatement xStatement = xConnection.createStatement();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>xStatement.executeUpdate(&quot;INSERT INTO SALESMAN (&quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;SNR, FIRSTNAME, LASTNAME, STREET, STATE, ZIP, BIRTHDATE) &quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;VALUES (1, &apos;Joseph&apos;, &apos;Smith&apos;,&apos;Bond Street&apos;,&apos;CA&apos;,&apos;95460&apos;,&apos;1946-07-02&apos;)&quot;);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=998407"/>The next call to <text:alphabetical-index-mark-start text:id="IMark44161044"/><text:span text:style-name="Code (in text)">executeUpdate()</text:span><text:alphabetical-index-mark-end text:id="IMark44161044"/> inserts more rows into the table <text:span text:style-name="Source Text">SALESMAN</text:span>. Note the <text:span text:style-name="Source Text">Statement</text:span> object <text:span text:style-name="Source Text">stmt</text:span> is reused, rather than creating a new one for each update.</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xStatement.executeUpdate(&quot;INSERT INTO SALESMAN (&quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;SNR, FIRSTNAME, LASTNAME, STREET, STATE, ZIP, BIRTHDATE) &quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;VALUES (2, &apos;Frank&apos;, &apos;Jones&apos;, &apos;Lake Silver&apos;, &apos;CA&apos;, &apos;95460&apos;, &apos;1963-12-24&apos;)&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>xStatement.executeUpdate(&quot;INSERT INTO SALESMAN (&quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;SNR, FIRSTNAME, LASTNAME, STREET, STATE, ZIP, BIRTHDATE) &quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;VALUES (3, &apos;Jane&apos;, &apos;Esperanza&apos;, &apos;23 Hollywood drive&apos;, &apos;CA&apos;, &apos;95460&apos;, &apos;1972-01-04&apos;)&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>xStatement.executeUpdate(&quot;INSERT INTO SALESMAN (&quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;SNR, FIRSTNAME, LASTNAME, STREET, STATE, ZIP, BIRTHDATE) &quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;VALUES (4, &apos;George&apos;, &apos;Flint&apos;, &apos;12 Washington street&apos;, &apos;CA&apos;, &apos;95460&apos;, &apos;1953-02-13&apos;)&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>xStatement.executeUpdate(&quot;INSERT INTO SALESMAN (&quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;SNR, FIRSTNAME, LASTNAME, STREET, STATE, ZIP, BIRTHDATE) &quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;VALUES (5, &apos;Bob&apos;, &apos;Meyers&apos;, &apos;2 Moon way&apos;, &apos;CA&apos;, &apos;95460&apos;, &apos;1949-09-07&apos;)&quot;);</text:p>
  <text:p text:style-name="Paragraph">Updating tables is basically the same process. The SQL command:</text:p>
  <text:p text:style-name="Code">UPDATE SALESMAN</text:p>
  <text:p text:style-name="Code">SET STREET=&apos;Grant Street&apos;, STATE=&apos;FL&apos;</text:p>
  <text:p text:style-name="Code">WHERE SNR=2</text:p>
  <text:p text:style-name="Paragraph">writes a new street and state entry for Frank Jones who has SNR=2. The corresponding <text:span text:style-name="Code (in text)">executeUpdate()</text:span> call looks like this:</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>int n = xStatement.executeUpdate(&quot;UPDATE SALESMAN &quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;SET STREET=&apos;Grant Street&apos;, STATE=&apos;FL&apos; &quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;WHERE SNR=2&quot;);</text:p>
  <text:p text:style-name="Paragraph">The return value of <text:span text:style-name="Code (in text)">executeUpdate()</text:span> is an <text:span text:style-name="Code (in text)">int</text:span> that indicates how many rows of a table were updated. Our update command affected one row, so <text:span text:style-name="Source Text">n</text:span> is equal to <text:span text:style-name="Source Text">1</text:span>. </text:p>
  <table:table table:name="Table31" table:style-name="Table31">
   <table:table-column table:style-name="Table31.A"/>
   <table:table-column table:style-name="Table31.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table31.A1" table:value-type="string">
      <text:p text:style-name="Table Contents"><draw:image draw:style-name="fr5" draw:name="Note4" text:anchor-type="paragraph" svg:x="0.065cm" svg:y="0.026cm" svg:width="0.847cm" svg:height="0.847cm" draw:z-index="3" xlink:href="../interesting.gif" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
        <svg:desc>Note graphics marks a special text section</svg:desc>
       </draw:image></text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table31.B1" table:value-type="string">
      <text:p text:style-name="TipInTable">Note that it depends on the database and the driver,if the return value of <text:span text:style-name="Code (in text)">executeUpdate()</text:span> reflects the actual changes.</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:h text:style-name="Head 4" text:level="4">Getting Data from a Table</text:h>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=997496"/>Now that the table <text:span text:style-name="Source Text">SALESMAN</text:span> has values in it, write a <text:span text:style-name="Code (in text)">SELECT</text:span> statement to access those values. The asterisk * in the following SQL statement indicates that all columns should be selected. Since there is no <text:span text:style-name="Code (in text)">WHERE</text:span> clause to select less rows, the following SQL statement selects the whole table:</text:p>
  <text:p text:style-name="Code">SELECT * FROM SALESMAN</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=998737"/>The result contains the following data:</text:p>
  <table:table table:name="Table17" table:style-name="Table17">
   <table:table-column table:style-name="Table17.A"/>
   <table:table-column table:style-name="Table17.B"/>
   <table:table-column table:style-name="Table17.C"/>
   <table:table-column table:style-name="Table17.D"/>
   <table:table-column table:style-name="Table17.E"/>
   <table:table-column table:style-name="Table17.F"/>
   <table:table-column table:style-name="Table17.G"/>
   <table:table-row>
    <table:table-cell table:style-name="Table17.A1" table:value-type="string">
     <text:p text:style-name="TableHead">SNR</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.A1" table:value-type="string">
     <text:p text:style-name="TableHead">FIRSTNAME</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.A1" table:value-type="string">
     <text:p text:style-name="TableHead">LASTNAME</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.A1" table:value-type="string">
     <text:p text:style-name="TableHead">STREET</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.A1" table:value-type="string">
     <text:p text:style-name="TableHead">STATE</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.A1" table:value-type="string">
     <text:p text:style-name="TableHead">ZIP</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.G1" table:value-type="string">
     <text:p text:style-name="TableHead">BIRTHDATE</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table17.A2" table:value-type="float" table:value="1">
     <text:p text:style-name="TextInTable">1</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Joseph</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Smith</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Bond Street</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">CA</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.A2" table:value-type="float" table:value="95460">
     <text:p text:style-name="TextInTable">95460</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.G2" table:value-type="date" table:date-value="1946-02-07">
     <text:p text:style-name="TextInTable">07.02.46</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table17.A2" table:value-type="float" table:value="2">
     <text:p text:style-name="TextInTable">2</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Frank</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Jones</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Lake silver</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">CA</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.A2" table:value-type="float" table:value="95460">
     <text:p text:style-name="TextInTable">95460</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.G2" table:value-type="date" table:date-value="1963-12-24">
     <text:p text:style-name="TextInTable">24.12.63</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table17.A2" table:value-type="float" table:value="3">
     <text:p text:style-name="TextInTable">3</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Jane</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Esperanza</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">23 Hollywood drive</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">CA</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.A2" table:value-type="float" table:value="95460">
     <text:p text:style-name="TextInTable">95460</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.G2" table:value-type="date" table:date-value="1972-04-01">
     <text:p text:style-name="TextInTable">01.04.72</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table17.A2" table:value-type="float" table:value="4">
     <text:p text:style-name="TextInTable">4</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">George</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Flint</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">12 Washington street</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">CA</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.A2" table:value-type="float" table:value="95460">
     <text:p text:style-name="TextInTable">95460</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.G2" table:value-type="date" table:date-value="1953-02-13">
     <text:p text:style-name="TextInTable">13.02.53</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table17.A2" table:value-type="float" table:value="5">
     <text:p text:style-name="TextInTable">5</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Bob</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Meyers</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">2 Moon way</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">CA</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.A2" table:value-type="float" table:value="95460">
     <text:p text:style-name="TextInTable">95460</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table17.G2" table:value-type="date" table:date-value="1949-09-07">
     <text:p text:style-name="TextInTable">07.09.49</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=998727"/>The following is another example of a <text:span text:style-name="Code (in text)">SELECT</text:span> statement. This statement gets a list with the names and addresses of all the salespersons. Only the columns FIRSTNAME, LASTNAME and STREET were selected.</text:p>
  <text:p text:style-name="Code">SELECT FIRSTNAME, LASTNAME, STREET FROM SALESMAN</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=997532"/><text:bookmark text:name="pgfId=1024191"/>The result of this query only contains three columns:</text:p>
  <table:table table:name="Table19" table:style-name="Table19">
   <table:table-column table:style-name="Table19.A"/>
   <table:table-column table:style-name="Table19.B"/>
   <table:table-column table:style-name="Table19.C"/>
   <table:table-row>
    <table:table-cell table:style-name="Table19.A1" table:value-type="string">
     <text:p text:style-name="TableHead">FIRSTNAME</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table19.A1" table:value-type="string">
     <text:p text:style-name="TableHead">LASTNAME</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table19.C1" table:value-type="string">
     <text:p text:style-name="TableHead">STREET</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table19.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Joseph</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table19.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Smith</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table19.C2" table:value-type="string">
     <text:p text:style-name="TextInTable">Bond Street</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table19.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Frank</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table19.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Jones</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table19.C2" table:value-type="string">
     <text:p text:style-name="TextInTable">Lake silver</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table19.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Jane</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table19.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Esperansa</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table19.C2" table:value-type="string">
     <text:p text:style-name="TextInTable">23 Hollywood drive</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table19.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">George</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table19.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Flint</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table19.C2" table:value-type="string">
     <text:p text:style-name="TextInTable">12 Washington street</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table19.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Bob</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table19.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Meyers</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table19.C2" table:value-type="string">
     <text:p text:style-name="TextInTable">2 Moon way</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=997829"/>The <text:span text:style-name="Source Text">SELECT</text:span> statement above extracts all salespersons in the table. The following SQL statement limits the SALESMAN <text:span text:style-name="Code (in text)">SELECT</text:span> to salespersons who were born before 01/01/1950: </text:p>
  <text:p text:style-name="Code">SELECT FIRSTNAME, LASTNAME, BIRTHDATE</text:p>
  <text:p text:style-name="Code">FROM SALESMAN</text:p>
  <text:p text:style-name="Code">WHERE BIRTHDATE &lt; &apos;1950-01-01&apos;</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=998425"/>The resulting data is:</text:p>
  <table:table table:name="Table20" table:style-name="Table20">
   <table:table-column table:style-name="Table20.A"/>
   <table:table-column table:style-name="Table20.B"/>
   <table:table-column table:style-name="Table20.C"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table20.A1" table:value-type="string">
      <text:p text:style-name="TableHead">FIRSTNAME</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table20.A1" table:value-type="string">
      <text:p text:style-name="TableHead">LASTNAME</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table20.C1" table:value-type="string">
      <text:p text:style-name="TableHead">BIRTHDATE</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table20.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Joseph</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table20.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Smith</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table20.C2" table:value-type="date" table:date-value="1946-02-07">
     <text:p text:style-name="TextInTable">02/07/46</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table20.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Bob</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table20.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Meyers</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table20.C2" table:value-type="date" table:date-value="1949-09-07">
     <text:p text:style-name="TextInTable">09/07/49</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="P14">When a database is accessed through the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API database integration, the results are retrieved through <text:span text:style-name="Code (in text)">ResultSet</text:span> objects. The next section discusses how to use result sets. The following <text:span text:style-name="Code (in text)">executeQuery()</text:span> call executes the SQL command above. Note that the <text:span text:style-name="Code (in text)">Statement</text:span> is used again: [SOURCE:Database/Sales.java]</text:p>
  <text:p text:style-name="P20"><text:span text:style-name="CodeEmphasis">com.sun.star.sdbc.XResultSet</text:span> xResult = xStatement.<text:span text:style-name="CodeEmphasis">executeQuery</text:span>(&quot;SELECT FIRSTNAME, LASTNAME, BIRTHDATE &quot; + </text:p>
  <text:p text:style-name="P20"><text:s text:c="8"/>&quot;FROM SALESMAN &quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;WHERE BIRTHDATE &lt; &apos;1950-01-01&apos;&quot;);</text:p>
  <text:h text:style-name="Head 3" text:level="3">Result Sets</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.ResultSet;com.sun.star.sdbc.ResultSet;com.sun.star.sdbcx.ResultSet]The <text:alphabetical-index-mark-start text:id="IMark44161044"/><text:span text:style-name="Code (in text)">ResultSet</text:span><text:alphabetical-index-mark-end text:id="IMark44161044"/> objects represent the output of an <text:span text:style-name="Code (in text)">SQL SELECT</text:span> command in data rows and columns <text:s/>to retrieve the data using a row cursor that points to one data row at a time. The following illustration shows the inheritance of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.ResultSet]</text:span>. Each layer of the <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API database integration adds capabilities to <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API result sets.</text:p>
  <text:p text:style-name="Paragraph">The fundamental <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.ResultSet]</text:span> is the most powerful of the three result set services. Basically this result set is sufficient to process SELECT results. It is used to navigate through the resulting rows, and to retrieve and update data rows and the column values in a row.</text:p>
  <table:table table:name="Table52" table:style-name="Table52">
   <table:table-column table:style-name="Table52.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table52.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr8" draw:name="Frame7" text:anchor-type="paragraph" svg:width="11.993cm" fo:min-height="15.66cm" draw:z-index="23">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of com.sun.star.sdb.ResultSet" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="11.869cm" svg:height="15.177cm" draw:z-index="24" xlink:href="ResultSet.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the com.sun.star.sdb.ResultSet service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration9" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.10</text:sequence>: ResultSet</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.ResultSet]</text:span> can add bookmarks through <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XRowLocate]</text:span> <text:alphabetical-index-mark text:string-value="XRowLocate"/>and allows row deletion by bookmarks through<text:alphabetical-index-mark text:string-value="DeleteRows"/> <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XDeleteRows]</text:span>. </text:p>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.ResultSet]</text:span> service extends the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.ResultSet]</text:span> service by the additional interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XColumnsSupplier]</text:span> <text:alphabetical-index-mark text:string-value="XColumnsSupplier"/>that allows the user to access information about the appearance of the selected columns in the application. The interface <text:span text:style-name="Code (in text)">XColumnsSupplier</text:span> returns a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Container]</text:span> of <text:span text:style-name="Code (in text)">ResultColumns</text:span>.</text:p>
  <table:table table:name="Table53" table:style-name="Table53">
   <table:table-column table:style-name="Table53.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table53.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr2" draw:name="Frame16" text:anchor-type="paragraph" svg:y="0cm" svg:width="9.77cm" fo:min-height="12.933cm" draw:z-index="25">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of com.sun.star.sdb.ResultColumn" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="9.7cm" svg:height="12.45cm" draw:z-index="26" xlink:href="ResultColumn.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the com.sun.star.sdb.ResultColumn service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration10" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.11</text:sequence>: ResultColumn</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.ResultColumn]</text:span> <text:alphabetical-index-mark text:string-value="ResultColumn"/>service inherits the properties of the services <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Column]</text:span> and <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.ColumnSettings]</text:span>. </text:p>
  <text:p text:style-name="Paragraph">The following table explains the properties introduced with <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.ResultColumn]</text:span>. For the inherited properties, refer to the section <text:span text:style-name="ChapterRef">[CHAPTER:Database.DataSources.DataSources.TablesColumns]</text:span>.</text:p>
  <table:table table:name="Table7" table:style-name="Table7">
   <table:table-column table:style-name="Table7.A"/>
   <table:table-column table:style-name="Table7.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table7.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.ResultColumn]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table7.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ResultColumn:IsSearchable]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table7.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">boolean ─ Indicates if the column can be used in a “WHERE” clause.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table7.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ResultColumn:IsSigned]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table7.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">boolean ─ Indicates if values in the column are signed numbers.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table7.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ResultColumn:IsCaseSensitive]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table7.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">boolean ─ Indicates if a column is case sensitive.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table7.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ResultColumn:DisplaySize]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table7.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">long ─ Indicates the column&apos;s normal, maximum width in chars.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table7.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ResultColumn:Label]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table7.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Gets the suggested column title for use with GUI controls and printouts.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table7.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ResultColumn:IsReadOnly]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table7.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ If <text:span text:style-name="Code (in text)">True</text:span>, cannot write to the column.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table7.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ResultColumn:IsWritable]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table7.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ If <text:span text:style-name="Code (in text)">True</text:span>, an attempt to write to the column may succeed.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table7.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ResultColumn:IsDefinitelyWritable]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table7.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ If <text:span text:style-name="Code (in text)">True</text:span>, the column is writable.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table7.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ResultColumn:ServiceName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table7.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Returns the fully-qualified name of the service that is returned when the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XRow]</text:span> method <text:span text:style-name="Code (in text)">getObject()</text:span> is called to retrieve a value from the column.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table7.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ResultColumn:TableName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table7.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span><text:span text:style-name="T8"> ─ </text:span>Gets the database table name where the column comes from.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table7.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ResultColumn:SchemaName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table7.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span><text:span text:style-name="T8"> ─ </text:span>Gets the schema name of the column.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table7.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdb.ResultColumn:CatalogName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table7.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Gets the catalog name of the column.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:h text:style-name="P28" text:level="4">Retrieving Values from Result Sets</text:h>
  <text:p text:style-name="Paragraph">A call to <text:span text:style-name="Code (in text)">execute()</text:span> on a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.RowSet]</text:span> or a call to <text:span text:style-name="Code (in text)">executeQuery()</text:span> on a Statement produces a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.ResultSet]</text:span>. [SOURCE:Database/Sales.java]</text:p>
  <text:p text:style-name="Code"><text:span text:style-name="CodeEmphasis">com.sun.star.sdbc.XResultSet</text:span> xResult = xStatement.<text:span text:style-name="CodeEmphasis">executeQuery</text:span>(&quot;SELECT FIRSTNAME, LASTNAME, STREET &quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>&quot;FROM SALESMAN &quot; + </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>&quot;VWHERE BIRTHDATE &lt; &apos;1950-01-01&apos;&quot;);</text:p>
  <text:h text:style-name="Head 4" text:level="4">Moving the <text:alphabetical-index-mark text:string-value="ResultSet cursor"/>Result Set Cursor</text:h>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1024358"/>The <text:span text:style-name="Code (in text)">ResultSet</text:span> stored in the variable <text:span text:style-name="Source Text">xResult</text:span> contains the following data after the call above:</text:p>
  <table:table table:name="Table26" table:style-name="Table26">
   <table:table-column table:style-name="Table26.A"/>
   <table:table-column table:style-name="Table26.B"/>
   <table:table-column table:style-name="Table26.C"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table26.A1" table:value-type="string">
      <text:p text:style-name="TableHead">FIRSTNAME</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table26.A1" table:value-type="string">
      <text:p text:style-name="TableHead">LASTNAME</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table26.C1" table:value-type="string">
      <text:p text:style-name="TableHead">BIRTHDATE</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table26.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Joseph</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table26.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Smith</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table26.C2" table:value-type="date" table:date-value="1946-02-07">
     <text:p text:style-name="TextInTable">02/07/46</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table26.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Bob</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table26.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Meyers</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table26.C2" table:value-type="date" table:date-value="1949-09-07">
     <text:p text:style-name="TextInTable">09/07/49</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">To access the data, go to each row and retrieve the values according to their types. The method <text:span text:style-name="Code (in text)">next()</text:span> is used to move the row cursor from row to row. Since the cursor is initially positioned just above the first row of a <text:span text:style-name="Code (in text)">ResultSet</text:span> object, the first call to <text:alphabetical-index-mark-start text:id="IMark44161044"/><text:span text:style-name="Code (in text)">next()</text:span><text:alphabetical-index-mark-end text:id="IMark44161044"/> moves the cursor to the first row and makes it the current row. For the same reason, use the method <text:span text:style-name="Code (in text)">next()</text:span> to access the first row even if there is only one row in a result set. Subsequent invocations of <text:span text:style-name="Code (in text)">next()</text:span> move the cursor down one row at a time.</text:p>
  <text:p text:style-name="Paragraph">The interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XResultSet]</text:span> offers methods to move to specific row numbers, and to positions relative to the current row, in addition to moving the cursor back and forth one row at a time:</text:p>
  <text:p text:style-name="MethodSignatures">// move one row at a time</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">next</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">previous</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// move a number of rows</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">absolute</text:span>( [in] long row )</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">relative</text:span>( [in] long rows )</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// move to result set borders and beyond</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">first</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">last</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">beforeFirst</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">afterLast</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">//detect position</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">isBeforeFirst</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">isAfterLast</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">isFirst</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">isLast</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">long <text:span text:style-name="MethodSignatureEmphasis">getRow</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// refetch row from the database</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">refreshRow</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// row has been updated, inserted or deleted</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">rowUpdated</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">rowInserted</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">rowDeleted</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures"/>
  <text:p text:style-name="MethodSignatures">// get the statement which created the result set</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::uno::XInterface <text:span text:style-name="MethodSignatureEmphasis">getStatement</text:span>()</text:p>
  <table:table table:name="Table21" table:style-name="Table21">
   <table:table-column table:style-name="Table21.A"/>
   <table:table-column table:style-name="Table21.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table21.A1" table:value-type="string">
      <text:p text:style-name="Table Contents"><draw:image draw:style-name="fr5" draw:name="Note5" text:anchor-type="paragraph" svg:x="0.065cm" svg:y="0.026cm" svg:width="0.847cm" svg:height="0.847cm" draw:z-index="0" xlink:href="../interesting.gif" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
        <svg:desc>Note graphics marks a special text section</svg:desc>
       </draw:image></text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table21.B1" table:value-type="string">
      <text:p text:style-name="TipInTable">Note that you can only move the cursor backwards if you set the statement property <text:span text:style-name="Code (in text)">ResultSetType</text:span> to <text:span text:style-name="Code (in text)">SCROLL_INSENSITIVE</text:span> or <text:span text:style-name="Code (in text)">SCROLL_SENSITIVE</text:span>. For details, refer to chapter <text:span text:style-name="ChapterRef">[CHAPTER:Database.Manipulate.ResultSets.Scrollable]</text:span>.</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:h text:style-name="Head 4" text:level="4">Using the getXXX Methods</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbc.XRow]<text:alphabetical-index-mark text:string-value="XRow"/>To get column values from the current row, use the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XRow]</text:span>. It offers a large number of get methods for all SDBC data types, or rather getXXX methods. The XXX stands for the type retrieved by the method.</text:p>
  <text:p text:style-name="Paragraph">Usually, the <text:span text:style-name="Source Text">getXXX</text:span> method is used for the appropriate type to retrieve the value in each column. For example, the first column in each row of <text:span text:style-name="Code (in text)">xResult</text:span> is FIRSTNAME. It is the first column and contains a value of SQL type <text:span text:style-name="Source Text">VARCHAR</text:span>. The appropriate method to retrieve a VARCHAR value is <text:alphabetical-index-mark-start text:id="IMark44161044"/><text:span text:style-name="Code (in text)">getString()</text:span><text:alphabetical-index-mark-end text:id="IMark44161044"/>. It should be used for the second column, as well. The third column BIRTHDATE stores DATE values, the method for date types is <text:alphabetical-index-mark-start text:id="IMark44952644"/><text:span text:style-name="Code (in text)">getDate()</text:span><text:alphabetical-index-mark-end text:id="IMark44952644"/>. SDBC is flexible and allows a number of type conversions through getXXX. See the table below for details.</text:p>
  <text:p text:style-name="Paragraph">The following code accesses the values stored in the current row of <text:span text:style-name="Code (in text)">xResult </text:span>and prints a line with the column values separated by tabs. Each time <text:span text:style-name="Code (in text)">next()</text:span> is invoked, the next row becomes the current row, and the loop continues until there are no more rows in <text:span text:style-name="Code (in text)">xResult</text:span>. [SOURCE:Database/SalesMan.java]</text:p>
  <text:p text:style-name="Code">public static void selectSalespersons(XMultiServiceFactory _rMSF) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// retrieve the DatabaseContext and get its com.sun.star.container.XNameAccess interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XNameAccess.class, _rMSF.createInstance(&quot;com.sun.star.sdb.DatabaseContext&quot;));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>//connect</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>Object dataSource = xNameAccess.getByName(&quot;Ada01&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XDataSource xDataSource = (XDataSource)UnoRuntime.queryInterface(XDataSource.class, dataSource);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>Object interactionHandler = _rMSF.createInstance(&quot;com.sun.star.sdb.InteractionHandler&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XInteractionHandler xInteractionHandler = (XInteractionHandler)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XInteractionHandler.class, interactionHandler);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XCompletedConnection xCompletedConnection = (XCompletedConnection)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XCompletedConnection.class, dataSource);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XConnection xConnection = xCompletedConnection.connectWithCompletion(xInteractionHandler);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// create statement and execute query</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XStatement xStatement = xConnection.createStatement();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSet xResult = xStatement.executeQuery(&quot;SELECT FIRSTNAME, LASTNAME, BIRTHDATE FROM SALESMAN&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// process result</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRow xRow = (XRow)UnoRuntime.queryInterface(XRow.class, xResult);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>while (xResult != null &amp;&amp; xResult.<text:span text:style-name="CodeEmphasis">next</text:span>()) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String firstName = xRow.<text:span text:style-name="CodeEmphasis">getString</text:span>(1);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String lastName = xRow.<text:span text:style-name="CodeEmphasis">getString</text:span>(2);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>com.sun.star.util.Date birthDate = xRow.<text:span text:style-name="CodeEmphasis">getDate</text:span>(3);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(firstName + &quot;\t&quot; + lastName + &quot;\t\t&quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>birthDate.Month + &quot;/&quot; + birthDate.Day + &quot;/&quot; + birthDate.Year);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=997936"/>The output looks like this:</text:p>
  <text:p text:style-name="Output">Joseph<text:tab-stop/>Smith<text:tab-stop/><text:tab-stop/>7/2/1946</text:p>
  <text:p text:style-name="Output">Frank<text:tab-stop/>Jones<text:tab-stop/><text:tab-stop/>12/24/1963</text:p>
  <text:p text:style-name="Output">Jane<text:tab-stop/>Esperanza<text:tab-stop/>4/1/1972</text:p>
  <text:p text:style-name="Output">George<text:tab-stop/>Flint<text:tab-stop/><text:tab-stop/>2/13/1953</text:p>
  <text:p text:style-name="Output">Bob<text:tab-stop/>Meyers<text:tab-stop/><text:tab-stop/>9/7/1949</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=997499"/>In this code, how the <text:span text:style-name="Code (in text)">getXXX</text:span> methods work are shown and the two <text:span text:style-name="Code (in text)">getXXX</text:span> calls are examined. </text:p>
  <text:p text:style-name="Code">String firstName = xRow.getString(1);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=997623"/>The method <text:span text:style-name="Code (in text)">getString()</text:span> is invoked on <text:span text:style-name="Code (in text)">xRow</text:span> , that is, <text:span text:style-name="Code (in text)">getString()</text:span> gets the value stored in column no. 1 in the current row of <text:span text:style-name="Code (in text)">xResult</text:span>, which is FIRSTNAME. The value retrieved by <text:span text:style-name="Code (in text)">getString()</text:span> has been converted from a <text:span text:style-name="Source Text">VARCHAR</text:span> to a <text:span text:style-name="Source Text">String</text:span> in the Java programming language, and assigned to the <text:span text:style-name="Source Text">String</text:span> object <text:span text:style-name="Code (in text)">firstname</text:span>. </text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=997659"/>The situation is similar with the method <text:span text:style-name="Source Text">getDate()</text:span>. It retrieves the value stored in column no. 3 (BIRTHDATE), which is an SQL <text:span text:style-name="Source Text">DATE</text:span> , and converts it to a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.util.Date]</text:span> before assigning it to the variable <text:span text:style-name="Code (in text)">birthDate</text:span>.</text:p>
  <text:p text:style-name="Paragraph">Note that the column number refers to the column number in the result set, not in the original table.</text:p>
  <text:p text:style-name="Paragraph">SDBC is flexible as to which <text:span text:style-name="Code (in text)">getXXX</text:span> methods can be used to retrieve the various SQL types. For example, the method <text:span text:style-name="Code (in text)">getInt()</text:span> can be used to retrieve any of the numeric or character types. The data it retrieves is converted to an <text:span text:style-name="Code (in text)">int</text:span>; that is, if the SQL type is <text:span text:style-name="Source Text">VARCHAR</text:span>, SDBC attempts to parse an integer out of the <text:span text:style-name="Source Text">VARCHAR</text:span>. To be sure that no information is lost, the method <text:span text:style-name="Code (in text)">getInt()</text:span> is only recommended for SQL <text:span text:style-name="Source Text">INTEGER</text:span> types, and it cannot be used for the SQL types <text:span text:style-name="Source Text">BINARY</text:span>, <text:span text:style-name="Source Text">VARBINARY</text:span> , <text:span text:style-name="Source Text">LONGVARBINARY</text:span>, <text:span text:style-name="Source Text">DATE</text:span>, <text:span text:style-name="Source Text">TIME</text:span>, or <text:span text:style-name="Source Text">TIMESTAMP</text:span>. </text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1022255"/>Although <text:span text:style-name="Code (in text)">getString()</text:span> is recommended for the SQL types <text:span text:style-name="Source Text">CHAR</text:span> and <text:span text:style-name="Source Text">VARCHAR</text:span>, it is possible to retrieve any of the basic SQL types with it. The new SQL3 data types can not be retrieved with it. Getting values with <text:span text:style-name="Code (in text)">getString()</text:span> can be useful, but has its limitations. For instance, if it is used to retrieve a numeric type, <text:span text:style-name="Code (in text)">getString()</text:span> converts the numeric value to a Java <text:span text:style-name="Code (in text)">String</text:span> object, and the value has to be converted back to a numeric type before it can be used for numeric operations. </text:p>
  <text:p text:style-name="Paragraph">The value will be treated as a string, <text:s/>so if an application is to retrieve and display arbitrary column values of any standard SQL type other than SQL3 types, use <text:span text:style-name="Code (in text)">getString()</text:span>.</text:p>
  <text:p text:style-name="Paragraph"><text:sequence-ref text:reference-format="category-and-value" text:ref-name="ref0"/> shows all getXXX() methods and the corresponding SDBC data types defined in <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.DataType]</text:span>. The illustration above shows which methods can legally be used to retrieve SQL types, and which methods are recommended for retrieving the various SQL types. </text:p>
  <table:table table:name="Table54" table:style-name="Table54">
   <table:table-column table:style-name="Table54.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table54.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr2" draw:name="Frame14" text:anchor-type="paragraph" svg:y="0cm" svg:width="14.34cm" fo:min-height="10.322cm" draw:z-index="27">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="Methods to retrieve SQL types" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="14.27cm" svg:height="9.781cm" draw:z-index="28" xlink:href="DataTypesGetXXX.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>Overview of methods to retrieve SQL types</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration11" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.12</text:sequence>: Methods to Retrieve SQL Types</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:unordered-list text:style-name="L17">
   <text:list-item>
    <text:p text:style-name="P29"><text:span text:style-name="T18">x </text:span>with grey background indicates that the getXXX() method is the recommended method to retrieve an SDBC data type. No data will be lost due to type conversion.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:unordered-list text:style-name="L18">
   <text:list-item>
    <text:p text:style-name="P30">x indicates that the getXXX() method may legally be used to retrieve the given SDBC type. However, type conversion will take place and affect the values you obtain.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:h text:style-name="Head 4" text:level="4">Scrollable Result Sets</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbc.XResultSet]The <text:alphabetical-index-mark text:string-value="XResultSet"/>interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XResultSet]</text:span> offers methods to move the cursor back and forth to an arbitrary row, and get the current position of the cursor. Scrollable result sets are necessary to create GUI tools that can browse result sets. It also may be required to move a specific row to work with it.<text:bookmark text:name="pgfId=1018185"/> Before taking advantage of these features, create a scrollable <text:span text:style-name="Code (in text)">ResultSet</text:span> object. The following lines of code illustrate one way to create a scrollable <text:span text:style-name="Code (in text)">ResultSet</text:span> object:</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XStatement xStatement = xConnection.createStatement();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xStatement);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetType&quot;,new java.lang.Integer(ResultSetType.SCROLL_INSENSITIVE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetConcurrency&quot;, new java.lang.Integer(ResultSetConcurrency.UPDATABLE));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSet xResult = xStatement.executeQuery(&quot;SELECT FIRSTNAME, LASTNAME FROM SALES&quot;);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1016194"/>This code is similar to what was used earlier, except that it sets two property values at the <text:span text:style-name="Code (in text)">Statement</text:span><text:span text:style-name="Source Text"> </text:span>object. These properties have to be set before the statement is executed.</text:p>
  <text:p text:style-name="Paragraph">The value of the property ResultSetType must be one of three constants defined in <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.ResultSetType]</text:span>: <text:span text:style-name="Code (in text)">FORWARD_ONLY</text:span>, <text:span text:style-name="Code (in text)">SCROLL_INSENSITIVE</text:span> and <text:span text:style-name="Code (in text)">SCROLL_SENSITIVE</text:span>.</text:p>
  <text:p text:style-name="Paragraph">The property <text:span text:style-name="Code (in text)">ResultSetConcurrency </text:span>must be one out of the two <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.ResultSetConcurrency]</text:span> constants <text:span text:style-name="Code (in text)">READ_ONLY</text:span> and <text:span text:style-name="Code (in text)">UPDATABLE</text:span>. When a <text:span text:style-name="Code (in text)">ResultSetType</text:span> is specified, it must be specified if it is read-only or modifiable.</text:p>
  <text:p text:style-name="Paragraph">If any constants for the type and modifiability of a <text:span text:style-name="Source Text">ResultSet</text:span> object are not specified, <text:span text:style-name="Code (in text)">FORWARD_ONLY</text:span> and <text:span text:style-name="Code (in text)">READ_ONLY</text:span> will automatically be created.</text:p>
  <text:p text:style-name="Paragraph">Specifying the constant <text:span text:style-name="Code (in text)">FORWARD_ONLY</text:span> creates a non-scrollable result set, that is, the cursor moves forward only. A scrollable <text:span text:style-name="Code (in text)">ResultSet</text:span> is obtained by specifying <text:span text:style-name="Code (in text)">SCROLL_INSENSITIVE</text:span><text:span text:style-name="Source Text"> </text:span>or <text:span text:style-name="Code (in text)">SCROLL_SENSITIVE</text:span>. Sensitive or insensitive refers to changes made to the underlying data after the result set has been opened. A <text:span text:style-name="Source Text">SCROLL_INSENSITIVE</text:span> result set does not reflect changes to the underlying data, while a <text:span text:style-name="Source Text">SCROLL_SENSITIVE</text:span> result set shows changes. However, not all drivers and databases support change sensitivity.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1016198"/>In scrollable result sets, the counterpart to <text:alphabetical-index-mark-start text:id="IMark43993500"/><text:span text:style-name="Code (in text)">next()</text:span><text:alphabetical-index-mark-end text:id="IMark43993500"/> is the method <text:alphabetical-index-mark-start text:id="IMark44161044"/><text:span text:style-name="Code (in text)">previous()</text:span><text:alphabetical-index-mark-end text:id="IMark44161044"/>, which moves the cursor backward. Both methods return <text:span text:style-name="Code (in text)">false</text:span> when the cursor goes to the position after the last row or before the first row. This allows them to be used in a <text:span text:style-name="Code (in text)">while</text:span> loop.</text:p>
  <text:p text:style-name="Paragraph">The following two examples show the usage of <text:span text:style-name="Code (in text)">next()</text:span> and <text:span text:style-name="Code (in text)">previous()</text:span> together with <text:span text:style-name="Code (in text)">while: </text:span>[SOURCE:Database/Sales.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XStatement stmt = con.createStatement();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, stmt);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetType&quot;,new java.lang.Integer(ResultSetType.SCROLL_INSENSITIVE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetConcurrency&quot;, new java.lang.Integer(ResultSetConcurrency.READ_ONLY));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSet srs = stmt.executeQuery(&quot;SELECT NAME, PRICE FROM SALES&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRow row = (XRow)UnoRuntime.queryInterface(XRow.class, srs);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>while (srs.<text:span text:style-name="CodeEmphasis">next</text:span>()) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String name = row.getString(1);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>float price = row.getFloat(2);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(name + &quot; <text:s text:c="4"/>&quot; + price);</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1016206"/>The printout will look similar to this:</text:p>
  <text:p text:style-name="Output">Linux<text:tab-stop/>32</text:p>
  <text:p text:style-name="Output">Beef<text:tab-stop/>15.78</text:p>
  <text:p text:style-name="Output">Orange juice<text:tab-stop/>1.50</text:p>
  <text:p text:style-name="Paragraph">To process the rows going backward, the cursor must start out after the last row. The cursor is moved to the position after the last row with the method <text:span text:style-name="Code (in text)">afterLast()</text:span>. Then <text:span text:style-name="Code (in text)">previous()</text:span> moves the cursor from the position after the last row to the last row, and then up to the first row with each iteration through the <text:span text:style-name="Code (in text)">while</text:span> loop. The loop ends when the cursor reaches the position before the first row, where <text:span text:style-name="Code (in text)">previous()</text:span> returns <text:span text:style-name="Source Text">false</text:span>. [SOURCE:Database/Sales.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XStatement stmt = con.createStatement();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class,stmt);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetType&quot;, new java.lang.Integer(ResultSetType.SCROLL_INSENSITIVE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetConcurrency&quot;, new java.lang.Integer(ResultSetConcurrency.READ_ONLY));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSet srs = stmt.executeQuery(&quot;SELECT NAME, PRICE FROM SALES&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRow row = (XRow)UnoRuntime.queryInterface(XRow.class, srs);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>srs.afterLast();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>while (srs.<text:span text:style-name="CodeEmphasis">previous</text:span>()) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String name = row.getString(1);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>float price = row.getFloat(2);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(name + &quot; <text:s text:c="4"/>&quot; + price);</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1016223"/>The printout will look similar to this:</text:p>
  <text:p text:style-name="Output">Orange juice<text:tab-stop/>1.50</text:p>
  <text:p text:style-name="Output">Beef<text:tab-stop/>15.78</text:p>
  <text:p text:style-name="Output">Linux<text:tab-stop/>32</text:p>
  <text:p text:style-name="Paragraph">The column values are the same, but the rows are in the reverse order.</text:p>
  <text:p text:style-name="Paragraph">The cursor can be moved to a specific row in a <text:span text:style-name="Code (in text)">ResultSet</text:span> object. The methods <text:alphabetical-index-mark-start text:id="IMark43993500"/><text:span text:style-name="Code (in text)">first()</text:span><text:alphabetical-index-mark-end text:id="IMark43993500"/>, <text:alphabetical-index-mark-start text:id="IMark44161044"/><text:span text:style-name="Code (in text)">last()</text:span><text:alphabetical-index-mark-end text:id="IMark44161044"/>, <text:alphabetical-index-mark-start text:id="IMark44952644"/><text:span text:style-name="Code (in text)">beforeFirst()</text:span><text:alphabetical-index-mark-end text:id="IMark44952644"/>, and <text:alphabetical-index-mark-start text:id="IMark43962852"/><text:span text:style-name="Code (in text)">afterLast()</text:span><text:alphabetical-index-mark-end text:id="IMark43962852"/> move the cursor to the row indicated by the method names.</text:p>
  <text:p text:style-name="Paragraph">The method <text:alphabetical-index-mark-start text:id="IMark43993500"/><text:span text:style-name="Code (in text)">absolute()</text:span><text:alphabetical-index-mark-end text:id="IMark43993500"/> moves the cursor to the row number indicated in the argument passed. If the number is positive, the cursor moves the given number from the beginning. Calling <text:span text:style-name="Code (in text)">absolute</text:span><text:span text:style-name="Source Text">(1)</text:span> moves the cursor to the first row. If the number is negative, the cursor moves the given number of rows from the end. Calling <text:span text:style-name="Code (in text)">absolute</text:span><text:span text:style-name="Source Text">(-1)</text:span> sets the cursor to the last row. The following line of code moves the cursor to the fourth row of <text:span text:style-name="Source Text">srs</text:span>:</text:p>
  <text:p text:style-name="Code">srs.absolute(4);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1016234"/>If <text:span text:style-name="Source Text">srs</text:span> has 500 rows, the following line of code moves the cursor to row 497:</text:p>
  <text:p text:style-name="Code">srs.absolute(-4);</text:p>
  <text:p text:style-name="Paragraph">The method <text:alphabetical-index-mark-start text:id="IMark44161044"/><text:span text:style-name="Source Text">relative()</text:span><text:alphabetical-index-mark-end text:id="IMark44161044"/> moves the cursor by an arbitrary number of rows from the current row. A positive number moves the cursor forward, and a negative number moves the cursor backwards. For example, in the following code fragment, the cursor moves to the fourth row, then to the first row, and finally to the third row:</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>srs.absolute(4); // cursor is on the fourth row</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>... </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>srs.relative(-3); // cursor is on the first row</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>... </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>srs.relative(2); // cursor is on the third row</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1016240"/>The method <text:alphabetical-index-mark-start text:id="IMark43993500"/><text:span text:style-name="Code (in text)">getRow()</text:span><text:alphabetical-index-mark-end text:id="IMark43993500"/> returns the number of the current row. For example, use <text:span text:style-name="Code (in text)">getRow()</text:span> to verify the current position of the cursor in the previous example using the following code:<text:bookmark text:name="pgfId=1016241"/> </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>srs.absolute(4); </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>int rowNum = srs.getRow(); // rowNum should be 4</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>srs.relative(-3); </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>rowNum = srs.getRow(); // rowNum should be 1</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>srs.relative(2); </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>rowNum = srs.getRow(); // rowNum should be 3</text:p>
  <text:p text:style-name="Paragraph">Note that some drivers do not support the <text:span text:style-name="Code (in text)">getRow</text:span> method. They always return 0.</text:p>
  <text:p text:style-name="Paragraph">There are four methods to verify if the cursor is at a particular position. The position is stated in their names: <text:alphabetical-index-mark-start text:id="IMark44161044"/><text:span text:style-name="Code (in text)">isFirst()</text:span><text:alphabetical-index-mark-end text:id="IMark44161044"/>, <text:alphabetical-index-mark-start text:id="IMark43993500"/><text:span text:style-name="Code (in text)">isLast()</text:span><text:alphabetical-index-mark-end text:id="IMark43993500"/>, <text:alphabetical-index-mark-start text:id="IMark44952644"/><text:span text:style-name="Code (in text)">isBeforeFirst()</text:span><text:alphabetical-index-mark-end text:id="IMark44952644"/>, and <text:alphabetical-index-mark-start text:id="IMark43663780"/><text:span text:style-name="Code (in text)">isAfterLast()</text:span><text:alphabetical-index-mark-end text:id="IMark43663780"/>. These methods return a <text:span text:style-name="Source Text">boolean</text:span> that can be used in a conditional statement. For example, the following code fragment tests if the cursor is after the last row before invoking the method <text:span text:style-name="Code (in text)">previous()</text:span> in a <text:span text:style-name="Code (in text)">while</text:span> loop. If the method <text:span text:style-name="Code (in text)">isAfterLast()</text:span> returns <text:span text:style-name="Code (in text)">false</text:span>, the cursor is not after the last row, so the method <text:span text:style-name="Code (in text)">afterLast</text:span> can be invoked. This guarantees that the cursor is after the last row and that using the method <text:span text:style-name="Code (in text)">previous()</text:span> in the <text:span text:style-name="Code (in text)">while</text:span> loop stop at every row in <text:span text:style-name="Code (in text)">srs.</text:span></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (srs.isAfterLast() == false) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>srs.afterLast(); <text:s text:c="7"/></text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>while (srs.previous()) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String name = row.getString(1);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>float price = row.getFloat(2);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(name + &quot; <text:s text:c="4"/>&quot; + price);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Paragraph">How to use the two methods from the <text:span text:style-name="Code (in text)">XResultSetUpdate</text:span> interface to move the cursor: <text:alphabetical-index-mark-start text:id="IMark44161044"/><text:span text:style-name="Code (in text)">moveToInsertRow()</text:span><text:alphabetical-index-mark-end text:id="IMark44161044"/> and <text:alphabetical-index-mark-start text:id="IMark43993500"/><text:span text:style-name="Code (in text)">moveToCurrentRow()</text:span><text:alphabetical-index-mark-end text:id="IMark43993500"/> are discussed in the next section. There are examples illustrating why moving the cursor to certain positions may be required.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Modifiable Result Sets</text:h>
  <text:p text:style-name="Paragraph">Another feature of SDBC is the ability to update rows in a result set using methods in the <text:s/>programming language, rather than sending an SQL command. Before doing this, a modifiable result set must be created. To create a modifiable result set, supply the <text:span text:style-name="Code (in text)">ResultSetConcurrency</text:span> constant <text:span text:style-name="Code (in text)">UPDATABLE</text:span> to the <text:span text:style-name="Code (in text)">Statement</text:span> property <text:span text:style-name="Code (in text)">ResultSetConcurrency</text:span>, so that the <text:span text:style-name="Code (in text)">Statement</text:span> object creates an modifiable <text:span text:style-name="Code (in text)">ResultSet</text:span> object each time it executes a query. </text:p>
  <text:p text:style-name="Paragraph">The following code fragment creates a modifiable <text:span text:style-name="Code (in text)">XResultSet</text:span> object <text:span text:style-name="Code (in text)">rs</text:span> . Note that the code also <text:s/>makes <text:span text:style-name="Code (in text)">rs</text:span> scrollable. A modifiable <text:span text:style-name="Code (in text)">ResultSet</text:span> object does not have to be scrollable, but when <text:s/>changes are made to a result set, the user may want to move around in it. With a scrollable result set, there is the ability to move to particular rows that you can work with. If the type is <text:span text:style-name="Code (in text)">SCROLL_SENSITIVE</text:span>, the new value in a row can be obtained after it has changed without refreshing the whole result set.</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XStatement stmt = con.createStatement();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, stmt);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetType&quot;, new java.lang.Integer(ResultSetType.SCROLL_INSENSITIVE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetConcurrency&quot;, new java.lang.Integer(ResultSetConcurrency.UPDATABLE));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSet rs = stmt.executeQuery(&quot;SELECT NAME, PRICE FROM SALES&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRow row = (XRow)UnoRuntime.queryInterface(XRow.class, rs);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1015351"/><text:bookmark text:name="pgfId=1015350"/>The <text:span text:style-name="Code (in text)">ResultSet</text:span> object <text:span text:style-name="Code (in text)">rs</text:span> may look similar to this:</text:p>
  <table:table table:name="Table23" table:style-name="Table23">
   <table:table-column table:style-name="Table23.A"/>
   <table:table-column table:style-name="Table23.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table23.A1" table:value-type="string">
      <text:p text:style-name="TableHead">NAME</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table23.B1" table:value-type="string">
      <text:p text:style-name="TableHead">PRICE</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table23.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Linux</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table23.B2" table:value-type="currency" table:currency="USD" table:value="30">
     <text:p text:style-name="TextInTable">$30.00</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table23.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Beef</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table23.B2" table:value-type="currency" table:currency="USD" table:value="15.78">
     <text:p text:style-name="TextInTable">$15.78</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table23.A2" table:value-type="string">
     <text:p text:style-name="TextInTable">Orange juice</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table23.B2" table:value-type="currency" table:currency="USD" table:value="1.5">
     <text:p text:style-name="TextInTable">$1.50</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">The methods can now be used in the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XRowUpdate]</text:span> interface of the result set to insert a new row into <text:span text:style-name="Code (in text)">rs</text:span>, delete an existing row from <text:span text:style-name="Code (in text)">rs,</text:span> or modify a column value in <text:span text:style-name="Code (in text)">rs</text:span>.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Update</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbc.XRowUpdate]An <text:alphabetical-index-mark text:string-value="XRowUpdate"/>update is the modification of a column value in the current row. Suppose the price of orange juice is lowered to 0.99. Using the example above, the update would look like this:</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>stmt.executeUpdate(&quot;UPDATE SALES SET PRICE = 0.99&quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;WHERE SALENR = 4&quot;);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1023675"/>The following code fragment shows another way to accomplish the same update, this time using SDBC:<text:bookmark text:name="pgfId=1015554"/> </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>rs.last();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRowUpdate updateRow = (XRowUpdate)UnoRuntime.queryInterface(XRowUpdate.class, rs);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRow.updateFloat(2, (float)0.99);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1015552"/>Update operations in the SDBC API affect column values in the row where the cursor is positioned. In the first line, the <text:span text:style-name="Code (in text)">ResultSet</text:span> <text:span text:style-name="Code (in text)">rs</text:span> calls <text:span text:style-name="Code (in text)">last()</text:span> to move the cursor to the last row where the column <text:span text:style-name="Code (in text)">NAME</text:span> has the value <text:span text:style-name="Code (in text)">Orange juice</text:span>. Once the cursor is on the last row, all of the update methods that are called operate on that row until the cursor is moved to another row. </text:p>
  <text:p text:style-name="Paragraph">The second line changes the value of the <text:span text:style-name="Code (in text)">PRICE</text:span> column to 0.99 by calling <text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">updateFloat()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/>. This method is used because the column value we want to update is a <text:span text:style-name="Code (in text)">float</text:span> in Java programming language.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1017371"/>The <text:span text:style-name="Code (in text)">updateXXX()</text:span> methods in <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XRowUpdate] </text:span>take two parameters: the number of the column to update and the new column value. There are specialized <text:span text:style-name="Code (in text)">updateXXX() </text:span>methods for each data type, such as <text:span text:style-name="Code (in text)">updateString()</text:span>and <text:span text:style-name="Code (in text)">updateInt()</text:span>, just like the <text:span text:style-name="Source Text">getXXX</text:span> methods discussed above.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1015380"/>At this point, the price in <text:span text:style-name="Code (in text)">rs</text:span> for Orange juice is 0.99, but the price in the table <text:span text:style-name="Code (in text)">SALES</text:span><text:span text:style-name="Source Text"> </text:span>in the database is still 1.50. To ensure the update takes effect in the database and not just the result set, the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XResultSetUpdate]</text:span> method <text:span text:style-name="Code (in text)">updateRow()</text:span>is called. Here is what the code should look like to update <text:span text:style-name="Code (in text)">rs</text:span> and <text:span text:style-name="Code (in text)">SALES</text:span>:<text:bookmark text:name="pgfId=1015407"/> </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>rs.last();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRowUpdate updateRow = (XRowUpdate)UnoRuntime.queryInterface(XRowUpdate.class, rs);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRow.updateFloat(2, (float)0.99);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSetUpdate updateRs = (XResultSetUpdate)UnoRuntime.queryInterface(XResultSetUpdate.class, rs);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// update the data in DBMS</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRs.updateRow();</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1015412"/>If the cursor is moved to a different row before calling <text:span text:style-name="Code (in text)">updateRow()</text:span>, the update is lost. The update can be cancelled by calling <text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">cancelRowUpdates()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/>, for instance, the price should have been 0.79 instead of 0.99. The <text:alphabetical-index-mark-start text:id="IMark45083148"/><text:span text:style-name="Code (in text)">cancelRowUpdates()</text:span><text:alphabetical-index-mark-end text:id="IMark45083148"/><text:span text:style-name="Code (in text)"> </text:span>has to be invoked before invoking <text:span text:style-name="Code (in text)">updateRow()</text:span>. The <text:span text:style-name="Code (in text)">cancelRowUpdates()</text:span>does nothing when <text:alphabetical-index-mark-start text:id="IMark44314556"/><text:span text:style-name="Code (in text)">updateRow()</text:span><text:alphabetical-index-mark-end text:id="IMark44314556"/> has been called. Note that <text:span text:style-name="Code (in text)">cancelRowUpdates</text:span> cancels all the updates in a row, that is, if there were more than one updateXXX method in the row, they are all cancelled.. The following code fragment cancels the update to the price column to 0.99, and then updates it to 0.79:<text:bookmark text:name="pgfId=1015422"/> </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>rs.last();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRow.updateFloat(2, (float)0.99);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRs.cancelRowUpdates();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRow.updateFloat(2, (float)0.79);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRs.updateRow();</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1015434"/>In the above example, only one column value is updated, but an appropriate <text:span text:style-name="Code (in text)">updateXXX()</text:span> method can be called for any or all of the column values in a single row. Updates and related operations apply to the row where the cursor is positioned. Even if there are many calls to <text:span text:style-name="Source Text">updateXXX</text:span> methods, it takes only one call to the method <text:span text:style-name="Code (in text)">updateRow()</text:span> to update the database with all changes made in the current row.</text:p>
  <text:p text:style-name="Paragraph">To update the price for beef as well, move the cursor to the row containing that product. The row for beef<text:span text:style-name="Source Text"> </text:span>immediately precedes the row for orange juice, so the method <text:span text:style-name="Code (in text)">previous()</text:span> can be called to position the cursor on the row for <text:span text:style-name="Source Text">Beef</text:span>. The following code fragment changes the price in that row to 10.79 in the result set and underlying table in the database:<text:bookmark text:name="pgfId=1015524"/> </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>rs.previous();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRow.updateFloat(2, (float)10.79);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRs.updateRow();</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1017407"/>All cursor movements refer to rows in a <text:span text:style-name="Source Text">ResultSet</text:span> object, not to rows in the underlying database. If a query selects five rows from a database table, there are five rows in the result set with the first row being row 1, the second row being row 2, and so on. Row 1 can also be identified as the first row, and in a result set with five rows, row 5 is the last.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1017417"/>The order of the rows in the result set has nothing to do with the physical order of the rows in the underlying table. In fact, the order of the rows in a database table is indeterminate. The DBMS keeps track of which rows were selected, and it makes updates to the proper rows, but they may be located anywhere in the table physically. When a row is inserted, there is no way to know where in the table it was inserted.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Insert</text:h>
  <text:p text:style-name="Paragraph">The previous section described how to modify a column value using methods in the SDBC API, rather than SQL commands. With the SDBC API, <text:s/>a new row can also be inserted into a table or an existing row deleted programmatically.</text:p>
  <text:p text:style-name="Paragraph">Suppose our salesman Bob sold a new product to one of our <text:span text:style-name="T19">customer</text:span>s, FTOP Darjeeling tea, and we need to add the new sale to the database. Using the previous example, write code that passes an SQL insert statement to the DBMS. The following code fragment, in which <text:span text:style-name="Source Text">stmt</text:span> is a <text:span text:style-name="Source Text">Statement</text:span> object, shows this approach:<text:bookmark text:name="pgfId=1015591"/> [SOURCE:Database/Sales.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>stmt.executeUpdate(&quot;INSERT INTO SALES &quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;VALUES (4, 102, 5, &apos;FTOP Darjeeling tea&apos;, &apos;2002-01-02&apos;,150)&quot;);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1015619"/>The same thing can be done, without using any SQL commands, by using <text:span text:style-name="Code (in text)">ResultSet</text:span> methods in the SDBC API. After a <text:span text:style-name="Code (in text)">ResultSet</text:span> object is obtained with the results from the table <text:span text:style-name="Code (in text)">SALES</text:span>, build the new row and then insert it into the result set and the table <text:span text:style-name="Code (in text)">SALES</text:span> in one step. First, build a new row in the <text:span text:style-name="Emphasis">insert row</text:span>, a special row associated with every <text:span text:style-name="Code (in text)">ResultSet</text:span> object. This row is not part of the result set. It can be considered as a separate buffer in which a new row is composed prior to insertion.</text:p>
  <text:p text:style-name="Paragraph">The next step is to move the cursor to the insert row by invoking the method <text:span text:style-name="Code (in text)">moveToInsertRow</text:span>.(). Then set a value for each column in the row that should not be <text:span text:style-name="Code (in text)">null</text:span> by calling the appropriate <text:span text:style-name="Code (in text)">updateXXX()</text:span> method for each value. Note that these are the same <text:span text:style-name="Code (in text)">updateXXX()</text:span> methods <text:s/>used to change a column value in the previous section. </text:p>
  <text:p text:style-name="Paragraph">Finally, call <text:span text:style-name="Code (in text)">insertRow()</text:span> to insert the row that was populated with values into the result set. This method simultaneously inserts the row into the <text:span text:style-name="Code (in text)">ResultSet</text:span> object, as well as the database table from where the result set was selected.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1015706"/>The following code fragment creates a scrollable and modifiable <text:span text:style-name="Code (in text)">ResultSet</text:span> object <text:span text:style-name="Code (in text)">rs </text:span>that contains all of the rows and columns in the table <text:span text:style-name="Code (in text)">SALES</text:span>: [SOURCE:Database/Sales.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XConnection con = XDriverManager.getConnection(&quot;jdbc:mySubprotocol:mySubName&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XStatement stmt = con.createStatement();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, stmt);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetType&quot;, new java.lang.Integer(ResultSetType.SCROLL_INSENSITIVE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetConcurrency&quot;, new java.lang.Integer(ResultSetConcurrency.UPDATABLE));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSet rs = stmt.executeQuery(&quot;SELECT * FROM SALES&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRow row = (XRow)UnoRuntime.queryInterface(XRow.class, rs);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1015786"/>The next code fragment uses the X<text:span text:style-name="Source Text">ResultSetUpdate</text:span> interface of <text:span text:style-name="Source Text">rs</text:span> to insert the row for FTOP Darjeeling tea, shown in the SQL code example. It moves the cursor to the insert row, sets the six column values, and inserts the new row into <text:span text:style-name="Source Text">rs</text:span> and <text:span text:style-name="Source Text">SALES</text:span>: [SOURCE:Database/Sales.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRowUpdate updateRow = (XRowUpdate)UnoRuntime.queryInterface(XRowUpdate.class, rs);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSetUpdate updateRs = (XResultSetUpdate)UnoRuntime.queryInterface(XResultSetUpdate.class, rs);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRs.moveToInsertRow();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRow.updateInt(1, 4);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRow.updateInt(2, 102);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRow.updateInt(3, 5);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRow.updateString(4, &quot;FTOP Darjeeling tea&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRow.updateDate(5, new Date((short)1, (short)2, (short)2002));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRow.updateFloat(6, 150);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRs.insertRow();</text:p>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">updateXXX()</text:span> methods behave differently from the way they behaved in the update examples. In those examples, the value set with an u<text:span text:style-name="Code (in text)">pdateXXX() </text:span>method immediately replaced the column value in the result set, because the cursor was on a row in the result set. When the cursor is on the insert row, the value set with an <text:span text:style-name="Code (in text)">updateXXX()</text:span> method is immediately set, but it is set in the insert row rather than in the result set itself. </text:p>
  <text:p text:style-name="Paragraph">In updates and insertions, calling an updateXXX() method does not affect the underlying database table. The method <text:span text:style-name="Code (in text)">updateRow()</text:span> must be called to have updates occur in the database. For insertions, the method <text:span text:style-name="Code (in text)">insertRow()</text:span> inserts the new row into the result set and the database at the same time.</text:p>
  <text:p text:style-name="Paragraph">If a value is not supplied for a column that was defined to accept SQL <text:span text:style-name="Code (in text)">NULL</text:span> values, then the value assigned to that column is <text:span text:style-name="Code (in text)">NULL</text:span> . If a column does not accept null values, an <text:span text:style-name="Code (in text)">SQLException</text:span> is returned when an <text:span text:style-name="Code (in text)">updateXXX()</text:span> method is not called to set a value for it. This is also true if a table column is missing in the <text:span text:style-name="Source Text">ResultSet</text:span> object. In the example above, the query was <text:span text:style-name="Source Text">SELECT * FROM SALES</text:span>, which produced a result set with all the columns of all the rows. To insert one or more rows, the query does not have to select all rows, but it is advisable to select all columns. Additionally if the table has many rows, use a <text:span text:style-name="Code (in text)">WHERE</text:span> clause to limit the number of rows returned by the <text:span text:style-name="Code (in text)">SELECT</text:span> statement.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1016105"/>After the method <text:span text:style-name="Code (in text)">insertRow()</text:span>is called, start building another insert row, or move the cursor back to a result set row. Any of the methods can be executed that move the cursor to a specific row, such as <text:span text:style-name="Code (in text)">first()</text:span>, <text:span text:style-name="Code (in text)">last()</text:span>, <text:span text:style-name="Code (in text)">beforeFirst()</text:span>, <text:span text:style-name="Code (in text)">afterLast()</text:span>, and <text:span text:style-name="Code (in text)">absolute()</text:span>. The methods <text:span text:style-name="Code (in text)">previous()</text:span>, <text:span text:style-name="Code (in text)">relative()</text:span>, and <text:span text:style-name="Code (in text)">moveToCurrentRow()</text:span>can also be used. Note that only <text:span text:style-name="Code (in text)">moveToCurrentRow()</text:span> can be invoked as long as the cursor is on the insert row. </text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1018053"/>When the method <text:span text:style-name="Code (in text)">moveToInsertRow()</text:span>is called, the result set records which row the cursor is in, that is by definition the current row. As a consequence, the method <text:span text:style-name="Code (in text)">moveToCurrentRow()</text:span><text:span text:style-name="Source Text"> </text:span>can move the cursor from the insert row back to the row that was the current row previously. This also explains why the methods <text:span text:style-name="Code (in text)">previous()</text:span> and <text:span text:style-name="Code (in text)">relative()</text:span>can be used, because require movement relative to the current row.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Delete</text:h>
  <text:p text:style-name="Paragraph">In the previous sections, how to update a column and insert a new row was explained. This section discusses how to modify the <text:span text:style-name="Code (in text)">ResultSet</text:span> object by deleting a row. The method <text:span text:style-name="Code (in text)">deleteRow()</text:span>is called to delete the row where the cursor is placed. For example, to delete the fourth row in the <text:span text:style-name="Code (in text)">ResultSet</text:span> <text:span text:style-name="Code (in text)">rs</text:span>, the code look like this:<text:bookmark text:name="pgfId=1016492"/> [SOURCE:Database/Sales.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>rs.absolute(4);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSetUpdate updateRs = (XResultSetUpdate)UnoRuntime.queryInterface(XResultSetUpdate.class, rs);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateRs.<text:span text:style-name="CodeEmphasis">deleteRow</text:span>();</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1016494"/>The fourth row is removed from <text:span text:style-name="Code (in text)">rs </text:span>and also from the database.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1016517"/>The only issue about deletions is what the <text:span text:style-name="Code (in text)">ResultSet</text:span> object does when it deletes a row. With some SDBC drivers, a deleted row is removed and no longer visible in a result set. Other SDBC drivers use a blank row as a placeholder (a &quot;hole&quot;) where the deleted row used to be. If there is a blank row in place of the deleted row, the method <text:span text:style-name="Code (in text)">absolute()</text:span> can be used with the original row positions to move the cursor, because the row numbers in the result set are not changed by the deletion.</text:p>
  <text:p text:style-name="Paragraph">Remember that different SDBC drivers handle deletions differently. For example, if an application is meant to run with different databases, the code should not depends on holes in a result set.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Seeing Changes in Result Sets</text:h>
  <text:p text:style-name="Paragraph">When data is modified in a <text:span text:style-name="Code (in text)">ResultSet</text:span> object, the change is always visible immediately. That is, if the same query is re-executed, a new result set is produced based on the data currently in a table. This result set reflects the earlier changes.</text:p>
  <text:p text:style-name="Paragraph">If the changes made by you or others are visible while the <text:span text:style-name="Code (in text)">ResultSet</text:span> object is open, is dependent on the DBMS, the driver, and the type of <text:span text:style-name="Code (in text)">ResultSet </text:span>object.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1017222"/>With a <text:span text:style-name="Code (in text)">SCROLL_SENSITIVE ResultSetType</text:span> object, <text:s/>the updates to column values are visible. As well, insertions and deletions are visible, but to ensure this information is returned, use the <text:span text:style-name="T20">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> methods.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1017254"/>The amount of visibility for changes can be regulated by raising or lowering the transaction isolation level for the connection with the database. For example, the following line of code, where <text:span text:style-name="Code (in text)">con</text:span> is an active <text:span text:style-name="Code (in text)">Connection</text:span> object, sets the connection&apos;s isolation level to <text:span text:style-name="Code (in text)">READ_COMMITTED</text:span>:<text:bookmark text:name="pgfId=1017279"/> </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>con.setTransactionIsolation(TransactionIsolation.READ_COMMITTED);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1017277"/>With this isolation level, the <text:span text:style-name="Code (in text)">ResultSet</text:span> object does not show changes before they are committed, but it shows changes that may have other consistency problems. To allow fewer data inconsistencies, raise the transaction isolation level to <text:span text:style-name="Code (in text)">REPEATABLE_READ</text:span>. Note that the higher the isolation level, the poorer the performance. The database and driver also limited what is actually provided. Many programmers use their database&apos;s default transaction isolation level. Consult the DBMS manual for <text:s/>more information about transaction isolation levels.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1017220"/>In a <text:span text:style-name="Code (in text)">ResultSet</text:span> object that is <text:span text:style-name="Code (in text)">SCROLL_INSENSITIVE</text:span>, changes are not visible while it is still open. Some programmers only use this type of <text:span text:style-name="Code (in text)">ResultSet</text:span> object to get a consistent view of the data without seeing changes made by others.</text:p>
  <text:p text:style-name="Paragraph">The method <text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">refreshRow()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/> is used to get the latest values for a row straight from the database. This method is time consuming, especially if the DBMS returns multiple rows <text:span text:style-name="Code (in text)">refreshRow()</text:span>is called. The method <text:s/><text:span text:style-name="Code (in text)">refreshRow()</text:span>can be valuable if it is critical to have the latest data. Even when a result set is sensitive and changes are visible, an application may not always see the <text:s/>latest changes that have been made to a row if the driver retrieves several rows at a time and caches them. Thus, using the method <text:span text:style-name="Code (in text)">refreshRow()</text:span>ensures that only up-to-date data is visible.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1017307"/>The following code sample illustrates how an application might use the method <text:span text:style-name="Code (in text)">refreshRow()</text:span> when it is critical to see the latest changes. Note that the result set should be sensitive. If the method <text:span text:style-name="Code (in text)">refreshRow()</text:span> with a <text:span text:style-name="Code (in text)">SCROLL_INSENSITIVE ResultSet</text:span> is used, <text:span text:style-name="Code (in text)">refreshRow()</text:span> does nothing. Getting the latest data for the table <text:span text:style-name="Source Text">SALES</text:span> is not realistic with these methods. A more realistic scenario is when an airline reservation clerk needs to ensure that the seat he is about to reserve is still available.<text:bookmark text:name="pgfId=1017270"/> [SOURCE:Database/Sales.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XStatement stmt = con.createStatement();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, stmt);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetType&quot;,new java.lang.Integer(ResultSetType.SCROLL_SENSITIVE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetConcurrency&quot;, new java.lang.Integer(ResultSetConcurrency.READ_ONLY));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSet rs = stmt.executeQuery(&quot;SELECT NAME, PRICE FROM SALES&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRow row = (XRow)UnoRuntime.queryInterface(XRow.class, rs);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>rs.absolute(4);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>float price1 = row.getFloat(2);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// do something ...</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>rs.absolute(4);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>rs.refreshRow();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>float price2 = row.getFloat(2);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (price2 != price1) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// do something ...</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:h text:style-name="Head 3" text:level="3"><text:alphabetical-index-mark-start text:id="IMark44151188"/>ResultSetMetaData<text:alphabetical-index-mark-end text:id="IMark44151188"/></text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbc.XResultSetMetaData]When <text:alphabetical-index-mark text:string-value="XResultSetMetaData"/>you develop applications that allow users to create their own SQL statements, for example, through a user interface, information about the result set to be displayed is required. For this reason, the result set supports a method to examine the meta data, that is, information about the columns in the result set. This information could cover items, such as the name of the column, if it is null, if it is an auto increment column, or a currency column. For detailed information, see the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XResultSetMetaData]</text:span>. The following code fragment shows the use of the XResultSetMetaData interface: [SOURCE:Database/Sales.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XStatement stmt = con.createStatement();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, stmt);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetType&quot;,new java.lang.Integer(ResultSetType.SCROLL_INSENSITIVE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xProp.setPropertyValue(&quot;ResultSetConcurrency&quot;, new java.lang.Integer(ResultSetConcurrency.READ_ONLY));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSet rs = stmt.executeQuery(&quot;SELECT NAME, PRICE FROM SALES&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSetMetaDataSupplier xRsMetaSup = (XResultSetMetaDataSupplier)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSetMetaDataSupplier.class, rs);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSetMetaData xRsMetaData = <text:s/>xRsMetaSup.getMetaData();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>int nColumnCount = <text:s/>xRsMetaData.getColumnCount();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>for (int i=1 ;i &lt;= nColumnCount; ++i) {</text:p>
  <text:p text:style-name="Code"><text:a xlink:type="simple" xlink:href="" text:style-name="Internet link" text:visited-style-name="Visited Internet Link"><text:s text:c="8"/>System.out.println</text:a>(“Name: “ + xRsMetaData.getColumnName(i) + &quot; Type: &quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xRsMetaData.getColumnType(i));</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=10162231"/>The printout looks similar to this:</text:p>
  <text:p text:style-name="Output">Name: NAME Type: 12</text:p>
  <text:p text:style-name="Output">Name: PRICE Type: 3</text:p>
  <text:p text:style-name="Paragraph">Notice that the Type returned is the number for the corresponding SQL data type. In this case, VARCHAR has the value 12 and the type 3 is the SQL data type DECIMAL. The whole list of data types can be found at <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.DataType]</text:span>. </text:p>
  <text:p text:style-name="Paragraph">Note that the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XResultSetMetaData]</text:span> can be requested <text:span text:style-name="Emphasis">before</text:span> you move to the first row.</text:p>
  <text:h text:style-name="Head 3" text:level="3">Using Prepared Statements</text:h>
  <text:p text:style-name="Paragraph">Sometimes it is convenient or efficient to use a <text:span text:style-name="Code (in text)">PreparedStatement</text:span> object to send SQL statements to the database. This special type of statement includes the more general service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.Statement]</text:span> already discussed.</text:p>
  <text:h text:style-name="Head 4" text:level="4">When to Use a PreparedStatement Object</text:h>
  <text:p text:style-name="Paragraph">Using a PreparedStatement object reduces execution time, if executing a <text:span text:style-name="Code (in text)">Statement</text:span> object many times as in the example above. </text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1000009"/>The main feature of a <text:span text:style-name="Code (in text)">PreparedStatement</text:span> object is that it is given an SQL statement when it is created, unlike a <text:span text:style-name="Code (in text)">Statement</text:span> object. This SQL statement is sent to the DBMS right away where it is compiled. As a result, the <text:span text:style-name="Code (in text)">PreparedStatement</text:span> object contains not just an SQL statement, but an SQL statement that has been precompiled. This means that when the <text:span text:style-name="Code (in text)">PreparedStatement</text:span> is executed, the DBMS can run the <text:span text:style-name="Code (in text)">PreparedStatement</text:span>&apos;s SQL statement without having to analyze and optimize it again.</text:p>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">PreparedStatement</text:span> objects can be used for SQL statements without or without parameters. The advantage of using SQL statements with parameters is that the same statement can be used with different values supplied each time it is executed. This is shown in an example in the following sections.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Creating a PreparedStatement Object</text:h>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1006308"/>Similar to <text:span text:style-name="Source Text">Statement</text:span> objects, <text:span text:style-name="Code (in text)">PreparedStatement</text:span> objects are created using <text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">prepareStatement()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/> on a <text:span text:style-name="Code (in text)">Connection</text:span> object. Using our open connection <text:span text:style-name="Code (in text)">con</text:span> from the previous examples, code could be written like the following to create a <text:span text:style-name="Code (in text)">PreparedStatement</text:span> object that takes two input parameters:</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPreparedStatement updateStreet = con.prepareStatement(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;UPDATE SALESMAN SET STREET = ? WHERE SNR = ?&quot;);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=999309"/>The variable <text:span text:style-name="Code (in text)">updateStreet</text:span> now contains the SQL update statement that has also been sent to the DBMS and precompiled.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Supplying Values for PreparedStatement Parameters</text:h>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1006311"/>Before executing a <text:span text:style-name="Source Text">PreparedStatement </text:span>object, values to replace the question mark placeholders or named parameters, such as <text:span text:style-name="Code (in text)">param1 </text:span>or <text:span text:style-name="Code (in text)">param2</text:span> have to be supplied. This is accomplished by calling one of the <text:span text:style-name="Code (in text)">setXXX()</text:span> methods defined in the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XParameters]</text:span> of the prepared statement. For instance, to substitute a question mark with a value that is a Java <text:span text:style-name="Source Text">int</text:span>, call <text:span text:style-name="Code (in text)">setInt()</text:span><text:span text:style-name="Source Text">. </text:span>If the value is a Java <text:span text:style-name="Source Text">String</text:span>, call the method <text:span text:style-name="Code (in text)">setString()</text:span>. There is a setXXX() method for each type in the Java programming language.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1000150"/>Using the <text:span text:style-name="Code (in text)">PreparedStatement</text:span> object <text:span text:style-name="Code (in text)">updateStreet()</text:span> from the previous example, the following line of code sets the first question mark placeholder to a Java <text:span text:style-name="Source Text">String</text:span> with a value of &apos;34 Main Road&apos;:</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XParameters setPara = (XParameters)UnoRuntime.queryInterface(XParameters.class, updateStreet);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>setPara.setString(1, &quot;34 Main Road&quot;);</text:p>
  <text:p text:style-name="Paragraph">The example shows that the first argument given to a <text:span text:style-name="Code (in text)">setXXX() </text:span>method indicates which question mark placeholder should be set, and the second argument contains the value for the placeholder. The next example sets the second placeholder parameter to the Java <text:span text:style-name="Code (in text)">int</text:span> 1:</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>setPara.setInt(2, 1);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=999860"/>After these values have been set for its two input parameters, the SQL statement in <text:span text:style-name="Code (in text)">updateStreet</text:span> is equivalent to the SQL statement in the <text:span text:style-name="Code (in text)">String</text:span> object <text:span text:style-name="Code (in text)">updateString()</text:span> used in the previous update example. Therefore, the following two code fragments accomplish the same thing:</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1006312"/>Code Fragment 1: [SOURCE:Database/Sales.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>String updateString = &quot;UPDATE SALESMAN SET STREET = &apos;34 Main Road&apos; WHERE SNR = 1&quot;;</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>stmt.executeUpdate(updateString);</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1006314"/>Code Fragment 2: [SOURCE:Database/Sales.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPreparedStatement updateStreet = con.prepareStatement(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;UPDATE SALESMAN SET STREET = ? WHERE SNR = ? &quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XParameters setPara = (XParameters)UnoRuntime.queryInterface(XParameters.class,updateStreet);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>setPara.setString(1, &quot;34 Main Road&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>setPara.setInt(2, 1);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateStreet.executeUpdate();</text:p>
  <text:p text:style-name="Paragraph">The method <text:span text:style-name="Code (in text)">executeUpdate()</text:span> was used to execute the <text:span text:style-name="Code (in text)">Statement</text:span> <text:span text:style-name="Code (in text)">stmt</text:span> and the <text:span text:style-name="Code (in text)">PreparedStatement</text:span> <text:span text:style-name="Code (in text)">updateStreet</text:span>. Notice that no argument is supplied to <text:span text:style-name="Code (in text)">executeUpdate()</text:span> when it is used to execute <text:span text:style-name="Code (in text)">updateStreet</text:span> . This is true because <text:span text:style-name="Code (in text)">updateStreet</text:span> already contains the SQL statement to be executed. </text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1000187"/>Looking at the above examples, a <text:span text:style-name="Code (in text)">PreparedStatement</text:span> object with parameters was used instead of a <text:s/>statement that involves fewer steps. If a table is going to be updated once or twice, a statement is sufficient, but if the table is going to be updated often, it is efficient to use a <text:span text:style-name="Code (in text)">PreparedStatement</text:span> object. This is especially true in situation where a <text:span text:style-name="Code (in text)">for</text:span> loop or <text:span text:style-name="Code (in text)">while </text:span>loop can be used to set a parameter to a succession of values. This is shown later in this section.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1000188"/>Once a parameter has been set with a value, it retains that value until it is reset to another value or the method <text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">clearParameters()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/> is called. Using the <text:span text:style-name="Code (in text)">PreparedStatement</text:span> object <text:span text:style-name="Code (in text)">updateStreet</text:span>, the following code fragment illustrates reusing a prepared statement after resetting the value of one of its parameters and leaving the other one as is:</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// set the 1st parameter (the STREET column) to Maryland</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>setPara.setString(1, &quot;Maryland&quot;); </text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// use the 2nd parameter to select George Flint, his unique identifier SNR is 4</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>setPara.setInt(2, 4); </text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// write changes to database</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateStreet.executeUpdate(); </text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// changes STREET column back to Michigan road</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// the 2nd parameter for SNR still is 4, only the first parameter is adjusted</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateStreet.executeUpdate(); </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>setPara.setString(1, &quot;Michigan road&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>// write changes to database</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>updateStreet.executeUpdate(); </text:p>
  <text:h text:style-name="Head 3" text:level="3">PreparedStatement From DataSource Queries</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdb.XCommandPreparation;com.sun.star.sdb.CommandType]Use the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.XCommandPreparation]</text:span> to <text:alphabetical-index-mark text:string-value="XCommandPreparation"/>get <text:alphabetical-index-mark text:string-value="CommandType"/>the necessary statement objects to open predefined queries and tables in a data source, and to execute arbitrary SQL statements:</text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XPreparedStatement <text:span text:style-name="MethodSignatureEmphasis">prepareCommand</text:span>([in] string command, [in] long commandType)</text:p>
  <text:p text:style-name="Paragraph">If the value of the parameter <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.CommandType]</text:span> is TABLE or QUERY, pass a table name or query name that exists in the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdb.DataSource]</text:span> of the connection. The value <text:span text:style-name="Code (in text)">COMMAND</text:span> makes <text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">prepareCommand()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/> expect an SQL string. The result is a prepared statement object that can be parameterized and executed.</text:p>
  <text:p text:style-name="Paragraph">The following fragment opens a predefined query in a database Ada01:</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// retrieve the DatabaseContext and get its com.sun.star.container.XNameAccess interface</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:tab-stop/> <text:s text:c="3"/>XNameAccess.class, _rMSF.createInstance(&quot;com.sun.star.sdb.DatabaseContext&quot;));</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>Object dataSource = xNameAccess.getByName(&quot;Ada01&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XDataSource xDataSource = (XDataSource)UnoRuntime.queryInterface(XDataSource.class, dataSource);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>Object interactionHandler = _rMSF.createInstance(&quot;com.sun.star.sdb.InteractionHandler&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XInteractionHandler xInteractionHandler = (XInteractionHandler)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:tab-stop/> <text:s text:c="3"/>XInteractionHandler.class, interactionHandler);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>XCompletedConnection xCompletedConnection = (XCompletedConnection)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:tab-stop/> <text:s text:c="3"/>XCompletedConnection.class, dataSource);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>XConnection xConnection = xCompletedConnection.connectWithCompletion(xInteractionHandler);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>XCommandPreparation xCommandPreparation = (XCommandPreparation)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XCommandPreparation.class, xConnection);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XPreparedStatement xPreparedStatement = xCommandPreparation.prepareCommand(</text:p>
  <text:p text:style-name="Code"><text:tab-stop/> <text:s text:c="3"/>&quot;Query1&quot;, CommandType.QUERY);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>XResultSet xResult = xPreparedStatement.executeQuery();</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XRow xRow = (XRow)UnoRuntime.queryInterface(XRow.class, xResult);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>while (xResult != null &amp;&amp; xResult.next()) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="10"/>System.out.println(xRow.getString(1));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>}</text:p>
  <text:h text:style-name="Head 2" text:level="2"><text:alphabetical-index-mark text:string-value="database design"/>Database Design</text:h>
  <text:h text:style-name="Head 3" text:level="3">Retrieving Information about a Database</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbc.XDatabaseMetaData]The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> interface<text:alphabetical-index-mark text:string-value="XDatabaseMetaData"/> is implemented by SDBC drivers to provide information about their underlying database. It is used primarily by application servers and tools to determine how to interact with a given data source. Applications may also use <text:span text:style-name="Code (in text)">XDatabaseMetaData</text:span> methods to get information about a database. The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> interface includes over 150 methods, that are categorized according to the types of information they provide: </text:p>
  <text:unordered-list text:style-name="L19">
   <text:list-item>
    <text:p text:style-name="P31">General information about the database.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P31">If the database supports a given feature or capability.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P31">Database limits.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P31">What SQL objects the database contains and attributes of those objects.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P31">Transaction support offered by the data source.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">Additionally, the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> interface uses a resultset with more than 40 possible columns as return values in many <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> methods. This section presents an overview of the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> interface, and provides examples illustrating the categories of metadata methods. For a comprehensive listing, consult the SDBC API specification.</text:p>
  <text:unordered-list text:style-name="L20">
   <text:list-item>
    <text:p text:style-name="P32">Creating the XDatabaseMetaData objects</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">A <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> object is created using the Connection method <text:span text:style-name="Code (in text)">getMetaData()</text:span>. Once created, it can be used to dynamically discover information about the underlying data source. The following code example creates a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> object and uses it to determine the maximum number of characters allowed for a table name. </text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// xConnection is a Connection object</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XDatabaseMetaData dbmd = xConnection.getMetaData();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>int maxLen = dbmd.getMaxTableNameLength();</text:p>
  <text:h text:style-name="Head 4" text:level="4">Retrieving General Information</text:h>
  <text:p text:style-name="Paragraph">Some <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> methods are used to dynamically discover general information about a database, as well as details about its implementation. Some of the methods in this category are:</text:p>
  <text:unordered-list text:style-name="L21">
   <text:list-item>
    <text:p text:style-name="P33"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getURL()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P33"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="T10">getUserName()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P33"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="T10">getDatabaseProductVersion()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/><text:span text:style-name="T9">, </text:span><text:alphabetical-index-mark-start text:id="IMark45083148"/><text:span text:style-name="T10">getDriverMajorVersion()</text:span><text:alphabetical-index-mark-end text:id="IMark45083148"/><text:span text:style-name="T9"> and </text:span><text:alphabetical-index-mark-start text:id="IMark43964876"/><text:span text:style-name="Code (in text)">getDriverMinorVersion()</text:span><text:alphabetical-index-mark-end text:id="IMark43964876"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P33"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getSchemaTerm()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/>, <text:alphabetical-index-mark-start text:id="IMark43964876"/><text:span text:style-name="Code (in text)">getCatalogTerm()</text:span><text:alphabetical-index-mark-end text:id="IMark43964876"/> and <text:alphabetical-index-mark-start text:id="IMark45083148"/><text:span text:style-name="Code (in text)">getProcedureTerm()</text:span><text:alphabetical-index-mark-end text:id="IMark45083148"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P33"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">nullsAreSortedHigh()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/> and <text:alphabetical-index-mark-start text:id="IMark43964876"/><text:span text:style-name="Code (in text)">nullsAreSortedLow()</text:span><text:alphabetical-index-mark-end text:id="IMark43964876"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P33"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">usesLocalFiles()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/> and <text:alphabetical-index-mark-start text:id="IMark43964876"/><text:span text:style-name="Code (in text)">usesLocalFilePerTable()</text:span><text:alphabetical-index-mark-end text:id="IMark43964876"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P33"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getSQLKeywords()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
  </text:unordered-list>
  <text:h text:style-name="Head 4" text:level="4">Determining Feature Support</text:h>
  <text:p text:style-name="Paragraph">A large group of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> methods can be used to determine whether a given feature or set of features is supported by the driver or underlying database. Beyond this, some of the methods describe what level of support is provided. Some of the methods that describe support for individual features are:</text:p>
  <text:unordered-list text:style-name="L22">
   <text:list-item>
    <text:p text:style-name="P34"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">supportsAlterTableWithDropColumn()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P34"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">supportsBatchUpdates()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P34"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">supportsTableCorrelationNames()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P34"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">supportsPositionedDelete()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P34"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">supportsFullOuterJoins()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P34"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">supportsStoredProcedures()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P34"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">supportsMixedCaseQuotedIdentifiers()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">Methods to describe the level of feature support include:</text:p>
  <text:unordered-list text:style-name="L23">
   <text:list-item>
    <text:p text:style-name="P35"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">supportsANSI92EntryLevelSQL()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P35"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">supportsCoreSQLGrammar()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
  </text:unordered-list>
  <text:h text:style-name="Head 4" text:level="4">Database Limits</text:h>
  <text:p text:style-name="Paragraph">Another group of methods provides the limits imposed by a given database. Some of the methods in this category are:</text:p>
  <text:unordered-list text:style-name="L24">
   <text:list-item>
    <text:p text:style-name="P36"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getMaxRowSize()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P36"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getMaxStatementLength()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P36"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getMaxTablesInSelect()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P36"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getMaxConnections()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P36"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getMaxCharLiteralLength()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P36"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getMaxColumnsInTable()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">Methods in this group return the limit as an <text:span text:style-name="Code (in text)">int</text:span>. A return value of zero means there is no limit or the limit is unknown.</text:p>
  <text:h text:style-name="Head 4" text:level="4">SQL Objects and their Attributes</text:h>
  <text:p text:style-name="Paragraph">Some methods provide information about the SQL objects that populate a given database. This group also includes methods to determine the attributes of those objects. Methods in this group return <text:span text:style-name="Code (in text)">ResultSet</text:span> objects in which each row describes a particular object. For example, the method <text:span text:style-name="Code (in text)">getUDTs()</text:span> returns a <text:span text:style-name="Code (in text)">ResultSet</text:span> object in which there is a row for each user defined type (UDT) that has been defined in the database. Examples of this category are:</text:p>
  <text:unordered-list text:style-name="L25">
   <text:list-item>
    <text:p text:style-name="P37"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getSchemas()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/> and <text:alphabetical-index-mark-start text:id="IMark45083148"/><text:span text:style-name="Code (in text)">getCatalogs()</text:span><text:alphabetical-index-mark-end text:id="IMark45083148"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P37"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getTables()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P37"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getPrimaryKeys()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P37"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getColumns()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P37"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getProcedures()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/> and <text:alphabetical-index-mark-start text:id="IMark43964876"/><text:span text:style-name="Code (in text)">getProcedureColumns()</text:span><text:alphabetical-index-mark-end text:id="IMark43964876"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P37"><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getUDTs()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/></text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">For example, to display the structure of a table that consists of columns and keys (primary keys, foreign keys), and also indexes defined on the table, the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> interface is required: [SOURCE:Database/CodeSamples.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XDatabaseMetaData dm = con.<text:span text:style-name="CodeEmphasis">getMetaData</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XResultSet rsTables = dm.<text:span text:style-name="CodeEmphasis">getTables</text:span>(null, &quot;%&quot;, &quot;SALES&quot;, null);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XRow rowTB = (XRow)UnoRuntime.queryInterface(XRow.class, rsTables);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>while (rsTables.next()) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String catalog = rowTB.getString(1);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>if (rowTB.wasNull())</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>catalog = null;</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>String schema = rowTB.getString(2);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>if (rowTB.wasNull())</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>schema = null;</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>String table = rowTB.getString(3);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String type = rowTB.getString(4);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;Catalog: &quot; + catalog +</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>&quot; Schema: &quot; + schema + &quot; Table: &quot; + table + &quot;Type: &quot; + type);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;------------------ Columns ------------------&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XResultSet rsColumns = dm.<text:span text:style-name="CodeEmphasis">getColumns</text:span>(catalog, schema, table, &quot;%&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XRow rowCL = (XRow)UnoRuntime.queryInterface(XRow.class, rsColumns);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>while (rsColumns.next()) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot;Column: &quot; + rowCL.getString(4) + </text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>&quot; Type: &quot; + rowCL.getInt(5) + &quot; TypeName: &quot; + rowCL.getString(6) );</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Paragraph">Another method often used when creating SQL statements is the method <text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getIdentifierQuoteString()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/>. This method is always used when table or column names need to be quoted in the SQL statement. For example:</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>SELECT &quot;Name&quot;, &quot;Price&quot; FROM &quot;Sales&quot;</text:p>
  <text:p text:style-name="Paragraph">In this case, the identifier quotation is the character &quot;. The combination of <text:span text:style-name="Code (in text)">XDatabaseMetaData</text:span> methods in the following code fragment may be useful to know if the database supports catalogs and/or schemata. [SOURCE:Database/CodeSamples.java]</text:p>
  <text:p text:style-name="Code">public static String quoteTableName(XConnection con, String sCatalog, String sSchema,</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String sTable) throws com.sun.star.uno.Exception {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XDatabaseMetaData dbmd = con.<text:span text:style-name="CodeEmphasis">getMetaData</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>String sQuoteString = dbmd.<text:span text:style-name="CodeEmphasis">getIdentifierQuoteString</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>String sSeparator = &quot;.&quot;;</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>String sComposedName = &quot;&quot;;</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>String sCatalogSep = dbmd.<text:span text:style-name="CodeEmphasis">getCatalogSeparator</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (0 != sCatalog.length() &amp;&amp; dbmd.<text:span text:style-name="CodeEmphasis">isCatalogAtStart</text:span>() &amp;&amp; 0 != sCatalogSep.length()) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>sComposedName += sCatalog;</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>sComposedName += dbmd.<text:span text:style-name="CodeEmphasis">getCatalogSeparator</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (0 != sSchema.length()) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>sComposedName += sSchema;</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>sComposedName += sSeparator;</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>sComposedName += sTable;</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>} else {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>sComposedName += sTable;</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (0 != sCatalog.length() &amp;&amp; !dbmd.<text:span text:style-name="CodeEmphasis">isCatalogAtStart</text:span>() &amp;&amp; 0 != sCatalogSep.length()) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>sComposedName += dbmd.<text:span text:style-name="CodeEmphasis">getCatalogSeparator</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>sComposedName += sCatalog;</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>return sComposedName;</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 3" text:level="3">Using <text:alphabetical-index-mark-start text:id="IMark44151188"/>DDL<text:alphabetical-index-mark-end text:id="IMark44151188"/> to Change the Database Design</text:h>
  <text:p text:style-name="Paragraph">To show the usage of statements for data definition purposes, we will show how to create the tables in our example database using CREATE statements. The first table, <text:span text:style-name="Source Text">SALESMAN</text:span>, contains essential information about the salespersons, including the first name, last name, street address, city, and birth date. The table <text:span text:style-name="Source Text">SALESMAN </text:span>that is described in more detail later, is shown here:</text:p>
  <table:table table:name="Table1" table:style-name="Table1">
   <table:table-column table:style-name="Table1.A"/>
   <table:table-column table:style-name="Table1.B"/>
   <table:table-column table:style-name="Table1.C"/>
   <table:table-column table:style-name="Table1.D"/>
   <table:table-column table:style-name="Table1.E"/>
   <table:table-column table:style-name="Table1.F"/>
   <table:table-column table:style-name="Table1.G"/>
   <table:table-row>
    <table:table-cell table:style-name="Table1.A1" table:value-type="string">
     <text:p text:style-name="TableHead">SNR</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A1" table:value-type="string">
     <text:p text:style-name="TableHead">FIRSTNAME</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A1" table:value-type="string">
     <text:p text:style-name="TableHead">LASTNAME</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A1" table:value-type="string">
     <text:p text:style-name="TableHead">STREET</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A1" table:value-type="string">
     <text:p text:style-name="TableHead">STATE</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A1" table:value-type="string">
     <text:p text:style-name="TableHead">ZIP</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.G1" table:value-type="string">
     <text:p text:style-name="TableHead">BIRTH DATE</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="1">
     <text:p text:style-name="TextInTable">1</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="95460">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=10128661"/>95460</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.G2" table:value-type="date" table:date-value="1946-02-07">
     <text:p text:style-name="TextInTable">02/07/46</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="2">
     <text:p text:style-name="TextInTable">2</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="95460">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=10128662"/>95460</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.G2" table:value-type="date" table:date-value="1963-12-24">
     <text:p text:style-name="TextInTable">12/24/63</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="3">
     <text:p text:style-name="TextInTable">3</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="95460">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=10128663"/>95460</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.G2" table:value-type="date" table:date-value="1972-04-01">
     <text:p text:style-name="TextInTable">04/01/72</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="4">
     <text:p text:style-name="TextInTable">4</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="95460">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=10128664"/>95460</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.G2" table:value-type="date" table:date-value="1953-02-13">
     <text:p text:style-name="TextInTable">02/13/53</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="5">
     <text:p text:style-name="TextInTable">5</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.A2" table:value-type="float" table:value="95460">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=10128665"/>95460</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table1.G2" table:value-type="date" table:date-value="1949-09-07">
     <text:p text:style-name="TextInTable">09/07/49</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1009215"/>The first column is the column <text:span text:style-name="Code (in text)">SNR</text:span> of SQL type <text:span text:style-name="Code (in text)">INTEGER</text:span>. This column contains a unique number for each salesperson. Since there is a different <text:span text:style-name="Code (in text)">SNR</text:span> for each person, the <text:span text:style-name="Code (in text)">SNR</text:span> column can be used to uniquely identify a particular salesman,the is, the primary key. If this were not the case, an additional column that is unique would have to be introduced, such as the social security number. The column for the first name is <text:span text:style-name="Code (in text)">FIRSTNAME</text:span> that holds values of the SQL type <text:span text:style-name="Code (in text)">VARCHAR </text:span>with a maximum length of 50 characters. The third column, <text:span text:style-name="Code (in text)">LASTNAME</text:span>, is also a <text:span text:style-name="Code (in text)">VARCHAR</text:span> with a maximum length of 100 characters. The <text:span text:style-name="Code (in text)">STREET</text:span> and <text:span text:style-name="Code (in text)">STATE</text:span> columns are <text:span text:style-name="Code (in text)">VARCHARs</text:span> with 50 characters. The column <text:span text:style-name="Code (in text)">ZIP</text:span> uses <text:span text:style-name="Code (in text)">INTEGER</text:span> and the column <text:span text:style-name="Code (in text)">BIRTHDATE</text:span> uses the type <text:span text:style-name="Code (in text)">DATE</text:span>. By using the type <text:span text:style-name="Code (in text)">DATE</text:span> instead of <text:span text:style-name="Source Text">VARCHAR,</text:span>the dates of birth can be compared with the current date.</text:p>
  <text:p text:style-name="Paragraph">The second table, <text:span text:style-name="T16">CUSTOMER</text:span>, in our database, contains information about <text:span text:style-name="T19">customer</text:span>s: </text:p>
  <table:table table:name="Table16" table:style-name="Table16">
   <table:table-column table:style-name="Table16.A"/>
   <table:table-column table:style-name="Table16.B"/>
   <table:table-column table:style-name="Table16.C"/>
   <table:table-column table:style-name="Table16.D"/>
   <table:table-column table:style-name="Table16.E"/>
   <table:table-column table:style-name="Table16.F"/>
   <table:table-row>
    <table:table-cell table:style-name="Table16.A1" table:value-type="string">
     <text:p text:style-name="TableHead">COS_NR</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A1" table:value-type="string">
     <text:p text:style-name="TableHead">LASTNAME</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A1" table:value-type="string">
     <text:p text:style-name="TableHead"><text:bookmark text:name="pgfId=1012836"/>STREET</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A1" table:value-type="string">
     <text:p text:style-name="TableHead"><text:bookmark text:name="pgfId=1012838"/>CITY</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A1" table:value-type="string">
     <text:p text:style-name="TableHead"><text:bookmark text:name="pgfId=1012840"/>STATE</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.F1" table:value-type="string">
     <text:p text:style-name="TableHead"><text:bookmark text:name="pgfId=1012842"/>ZIP</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="100">
     <text:p text:style-name="TextInTable">100</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012846"/>0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012848"/>0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012850"/>0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012852"/>0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.F2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012854"/>95199</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="101">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012856"/>101</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012858"/>0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012860"/>0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012862"/>0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012864"/>0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.F2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012866"/>95460</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="102">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012868"/>102</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012872"/>0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012874"/>0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012876"/>0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table16.F2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=1012878"/>93966</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">The first column is the personal number COS_NR of our <text:span text:style-name="T19">customer</text:span>. This column is used to uniquely identify the <text:span text:style-name="T19">customers,</text:span> and declare this column to be the primary key. The types of the other columns are identical to the first table, SALESMAN.</text:p>
  <text:p text:style-name="Paragraph">Another table to show joins is required. For this purpose, the table SALES is used. This table contains all sales that our salespersons could enter into an agreement with the <text:span text:style-name="T19">customer</text:span>s. This table needs a column SALENR to identify each sale, a column for COS_NR to identify the <text:span text:style-name="T19">customer and </text:span>a column SNR for the sales person who made the sale, and the columns that defines the article sold.</text:p>
  <table:table table:name="Table18" table:style-name="Table18">
   <table:table-column table:style-name="Table18.A"/>
   <table:table-column table:style-name="Table18.B"/>
   <table:table-column table:style-name="Table18.C"/>
   <table:table-column table:style-name="Table18.D"/>
   <table:table-column table:style-name="Table18.E"/>
   <table:table-column table:style-name="Table18.F"/>
   <table:table-row>
    <table:table-cell table:style-name="Table18.A1" table:value-type="string">
     <text:p text:style-name="TableHead">SALENR</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A1" table:value-type="string">
     <text:p text:style-name="TableHead">COS_NR</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A1" table:value-type="string">
     <text:p text:style-name="TableHead">SNR</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A1" table:value-type="string">
     <text:p text:style-name="TableHead">NAME</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A1" table:value-type="string">
     <text:p text:style-name="TableHead">DATE</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.F1" table:value-type="string">
     <text:p text:style-name="TableHead">PRICE</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table18.A2" table:value-type="float" table:value="1">
     <text:p text:style-name="TextInTable">1</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A2" table:value-type="float" table:value="100">
     <text:p text:style-name="TextInTable">100</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A2" table:value-type="float" table:value="1">
     <text:p text:style-name="TextInTable">1</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A2" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.E2" table:value-type="date" table:date-value="2001-02-12">
     <text:p text:style-name="TextInTable">02/12/01</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.F2" table:value-type="currency" table:currency="USD" table:value="39.99">
     <text:p text:style-name="TextInTable">$39.99</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table18.A3" table:value-type="float" table:value="2">
     <text:p text:style-name="TextInTable">2</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A3" table:value-type="float" table:value="101">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=10128561"/>101</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A3" table:value-type="float" table:value="2">
     <text:p text:style-name="TextInTable">2</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A3" table:value-type="float" table:value="0">
     <text:p text:style-name="TextInTable">0</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.E3" table:value-type="date" table:date-value="2001-10-18">
     <text:p text:style-name="TextInTable">10/18/01</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.F3" table:value-type="currency" table:currency="USD" table:value="15.78">
     <text:p text:style-name="TextInTable">$15.78</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table18.A1" table:value-type="string">
     <text:p text:style-name="TextInTable">3</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A1" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:bookmark text:name="pgfId=10128681"/>102</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A1" table:value-type="string">
     <text:p text:style-name="TextInTable">4</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.A1" table:value-type="string">
     <text:p text:style-name="TextInTable">Orange juice</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.E4" table:value-type="date" table:date-value="2001-08-09">
     <text:p text:style-name="TextInTable">08/09/01</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table18.F4" table:value-type="currency" table:currency="USD" table:value="1.5">
     <text:p text:style-name="TextInTable">$1.50</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">To show the relationship between the three tables, consider the diagram below.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1009602"/>The table <text:span text:style-name="Source Text">SALES</text:span> contains the column <text:span text:style-name="Source Text">COS_NR</text:span> and the column SNR. These two columns can be used in <text:span text:style-name="Source Text">SELECT</text:span> statements to get data based on the information in this table, for example, all sales made by the salesperson Jane. The column <text:span text:style-name="Source Text">COS_NR</text:span> is the primary key in the table <text:span text:style-name="Source Text">CUSTOMER</text:span> and it uniquely identifies each of the customers. The same is true for the column SNR in the table SALESMAN. In the table <text:span text:style-name="Source Text">SALES</text:span>, the fields <text:span text:style-name="T21">COS_NR</text:span> and <text:span text:style-name="Source Text">SNR</text:span> are foreign keys. Note that each <text:span text:style-name="Source Text">COS_NR </text:span><text:span text:style-name="T16">and</text:span><text:span text:style-name="Source Text"> SNR </text:span>number may appear more than once in the <text:span text:style-name="Source Text">SALES </text:span>table, because a third column SALENR was introduced. This is required for a primary key. An example of how to use primary and foreign keys in a <text:span text:style-name="Source Text">SELECT</text:span> statement is provided later.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=997686"/>The following CREATE TABLE statement creates the table SALESMAN. The entries within the outer pair of parentheses consist of the name of a column followed by a space and the SQL type to be stored in that column. A comma separates the column entries where each entry consists of a column name and SQL type. The type <text:span text:style-name="Source Text">VARCHAR</text:span> is created with a maximum length, so it takes a parameter indicating the maximum length. The parameter must be in parentheses following the type. The SQL statement shown here specifies that the name in column FIRSTNAME may be up to 50 characters long: </text:p>
  <text:p text:style-name="Code">CREATE TABLE SALESMAN</text:p>
  <text:p text:style-name="Code">(SNR INTEGER NOT NULL,</text:p>
  <text:p text:style-name="Code"><text:s/>FIRSTNAME VARCHAR(50),</text:p>
  <text:p text:style-name="Code"><text:s/>LASTNAME VARCHAR(100),</text:p>
  <text:p text:style-name="Code"><text:s/>STREET VARCHAR(50),</text:p>
  <text:p text:style-name="Code"><text:s/>STATE VARCHAR(50),</text:p>
  <text:p text:style-name="Code"><text:s/>ZIP VARCHAR(10),</text:p>
  <text:p text:style-name="Code"><text:s/>BIRTHDATE DATE,</text:p>
  <text:p text:style-name="Code"><text:s/>PRIMARY KEY(SNR)</text:p>
  <text:p text:style-name="Code">)</text:p>
  <table:table table:name="Table22" table:style-name="Table22">
   <table:table-column table:style-name="Table22.A"/>
   <table:table-column table:style-name="Table22.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table22.A1" table:value-type="string">
      <text:p text:style-name="Table Contents"><draw:image draw:style-name="fr5" draw:name="Note6" text:anchor-type="paragraph" svg:x="0.065cm" svg:y="0.026cm" svg:width="0.847cm" svg:height="0.847cm" draw:z-index="4" xlink:href="../interesting.gif" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
        <svg:desc>Note graphics marks a special text section</svg:desc>
       </draw:image></text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table22.B1" table:value-type="string">
      <text:p text:style-name="TipInTable">This code does not end with a DBMS statement terminator that can vary from DBMS to DBMS. For example, Oracle uses a semicolon (;) to indicate the end of a statement, and Sybase uses the word go. The driver you are using automatically supplies the appropriate statement terminator, so that you will not need to include it in your SDBC code.</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">In the <text:span text:style-name="Source Text">CREATE</text:span> <text:span text:style-name="Source Text">TABLE</text:span> statement above, key words are printed in capital letters, and each item is on a separate line. SQL does not require the use of these conventions, it makes the statements easier to read. The standard in SQL is that keywords are not case sensitive, therefore, the following <text:span text:style-name="Source Text">SELECT</text:span> statement can be written in various ways:</text:p>
  <text:p text:style-name="Code">SELECT &quot;FirstName&quot;, &quot;LastName&quot;</text:p>
  <text:p text:style-name="Code">FROM &quot;Employees&quot;</text:p>
  <text:p text:style-name="Code">WHERE &quot;LastName&quot; LIKE &apos;Washington&apos;</text:p>
  <text:p text:style-name="Paragraph">is equivalent to</text:p>
  <text:p text:style-name="Code">select &quot;FirstName&quot;, LastName&quot; from &quot;Employees&quot; where</text:p>
  <text:p text:style-name="Code">&quot;LastName&quot; like &apos;Washington&apos;</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1008016"/>Single quotes &apos;...&apos; denote a string literal, double quotes mark case sensitive identifiers in many SQL databases. </text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1008017"/>Requirements can vary from one DBMS to another for identifier names. For example, some DBMSs require that column and table names must be given exactly as they were created in the <text:span text:style-name="Source Text">CREATE</text:span> <text:span text:style-name="Source Text">TABLE</text:span> statement, while others do not. We <text:s/>use uppercase letters for identifiers such as <text:span text:style-name="Source Text">SALESMAN</text:span>, <text:span text:style-name="Source Text">CUSTOMERS</text:span> and <text:span text:style-name="Source Text">SALES</text:span>. Another way would be to ask the <text:span text:style-name="Code (in text)">XDatabaseMetaData</text:span> interface if the method <text:alphabetical-index-mark-start text:id="IMark44628996"/><text:span text:style-name="Code (in text)">storesMixedCaseQuotedIdentifiers()</text:span><text:alphabetical-index-mark-end text:id="IMark44628996"/> returns true, and to use the string that the method <text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getIdentifierQuoteString()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/> returns.</text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="pgfId=1007029"/>The data types used in our <text:span text:style-name="Source Text">CREATE</text:span> <text:span text:style-name="Source Text">TABLE</text:span> statement are the generic SQL types (also called SDBC types) that are defined in the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.DataType]</text:span>. DBMSs generally uses these standard types.</text:p>
  <text:p text:style-name="Paragraph">To issue the commands above against our database, use the connection <text:span text:style-name="Code (in text)">con</text:span> to create a statement and the method <text:alphabetical-index-mark-start text:id="IMark44628996"/><text:span text:style-name="Code (in text)">executeUpdate()</text:span><text:alphabetical-index-mark-end text:id="IMark44628996"/> at its interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XStatement]</text:span>. In the following code fragment, <text:span text:style-name="Code (in text)">executeUpdate()</text:span> is supplied with the SQL statement from the SALESMAN example above: [SOURCE:Database/SalesMan.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XStatement xStatement = con.<text:span text:style-name="CodeEmphasis">createStatement</text:span>();</text:p>
  <text:p text:style-name="Code"><text:span text:style-name="CodeEmphasis"><text:s text:c="4"/>int n</text:span> = xStatement.<text:span text:style-name="CodeEmphasis">executeUpdate</text:span>(&quot;CREATE TABLE SALESMAN &quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;(SNR INTEGER NOT NULL, &quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;FIRSTNAME VARCHAR(50), &quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;LASTNAME VARCHAR(100), &quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;STREET VARCHAR(50), &quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;STATE VARCHAR(50), &quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;ZIP INTEGER, &quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;BIRTHDATE DATE, &quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;PRIMARY KEY(SNR) &quot; +</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>&quot;)&quot;);</text:p>
  <text:p text:style-name="Paragraph">The method <text:span text:style-name="Code (in text)">executeUpdate()</text:span> is used because the SQL statement contained in <text:span text:style-name="Code (in text)">createTableSalesman</text:span> is a DDL (data definition language) statement. Statements that create a table, alter a table, or drop a table are all examples of DDL statements, and are executed using the method <text:span text:style-name="Code (in text)">executeUpdate()</text:span>. </text:p>
  <text:p text:style-name="Paragraph">When the method <text:span text:style-name="Code (in text)">executeUpdate()</text:span> is used to execute a DDL statement, such as CREATE TABLE, it returns zero. Consequently, in the code fragment above that executes the DDL statement used to create the table <text:span text:style-name="Source Text">SALESMAN</text:span> , <text:span text:style-name="Source Text">n</text:span> is assigned a value of <text:span text:style-name="Source Text">0</text:span><text:span text:style-name="T22">.</text:span></text:p>
  <text:h text:style-name="Head 3" text:level="3">Using <text:alphabetical-index-mark-start text:id="IMark44151188"/>SDBCX<text:alphabetical-index-mark-end text:id="IMark44151188"/> to Access the Database Design</text:h>
  <text:h text:style-name="Head 4" text:level="4">The Extension Layer SDBCX</text:h>
  <table:table table:name="Table55" table:style-name="Table55">
   <table:table-column table:style-name="Table55.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table55.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr6" draw:name="Frame42" text:anchor-type="paragraph" svg:width="12.395cm" fo:min-height="14.164cm" draw:z-index="29">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr13" draw:name="SDBCX Object design" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="12.3cm" svg:height="13.681cm" draw:z-index="30" xlink:href="SDBCX_objects.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>SDBCX Object design</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration12" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.13</text:sequence>: SDBCX Object design</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">The SDBCX layer introduces several abstractions built upon the SDBC layer that define general database objects, such as catalog, table, view, group, user, key, index, and column, as well as support for schema and security tasks. These objects are used to manage database design tasks. The ability of the SDBCX layer to define new data structures makes it an alternative to SQL DDL. The above <text:sequence-ref text:reference-format="category-and-value" text:ref-name="refIllustration12">Illustration 1.13</text:sequence-ref> gives an overview to the SDBCX objects an their containers.</text:p>
  <text:p text:style-name="Paragraph">All objects mentioned previously have matching containers, except for the catalog. Each container implements the service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Container]</text:span>. The interfaces that the container supports depend on the objects that reside in it. For instance, the container for keys does not support an <text:span text:style-name="Code (in text)">[IDL:com.sun.star.container.XNameAccess]</text:span> interface. These containers are used to add and manage new objects in a catalog. The users and groups container manage the control permissions for other SDBCX objects, such as tables and views.</text:p>
  <text:p text:style-name="Paragraph"><text:sequence-ref text:reference-format="category-and-value" text:ref-name="refIllustration13">Illustration 1.14</text:sequence-ref> shows the container specification for SDBCX DatabaseDefinition services.</text:p>
  <table:table table:name="Table56" table:style-name="Table56">
   <table:table-column table:style-name="Table56.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table56.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr9" draw:name="Frame6" text:anchor-type="paragraph" svg:y="0cm" svg:width="14.228cm" style:rel-width="80%" fo:min-height="15.33cm" draw:z-index="31">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of com.sun.star.sdbcx.DatabaseDefinition" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="14.101cm" svg:height="14.85cm" draw:z-index="32" xlink:href="DatabaseDefinition.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the  com.sun.star.sdbcx.DatabaseDefinition service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration13" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.14</text:sequence>: Database definition</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:h text:style-name="Head 4" text:level="4">Catalog Service</text:h>
  <text:p text:style-name="Paragraph">The Catalog object is the highest-level container in the SDBCX layer. It contains structural features of databases, like the schema and security model for the database. The connection, for instance, represents the database, and the Catalog is the database container for the tables, views, groups, and users within a connection or database. To create a catalog object, the database driver must support the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XDataDefinitionSupplier]</text:span> and an existing connection object. The following code fragment lists tables in a database. [SOURCE:Database/sdbcx.java]</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// create the Driver with the implementation name</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>Object aDriver = xORB.createInstance(&quot;com.sun.star.comp.sdbcx.adabas.ODriver&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// query for the interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>com.sun.star.sdbc.XDriver xDriver;</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>xDriver = (XDriver)UnoRuntime.queryInterface(XDriver.class, aDriver);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (xDriver != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// first create the needed url</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String adabasURL = &quot;sdbc:adabas::MYDB0&quot;;</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// second create the necessary properties</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>com.sun.star.beans.PropertyValue [] adabasProps = new com.sun.star.beans.PropertyValue[] {</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>new com.sun.star.beans.PropertyValue(&quot;user&quot;, 0, &quot;test1&quot;,</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>com.sun.star.beans.PropertyState.DIRECT_VALUE),</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>new com.sun.star.beans.PropertyValue(&quot;password&quot;, 0, &quot;test1&quot;,</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>com.sun.star.beans.PropertyState.DIRECT_VALUE)</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>};</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// now create a connection to adabas</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XConnection adabasConnection = xDriver.<text:span text:style-name="CodeEmphasis">connect</text:span>(adabasURL, a dabasProps);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>if(adabasConnection != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot;Connection could be created!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>// we need the XDatabaseDefinitionSupplier interface </text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>// from the driver to get the XTablesSupplier</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XDataDefinitionSupplier xDDSup = (XDataDefinitionSupplier)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>XDataDefinitionSupplier.class, xDriver);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>if (xDDSup != null) {</text:p>
  <text:p text:style-name="Code"><text:span text:style-name="CodeEmphasis"><text:s text:c="16"/>XTablesSupplier</text:span> xTabSup = xDDSup.<text:span text:style-name="CodeEmphasis">getDataDefinitionByConnection</text:span>(adabasConnection);</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>if (xTabSup != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="20"/>XNameAccess xTables = xTabSup.<text:span text:style-name="CodeEmphasis">getTables</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="20"/>// now print all table names</text:p>
  <text:p text:style-name="Code"><text:s text:c="20"/>System.out.println(&quot;Tables available:&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="20"/>String [] aTableNames = xTables.getElementNames();</text:p>
  <text:p text:style-name="Code"><text:s text:c="20"/>for ( int i =0; i&lt;= aTableNames.length-1; i++)</text:p>
  <text:p text:style-name="Code"><text:s text:c="24"/>System.out.println(aTableNames[i]);</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>else {</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>System.out.println(&quot;The driver is not SDBCX capable!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>}</text:p>
  <text:p text:style-name="Code"><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>// now we dispose the connection to close it</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XComponent xComponent = (XComponent)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>XComponent.class, adabasConnection);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>if (xComponent != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>xComponent.dispose();</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>System.out.println(&quot;Connection disposed!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>else {</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot;Connection could not be created!&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:h text:style-name="Head 4" text:level="4">Table Service</text:h>
  <text:p text:style-name="Paragraph">The Table object is a member of the tables container that is a member of the Catalog object. Each Table object supports the same properties, such as <text:span text:style-name="Code (in text)">Name</text:span>, <text:span text:style-name="Code (in text)">CatalogName</text:span>, <text:span text:style-name="Code (in text)">SchemaName</text:span>, <text:span text:style-name="Code (in text)">Description</text:span>, and an optional <text:span text:style-name="Code (in text)">Type</text:span>. The properties <text:span text:style-name="Code (in text)">CatalogName</text:span> and <text:span text:style-name="Code (in text)">SchemaName</text:span> can be empty when the database does not support these features. The <text:span text:style-name="Code (in text)">Description</text:span> property contains any comments that were added to the table object at creation time. The optional property <text:span text:style-name="Code (in text)">Type</text:span> is a string property may contain a database specific table type when supported, . Common table types are &quot;TABLE&quot;, &quot;VIEW&quot;, &quot;SYSTEM TABLE&quot;, and &quot;TEMPORARY TABLE&quot;. All these properties are read-only as long as this is not a <text:span text:style-name="Emphasis">descriptor</text:span>. The descriptor pattern is described later.</text:p>
  <table:table table:name="Table57" table:style-name="Table57">
   <table:table-column table:style-name="Table57.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table57.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr9" draw:name="Frame11" text:anchor-type="paragraph" svg:y="0cm" svg:width="14.228cm" style:rel-width="80%" fo:min-height="17.78cm" draw:z-index="33">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of com.sun.star.sdbcx.Table" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="14.101cm" svg:height="17.3cm" draw:z-index="34" xlink:href="Table.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the com.sun.star.sdbcx.Table service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration14" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.15</text:sequence>: Table</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">Table</text:span> object also supports the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XColumnsSupplier]</text:span> interface, because a table can not exist without columns. The other interfaces are optional, that is, they do not have to be supported by the actual table object:</text:p>
  <text:unordered-list text:style-name="L26">
   <text:list-item>
    <text:p text:style-name="P38"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XDataDescriptorFactory]</text:span> interface that is used to copy a table object.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P38"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XIndexesSupplier]</text:span> interface that returns the container for indexes.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P38"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XKeysSupplier]</text:span> interface that returns the keys container.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P38"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XRename]</text:span> interface that allows renaming a table object.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P38"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XAlterTable]</text:span> interface that allows the altering of columns of a table object.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">The code example below shows the use of the table container and prints the table properties of the first table in the container. [SOURCE:Database/sdbcx.java]</text:p>
  <text:p text:style-name="Paragraph"><text:s text:c="4"/>...</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xTables = xTabSup.<text:span text:style-name="CodeEmphasis">getTables</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (0 != aTableNames.length) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>Object table = xTables.getByName(aTableNames[0]);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, table);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;Name: <text:s text:c="9"/>&quot; + xProp.getPropertyValue(&quot;Name&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;CatalogName: <text:s text:c="2"/>&quot; + xProp.getPropertyValue(&quot;CatalogName&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;SchemaName: <text:s text:c="3"/>&quot; + xProp.getPropertyValue(&quot;SchemaName&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;Description: <text:s text:c="2"/>&quot; + xProp.getPropertyValue(&quot;Description&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// the following property is optional so we first must check if it exists</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>if(xProp.getPropertySetInfo().hasPropertyByName(&quot;Type&quot;))</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot;Type: <text:s text:c="9"/>&quot; + xProp.getPropertyValue(&quot;Type&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Paragraph">The Table object contains access to the columns, keys, and indexes when the above mentioned interfaces are supported. [SOURCE:Database/sdbcx.java]</text:p>
  <text:p text:style-name="Code">// print all columns of a XColumnsSupplier</text:p>
  <text:p text:style-name="Code">// later on used for keys and indexes as well</text:p>
  <text:p text:style-name="Code">public static void <text:span text:style-name="CodeEmphasis">printColumns</text:span>(XColumnsSupplier xColumnsSup) </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>throws com.sun.star.uno.Exception,SQLException {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Example printColumns&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>// the table must at least support a XColumnsSupplier interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;--- Columns ---&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XNameAccess xColumns = xColumnsSup.<text:span text:style-name="CodeEmphasis">getColumns</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>String [] aColumnNames = xColumns.getElementNames();</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>for (int i =0; i&lt;= aColumnNames.length-1; i++)</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot; <text:s text:c="3"/>&quot; + aColumnNames[i]);</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code">// print all keys including the columns of a key</text:p>
  <text:p text:style-name="Code">public static void printKeys(XColumnsSupplier xColumnsSup) </text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>throws com.sun.star.uno.Exception,SQLException {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Example printKeys&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XKeysSupplier xKeysSup = (XKeysSupplier)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XKeysSupplier.class, xColumnsSup);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (xKeysSup != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;--- Keys ---&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XIndexAccess xKeys = xKeysSup.<text:span text:style-name="CodeEmphasis">getKeys</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>for ( int i =0; i &lt; xKeys.getCount(); i++) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>Object key = xKeys.getByIndex(i);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XPropertySet.class,key);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot; <text:s text:c="3"/>&quot; + xProp.getPropertyValue(&quot;Name&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XColumnsSupplier xKeyColumnsSup = (XColumnsSupplier)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>XColumnsSupplier.class, xProp);</text:p>
  <text:p text:style-name="Code"><text:span text:style-name="CodeEmphasis"><text:s text:c="12"/>printColumns</text:span>(xKeyColumnsSup);<text:tab-stop/><text:tab-stop/><text:tab-stop/><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code">// print all indexes including the columns of an index</text:p>
  <text:p text:style-name="Code">public static void printIndexes(XColumnsSupplier xColumnsSup)</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>throws com.sun.star.uno.Exception,SQLException {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Example printIndexes&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XIndexesSupplier xIndexesSup = (XIndexesSupplier)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XIndexesSupplier.class, xColumnsSup);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (xIndexesSup != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;--- Indexes ---&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XNameAccess xIndexs = xIndexesSup.<text:span text:style-name="CodeEmphasis">getIndexes</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String [] aIndexNames = xIndexs.getElementNames();</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>for ( int i =0; i&lt;= aIndexNames.length-1; i++) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot; <text:s text:c="3"/>&quot; + aIndexNames[i]);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>Object index = xIndexs.getByName(aIndexNames[i]);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XColumnsSupplier xIndexColumnsSup = (XColumnsSupplier)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>XColumnsSupplier.class, index);</text:p>
  <text:p text:style-name="Code"><text:span text:style-name="CodeEmphasis"><text:s text:c="12"/>printColumns</text:span>(xIndexColumnsSup);<text:tab-stop/><text:tab-stop/><text:tab-stop/><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 4" text:level="4">Column Service</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbcx.Column;com.sun.star.sdbcx.KeyColumn;com.sun.star.sdbcx.IndexColumn]<text:alphabetical-index-mark text:string-value="Column"/>The <text:alphabetical-index-mark text:string-value="KeyColumn"/>Column <text:alphabetical-index-mark text:string-value="IndexColumn"/>object is the simplest object structure in the SDBCX layer. It is a collection of properties that define the Column object. The columns container exists for table, key, and index objects. The Column object is a different for these objects:</text:p>
  <text:unordered-list text:style-name="L27">
   <text:list-item>
    <text:unordered-list>
     <text:list-item>
      <text:p text:style-name="P39">The normal <text:span text:style-name="Code (in text)">Column</text:span> service is used for the table object.</text:p>
     </text:list-item>
    </text:unordered-list>
   </text:list-item>
  </text:unordered-list>
  <text:unordered-list text:style-name="L28">
   <text:list-item>
    <text:unordered-list>
     <text:list-item>
      <text:p text:style-name="P40"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.KeyColumn]</text:span> <text:alphabetical-index-mark text:string-value="KeyColumn"/>extends the “normal” <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Column]</text:span> service with an extra property named <text:span text:style-name="Code (in text)">RelatedColumn</text:span>. This property is the name of a referenced column out of the referenced table.</text:p>
     </text:list-item>
    </text:unordered-list>
   </text:list-item>
  </text:unordered-list>
  <text:unordered-list text:style-name="L27">
   <text:list-item>
    <text:unordered-list>
     <text:list-item>
      <text:p text:style-name="P39"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.IndexColumn]</text:span> extends the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Column]</text:span> service with an extra boolean property named <text:span text:style-name="Code (in text)">IsAscending</text:span>. This property is true when the index is ascending, otherwise it is false.</text:p>
     </text:list-item>
    </text:unordered-list>
   </text:list-item>
  </text:unordered-list>
  <table:table table:name="Table58" table:style-name="Table58">
   <table:table-column table:style-name="Table58.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table58.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr9" draw:name="Frame8" text:anchor-type="paragraph" svg:y="0cm" svg:width="10.672cm" style:rel-width="60%" fo:min-height="11.67cm" draw:z-index="35">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of com.sun.star.sdbcx.Column" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="10.61cm" svg:height="11.19cm" draw:z-index="36" xlink:href="Column.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the com.sun.star.sdbcx.Column service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration15" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.16</text:sequence>: Column</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph"/>
  <text:p text:style-name="Paragraph">The Column object is defined by the following properties:</text:p>
  <table:table table:name="Table6" table:style-name="Table6">
   <table:table-column table:style-name="Table6.A"/>
   <table:table-column table:style-name="Table6.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table6.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Properties of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.Column]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table6.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:Name]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table6.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The name of the column.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table6.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:Type]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table6.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.DataType]</text:span>, <text:span text:style-name="Code (in text)">long</text:span> ─ The SDBC data type.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table6.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:TypeName]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table6.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ The database name for this type.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table6.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:Precision]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table6.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ The column&apos;s number of decimal digits.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table6.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:Scale]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table6.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">long</text:span> ─ The column&apos;s number of digits to the left of the decimal point.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table6.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:IsNullable]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table6.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">long<text:span text:style-name="Code (in text)"> </text:span>─ Indicates the nullification of values in the designated column. <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.ColumnValue]</text:span></text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table6.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:IsAutoIncrement]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table6.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ Indicates if the column is automatically numbered.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table6.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:IsCurrency]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table6.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ Indicates if the column is a cash value.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table6.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:IsRowVersion]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table6.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">boolean</text:span> ─ Indicates that the column contains some kind of time or date stamp used to track updates (optional).</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table6.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:Description]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table6.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Keeps a description of the object (optional).</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table6.A2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbcx.Column:DefaultValue]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table6.B2" table:value-type="string">
     <text:p text:style-name="TextInTable"><text:span text:style-name="Code (in text)">string</text:span> ─ Keeps a default value for a column (optional).</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">The Column object also supports the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XDataDescriptorFactory]</text:span> interface that creates a copy of this object. [SOURCE:Database/sdbcx.java]</text:p>
  <text:p text:style-name="Code">// column properties</text:p>
  <text:p text:style-name="Code">public static void printColumnProperties(Object column) throws com.sun.star.uno.Exception,SQLException {</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>System.out.println(&quot;Example printColumnProperties&quot;);</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class,column);</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>System.out.println(&quot;Name: <text:s text:c="11"/>&quot; + xProp.getPropertyValue(&quot;Name&quot;));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>System.out.println(&quot;Type: <text:s text:c="11"/>&quot; + xProp.getPropertyValue(&quot;Type&quot;));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>System.out.println(&quot;TypeName: <text:s text:c="7"/>&quot; + xProp.getPropertyValue(&quot;TypeName&quot;));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>System.out.println(&quot;Precision: <text:s text:c="6"/>&quot; + xProp.getPropertyValue(&quot;Precision&quot;));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>System.out.println(&quot;Scale: <text:s text:c="10"/>&quot; + xProp.getPropertyValue(&quot;Scale&quot;));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>System.out.println(&quot;IsNullable: <text:s text:c="5"/>&quot; + xProp.getPropertyValue(&quot;IsNullable&quot;));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>System.out.println(&quot;IsAutoIncrement: &quot; + xProp.getPropertyValue(&quot;IsAutoIncrement&quot;));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>System.out.println(&quot;IsCurrency: <text:s text:c="5"/>&quot; + xProp.getPropertyValue(&quot;IsCurrency&quot;));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// the following property is optional so we first must check if it exists</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>if(xProp.getPropertySetInfo().hasPropertyByName(&quot;IsRowVersion&quot;))</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>System.out.println(&quot;IsRowVersion: <text:s text:c="3"/>&quot; + xProp.getPropertyValue(&quot;IsRowVersion&quot;));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>if(xProp.getPropertySetInfo().hasPropertyByName(&quot;Description&quot;))</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>System.out.println(&quot;Description: <text:s text:c="4"/>&quot; + xProp.getPropertyValue(&quot;Description&quot;));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>if(xProp.getPropertySetInfo().hasPropertyByName(&quot;DefaultValue&quot;))</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>System.out.println(&quot;DefaultValue: <text:s text:c="3"/>&quot; + xProp.getPropertyValue(&quot;DefaultValue&quot;));</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 4" text:level="4"><text:alphabetical-index-mark text:string-value="index service"/>Index Service</text:h>
  <text:p text:style-name="Paragraph">The Index service encapsulates indexes at a table object. An index is described through the properties <text:span text:style-name="Code (in text)">Name</text:span>, <text:span text:style-name="Code (in text)">Catalog</text:span>, <text:span text:style-name="Code (in text)">IsUnique</text:span>, <text:span text:style-name="Code (in text)">IsPrimaryKeyIndex</text:span>, and <text:span text:style-name="Code (in text)">IsClustered</text:span>. All properties are read-only if an index has not been added to a tables index container. The last three properties are boolean values that indicate an index object only allows unique values, is used for the primary key, and if it is clustered. The property <text:span text:style-name="Code (in text)">IsPrimaryKeyIndex</text:span> is only available after the index has been created because it defines a special index that is created by the database while creating a primary key for a table object. Not all databases currently available in <text:span text:style-name="T2">[PRODUCTNAME]</text:span> API support primary keys.</text:p>
  <table:table table:name="Table59" table:style-name="Table59">
   <table:table-column table:style-name="Table59.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table59.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr9" draw:name="Frame19" text:anchor-type="paragraph" svg:y="0cm" svg:width="14.406cm" style:rel-width="81%" fo:min-height="19.851cm" draw:z-index="37">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of com.sun.star.sdbcx.Index" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="14.259cm" svg:height="19.369cm" draw:z-index="38" xlink:href="Index.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the com.sun.star.sdbcx.Index service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration16" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.17</text:sequence>: Index</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">The following code fragment displays the properties of a given index object: [SOURCE:Database/sdbcx.java]</text:p>
  <text:p text:style-name="Code">// index properties</text:p>
  <text:p text:style-name="Code">public static void printIndexProperties(Object index) throws Exception, SQLException {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Example printIndexProperties&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, index);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Name: <text:s text:c="13"/>&quot; + xProp.getPropertyValue(&quot;Name&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Catalog: <text:s text:c="10"/>&quot; + xProp.getPropertyValue(&quot;Catalog&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;IsUnique: <text:s text:c="9"/>&quot; + xProp.getPropertyValue(&quot;IsUnique&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;IsPrimaryKeyIndex: &quot; + xProp.getPropertyValue(&quot;IsPrimaryKeyIndex&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;IsClustered: <text:s text:c="6"/>&quot; + xProp.getPropertyValue(&quot;IsClustered&quot;));</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 4" text:level="4">Key Service</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbcx.KeyType]The <text:alphabetical-index-mark-start text:id="IMark44151188"/>Key<text:alphabetical-index-mark-end text:id="IMark44151188"/> service <text:alphabetical-index-mark text:string-value="KeyType"/>provides the foreign and primary keys behavior through the following properties. The <text:span text:style-name="Code (in text)">Name</text:span> property is the name of the key. It could happen that the primary key does not have a name. The property <text:span text:style-name="Code (in text)">Type</text:span> contains the kind of the key, that could be PRIMARY, UNIQUE, or FOREIGN, as specified by the constant group <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.KeyType]</text:span>. The property <text:span text:style-name="Code (in text)">ReferencedTable</text:span> contains a value when the key is a foreign key and it designates the table to which a foreign key points. The <text:span text:style-name="T23">DeleteRule</text:span><text:span text:style-name="T8"> </text:span>and <text:span text:style-name="T23">UpdateRule</text:span> properties determine what happens when a primary key is deleted or updated. The possibilities are defined <text:alphabetical-index-mark text:string-value="KeyRule"/>in <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.KeyRule]</text:span>: CASCADE, RESTRICT, SET_NULL, NO_ACTION and SET_DEFAULT.</text:p>
  <table:table table:name="Table60" table:style-name="Table60">
   <table:table-column table:style-name="Table60.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table60.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr6" draw:name="Frame17" text:anchor-type="paragraph" svg:width="12.806cm" style:rel-width="72%" fo:min-height="19.851cm" draw:z-index="39">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of com.sun.star.sdbcx.Key" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="12.64cm" svg:height="19.369cm" draw:z-index="40" xlink:href="Key.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing com.sun.star.sdbcx.Key service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration17" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.18</text:sequence>: Key</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">The following code fragment displays the properties of a given key object: [SOURCE:Database/sdbcx.java]</text:p>
  <text:p text:style-name="Paragraph">// key properties</text:p>
  <text:p text:style-name="Code">public static void printKeyProperties(Object key) throws Exception, SQLException {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Example printKeyProperties&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, key);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Name: <text:s text:c="11"/>&quot; + xProp.getPropertyValue(&quot;Name&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Type: <text:s text:c="11"/>&quot; + xProp.getPropertyValue(&quot;Type&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;ReferencedTable: &quot; + xProp.getPropertyValue(&quot;ReferencedTable&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;UpdateRule: <text:s text:c="5"/>&quot; + xProp.getPropertyValue(&quot;UpdateRule&quot;));</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;DeleteRule: <text:s text:c="5"/>&quot; + xProp.getPropertyValue(&quot;DeleteRule&quot;));</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 4" text:level="4"><text:alphabetical-index-mark-start text:id="IMark45219876"/>View<text:alphabetical-index-mark-end text:id="IMark45219876"/> Service</text:h>
  <text:p text:style-name="Paragraph">A view is a virtual table created from a SELECT on other database tables or views. This service creates a database view programmatically. It is not necessary to know the SQL syntax for the CREATE VIEW statement, but a few properties have to be set. When creating a view, supply the value for the property <text:span text:style-name="Code (in text)">Name</text:span>, the SELECT statement to the property <text:span text:style-name="Code (in text)">Command</text:span> and if the database driver supports a check option, set it in the property <text:span text:style-name="Code (in text)">CheckOption</text:span>. Possible values of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.CheckOption]</text:span> are NONE, CASCADE and LOCAL. A schema or catalog name can be provided (optional).</text:p>
  <table:table table:name="Table61" table:style-name="Table61">
   <table:table-column table:style-name="Table61.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table61.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr9" draw:name="Frame18" text:anchor-type="paragraph" svg:y="0cm" svg:width="10.712cm" style:rel-width="60%" fo:min-height="9.908cm" draw:z-index="41">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of com.sun.star.sdbcx.View" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="10.61cm" svg:height="9.34cm" draw:z-index="42" xlink:href="View.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the com.sun.star.sdbcx.View service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration18" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.19</text:sequence>: View</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:h text:style-name="Head 4" text:level="4">Group Service</text:h>
  <text:p text:style-name="Paragraph">The service <text:span text:style-name="Code (in text)">[idl:com.sun.star.sdbcx.Group]</text:span> is the first of the two security services, <text:alphabetical-index-mark-start text:id="IMark44035340"/><text:span text:style-name="Code (in text)">Group</text:span><text:alphabetical-index-mark-end text:id="IMark44035340"/> and <text:span text:style-name="Code (in text)">User</text:span>. The <text:span text:style-name="Code (in text)">Group</text:span> service represents the group account that has access permissions to a secured database and it has a <text:span text:style-name="Code (in text)">Name</text:span> property to identify it. It supports the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XAuthorizable]</text:span> that allows current privilege settings to be obtained, and to grant or revoke privileges. The second interface is the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XUsersSupplier]</text:span>. The word &apos;Supplier&apos; in the interface name identifies the group object as a container for users. The container returned here is a collection of all users that belong to this group.</text:p>
  <table:table table:name="Table62" table:style-name="Table62">
   <table:table-column table:style-name="Table62.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table62.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr9" draw:name="Frame81" text:anchor-type="paragraph" svg:y="0cm" svg:width="10.672cm" style:rel-width="60%" fo:min-height="12.411cm" draw:z-index="43">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of com.sun.star.sdbcx.Group" text:anchor-type="paragraph" svg:x="0cm" svg:y="-3.81cm" svg:width="10.61cm" svg:height="11.929cm" draw:z-index="44" xlink:href="Group.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the com.sun.star.sdbcx.Group service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration19" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.20</text:sequence>: Group</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:p text:style-name="Paragraph">[SOURCE:Database/sdbcx.java]</text:p>
  <text:p text:style-name="Code">// print all groups and the users with their privileges who belong to this group</text:p>
  <text:p text:style-name="Code">public static void printGroups(XTablesSupplier xTabSup) throws com.sun.star.uno.Exception, SQLException {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Example printGroups&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XGroupsSupplier xGroupsSup = (XGroupsSupplier)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XGroupsSupplier.class, xTabSup);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (xGroupsSup != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// the table must be at least support a XColumnsSupplier interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>System.out.println(&quot;--- Groups ---&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XNameAccess xGroups = xGroupsSup.<text:span text:style-name="CodeEmphasis">getGroups</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>String [] aGroupNames = xGroups.getElementNames();</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>for (int i =0; i &lt; aGroupNames.length; i++) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>System.out.println(&quot; <text:s text:c="3"/>&quot; + aGroupNames[i]);</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XUsersSupplier xUsersSup = (XUsersSupplier)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/><text:tab-stop/><text:tab-stop/>XUsersSupplier.class, xGroups.getByName(aGroupNames[i]));</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>if (xUsersSup != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>XAuthorizable xAuth = (XAuthorizable)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="20"/>XAuthorizable.class, xUsersSup);</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>// the table must be at least support a XColumnsSupplier interface</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>System.out.println(&quot;\t--- Users ---&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>XNameAccess xUsers = xUsersSup.<text:span text:style-name="CodeEmphasis">getUsers</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>String [] aUserNames = xUsers.getElementNames();</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>for (int j = 0; j &lt; aUserNames.length; j++) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="20"/>System.out.println(&quot;\t <text:s text:c="3"/>&quot; + aUserNames[j] + </text:p>
  <text:p text:style-name="Code"><text:s text:c="20"/>&quot; Privileges: &quot; + xAuth.<text:span text:style-name="CodeEmphasis">getPrivileges</text:span>(aUserNames[j], PrivilegeObject.TABLE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="16"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>}</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 4" text:level="4"><text:alphabetical-index-mark-start text:id="IMark43865836"/>User<text:alphabetical-index-mark-end text:id="IMark43865836"/> Service</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbcx.XUser]The <text:span text:style-name="Code (in text)">[idl:com.sun.star.sdbcx.User]</text:span> service <text:alphabetical-index-mark text:string-value="XUser"/>is the second security service, representing a user in the catalog. This object has the property Name that is the user name. Similar to the <text:span text:style-name="Code (in text)">Group</text:span> service, the <text:span text:style-name="Code (in text)">User</text:span> service supports the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XAuthorizable]</text:span>. This is achieved through the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XUser]</text:span> derived from <text:span text:style-name="Code (in text)">XAuthorizable</text:span>. In addition to this interface, the <text:span text:style-name="Code (in text)">XUser</text:span> interface supports changing the password of a specific user. Similar to the <text:span text:style-name="Code (in text)">Group</text:span> service above, the <text:span text:style-name="Code (in text)">User</text:span> service is a container for the groups the user belongs to.</text:p>
  <table:table table:name="Table63" table:style-name="Table63">
   <table:table-column table:style-name="Table63.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table63.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr9" draw:name="Frame9" text:anchor-type="paragraph" svg:y="0cm" svg:width="10.672cm" style:rel-width="60%" fo:min-height="12.411cm" draw:z-index="45">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr4" draw:name="UML diagram of com.sun.star.sdbcx.User" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="10.61cm" svg:height="11.929cm" draw:z-index="46" xlink:href="User.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the com.sun.star.sdbcx.User service</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration20" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.21</text:sequence>: User</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:h text:style-name="Head 4" text:level="4">The <text:alphabetical-index-mark text:string-value="descriptor pattern"/>Descriptor Pattern</text:h>
  <text:p text:style-name="Paragraph">The descriptor is a special kind of object that mirrors the structure of the object which should be appended to a container object. This means that a descriptor, once created, can be appended more than once with only small changes to the structure. For example, when appending columns to the columns container, we:</text:p>
  <text:unordered-list text:style-name="L29">
   <text:list-item>
    <text:unordered-list>
     <text:list-item>
      <text:p text:style-name="P41">Create one descriptor with <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XDataDescriptorFactory]</text:span>.</text:p>
     </text:list-item>
     <text:list-item>
      <text:p text:style-name="P41">Set the needed properties.</text:p>
     </text:list-item>
     <text:list-item>
      <text:p text:style-name="P41">Add the descriptor to the container.</text:p>
     </text:list-item>
     <text:list-item>
      <text:p text:style-name="P41">Adjust some properties, such as the name.</text:p>
     </text:list-item>
     <text:list-item>
      <text:p text:style-name="P41">Add the modified descriptor to the container.</text:p>
     </text:list-item>
     <text:list-item>
      <text:p text:style-name="P41">Repeat the steps, as necessary.</text:p>
     </text:list-item>
    </text:unordered-list>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">therefore, only create one descriptor to append more than one column.</text:p>
  <table:table table:name="Table64" table:style-name="Table64">
   <table:table-column table:style-name="Table64.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table64.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr9" draw:name="Frame10" text:anchor-type="paragraph" svg:y="0cm" svg:width="15.118cm" style:rel-width="85%" fo:min-height="2.589cm" draw:z-index="47">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr14" draw:name="UML diagram of the descriptor pattern" text:anchor-type="paragraph" svg:x="0cm" svg:width="14.97cm" svg:height="19.83cm" draw:z-index="53" xlink:href="Descriptor.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>UML diagram showing the descriptor pattern</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration21" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.22</text:sequence>: Descriptor Pattern</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:unordered-list text:style-name="L30">
   <text:list-item>
    <text:unordered-list>
     <text:list-item>
      <text:p text:style-name="P42">Creating a Table</text:p>
     </text:list-item>
    </text:unordered-list>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">An important use of the SDBCX layer is that it is possible to programmatically create tables, along with their columns, indexes, and keys.</text:p>
  <text:p text:style-name="Paragraph">The method of creating a table is the same as creating a table with a graphical table design. To create it programmatically is easy. First, create a table object by asking the tables container for its <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XDataDescriptorFactory]</text:span> interface. When the <text:span text:style-name="Code (in text)">createDataDescriptor</text:span> method is called, the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.beans.XPropertySet]</text:span> interface of an object that implements the service <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.TableDescriptor]</text:span> is returned. As described above, use this descriptor to create a new table in the database, by adding the descriptor to the Tables container. Before appending the descriptor, append the columns to the table descriptor. Use the same method as with the containers used in the SDBCX layer. On the column object, some properties need to be set, such as <text:span text:style-name="Code (in text)">Name</text:span>, and <text:span text:style-name="Code (in text)">Type</text:span>. The properties to be set depend on the SDBC data type of the column.</text:p>
  <text:p text:style-name="Paragraph">The column name must be unique in the columns container. </text:p>
  <text:p text:style-name="Paragraph">After the columns are appended, add the <text:span text:style-name="Code (in text)">TableDescriptor</text:span> object to its container or define some key objects, such as a primary key. [SOURCE:Database/sdbcx.java]</text:p>
  <text:p text:style-name="Code">// create the table salesmen</text:p>
  <text:p text:style-name="Code">public static void createTableSalesMen(XNameAccess xTables) throws Exception, SQLException {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XDataDescriptorFactory xTabFac = (XDataDescriptorFactory)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XDataDescriptorFactory.class, xTables);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (xTabFac != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// create the new table</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XPropertySet xTable = xTabFac.<text:span text:style-name="CODE Emphasis">createDataDescriptor</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// set the name of the new table</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xTable.setPropertyValue(&quot;Name&quot;, &quot;SALESMAN&quot;);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>// append the columns</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XColumnsSupplier xColumSup = (XColumnsSupplier)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XColumnsSupplier.class,xTable);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XDataDescriptorFactory xColFac = (XDataDescriptorFactory)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XDataDescriptorFactory.class, xColumSup.getColumns());</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XAppend xAppend = (XAppend)UnoRuntime.queryInterface(XAppend.class, xColFac);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>// we only need one descriptor</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XPropertySet xCol = xColFac.<text:span text:style-name="CODE Emphasis">createDataDescriptor</text:span>();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>// create first column and append</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Name&quot;, &quot;SNR&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Type&quot;, new Integer(DataType.INTEGER));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;IsNullable&quot;, new Integer(ColumnValue.NO_NULLS));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xAppend.<text:span text:style-name="CodeEmphasis">appendByDescriptor</text:span>(xCol);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// 2nd only set the properties which differ</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Name&quot;, &quot;FIRSTNAME&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Type&quot;, new Integer(DataType.VARCHAR));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;IsNullable&quot;, new Integer(ColumnValue.NULLABLE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Precision&quot;, new Integer(50));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xAppend.<text:span text:style-name="CodeEmphasis">appendByDescriptor</text:span>(xCol);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// 3rd only set the properties which differ</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Name&quot;, &quot;LASTNAME&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Precision&quot;, new Integer(100));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xAppend.<text:span text:style-name="CodeEmphasis">appendByDescriptor</text:span>(xCol);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// 4th only set the properties which differ</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Name&quot;, &quot;STREET&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Precision&quot;,n ew Integer(50));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xAppend.<text:span text:style-name="CodeEmphasis">appendByDescriptor</text:span>(xCol);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// 5th only set the properties which differ</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Name&quot;, &quot;STATE&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xAppend.<text:span text:style-name="CodeEmphasis">appendByDescriptor</text:span>(xCol);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// 6th only set the properties which differ</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Name&quot;, &quot;ZIP&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Type&quot;, new Integer(DataType.INTEGER));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Precision&quot;, new Integer(10)); // default value integer</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xAppend.<text:span text:style-name="CodeEmphasis">appendByDescriptor</text:span>(xCol);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// 7th only set the properties which differs</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Name&quot;, &quot;BIRTHDATE&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Type&quot;, new Integer(DataType.DATE));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xCol.setPropertyValue(&quot;Precision&quot;, new Integer(10)); // default value integer</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xAppend.<text:span text:style-name="CodeEmphasis">appendByDescriptor</text:span>(xCol);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>// now we create the primary key</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XKeysSupplier xKeySup = (XKeysSupplier)UnoRuntime.queryInterface(XKeysSupplier.class, xTable);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XDataDescriptorFactory xKeyFac = (XDataDescriptorFactory)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XDataDescriptorFactory.class,xKeySup.getKeys());</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XAppend xKeyAppend = (XAppend)UnoRuntime.queryInterface(XAppend.class, xKeyFac);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>XPropertySet xKey = xKeyFac.<text:span text:style-name="CODE Emphasis">createDataDescriptor</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xKey.setPropertyValue(&quot;Type&quot;, new Integer(KeyType.PRIMARY));</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// now append the columns to key</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XColumnsSupplier xKeyColumSup = (XColumnsSupplier)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XColumnsSupplier.class, xKey);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XDataDescriptorFactory xKeyColFac = (XDataDescriptorFactory)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="12"/>XDataDescriptorFactory.class,xKeyColumSup.getColumns());</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XAppend xKeyColAppend = (XAppend)UnoRuntime.queryInterface(XAppend.class, xKeyColFac);</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:s text:c="8"/>// we only need one descriptor</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XPropertySet xKeyCol = xKeyColFac.<text:span text:style-name="CodeEmphasis">createDataDescriptor</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xKeyCol.setPropertyValue(&quot;Name&quot;, &quot;SNR&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// append the key column</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xKeyColAppend.<text:span text:style-name="CodeEmphasis">appendByDescriptor</text:span>(xKeyCol);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// append the key</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xKeyAppend.<text:span text:style-name="CodeEmphasis">appendByDescriptor</text:span>(xKey);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// the last step is to append the new table to the tables collection</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XAppend xTableAppend = (XAppend)UnoRuntime.queryInterface(XAppend.class, xTabFac);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xTableAppend.<text:span text:style-name="CodeEmphasis">appendByDescriptor</text:span>(xTable);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 4" text:level="4">Adding an <text:alphabetical-index-mark text:string-value="index"/>Index</text:h>
  <text:p text:style-name="Paragraph">To add an index, the same programmatic logic is followed. Create an <text:span text:style-name="Code (in text)">IndexDescriptor</text:span> with the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XDataDescriptorFactory]</text:span> interface from the index container. Then follow the same steps as for the table. Next, append the columns to be indexed. </text:p>
  <text:p text:style-name="Paragraph">Note that only an index can be added to an existing table. It is not possible to add an index to a TableDescriptor.</text:p>
  <text:p text:style-name="Paragraph">The task is completed when the index object is added to the index container, unless the <text:span text:style-name="Code (in text)">append()</text:span> method throws an <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.SQLException]</text:span>. This may happen when adding a unique index on a column that already contains values that are not unique.+</text:p>
  <text:h text:style-name="Head 4" text:level="4">Creating a <text:alphabetical-index-mark-start text:id="IMark44151188"/>User<text:alphabetical-index-mark-end text:id="IMark44151188"/></text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbcx.UserDescriptor]The <text:alphabetical-index-mark text:string-value="UserDescriptor"/>procedure to create a user is the same. The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.XDataDescriptorFactory]</text:span> interface is used from the users container. Create a user with the <text:span text:style-name="Code (in text)">UserDescriptor</text:span>. The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.UserDescriptor]</text:span> has an additional property than the <text:span text:style-name="Code (in text)">User</text:span> service supports. This additional property is the <text:span text:style-name="Code (in text)">Password</text:span> property which should be set. Then the <text:span text:style-name="Code (in text)">UserDescriptor</text:span> object can be appended to the user container. [SOURCE:Database/sdbcx.java]</text:p>
  <text:p text:style-name="Code">// create a user</text:p>
  <text:p text:style-name="Code">public static void createUser(XNameAccess xUsers) throws Exception,SQLException {</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>System.out.println(&quot;Example createUser&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>XDataDescriptorFactory xUserFac = (XDataDescriptorFactory)UnoRuntime.queryInterface(</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XDataDescriptorFactory.class, xUsers);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>if (xUserFac != null) {</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// create the new table</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XPropertySet xUser = xUserFac.<text:span text:style-name="CodeEmphasis">createDataDescriptor</text:span>();</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>// set the name of the new table</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xUser.setPropertyValue(&quot;Name&quot;, &quot;BOSS&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xUser.setPropertyValue(&quot;Password&quot;,&quot;BOSSWIFENAME&quot;);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>XAppend xAppend = (XAppend)UnoRuntime.queryInterface(XAppend.class, xUserFac);</text:p>
  <text:p text:style-name="Code"><text:s text:c="8"/>xAppend.<text:span text:style-name="CodeEmphasis">appendByDescriptor</text:span>(xUser);</text:p>
  <text:p text:style-name="Code"><text:s text:c="4"/>}</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 4" text:level="4">Adding a Group</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbcx.GroupDescriptor]Creating<text:alphabetical-index-mark text:string-value="GroupDescriptor"/> a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.GroupDescriptor]</text:span> object is the same as the methods described above. Follow the same steps:</text:p>
  <text:ordered-list text:style-name="L31">
   <text:list-item>
    <text:p text:style-name="P43">Set a name for the group in the <text:span text:style-name="Code (in text)">Name</text:span> property.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P43">Append all the users to the user container of the group.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P43">Append the <text:span text:style-name="Code (in text)">GroupDescriptor</text:span> object to the group container of the catalog.</text:p>
   </text:list-item>
  </text:ordered-list>
  <text:h text:style-name="Head 2" text:level="2">Using <text:alphabetical-index-mark text:string-value="DBMS features"/>DBMS Features</text:h>
  <text:h text:style-name="Head 3" text:level="3">Transaction Handling</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbc.TransactionIsolation]Transactions <text:alphabetical-index-mark text:string-value="TransactionIsolation"/>combine several separate SQL executions, so that they can be seen as a single event that is executed completely (commit) or not at all (rollback). A typical example for a transaction is a money transfer. It consists of two steps: withdrawing an amount of money from one bank account and crediting another account with it. Both steps must be successful or they must be canceled. Transactions in SDBC are handled by the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XConnection]</text:span> interface of connections. The transaction related methods of this interface are:</text:p>
  <text:p text:style-name="MethodSignatures">// transactions</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setTransactionIsolation</text:span>( [in] long level)</text:p>
  <text:p text:style-name="MethodSignatures">long <text:span text:style-name="MethodSignatureEmphasis">getTransactionIsolation</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">setAutoCommit</text:span>( [in] boolean autoCommit)</text:p>
  <text:p text:style-name="MethodSignatures">boolean <text:span text:style-name="MethodSignatureEmphasis">getAutoCommit</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">commit</text:span>()</text:p>
  <text:p text:style-name="MethodSignatures">void <text:span text:style-name="MethodSignatureEmphasis">rollback</text:span>()</text:p>
  <text:p text:style-name="Paragraph">Usually all transactions are in auto commit mode, that means, a commit takes place after each single SQL command. Therefore to control a transaction manually, switch auto commit off using <text:span text:style-name="Code (in text)">setAutoCommit(false)</text:span>. The first SQL command without auto commit starts a transaction that is active until the corresponding methods have been committed or rolled back.</text:p>
  <text:p text:style-name="Paragraph">Afterwards, the auto commit mode can be reinstated using <text:span text:style-name="Code (in text)">setAutoCommit(true).</text:span></text:p>
  <text:p text:style-name="Paragraph">Transactions bring about a synchronization problem. If data is read from a table, it is possible that the data has just been changed by a command of a transaction started by another process. If the other transaction is rolled back, there may be inconsistencies between the results and contents of the database. </text:p>
  <text:p text:style-name="Paragraph">Transaction isolation controls the behavior of the database in case of parallel transactions. There are several isolation levels:</text:p>
  <table:table table:name="Table33" table:style-name="Table33">
   <table:table-column table:style-name="Table33.A"/>
   <table:table-column table:style-name="Table33.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table33.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Values of constants <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.TransactionIsolation]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table33.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.TransactionIsolation:NONE]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table33.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Indicates that transactions are not supported.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table33.A2" table:value-type="string">
     <text:p text:style-name="TableCode">[IDLS:com.sun.star.sdbc.TransactionIsolation:READ_UNCOMMITTED]</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table33.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Dirty reads, non-repeatable reads and phantom reads can occur. This level allows a row changed by one transaction to be read by another transaction before any changes in that row have been committed (a &quot;dirty read&quot;). If any of the changes are rolled back, the second transaction retrieves an invalid row.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table33.A2" table:value-type="string">
     <text:p text:style-name="TableCode">[IDLs:com.sun.star.sdbc.TransactionIsolation:READ_COMMITTED]</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table33.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Dirty reads are prevented; non-repeatable reads and phantom reads can occur. This level only prohibits a transaction from reading a row with uncommitted changes in it.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table33.A2" table:value-type="string">
     <text:p text:style-name="TableCode">[IDLS:com.sun.star.sdbc.TransactionIsolation:REPEATABLE_READ]</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table33.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Dirty reads and non-repeatable reads are prevented; phantom reads can occur. This level prohibits a transaction from reading a row with uncommitted changes in it, and it also prohibits the situation where one transaction reads a row, a second transaction alters the row, and the first transaction rereads the row, getting different values the second time (a &quot;non-repeatable read&quot;).</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table33.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.TransactionIsolation:SERIALIZABLE]</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table33.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Dirty reads, non-repeatable reads and phantom reads are prevented. This level includes the prohibitions in REPEATABLE_READ and further prohibits the situation where one transaction reads all rows that satisfy a WHERE condition, a second transaction inserts a row that satisfies that WHERE condition, and the first transaction rereads for the same condition, retrieving the additional &quot;phantom&quot; row in the second read.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:h text:style-name="Head 3" text:level="3">Stored Procedures</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbc.XOutParameters]Stored <text:alphabetical-index-mark text:string-value="XOutParameters"/>procedures are server-side processes execute several SQL commands in a single step, and can be embedded in a server language for stored procedures with enhanced control capabilities. A procedure call usually has to be parameterized, and the results are result sets and additional out parameters. Stored procedures are handled by the method <text:span text:style-name="Code (in text)">prepareCall()</text:span>of the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XConnection]</text:span>. </text:p>
  <text:p text:style-name="MethodSignatures">com::sun::star::sdbc::XPreparedStatement <text:span text:style-name="MethodSignatureEmphasis">prepareCall</text:span>( [in] string sql)</text:p>
  <text:p text:style-name="Paragraph">The method <text:span text:style-name="Code (in text)">prepareCall()</text:span>takes a an SQL statement that may contain one or more &apos;?&apos; in parameter placeholders. It returns a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.CallableStatement]</text:span>. A <text:span text:style-name="Code (in text)">CallableStatement</text:span> is a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbcx.PreparedStatement]</text:span> with two additional interfaces for out parameters:</text:p>
  <text:p text:style-name="Paragraph"><text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XOutParameters]</text:span> is used to declare parameters as out parameters. All out parameters must be registered before a stored procedure is executed.</text:p>
  <table:table table:name="Table34" table:style-name="Table34">
   <table:table-column table:style-name="Table34.A"/>
   <table:table-column table:style-name="Table34.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table34.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Methods of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XOutParameters]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table34.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.XOutParameters:registerOutParameter]()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table34.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Takes the arguments long parameterIndex, long sqlType, string typeName. Registers an output parameter and should be used for a user-named or REF output parameter. Examples of user-named types include: STRUCT, DISTINCT, OBJECT, and named array types.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table34.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.XOutParameters:registerNumericOutParameter]()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table34.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Takes the arguments long parameterIndex, long sqlType, long scale. Registers an out parameter in the ordinal position parameterIndex with the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.DataType]</text:span> sqlType; scale is the number of digits on the right-hand side of the decimal point.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XRow]</text:span> is used to retrieve the values of out parameters. It consists of <text:span text:style-name="Code (in text)">getXXX()</text:span> methods and should be well-known from the common result sets.</text:p>
  <text:p text:style-name="Paragraph"/>
  <text:h text:style-name="Head 2" text:level="2">Writing Database Drivers</text:h>
  <text:p text:style-name="Paragraph">In the following sections, implementing an SDBC driver is described. The user should have some experience in the use of the SDBC API, or be familiar with the previous chapter about SDBC and SDBCX. </text:p>
  <text:p text:style-name="Paragraph">This section is divided into two parts. The first part describes the simple driver that includes only the SDBC layer with the PreparedStatements, Statements and ResultSets. The second part extends the simple driver from part one to a more sophisticated one. This driver provides access to Tables, Views, Groups, Users and others. </text:p>
  <text:p text:style-name="Paragraph">A skeleton for a C++ SDBC driver is provided in the samples folder. Some changes are necessary to create a working driver. Adjust the namespace and replace the word &quot;skeleton&quot; by a suitable driver name, and implement the necessary functions for the database.</text:p>
  <text:p text:style-name="Paragraph">An SDBC driver is simply the implementation of some SDBC services previously discussed.</text:p>
  <text:h text:style-name="Head 3" text:level="3"><text:alphabetical-index-mark text:string-value="SDBC driver"/>SDBC Driver</text:h>
  <text:p text:style-name="Paragraph">The SDBC driver consists of seven services. Each service needs to be defined and are described in the next sections. Below is a list of all the services that define the driver:</text:p>
  <text:unordered-list text:style-name="L32">
   <text:list-item>
    <text:p text:style-name="P44"><text:span text:style-name="Code (in text)">Driver</text:span>, a singleton which creates the connection object.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P44"><text:span text:style-name="Code (in text)">Connection</text:span>, creates <text:span text:style-name="Code (in text)">Statement</text:span>, <text:span text:style-name="Code (in text)">PreparedStatement</text:span> and gives access to the <text:span text:style-name="Code (in text)">DatabaseMetaData.</text:span></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P44"><text:span text:style-name="Code (in text)">DatabaseMetaData</text:span>, returns information about the used database.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P44"><text:span text:style-name="Code (in text)">Statement</text:span>, creates <text:span text:style-name="Code (in text)">ResultSets</text:span>.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P44"><text:span text:style-name="Code (in text)">PreparedStatement</text:span>, creates <text:span text:style-name="Code (in text)">ResultSets</text:span> in conjunction with parameters.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P44"><text:span text:style-name="Code (in text)">ResultSet</text:span>, fetches the data returned by an SQL statement.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P44"><text:span text:style-name="Code (in text)">ResultSetMetaData</text:span>, describes the columns of a <text:span text:style-name="Code (in text)">ResultSet.</text:span></text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">The relationship between these services is depicted in <text:sequence-ref text:reference-format="category-and-value" text:ref-name="refIllustration22">Illustration 1.23</text:sequence-ref>.</text:p>
  <table:table table:name="Table65" table:style-name="Table65">
   <table:table-column table:style-name="Table65.A"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table65.A1" table:value-type="string">
      <text:p text:style-name="Paragraph"><draw:text-box draw:style-name="fr9" draw:name="Frame12" text:anchor-type="paragraph" svg:y="0cm" svg:width="12.984cm" style:rel-width="73%" fo:min-height="15.349cm" draw:z-index="48">
        <text:p text:style-name="Illustration"><draw:image draw:style-name="fr7" draw:name="Dependencies of drvier classes" text:anchor-type="paragraph" svg:x="0cm" svg:y="0.019cm" svg:width="12.899cm" svg:height="14.85cm" draw:z-index="49" xlink:href="driver.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad">
          <svg:desc>Dependencies of drvier classes</svg:desc>
         </draw:image>Illustration <text:sequence text:ref-name="refIllustration22" text:name="Illustration" text:formula="Illustration+1" style:num-format="1">1.23</text:sequence>: Dependency between driver classes</text:p>
       </draw:text-box></text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
  </table:table>
  <text:h text:style-name="Head 3" text:level="3">Driver Service</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbc.Driver]The <text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">Driver</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/> service is the entry point to create the first contact with any database. As shown in the illustration above, the class that implements the service <text:span text:style-name="Code (in text)">Driver</text:span> is responsible for creating a connection object that represents the database on the client side.</text:p>
  <text:p text:style-name="Paragraph">The class must be derived from the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDriver]</text:span> that <text:alphabetical-index-mark text:string-value="XDriver"/>defines the methods needed to create a connection object. The code in the following lines shows a snippet of a driver class. [SOURCE:Database/DriverSkeleton/SDriver.cxx]</text:p>
  <text:p text:style-name="Code">// --------------------------------------------------------------------------------</text:p>
  <text:p text:style-name="Code">Reference&lt; XConnection &gt; SAL_CALL SkeletonDriver::connect( const ::rtl::OUString&amp; url, </text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>const Sequence&lt; PropertyValue &gt;&amp; info ) throw(SQLException, RuntimeException)</text:p>
  <text:p text:style-name="Code">{</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// create a new connection with the given properties and append it to our vector</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>OConnection* pCon = new OConnection(this);</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>Reference&lt; XConnection &gt; xCon = pCon;<text:tab-stop/>// important here because otherwise the connection</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/><text:tab-stop/><text:tab-stop/><text:tab-stop/><text:tab-stop/>// could be deleted inside (refcount goes -&gt; 0)</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>pCon-&gt;construct(url,info);<text:tab-stop/><text:tab-stop/>// late constructor call which can throw exception</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/><text:tab-stop/><text:tab-stop/><text:tab-stop/><text:tab-stop/>// and allows a correct dtor call when so</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>m_xConnections.push_back(WeakReferenceHelper(*pCon));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:tab-stop/>return xCon;</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Code">// --------------------------------------------------------------------------------</text:p>
  <text:p text:style-name="Code">sal_Bool SAL_CALL SkeletonDriver::acceptsURL( const ::rtl::OUString&amp; url ) </text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>throw(SQLException, RuntimeException)</text:p>
  <text:p text:style-name="Code">{</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// here we have to look if we support this url format</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// change the URL format to your needs, but please be aware that </text:p>
  <text:p text:style-name="Code"><text:tab-stop/>//the first who accepts the URL wins.</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>return (!url.compareTo(::rtl::OUString::createFromAscii(&quot;sdbc:skeleton:&quot;),14));</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Code">// --------------------------------------------------------------------------------</text:p>
  <text:p text:style-name="Code">Sequence&lt; DriverPropertyInfo &gt; SAL_CALL SkeletonDriver::getPropertyInfo( const ::rtl::OUString&amp; url, <text:tab-stop/><text:tab-stop/>const Sequence&lt; PropertyValue &gt;&amp; info ) throw(SQLException, RuntimeException)</text:p>
  <text:p text:style-name="Code">{</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// if you have something special to say, return it here :-)</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>return Sequence&lt; DriverPropertyInfo &gt;();</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Code">// --------------------------------------------------------------------------------</text:p>
  <text:p text:style-name="Code">sal_Int32 SAL_CALL SkeletonDriver::getMajorVersion( <text:s/>) throw(RuntimeException)</text:p>
  <text:p text:style-name="Code">{</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>return 0; // depends on you</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Code">// --------------------------------------------------------------------------------</text:p>
  <text:p text:style-name="Code">sal_Int32 SAL_CALL SkeletonDriver::getMinorVersion( <text:s/>) throw(RuntimeException)</text:p>
  <text:p text:style-name="Code">{</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>return 1; // depends on you</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Code">// --------------------------------------------------------------------------------</text:p>
  <text:p text:style-name="Paragraph">The main methods of this class are acceptsURL and connect:</text:p>
  <text:unordered-list text:style-name="L33">
   <text:list-item>
    <text:p text:style-name="P45">The method <text:alphabetical-index-mark-start text:id="IMark44628996"/><text:span text:style-name="Code (in text)">acceptsURL()</text:span><text:alphabetical-index-mark-end text:id="IMark44628996"/> is called every time a user wants to create a connection through the <text:span text:style-name="Code (in text)">DriverManager</text:span>, because the <text:span text:style-name="Code (in text)">DriverManager</text:span> decides the Driver it should ask to connect to the given URL. Therefore this method should be small and run very fast.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P45">The method <text:span text:style-name="Code (in text)">connect()</text:span> is called after the method <text:span text:style-name="Code (in text)">acceptsURL()</text:span> is invoked and returned true. The <text:span text:style-name="Code (in text)">connect()</text:span> could be seen as a factory method that creates <text:span text:style-name="Code (in text)">Connection</text:span> services specific for a driver implementation. To accomplish this, the <text:span text:style-name="Code (in text)">Driver</text:span> class must be singleton. Singleton means that only one instance of the <text:span text:style-name="Code (in text)">Driver</text:span> class may exist at the same time.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">If more information is required about the other methods, refer to <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.Driver]</text:span> for a complete description.</text:p>
  <text:h text:style-name="Head 3" text:level="3"><text:alphabetical-index-mark-start text:id="IMark43865836"/>Connection<text:alphabetical-index-mark-end text:id="IMark43865836"/> Service</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbc.Connection]The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.Connection]</text:span> is the database client side. It is responsible for the creation of the Statements and the information about the database itself. The service consists of three interfaces that have to be supported:</text:p>
  <text:unordered-list text:style-name="L34">
   <text:list-item>
    <text:p text:style-name="P46">The interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.lang.XComponent]</text:span> that is responsible to close the connection when it is disposed.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P46">The interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XWarningsSupplier]</text:span> that controls the chaining of warnings which may occur on every call.</text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P46">The interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XConnection]</text:span> <text:s/>that is the main interface to the database.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph">The first two interfaces introduce some access and closing mechanisms that can be best described inside the code fragment of the <text:span text:style-name="Code (in text)">Connection</text:span> class. To understand the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XConnection]</text:span>, we must have a closer look at some methods. The others not described are simple enough to handle them in the code fragment.</text:p>
  <text:p text:style-name="Paragraph">First there is the method <text:alphabetical-index-mark-start text:id="IMark44628996"/><text:span text:style-name="Code (in text)">getMetaData()</text:span><text:alphabetical-index-mark-end text:id="IMark44628996"/> that returns an object which implements the interface <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span>. This object has many methods and depends on the capabilities of the database. Most return values are found in the database documentation or in the first step, assuming some values match. The methods, such as <text:span text:style-name="Code (in text)">getTables()</text:span>, <text:span text:style-name="Code (in text)">getColumns()</text:span>and <text:span text:style-name="Code (in text)">getTypeInfo()</text:span>are described in the next chapter.</text:p>
  <text:p text:style-name="Paragraph">The following methods are used to create statements. Each of them is a factory method that creates the three different kinds of statements.</text:p>
  <table:table table:name="Table40" table:style-name="Table40">
   <table:table-column table:style-name="Table40.A"/>
   <table:table-column table:style-name="Table40.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table40.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Important Methods of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XConnection]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table40.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.XConnection:createStatement]()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table40.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Creates a new <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.Statement]</text:span> object for sending SQL statements to the database. SQL statements without parameters are executed using Statement objects. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table40.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.XConnection:prepareStatement]</text:span>(sql)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table40.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Creates a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.PreparedStatement]</text:span> object for sending parameterized SQL statements to the database.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table40.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.XConnection:prepareCall]</text:span>(sql)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table40.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Creates a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.CallableStatement]</text:span> object for calling database stored procedures.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="P47"><text:s/>[SOURCE:Database/DriverSkeleton/SDriver.cxx]</text:p>
  <text:p text:style-name="P48">Reference&lt; XStatement &gt; SAL_CALL OConnection::createStatement( <text:s/>) throw(SQLException, RuntimeException)</text:p>
  <text:p text:style-name="Code">{</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>::osl::MutexGuard aGuard( m_aMutex );</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>checkDisposed(OConnection_BASE::rBHelper.bDisposed);</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// create a statement</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// the statement can only be executed once</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>Reference&lt; XStatement &gt; xReturn = new OStatement(this);</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>m_aStatements.push_back(WeakReferenceHelper(xReturn));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>return xReturn;</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Code">// --------------------------------------------------------------------------------</text:p>
  <text:p text:style-name="Code">Reference&lt; XPreparedStatement &gt; SAL_CALL OConnection::prepareStatement( const ::rtl::OUString&amp; _sSql ) </text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>throw(SQLException, RuntimeException)</text:p>
  <text:p text:style-name="Code">{</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>::osl::MutexGuard aGuard( m_aMutex );</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>checkDisposed(OConnection_BASE::rBHelper.bDisposed);</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// the pre</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>if(m_aTypeInfo.empty())</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>buildTypeInfo();</text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:tab-stop/>// create a statement</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// the statement can only be executed more than once</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>Reference&lt; XPreparedStatement &gt; xReturn = new OPreparedStatement(this,m_aTypeInfo,_sSql);</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>m_aStatements.push_back(WeakReferenceHelper(xReturn));</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>return xReturn;</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Code">// --------------------------------------------------------------------------------</text:p>
  <text:p text:style-name="Code">Reference&lt; XPreparedStatement &gt; SAL_CALL OConnection::prepareCall( const ::rtl::OUString&amp; _sSql ) </text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>throw(SQLException, RuntimeException)</text:p>
  <text:p text:style-name="Code">{</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>::osl::MutexGuard aGuard( m_aMutex );</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>checkDisposed(OConnection_BASE::rBHelper.bDisposed);</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/></text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// not implemented yet :-) a task to do </text:p>
  <text:p text:style-name="Code"><text:tab-stop/>return NULL;</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph">All other methods can be omitted at this stage. For detailed descriptions, refer to the API Reference Manual.</text:p>
  <text:h text:style-name="Head 3" text:level="3"><text:alphabetical-index-mark-start text:id="IMark44058596"/>XDatabaseMetaData<text:alphabetical-index-mark-end text:id="IMark44058596"/> Interface</text:h>
  <text:p text:style-name="Paragraph">[TOPIC:com.sun.star.sdbc.XDatabaseMetaData]The <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> interface is the largest interface existing in the SDBC API. This interface knows everything about the used database. It provides information, such as the available tables with their columns, keys and indexes, and information about identifiers that should be used. This chapter explains some of the methods that are frequently used and how they are used to achieve a robust <text:span text:style-name="Code (in text)">Driver</text:span>.</text:p>
  <table:table table:name="Table41" table:style-name="Table41">
   <table:table-column table:style-name="Table41.A"/>
   <table:table-column table:style-name="Table41.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table41.A1" table:number-columns-spanned="2" table:value-type="string">
      <text:p text:style-name="TableHead">Important Methods of <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span></text:p>
     </table:table-cell>
     <table:covered-table-cell/>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table41.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.XDatabaseMetaData:isReadOnly]()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table41.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Returns the state of the database. When true, the database is not editable later in <text:span text:style-name="T24">[PRODUCTNAME]</text:span> API.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table41.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.XDatabaseMetaData:usesLocalFiles]()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table41.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Returns true when the catalog name of the database should not appear in the DatasourceBrowser of <text:span text:style-name="T24">[PRODUCTNAME]</text:span> API, otherwise false is returned.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table41.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.XDatabaseMetaData:supportsMixedCaseQuotedIdentifiers]()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table41.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">When this method returns true,the quoted identifiers are case sensitive. For example, in a driver that supports mixed case quoted identifiers, SELECT * FROM &quot;MyTable&quot; retrieves data from a table with the case-sensitive name MyTable.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table41.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">[IDLS:com.sun.star.sdbc.XDatabaseMetaData:getTables]()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table41.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Returns a <text:span text:style-name="Code (in text)">ResultSet</text:span> object that returns a single row for each table that fits the search criteria, such as the catalog name, <text:s/>schema pattern, table name pattern and <text:s/>sequence of table types. The correct column count and names of the columns are found at <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData:getTables]()</text:span>. If this method does not return any rows, this driver does not work with <text:span text:style-name="T24">[PRODUCTNAME]</text:span> API.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:p text:style-name="Paragraph">Any other <text:span text:style-name="Code (in text)">getXXX()</text:span> method can be implemented step by step. For the the first step they return an empty <text:span text:style-name="Code (in text)">ResultSet</text:span> object that contains no rows. It is not allowed to return <text:span text:style-name="Code (in text)">NULL</text:span> here.</text:p>
  <text:p text:style-name="Paragraph">The skeleton driver defines empty <text:span text:style-name="Code (in text)">ResultSet</text:span>s for these get methods. [SOURCE:Database/DriverSkeleton/SDriver.cxx]</text:p>
  <text:p text:style-name="Code">Reference&lt; XResultSet &gt; SAL_CALL ODatabaseMetaData::getTables( </text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>const Any&amp; catalog, const ::rtl::OUString&amp; schemaPattern, </text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>const ::rtl::OUString&amp; tableNamePattern, const Sequence&lt; ::rtl::OUString &gt;&amp; types ) </text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>throw(SQLException, RuntimeException)</text:p>
  <text:p text:style-name="Code">{</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// this returns an empty resultset where the column-names are already set</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// in special the metadata of the resultset already returns the right columns</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>ODatabaseMetaDataResultSet* pResultSet = new ODatabaseMetaDataResultSet();</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>Reference&lt; XResultSet &gt; xResultSet = pResultSet;</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>pResultSet-&gt;setTablesMap();</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>return xResultSet;</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:h text:style-name="Head 3" text:level="3">Statements</text:h>
  <text:p text:style-name="Paragraph">Statements are used to create <text:span text:style-name="Code (in text)">ResultSet</text:span>s or to update the database. The <text:span text:style-name="Code (in text)">executeQuery()</text:span> method creates new <text:span text:style-name="Code (in text)">ResultSets</text:span> . The following code snippet shows how the new <text:span text:style-name="Code (in text)">ResultSet </text:span>is created. There can be only one <text:span text:style-name="Code (in text)">ResultSet</text:span> at a time. [SOURCE:Database/DriverSkeleton/SDriver.cxx]</text:p>
  <text:p text:style-name="Code">Reference&lt; XResultSet &gt; SAL_CALL OStatement_Base::executeQuery( const ::rtl::OUString&amp; sql ) </text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/>throw(SQLException, RuntimeException)</text:p>
  <text:p text:style-name="Code">{</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>::osl::MutexGuard aGuard( m_aMutex );</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>checkDisposed(OStatement_BASE::rBHelper.bDisposed);</text:p>
  <text:p text:style-name="Code"><text:tab-stop/><text:tab-stop/></text:p>
  <text:p text:style-name="Code"/>
  <text:p text:style-name="Code"><text:tab-stop/>Reference&lt; XResultSet &gt; xRS = NULL;</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// create a resultset as result of executing the sql statement</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>// something needs to be done here :-)</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>m_xResultSet = xRS; // we nedd a reference to it for later use</text:p>
  <text:p text:style-name="Code"><text:tab-stop/>return xRS;</text:p>
  <text:p text:style-name="Code">}</text:p>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">executeUpdate()</text:span> methods only return the rows that were affected by the given SQL statement. The last method execute returns true when a <text:span text:style-name="Code (in text)">ResultSet</text:span> object is returned when calling the method <text:span text:style-name="Code (in text)">getResultSet()</text:span>, otherwise it returns false. All other methods have to be implemented.</text:p>
  <text:h text:style-name="Head 4" text:level="4">PreparedStatement</text:h>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">PreparedStatement</text:span> is used when an SQL statement should be executed more than once. In addition to the statement class, it must support the ability to provide information about the parameters when they exist. For this reason, this class must support the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XResultSetMetaDataSupplier]</text:span> interface and also the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XParameters]</text:span> interface to set values for their parameters.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Result Set</text:h>
  <text:p text:style-name="Paragraph">The <text:span text:style-name="Code (in text)">ResultSet</text:span> needs to be implemented. For the first step, only forward <text:span text:style-name="Code (in text)">ResultSet</text:span>s could be implemented, but it is recommended to support all <text:span text:style-name="Code (in text)">ResultSet</text:span> methods.</text:p>
  <text:h text:style-name="Head 3" text:level="3">Support <text:alphabetical-index-mark text:string-value="scalar functions"/>Scalar Functions</text:h>
  <text:p text:style-name="Paragraph">SDBC supports numeric, string, time, date, system, and conversion functions on scalar values. The Open Group CLI specification provides additional information on the semantics of the scalar functions. The functions supported are listed below for reference. </text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="997649"/>If a DBMS supports a scalar function, the driver should also. Scalar functions are supported by different DBMSs with different syntax, it is the driver&apos;s job to map the functions into the appropriate syntax or to implement the functions directly in the driver. </text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="997703"/>By calling metadata methods, a user can find out which functions are supported. For example, the method <text:span text:style-name="Code (in text)">XdatabaseMetaData.</text:span><text:alphabetical-index-mark-start text:id="IMark44151188"/><text:span text:style-name="Code (in text)">getNumericFunctions()</text:span><text:alphabetical-index-mark-end text:id="IMark44151188"/> returns a comma separated list of the Open Group CLI names of the numeric functions supported. Similarly, the method <text:span text:style-name="Code (in text)">XDatabaseMetaData.</text:span><text:alphabetical-index-mark-start text:id="IMark43865836"/><text:span text:style-name="Code (in text)">getStringFunctions()</text:span><text:alphabetical-index-mark-end text:id="IMark43865836"/> returns a list of string functions supported. </text:p>
  <text:p text:style-name="Paragraph">In the following table, the scalar functions are listed by category.</text:p>
  <text:h text:style-name="Head 4" text:level="4">Open Group CLI Numeric Functions</text:h>
  <table:table table:name="Table35" table:style-name="Table35">
   <table:table-column table:style-name="Table35.A"/>
   <table:table-column table:style-name="Table35.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table35.A1" table:value-type="string">
      <text:p text:style-name="TableHead">Numeric Function</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table35.B1" table:value-type="string">
      <text:p text:style-name="TableHead">Function Returns</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">ABS(number)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Absolute value of number</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">ACOS(float)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Arccosine, in radians, of float </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">ASIN(float)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Arcsine, in radians, of float</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">ATAN(float)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Arctangent, in radians, of float </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">ATAN2(float1, float2)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Arctangent, in radians, of float2 / float1</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">CEILING(number)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Smallest integer &gt;= number</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">COS(float)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Cosine of float radians</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">COT(float)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Cotangent of float radians</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">DEGREES(number)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Degrees in number radians</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">EXP(float)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Exponential function of float</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">FLOOR(number)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Largest integer &lt;= number</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">LOG(float)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Base e logarithm of float</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">LOG10(float)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Base 10 logarithm of float</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">MOD(integer1, integer2)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Remainder for integer1 / integer2</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">PI()</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">The constant pi</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">POWER(number, power)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">number raised to (integer) power</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">RADIANS(number)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Radians in number degrees</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">RAND(integer)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Random floating point for seed integer</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">ROUND(number, places)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">number rounded to places places</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">SIGN(number)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">-1 to indicate number is &lt; 0; 0 to indicate number is = 0; 1 to indicate number is &gt; 0</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">SIN(float)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Sine of float radians</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">SQRT(float)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Square root of float</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">TAN(float)</text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Tangent of float radians</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table35.A2" table:value-type="string">
     <text:p text:style-name="TableCode"><text:span text:style-name="Code (in text)">TRUNCATE(number, places) </text:span></text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table35.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">number truncated to places places</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:h text:style-name="Head 4" text:level="4">Open Group CLI String Functions</text:h>
  <table:table table:name="Table36" table:style-name="Table36">
   <table:table-column table:style-name="Table36.A"/>
   <table:table-column table:style-name="Table36.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table36.A1" table:value-type="string">
      <text:p text:style-name="TableHead">String Functions</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table36.B1" table:value-type="string">
      <text:p text:style-name="TableHead">Function Returns</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">ASCII(string)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Integer representing the ASCII code value of the leftmost character in string.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">CHAR(code)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Character with ASCII code value code, where the code is between 0 and 255.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">CONCAT(string1, string2)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Character string formed by appending string2 to string1. If a string is null, the result is DBMS-dependent.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">DIFFERENCE(string1, string2)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Integer indicating the difference between the values returned by the function SOUNDEX for string1 and string2.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">INSERT(string1, start, length, string2)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">A character string formed by deleting length characters from string1 beginning at the start, and inserting string2 into string1 at the start.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">LCASE(string)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Converts all uppercase characters in string to lowercase. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">LEFT(string, count)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">The count leftmost characters from string.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">LENGTH(string)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Number of characters in string, excluding trailing blanks.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">LOCATE(string1, string2[, start])</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Position in string2 of the first occurrence of string1, searching from the beginning of string2. If start is specified, the search begins from position start. A 0 is returned if string2 does not contain string1. Position 1 is the first character in string2.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">LTRIM(string)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Characters of string with leading blank spaces removed.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">REPEAT(string, count)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">A character string formed by repeating string count times.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">REPLACE(string1, string2, string3)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Replaces all occurrences of string2 in string1 with string3.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">RIGHT(string, count)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">The count rightmost characters in string. </text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">RTRIM(string)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">The characters of string with no trailing blanks.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">SOUNDEX(string)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">A character string that is data source-dependent, representing the sound of the words in string, such as a four-digit SOUNDEX code, or a phonetic representation of each word.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">SPACE(count)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">A character string consisting of count spaces.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">SUBSTRING(string, start, length)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">A character string formed by extracting length characters from string beginning at start.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table36.A2" table:value-type="string">
     <text:p text:style-name="TableCode">UCASE(string)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table36.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Converts all lowercase characters in string to uppercase. </text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:h text:style-name="Head 4" text:level="4"><text:bookmark text:name="997622"/>Open Group CLI Time and Date Functions</text:h>
  <table:table table:name="Table37" table:style-name="Table37">
   <table:table-column table:style-name="Table37.A"/>
   <table:table-column table:style-name="Table37.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table37.A1" table:value-type="string">
      <text:p text:style-name="TableHead">Time and Date Functions</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table37.B1" table:value-type="string">
      <text:p text:style-name="TableHead">Function Returns</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">CURDATE()</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">The current date as a date value.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">CURTIME()</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">The current local time as a time value.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">DAYNAME(date)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">A character string representing the day component of the <text:s/>date. The name for the day is specific to the data source.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">DAYOFMONTH(date)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">An integer from 1 to 31 representing the day of the month in date.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">DAYOFWEEK(date)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">An integer from 1 to 7 representing the day of the week in date, where 1 represents Sunday.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">DAYOFYEAR(date)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">An integer from 1 to 366 representing the day of the year in date.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">HOUR(time)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">An integer from 0 to 23 representing the hour component of time.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">MINUTE(time)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">An integer from 0 to 59 representing the minute component of time.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">MONTH(date)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">An integer from 1 to 12 representing the month component of date.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">MONTHNAME(date)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">A character string representing the month component of date. The name for the month is specific to the data source.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">NOW()</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">A timestamp value representing the current date and time.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">QUARTER(date)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">An integer from 1 to 4 representing the quarter in date, where 1 represents January 1 through March 31.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">SECOND(time)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">An integer from 0 to 59 representing the second component of time.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">TIMESTAMPADD(interval,<text:line-break/> <text:s text:c="3"/>count,<text:line-break/> <text:s text:c="3"/>timestamp)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">A timestamp calculated by adding count interval(s) to timestamp. Interval may be one of the following: SQL_TSI_FRAC_SECOND, SQL_TSI_SECOND, SQL_TSI_MINUTE, SQL_TSI_HOUR, SQL_TSI_DAY, SQL_TSI_WEEK, SQL_TSI_MONTH, SQL_TSI_QUARTER, or SQL_TSI_YEAR.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">TIMESTAMPDIFF(interval,<text:line-break/> <text:s text:c="3"/>timestamp1,<text:line-break/> <text:s text:c="3"/>timestamp2)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">An integer representing the number of interval(s) by which timestamp2 is greater than timestamp1. Interval may be one of the following:SQL_TSI_FRAC_SECOND, SQL_TSI_SECOND, SQL_TSI_MINUTE, SQL_TSI_HOUR, SQL_TSI_DAY, SQL_TSI_WEEK, SQL_TSI_MONTH, SQL_TSI_QUARTER, or SQL_TSI_YEAR</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">WEEK(date)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">An integer from 1 to 53 representing the week of the year in date.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table37.A2" table:value-type="string">
     <text:p text:style-name="TableCode">YEAR(date)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table37.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">An integer representing the year component of date.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:h text:style-name="Head 4" text:level="4">Open Group CLI System Functions </text:h>
  <table:table table:name="Table38" table:style-name="Table38">
   <table:table-column table:style-name="Table38.A"/>
   <table:table-column table:style-name="Table38.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table38.A1" table:value-type="string">
      <text:p text:style-name="TableHead">System Functions</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table38.B1" table:value-type="string">
      <text:p text:style-name="TableHead">Function Returns</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table38.A2" table:value-type="string">
     <text:p text:style-name="TableCode">DATABASE()</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table38.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Name of the database.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table38.A2" table:value-type="string">
     <text:p text:style-name="TableCode">IFNULL(expression, value)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table38.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Value if the expression is null; expression if expression is not null.</text:p>
    </table:table-cell>
   </table:table-row>
   <table:table-row>
    <table:table-cell table:style-name="Table38.A2" table:value-type="string">
     <text:p text:style-name="TableCode">USER()</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table38.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">User name in the DBMS.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:h text:style-name="Head 4" text:level="4">Open Group CLI Conversion Functions</text:h>
  <table:table table:name="Table39" table:style-name="Table39">
   <table:table-column table:style-name="Table39.A"/>
   <table:table-column table:style-name="Table39.B"/>
   <table:table-header-rows>
    <table:table-row>
     <table:table-cell table:style-name="Table39.A1" table:value-type="string">
      <text:p text:style-name="TableHead">Conversion Function</text:p>
     </table:table-cell>
     <table:table-cell table:style-name="Table39.B1" table:value-type="string">
      <text:p text:style-name="TableHead">Function Returns</text:p>
     </table:table-cell>
    </table:table-row>
   </table:table-header-rows>
   <table:table-row>
    <table:table-cell table:style-name="Table39.A2" table:value-type="string">
     <text:p text:style-name="TableCode">CONVERT(value, SQLtype)</text:p>
    </table:table-cell>
    <table:table-cell table:style-name="Table39.B2" table:value-type="string">
     <text:p text:style-name="TextInTable">Value converted to SQLtype where SQLtype may be one of the following SQL types: BIGINT, BINARY, BIT, CHAR, DATE, DECIMAL, DOUBLE, FLOAT, INTEGER, LONGVARBINARY, LONGVARCHAR, REAL, SMALLINT, TIME, TIMESTAMP, TINYINT, VARBINARY, or VARCHAR.</text:p>
    </table:table-cell>
   </table:table-row>
  </table:table>
  <text:h text:style-name="Head 4" text:level="4">Handling Unsupported Functionality</text:h>
  <text:p text:style-name="Paragraph">Some variation is allowed for drivers written for databases that do not support certain functionality. For example, some databases do not support out parameters with stored procedures. In this case, the <text:span text:style-name="Code (in text)">CallableStatement</text:span> methods that deal with out parameters (<text:span text:style-name="Code (in text)">registerOutParameter</text:span> and the various <text:span text:style-name="Code (in text)">XCallableStatement</text:span><text:span text:style-name="Source Text">.</text:span><text:span text:style-name="Code (in text)">getXXX()</text:span> methods) do not apply, and they should be implemented in such a way that they throw a <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.SQLException]</text:span>. </text:p>
  <text:p text:style-name="Paragraph"><text:bookmark text:name="999971"/>The following features are optional in drivers for DBMSs that do not support them. When a DBMS does not support a feature, the methods that support the feature may throw a <text:span text:style-name="Code (in text)">SQLException</text:span>. The following list of optional features indicate if the <text:span text:style-name="Code (in text)">[IDL:com.sun.star.sdbc.XDatabaseMetaData]</text:span> methods are supported by the DBMS and driver. </text:p>
  <text:unordered-list text:style-name="L35">
   <text:list-item>
    <text:p text:style-name="P49"><text:bookmark text:name="999976"/>scrollable result sets: <text:span text:style-name="Source Text">supportsResultSetType()</text:span><text:bookmark text:name="999987"/></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P49">modifiable result sets: <text:span text:style-name="Source Text">supportsResultSetConcurrency</text:span><text:bookmark text:name="999978"/><text:span text:style-name="Source Text">()</text:span></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P49">batch updates: <text:span text:style-name="Source Text">supportsBatchUpdates</text:span><text:bookmark text:name="1000340"/><text:span text:style-name="Source Text">()</text:span></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P49">SQL3 data types: <text:span text:style-name="Source Text">getTypeInfo</text:span><text:bookmark text:name="1000009"/><text:span text:style-name="Source Text">()</text:span></text:p>
   </text:list-item>
   <text:list-item>
    <text:p text:style-name="P49">storage and retrieval of Java objects:<text:line-break/><text:tab-stop/>- <text:span text:style-name="Source Text">getUDTs()</text:span> returns descriptions of the user defined types in a given schema<text:line-break/><text:tab-stop/>- <text:span text:style-name="Source Text">getTypeInfo()</text:span> returns descriptions of the data types available in the DBMS.</text:p>
   </text:list-item>
  </text:unordered-list>
  <text:p text:style-name="Paragraph"/>
  <text:p text:style-name="Paragraph"/>
 </office:body>
</office:document>