<!--
 * Copyright (c) 2001, 2003, Oracle Corporation.  All rights reserved.  
 *
 *      NAME
 *       searchPolicyDetailsOnHosts.uix
 *
 *      NOTES
 *       Search Hosts for Policy Compliance (details)
 *
 * MODIFIED (MM/DD/YY)  VERSION
 *    awarka 12/03/03 - Bug Fix For Issue#3280397 
 *    kchias 10/08/03 - add login to title 
 *    shuber 09/30/03 - Use group_flat_memberships 
 *    groyal 09/05/03 - Fix filters 
 *    groyal 08/26/03 - Change ignored filter 
 *    groyal 07/24/03 - 
 *    kchias 06/30/03 - fix date display
 *    groyal 06/11/03 - Add nls support
 *    groyal 06/04/03 - Minor policy api changes
 *    groyal 05/23/03 - groyal_policy_0521
 *    groyal 05/23/03 - Creation
 *
 *
 *  @author  groyal
 *
-->
<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_SEARCHPOLICYDETAILSONHOSTS" 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.searchPolicyDetailsOnHosts)
       {
         hostNameText.value = "";
         endDate.value = "";
         groupMembershipText.value = "";
       }
      }
     </contents>
    </script>
    <form name="searchPolicyDetailsOnHosts" >
     <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_SEARCHPOLICYDETAILSONHOSTS@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 policy 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="policyPriorityID" styleClass="OraPromptText" uix:text="LBL_POLICYPRIORITY@ResourceBundle"/>
                     </contents>
                    </cellFormat>
                  </contents>
                  </rowLayout>
                  <rowLayout hAlign="right">
                   <contents>
                    <spacer width="10"/>
                    <choice name="policyPriorityEnum"
                            id="policyPriorityID"
                            uix:selectedValue="policyPriorityEnum@searchData">
                     <contents>
                        <option uix:text="OPT_ALL@ResourceBundle"
                                value="OPT_ALL"/>
                        <option uix:text="OPT_HIGH@ResourceBundle"
                                value="4"/>
                        <option uix:text="OPT_MEDIUM@ResourceBundle"
                                value="3"/>     
                        <option uix:text="OPT_INFORMATIONAL@ResourceBundle"
                                value="1"/>                                  
                     </contents>
                    </choice>
                   </contents>
                  </rowLayout>
                 </contents>
                </rowLayout>

                <rowLayout>
                 <contents>
                  <rowLayout hAlign="right">
                   <contents>
                    <cellFormat wrappingDisabled="true">
                     <contents>
                      <spacer width="10"/>
                      <styledText labeledNodeId="policyIgnoredFlagID" styleClass="OraPromptText" uix:text="LBL_POLICYVIOLATIONS@ResourceBundle"/>
                     </contents>
                    </cellFormat>
                  </contents>
                  </rowLayout>
                  <rowLayout hAlign="right">
                   <contents>
                    <spacer width="10"/>
                    <choice name="policyIgnoredFlagEnum"
                            id="policyIgnoredFlagID"
                            uix:selectedValue="policyIgnoredFlagEnum@searchData">
                     <contents>
                        <option uix:text="OPT_VIOLATIONS@ResourceBundle"
                                value="N"/>
                        <option uix:text="OPT_VIOLATIONS_ALL@ResourceBundle"
                                value="OPT_ALL"/>                                        
                     </contents>
                    </choice>
                   </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="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>
                 <contents>
                  <cellFormat wrappingDisabled="true">
                   <contents>
                    <rowLayout hAlign="right">
                     <contents>                      
                      <styledText labeledNodeId="endDateID" styleClass="OraPromptText" 
                                 uix:text="LBL_POLICYSINCEDATE@ResourceBundle"/>
                     </contents>
                    </rowLayout>
                   </contents>
                  </cellFormat>
                  <cellFormat wrappingDisabled="true">
                   <contents>
                    <rowLayout  hAlign="right">
                     <contents>
                      <messageDateField name="endDate"
                                 uix:tip="tipDate@searchData"
                                 id="endDateID"
                                 uix:value="endDate@searchData"
                                 columns="11">
                       <onSubmitValidater>
                        <date dateStyle="short" />
                       </onSubmitValidater>
                      </messageDateField>
                     </contents>
                    </rowLayout>
                   </contents>
                  </cellFormat>
                 </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=searchPolicyDetailsOnHosts"/>
                    </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">
                <tableFormat tableBanding="rowBanding"/>

                <columnHeaderData>
                 <col uix:text="LBL_POLICYPRIORITY@ResourceBundle"     uix:sort="SORT_POLICYPRIORITY@searchList"    value="LBL_POLICYPRIORITY"/>
                 <col uix:text="LBL_POLICYRULE@ResourceBundle"         uix:sort="SORT_POLICYRULE@searchList"        value="LBL_POLICYRULE"/>
                 <col uix:text="LBL_POLICYCATEGORY@ResourceBundle"     uix:sort="SORT_POLICYCATEGORY@searchList"    value="LBL_POLICYCATEGORY"/>                 
                 <col uix:text="LBL_HOSTNAME@ResourceBundle"           uix:sort="SORT_HOSTNAME@searchList"          value="LBL_HOSTNAME"/>
                 <col uix:text="LBL_POLICYRECOMM@ResourceBundle"       uix:sort="SORT_POLICYRECOMM@searchList"      value="LBL_POLICYRECOMM"/>
                 <col uix:text="LBL_POLICYVIOLATION@ResourceBundle"    uix:sort="SORT_POLICYVIOLATION@searchList"   value="LBL_POLICYVIOLATION"/>
                 <col uix:text="LBL_LASTDATE@ResourceBundle"           uix:sort="SORT_LASTDATE@searchList"          value="LBL_LASTDATE"/>
                 <col uix:text="LBL_SINCEDATE@ResourceBundle"          uix:sort="SORT_SINCEDATE@searchList"         value="LBL_SINCEDATE"/>
                 <col uix:text="LBL_POLICYIGNOREDFLAG@ResourceBundle"  uix:sort="SORT_POLICYIGNOREDFLAG@searchList" value="LBL_POLICYIGNOREDFLAG"/>
                 <col uix:text="LBL_POLICYIGNOREDBY@ResourceBundle"    uix:sort="SORT_POLICYIGNOREDBY@searchList"   value="LBL_POLICYIGNOREDBY"/>
                </columnHeaderData>

                <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>

                <columnFormats>
                    <columnFormat columnDataFormat="iconButtonFormat"/>
                    <columnFormat columnDataFormat="textFormat"/>
                    <columnFormat columnDataFormat="textFormat"/>
                    <columnFormat columnDataFormat="textFormat"/>
                    <columnFormat columnDataFormat="textFormat"/>
                    <columnFormat columnDataFormat="textFormat"/>                  
                    <columnFormat columnDataFormat="textFormat"/>                    
                    <columnFormat columnDataFormat="textFormat"/>
                    <columnFormat columnDataFormat="textFormat"/>
                    <columnFormat columnDataFormat="textFormat"/>
                </columnFormats>

                <contents>
                 <image data:source="LBL_POLICYPRIORITY"/>
                 <styledText uix:text="LBL_POLICYRULE"/>
                 <styledText uix:text="LBL_POLICYCATEGORY"/>
                 <styledText uix:text="LBL_HOSTNAME"
                      uix:destination="LBL_HOSTNAME^"/>  
                 <styledText uix:text="LBL_POLICYRECOMM"/>
                 <styledText uix:text="LBL_POLICYVIOLATION"/>   
                 <styledText uix:text="LBL_LASTDATE"/>
                 <styledText uix:text="LBL_SINCEDATE"/>
                 <styledText uix:text="LBL_POLICYIGORNEFLAG"/> 
                 <styledText uix:text="LBL_POLICYIGORNEOWNER"/>                
                </contents>
               </table>
              </contents>
             </header>
          </contents>
         </stackLayout>
        </case>
       </switcher>
      </contents>
     </pageLayout>
    </contents>
   </form>
  </contents>
  <provider>
   <data name="searchCallbackText">
    <inline innerQuery="select priority as LBL_POLICYPRIORITY, display_id || '_NAME%' || policy_rule_name as LBL_POLICYRULE, display_id || '_CATEGORY%' || category as LBL_POLICYCATEGORY, host_name as LBL_HOSTNAME, display_id || '_RECOM%' || recommendation as LBL_POLICYRECOMM, key_column as LBL_POLICYVIOLATION, last_date as LBL_LASTDATE, since_date as LBL_SINCEDATE, nvl(ignored_flag, 'N') as LBL_POLICYIGNOREDFLAG, ignored_by as LBL_POLICYIGNOREDBY, policy_rule_name as LBL_RULE_FILTER, category as LBL_CATEGORY_FILTER from MGMT$HOST_POLICY_VIOLATIONS order by LBL_POLICYPRIORITY desc, LBL_HOSTNAME" />
   </data>
    <data name="columnListInfo">
     <inline>
      <column displayName="LBL_POLICYPRIORITY"
              iconColumn="true"
              filterOp="OPT_ENUMERATION"
              filterVal="policyPriorityEnum"
              valFormat="numericFormat"/>        
      <column displayName="LBL_POLICYRULE"
              nlsIdColumn="true"/> 
      <column displayName="LBL_POLICYCATEGORY"
              nlsIdColumn="true"/> 
      <column displayName="LBL_HOSTNAME"
              destLink="monitoring/hostOverview$target=LBL_HOSTNAME$ctxType=All Targets$type=host?event=doLoad"
              filterOp="hostNameQuery"
              filterVal="hostNameText"/>
      <column displayName="LBL_POLICYRECOMM"
              nlsIdColumn="true"/>            
      <column displayName="LBL_POLICYVIOLATION"/>       
      <column displayName="LBL_LASTDATE" 
              valFormat="dateFormat"/>
      <column displayName="LBL_SINCEDATE"
              filterOp="OPT_BETWEEN"
              filterVal="null,endDate"
              valFormat="dateFormat"/>
      <column displayName="LBL_POLICYIGNOREDFLAG"
              filterOp="OPT_ENUMERATION"
              filterVal="policyIgnoredFlagEnum"/>   
      <column displayName="LBL_POLICYIGNOREDBY"/>               
      <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="iconSourceData">
      <inline>         
        <condition value="1"
                   iconImage = "images/infoicon_active.gif" />
        <condition value="3"
                   iconImage = "images/warning.gif" />
        <condition value="4"
                   iconImage = "images/critical.gif" />    
      </inline>
    </data>
    <data name="ResourceBundle">
     <bundle class = "oracle.sysman.eml.ecm.search.util.SearchResourceBundle"/>
    </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>


