<!--

    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!-- jca/jcaResourceEdit.jsf -->
<!initPage
    setResourceBundle(key="i18njca" bundle="org.glassfish.jca.admingui.Strings");
    setResourceBundle(key="help_jca" bundle="org.glassfish.jca.admingui.Helplinks")
/>
<!composition template="/templates/default.layout"  guiTitle="$resource{i18njca.adminObjectResource.editPageTitle}" >
<!define name="content">
<event>
    <!beforeCreate
    getRequestValue(key="reload" value="#{reload}");
    if(#{reload}){
         createMap(result="#{pageSession.tmpMap}")
         getRequestValue(key="name" value="#{pageSession.Name}");
         getRequestValue(key="resAdapter" value="#{resAdapter}");
         getRequestValue(key="resType" value="#{resType}");
         getRequestValue(key="className" value="#{className}");
         getRequestValue(key="status" value="#{status}");
         getRequestValue(key="description" value="#{desc}");
         mapPut(map="#{pageSession.tmpMap}" key="name" value="#{pageSession.Name}");
         mapPut(map="#{pageSession.tmpMap}" key="resAdapter" value="#{resAdapter}");
         mapPut(map="#{pageSession.tmpMap}" key="resType" value="#{resType}");
         mapPut(map="#{pageSession.tmpMap}" key="className" value="#{className}");
         mapPut(map="#{pageSession.tmpMap}" key="description" value="#{desc}");
    }
    if(!#{reload}){
        getRequestValue(key="name" value="#{pageSession.Name}");
    }
    urlencode(value="#{pageSession.Name}" encoding="UTF-8" result="#{pageSession.encodedName}");
    getRequestValue(key="isAppScopedRes" value="#{pageSession.isAppScopedRes}");
    if(#{pageSession.isAppScopedRes}){
        getRequestValue(key="appName" value="#{pageSession.encodedAppName}");
        getRequestValue(key="moduleName" value="#{pageSession.moduleName}");
        if(#{pageSession.moduleName}) {
            urlencode(value="#{pageSession.moduleName}" encoding="UTF-8" result="#{pageSession.encodedModuleName}");
            setPageSessionAttribute(key="selfPage" value="#{request.contextPath}/jca/adminObjectEdit.jsf?name=#{pageSession.encodedName}&isAppScopedRes=$boolean{true}&appName=#{pageSession.encodedAppName}&moduleName=#{pageSession.encodedModuleName}");
            setPageSessionAttribute(key="parentUrl", value="#{sessionScope.REST_URL}/applications/application/#{pageSession.encodedAppName}/module/#{pageSession.encodedModuleName}/resources");
        }
        if(!#{pageSession.moduleName}) {
            setPageSessionAttribute(key="selfPage" value="#{request.contextPath}/jca/adminObjectEdit.jsf?name=#{pageSession.encodedName}&isAppScopedRes=$boolean{true}&appName=#{pageSession.encodedAppName}");
            setPageSessionAttribute(key="parentUrl", value="#{sessionScope.REST_URL}/applications/application/#{pageSession.encodedAppName}/resources");
        }
        setPageSessionAttribute(key="parentPage" value="#{request.contextPath}/common/applications/resources/appScopedResources.jsf?appName=#{pageSession.encodedAppName}&listPageLink=/common/applications/applications.jsf");
    }
    if(!#{pageSession.isAppScopedRes}){
        setPageSessionAttribute(key="selfPage" value="#{request.contextPath}/jca/adminObjectEdit.jsf?name=#{pageSession.encodedName}");
        setPageSessionAttribute(key="parentPage" value="#{request.contextPath}/jca/adminObjectResources.jsf");
        setPageSessionAttribute(key="parentUrl", value="#{sessionScope.REST_URL}/resources");
    }    
    setPageSessionAttribute(key="childType" value="admin-object-resource");
    //For resourceEditTabs.inc
    setSessionAttribute(key="resEditTabs" value="general");
    setPageSessionAttribute(key="generalPage" value="#{pageSession.selfPage}");
    setPageSessionAttribute(key="targetPage" value="#{request.contextPath}/common/resourceNode/resourceEditTargets.jsf?name=#{pageSession.encodedName}");
    
    setPageSessionAttribute(key="selfUrl", value="#{pageSession.parentUrl}/#{pageSession.childType}/#{pageSession.encodedName}");
    gf.getEntityAttrs(endpoint="#{pageSession.selfUrl}", valueMap="#{pageSession.valueMap}");
    
    setPageSessionAttribute(key="convertToFalseList" value={"enabled"});
    setPageSessionAttribute(key="skipAttrsList", value={"jndiName"});
    gf.restRequest(endpoint="#{pageSession.selfUrl}/property.json" method="GET" result="#{requestScope.propTable}");
    
    //set the following for including buttons.inc
    setPageSessionAttribute(key="edit" value="#{true}" );
    setPageSessionAttribute(key="showCancelButton" value="#{true}" );
    setPageSessionAttribute(key="hasPropertySheet" value="#{true}" );
    setPageSessionAttribute(key="hasPropertyTable" value="#{true}" );
    setPageSessionAttribute(key="reload" value="#{false}" );
    
    setPageSessionAttribute(key="convertToFalseList2" value={"enabled"});

    gf.getAdminObjectResourceWizard(
        reload="#{reload}"
        attrMap="#{pageSession.tmpMap}"
        currentMap="#{pageSession.valueMap}"
        valueMap=>$pageSession{valueMap});
    //To get the resource types
    createMap(result="#{pageSession.attrsMap}");
    mapPut(map="#{pageSession.attrsMap}" key="rarName" value="#{pageSession.valueMap.resAdapter}");
    gf.restRequest(endpoint="#{sessionScope.REST_URL}/resources/get-admin-object-interface-names"
                   attrs="#{pageSession.attrsMap}"
                   method="GET"
                   result="#{requestScope.result}");
    setAttribute(key="resourceTypes" value="#{requestScope.result.data.extraProperties.adminObjectInterfaceNames}");
    setAttribute(key="zero" value="$int{0}");
    setAttribute(key="size" value="#{requestScope.resourceTypes.size()}");
    if (#{requestScope.size} > #{requestScope.zero}) {
        if("!(#{pageSession.valueMap['resType']})") {
            mapPut(map="#{pageSession.valueMap}" key="resType" value="#{requestScope.resourceTypes[0]}");
        }
        mapPut(map="#{pageSession.attrsMap}" key="adminObjectInterface" value="#{pageSession.valueMap.resType}");
        //To get the admin-object-config-props
        gf.restRequest(endpoint="#{sessionScope.REST_URL}/resources/get-admin-object-config-properties"
                       attrs="#{pageSession.attrsMap}"
                       method="GET"
                       result="#{requestScope.result}");
        gf.buildConfidentialPropsTable(propsMaps="#{requestScope.propTable.data.extraProperties.properties}"
                                       confidentialList="#{requestScope.result.data.extraProperties.confidentialConfigProps}"
                                       result="#{pageSession.tableList}"
                                       hasConfidentialProps="#{pageSession.hasConfidential}");

        //To get the get-admin-object-class-names
        gf.restRequest(endpoint="#{sessionScope.REST_URL}/resources/get-admin-object-class-names"
                       attrs="#{pageSession.attrsMap}"
                       method="GET"
                       result="#{requestScope.result}");
        setAttribute(key="classNames" value="#{requestScope.result.data.extraProperties.adminObjectClassNames}");
        setAttribute(key="size" value="#{requestScope.resourceTypes.size()}");
        if (#{requestScope.size} > #{requestScope.zero}) {
            if(!#{pageSession.valueMap['className']}) {
                mapPut(map="#{pageSession.valueMap}" key="className" value="#{requestScope.classNames[0]}");
            }
        }        
    }
    />
</event>
<sun:form id="propertyForm">
#include "/common/resourceNode/resourceEditTabs.inc"
#include "/common/shared/alertMsg_1.inc"
    
    <!-- Page Title -->
    <sun:title id="propertyContentPage" title="$resource{i18njca.adminObjectResource.editPageTitle}" helpText="$resource{i18njca.adminObjectResource.editPageHelp}" >
#include "/common/resourceNode/resourceEditPageButtons.inc"
    </sun:title>
    "<br><br>
    
#include "/jca/adminObjectAttr.inc"
#include "/common/resourceNode/confidentialPropsTable.inc"
    
    <sun:hidden id="helpKey" value="$resource{help_jca.adminObjectEdit}" />
</sun:form>
            "<br/>
#include "/common/shared/changeButtonsJS.inc" 
</define>
</composition>


