<!--
 * Copyright (c) 2001, 2003, Oracle Corporation.  All rights reserved.  
 *
 *      NAME
 *       searchOSComponents.uix
 *
 *      NOTES
 *       search Operating System Components
 *
 * MODIFIED (MM/DD/YY)  VERSION
 *  awarkar     12/03/03 - Bug Fix For Issue#3280397 
 *  kchiasso    10/28/03 - bugfix 3211721 
 *  kchiasso    10/08/03 - add login to title 
 *  shuberma    09/30/03 - Use mgmt$group_flat_memberships 
 *  kchiasso    07/08/03 - bugfix 2665817
 *  kchiasso    04/02/03 - chng Operating System link
 *  shuberma    03/04/03 - Adding group control
 *  kchiasso    10/29/02 - bugfix 2635634
 *  kchiasso    10/14/02 - ui review cleanup
 *  kchiasso    10/02/02 - ADA compliant
 *  kchiasso    09/30/02 - 
 *  kchiasso    07/11/02 - preserve sort context prev/next
 *  kchiasso    05/30/02 - root url
 *  kchiasso    05/28/02 - timestamp.
 *  kchiasso    05/14/02 - add link
 *  kchiasso    05/07/02 - SavetoFile
 *  kchiasso    05/01/02 - reorder droplist
 *  shuberma    04/30/02 - Changing dest to ^ as escape char..
 *  kchiasso    04/03/02 - add sql search
 *  kchiasso    03/29/02 - sort Search
 *
 *
 *  @author  kChiasson
 *
-->
<page xmlns="http://bali.us.oracle.com/cabo/baja"
      xmlns:baja="http://bali.us.oracle.com/cabo/baja"
      xmlns:marlin="http://bali.us.oracle.com/cabo/marlin"
      xmlns:uix="http://bali.us.oracle.com/cabo/marlin"
      xmlns:html="http://www.w3.org/TR/REC-html40"
      xmlns:data="http://bali.us.oracle.com/cabo/marlin">

 <baja:head   xmlns="http://bali.us.oracle.com/cabo/marlin"
              xmlns:uix="http://bali.us.oracle.com/cabo/marlin"
              xmlns:html="http://www.w3.org/TR/REC-html40">

  <dataScope>
   <contents>
         <head>
           <boundAttribute name="title">
             <concat>
                <dataObject select="loginTitle"
                            source="getLoginTitle"/>
                <fixed javaType="string">&nbsp;-&nbsp;</fixed>
                <dataObject select="TITLE_SEARCHOSCOMPONENTS" source="ResourceBundle"/>
             </concat>
           </boundAttribute>
         </head> 
   </contents>
      <provider>
       <data name="getLoginTitle">
          <method class="oracle.sysman.eml.ecm.util.EcmSessionUtil" method="getLoginTitle"/>
        </data>
        <data name="ResourceBundle">
           <bundle class = "oracle.sysman.eml.ecm.search.util.SearchResourceBundle"/>
        </data>
      </provider>
  </dataScope>

 </baja:head>
    <!-- special handler to load help topic -->
   <handlers>
    <event name="null">
      <method class="oracle.sysman.eml.ecm.OnlineHelp"
              method="loadSearchHelpTopic"/>
    </event>
   </handlers>

 <baja:content xmlns="http://bali.us.oracle.com/cabo/marlin">
  <dataScope>
   <contents>
    <script>
     <contents>
      // clear out the previous selections
      function clearParams()
      {
       with(document.searchOSComponents)
       {
        hostNameText.value = "";
        componentNameText.value = "";
        operatingSystemText.value = "";
        groupMembershipText.value = "";
        descriptionText.value = "";
       }
      }
     </contents>
    </script>
    <form name="searchOSComponents" >
     <contents>
      <formValue name="blockStart" uix:value="blockStart@patchList"/>
      <formValue name="anchor" uix:value="anchor@patchList"/>
      <pageLayout xmlns="http://bali.us.oracle.com/cabo/marlin"
            uix:title="TITLE_SEARCHOSCOMPONENTS@ResourceBundle">
       <mediumAdvertisement>
        <include baja:node="../../oemBanner" />
       </mediumAdvertisement>
       <marlin:globalButtons>
        <include baja:node="../../globalButtonBar" />
       </marlin:globalButtons>
       <marlin:tabs>
        <include baja:node="../../globalTabs" />
       </marlin:tabs>
       <marlin:location>
        <include baja:node="../../breadCrumbs" />
       </marlin:location>
       <marlin:pageHeader>
        <include baja:node="../../globalHeader" />
       </marlin:pageHeader>
       <copyright>
        <include baja:node="../../copyright" />
       </copyright>

       <pageButtons>
        <pageButtonBar>
        <contents>
            <submitButton name="event"
                          value="doSQLSearch"
                          uix:text="BTN_SEARCHSQL@ResourceBundle"/>
        </contents>
        </pageButtonBar>
       </pageButtons>


       <contents>
        <messageBox automatic="true" />
         <!-- make sure valid patch data -->
         <switcher uix:childName="status@searchList" childName="success">
          <case name="failure">
           <messageBox automatic="false"
                       uix:text="errHdr@searchList"
                       uix:message="errMsg@searchList"
                       messageType="error" />
          </case>
          <case name="success">
           <stackLayout>
            <contents>
            <include baja:node="../../targetTime" />
              <header uix:text="HDR_SEARCHCRITERIA@ResourceBundle">
               <contents>
                <tableLayout width="65%" align="center">
                 <contents>

                  <rowLayout>
                   <contents>
                    <rowLayout hAlign="right">
                    <contents>
                    <cellFormat wrappingDisabled="true">
                     <contents>
                     <spacer width="10"/>
                     <styledText labeledNodeId="operatingSystemID" styleClass="OraPromptText" uix:text="LBL_OPERATINGSYSTEM@ResourceBundle"/>
                     </contents>
                     </cellFormat>
                    </contents>
                   </rowLayout>
                   <rowLayout hAlign="right">
                    <contents>
                     <spacer width="10"/>
                     <choice name="operatingSystemQuery"
                             id="operatingSystemID"
                             uix:selectedValue="operatingSystemQuery@searchData">
                      <contents>
                        <option uix:text="OPT_CONTAINS@ResourceBundle"
                                value="OPT_CONTAINS"/>
                        <option uix:text="OPT_EXACT@ResourceBundle"
                                value="OPT_EXACT"/>
                        <option uix:text="OPT_NOTEXACT@ResourceBundle"
                                value="OPT_NOTEXACT"/>
                        <option uix:text="OPT_NOTCONTAINS@ResourceBundle"
                                value="OPT_NOTCONTAINS"/>
                      </contents>
                    </choice>
                   </contents>
                  </rowLayout>
                  <rowLayout hAlign="left">
                   <contents>
                    <spacer width="20"/>
                    <textInput required="no"
                               name="operatingSystemText"
                               id="operatingSystemID"
                               uix:text="operatingSystemText@searchData"
                               columns="20"/>
                   </contents>
                  </rowLayout>
                 </contents>
                </rowLayout>

                  <rowLayout>
                   <contents>
                    <rowLayout hAlign="right">
                    <contents>
                    <cellFormat wrappingDisabled="true">
                     <contents>
                     <spacer width="10"/>
                     <styledText labeledNodeId="hostNameID" styleClass="OraPromptText" uix:text="LBL_HOSTNAME@ResourceBundle"/>
                     </contents>
                     </cellFormat>
                    </contents>
                   </rowLayout>
                   <rowLayout hAlign="right">
                    <contents>
                     <spacer width="10"/>
                     <choice name="hostNameQuery"
                             id ="hostNameID"                
                             uix:selectedValue="hostNameQuery@searchData">
                      <contents >
                        <option uix:text="OPT_CONTAINS@ResourceBundle"
                                value="OPT_CONTAINS"/>
                        <option uix:text="OPT_EXACT@ResourceBundle"
                                value="OPT_EXACT"/>
                        <option uix:text="OPT_NOTEXACT@ResourceBundle"
                                value="OPT_NOTEXACT"/>
                        <option uix:text="OPT_NOTCONTAINS@ResourceBundle"
                                value="OPT_NOTCONTAINS"/>
                      </contents>
                    </choice>
                   </contents>
                  </rowLayout>
                  <rowLayout hAlign="left">
                   <contents>
                    <spacer width="20"/>
                    <textInput required="no"
                               name="hostNameText"
                               id="hostNameID"                
                               uix:text="hostNameText@searchData"
                               columns="20"/>
                   </contents>
                  </rowLayout>
                 </contents>
                </rowLayout>

                  <rowLayout vAlign="top">
                   <contents>
                    <rowLayout hAlign="right">
                    <contents>
                    <cellFormat wrappingDisabled="true">
                     <contents>
                     <spacer width="10"/>
                     <styledText labeledNodeId="groupMembershipID" styleClass="OraPromptText" uix:text="LBL_GROUPNAME@ResourceBundle"/>
                     </contents>
                     </cellFormat>
                    </contents>
                   </rowLayout>
                   <rowLayout hAlign="right">
                    <contents>
                     <spacer width="10"/>
                     <choice name="groupMembershipQuery"
                             id="groupMembershipID"
                             uix:selectedValue="groupMembershipQuery@searchData">
                      <contents>
                        <option uix:text="OPT_CONTAINS@ResourceBundle"
                                value="OPT_CONTAINS"/>
                        <option uix:text="OPT_EXACT@ResourceBundle"
                                value="OPT_EXACT"/>
                        <option uix:text="OPT_NOTEXACT@ResourceBundle"
                                value="OPT_NOTEXACT"/>
                        <option uix:text="OPT_NOTCONTAINS@ResourceBundle"
                                value="OPT_NOTCONTAINS"/>
                      </contents>
                    </choice>
                   </contents>
                  </rowLayout>
                  <rowLayout hAlign="left">
                   <contents>
                    <spacer width="18"/>
                    <messageTextInput required="no"
                               uix:tip="LBL_HOSTGROUPHINT@ResourceBundle"
                               name="groupMembershipText"
                               id="groupMembershipID"
                               uix:text="groupMembershipText@searchData"
                               columns="20"/>
                   </contents>
                  </rowLayout>
                 </contents>
                </rowLayout>

                 <rowLayout>
                   <contents>
                    <rowLayout hAlign="right">
                    <contents>
                    <cellFormat wrappingDisabled="true">
                     <contents>
                     <spacer width="10"/>
                     <styledText labeledNodeId="componentNameID"  styleClass="OraPromptText" uix:text="LBL_COMPONENTNAME@ResourceBundle"/>
                     </contents>
                     </cellFormat>
                    </contents>
                   </rowLayout>
                   <rowLayout hAlign="right">
                    <contents>
                     <spacer width="10"/>
                     <choice name="componentNameQuery"
                             id="componentNameID"
                             uix:selectedValue="componentNameQuery@searchData">
                      <contents>
                       <option uix:text="OPT_CONTAINS@ResourceBundle"
                                value="OPT_CONTAINS"/>
                       <option uix:text="OPT_EXACT@ResourceBundle"
                                value="OPT_EXACT"/>
                       <option uix:text="OPT_NOTEXACT@ResourceBundle"
                                value="OPT_NOTEXACT"/>
                       <option uix:text="OPT_NOTCONTAINS@ResourceBundle"
                                value="OPT_NOTCONTAINS"/>
                      </contents>
                    </choice>
                   </contents>
                  </rowLayout>
                  <rowLayout hAlign="left">
                   <contents>
                    <spacer width="20"/>
                    <textInput required="no"
                               name="componentNameText"
                               id="componentNameID"
                               uix:text="componentNameText@searchData"
                               columns="20"/>
                   </contents>
                  </rowLayout>
                 </contents>
                </rowLayout>

                <rowLayout>
                 <contents>
                  <rowLayout hAlign="right">
                   <contents>
                    <cellFormat wrappingDisabled="true">
                     <contents>
                    <spacer width="10"/>
                    <styledText labeledNodeId="descriptionID"  styleClass="OraPromptText" uix:text="LBL_DESCRIPTION@ResourceBundle"/>
                     </contents>
                     </cellFormat>
                   </contents>
                  </rowLayout>
                  <rowLayout hAlign="right">
                   <contents>
                    <spacer width="10"/>
                    <choice name="descriptionQuery"
                        id="descriptionID"
                        uix:selectedValue="descriptionQuery@searchData">
                      <contents>
                       <option uix:text="OPT_CONTAINS@ResourceBundle"
                                value="OPT_CONTAINS"/>
                       <option uix:text="OPT_EXACT@ResourceBundle"
                                value="OPT_EXACT"/>
                       <option uix:text="OPT_NOTEXACT@ResourceBundle"
                                value="OPT_NOTEXACT"/>
                       <option uix:text="OPT_NOTCONTAINS@ResourceBundle"
                                value="OPT_NOTCONTAINS"/>
                      </contents>
                     </choice>
                    </contents>
                   </rowLayout>
                   <rowLayout hAlign="left">
                    <contents>
                     <spacer width="20"/>
                      <textInput required="no"
                                 name="descriptionText"
                                 id="descriptionID"
                                 uix:text="descriptionText@searchData"
                                 columns="20"/>
                    </contents>
                   </rowLayout>
                  </contents>
                 </rowLayout>

                </contents>
               </tableLayout>
              </contents>
             </header>
             <tableLayout width="45%" >
              <contents>
               <spacer height="5"/>
               <rowLayout hAlign="right">
                <contents>
                 <cellFormat wrappingDisabled="true">
                  <contents>
                   <submitButton name="event"
                                 value="doSearch"
                                 uix:text="BTN_SEARCH@ResourceBundle"/>
                   <spacer width="8"/>
                   <button uix:text="BTN_CLEAR@ResourceBundle"
                           onClick="clearParams();" />
                   <spacer width="8"/>
                  </contents>
                 </cellFormat>
                </contents>
               </rowLayout>
              </contents>
             </tableLayout>
             <header uix:text="HDR_RESULTS@ResourceBundle">
              <contents>

                <rowLayout hAlign="right">
                    <contents>
                     <button uix:text="BTN_SAVETOFILE@ResourceBundle"
                        destination="export/exportSearch$searchType=OperatingSystemComponentsInstalledonHosts"/>
                    </contents>
                  </rowLayout>
                  <html:br></html:br>
                  <spacer height="5"/>

               <table name="resultsTable"
                      width="100%"
                      formSubmitted="true"
                      minValue="1"
                      uix:value="value@searchList"
                      uix:maxValue="maxValue@searchList"
                      uix:blockSize="blockSize@searchList"
                      uix:alternateText="MSG_PRESSSEARCH@ResourceBundle"
                      uix:tableData="tabledata@searchList"
                      uix:summary="TBLSUM_RESULTSTABLE@PatchResourceBundle">
                <tableFormat tableBanding="rowBanding"/>

                <columnHeaderStamp>
                 <sortableHeader data:text="text"
                                uix:value="value"
                                uix:sortable="sort">
                   <boundAttribute name="sortable">
                    <defaulting>
                        <dataObject data:source="(value)@sortColumnHeader"/>
                        <dataObject select="sort"/>
                    </defaulting>
                   </boundAttribute>
                 </sortableHeader>
                </columnHeaderStamp>

                <columnHeaderData>
                 <col id="hdrcompname"  uix:text="LBL_COMPONENTNAME@ResourceBundle"   uix:sort="SORT_COMPONENTNAME@searchList"    value="LBL_COMPONENTNAME"/>
                 <col id="hdrcomptype"  uix:text="LBL_COMPONENTTYPE@ResourceBundle"   uix:sort="SORT_COMPONENTTYPE@searchList"    value="LBL_COMPONENTTYPE"/>
                 <col id="hdros"        uix:text="LBL_OPERATINGSYSTEM@ResourceBundle" uix:sort="SORT_OPERATINGSYSTEM@searchList"  value="LBL_OPERATINGSYSTEM"/>
                 <col id="hdrhostname"  uix:text="LBL_HOSTNAME@ResourceBundle"        uix:sort="SORT_HOSTNAME@searchList"         value="LBL_HOSTNAME"/>
                 <col id="hdrdesc"      uix:text="LBL_DESCRIPTION@ResourceBundle"     uix:sort="SORT_DESCRIPTION@searchList"      value="LBL_DESCRIPTION"/>
                </columnHeaderData>

                <contents>
                 <styledText headers="hdrcompname" uix:text="LBL_COMPONENTNAME"/>
                 <styledText headers="hdrcomptype" uix:text="LBL_COMPONENTTYPE"/>
                 <link       headers="hdros" uix:text="LBL_OPERATINGSYSTEM"
                       uix:destination="LBL_OPERATINGSYSTEM^LBL_HOSTNAME"/>
                 <link       headers="hdrhostname" uix:text="LBL_HOSTNAME"
                       uix:destination="LBL_HOSTNAME^"/>
                 <styledText headers="hdrdesc"     uix:text="LBL_DESCRIPTION"/>
                </contents>
               </table>
              </contents>
             </header>
          </contents>
         </stackLayout>
        </case>
       </switcher>
      </contents>
     </pageLayout>
    </contents>
   </form>
  </contents>
  <provider>
   <data name="searchCallbackText">
    <inline innerQuery="select c.name || ' ' || c.version as LBL_COMPONENTNAME, c.type as LBL_COMPONENTTYPE, o.name || ' ' || o.base_version as LBL_OPERATINGSYSTEM, c.host as LBL_HOSTNAME, c.description as LBL_DESCRIPTION from mgmt$os_components c, mgmt$os_summary o where c.type !='Patch' and o.host = c.host"/>
   </data>
    <data name="columnListInfo">
     <inline>
      <column displayName="LBL_COMPONENTNAME"
              filterOp="componentNameQuery"
              filterVal="componentNameText"/>
      <column displayName="LBL_COMPONENTTYPE"/>
      <column displayName="LBL_OPERATINGSYSTEM"
              destLink="ecm/track/hc/view/osGeneral$target=LBL_HOSTNAME$type=host?event=doLoad"
              filterOp="operatingSystemQuery"
              filterVal="operatingSystemText"/>
      <column displayName="LBL_HOSTNAME"
              destLink="monitoring/hostOverview$target=LBL_HOSTNAME$ctxType=All Targets$type=host?event=doLoad"
              filterOp="hostNameQuery"
              filterVal="hostNameText"/>
      <column displayName="LBL_DESCRIPTION"   
              filterOp="descriptionQuery"
              filterVal="descriptionText"/>
      <column displayName="LBL_GROUPNAME"
              selectColumn="false"
              filterOp="groupMembershipQuery"
              filterVal="groupMembershipText"
              OPT_CONTAINS="membershipContainsOperator"
              OPT_NOTCONTAINS="membershipNotContainsOperator"
              OPT_EXACT="membershipExactOperator"
              OPT_NOTEXACT="membershipNotExactOperator"/>
     </inline>
    </data>
    <data name="predicateOperatorOverrides">
      <inline>
        <condition name="membershipContainsOperator"
                   predicate="exists (select * from mgmt$group_flat_memberships where disjunction and member_target_name = LBL_HOSTNAME and member_target_type = 'host')"
                   disjunction="NLS_UPPER( composite_target_name ) like NLS_UPPER( '%filterVal%' ) {escape '#'} " />
        <condition name="membershipNotContainsOperator"
                   predicate="not exists (select * from mgmt$group_flat_memberships where disjunction and member_target_name = LBL_HOSTNAME and member_target_type = 'host' )"
                   disjunction="NLS_UPPER( composite_target_name ) like NLS_UPPER( '%filterVal%' ) {escape '#'} " />
        <condition name="membershipExactOperator"
                   predicate="exists (select * from mgmt$group_flat_memberships where disjunction and member_target_name = LBL_HOSTNAME and member_target_type = 'host')"
                   disjunction="composite_target_name = 'filterVal'" />
        <condition name="membershipNotExactOperator"
                   predicate="not exists (select * from mgmt$group_flat_memberships where disjunction and member_target_name = LBL_HOSTNAME and member_target_type = 'host')"
                   disjunction="composite_target_name = 'filterVal'" />
      </inline>
    </data>
    <data name="ResourceBundle">
     <bundle class = "oracle.sysman.eml.ecm.search.util.SearchResourceBundle"/>
    </data>
     <data name="PatchResourceBundle">
       <bundle class = "oracle.sysman.eml.ecm.patch.util.PatchResourceBundle"/>
    </data>
   <data name="searchData">
     <method class="oracle.sysman.eml.ecm.search.SearchData"
             method="populateSearchData"/>
    </data>
    <data xmlns="http://bali.us.oracle.com/cabo/marlin" name="searchList">
     <method class="oracle.sysman.eml.ecm.search.SearchData"
             method="populateResultsTable"/>
    </data>
   <data name="sortColumnHeader">
     <method class="oracle.sysman.eml.ecm.search.SearchData"
             method="getSortColumnHeader"/>
    </data>


   </provider>
  </dataScope>
 </baja:content>

 <handlers>

  <event name="sort">
   <method class="oracle.sysman.eml.ecm.search.SearchHandler"
           method="doSort"/>
  </event>
  <event name="doSearch">
   <method class="oracle.sysman.eml.ecm.search.SearchHandler"
           method="doSearch"/>
  </event>
  <event name="doSQLSearch">
   <method class="oracle.sysman.eml.ecm.search.SearchHandler"
           method="doSQLSearch"/>
  </event>
  
  <!-- This handles the next/prev buttons in the results table -->
  <event name="goto">
   <method class="oracle.sysman.eml.ecm.search.SearchHandler"
           method ="tableGoto"/>
  </event>
 </handlers>
</page>