<!--

    Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
    Copyright (c) 2021 Contributors to the Eclipse Foundation

    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

-->

<!initPage
    setResourceBundle(key="i18n" bundle="org.glassfish.admingui.core.Strings")
    setResourceBundle(key="i18nc" bundle="org.glassfish.common.admingui.Strings")
    setResourceBundle(key="help_common" bundle="org.glassfish.common.admingui.Helplinks");
/>
<!composition template="/templates/default.layout"  guiTitle="$resource{i18n.instanceValues.PageTitle, $pageSession{propName}}" >
<!define name="content">
    <event>
        <!beforeCreate
            getRequestValue(key="configName" value="#{pageSession.configName}");
            getRequestValue(key="propName" value="#{pageSession.propName}");

            setPageSessionAttribute(key="parentPage", value="#{request.contextPath}/common/configuration/configurationSystemProperties.jsf?configName=#{pageSession.configName}");
            setPageSessionAttribute(key="selfPage", value="#{request.contextPath}/common/configuration/sysInstanceValues.jsf?configName=#{pageSession.configName}");
            setPageSessionAttribute(key="parentUrl", value="#{sessionScope.REST_URL}/configs/config/#{pageSession.configName}");
            setPageSessionAttribute(key="selfUrl", value="#{pageSession.parentUrl}/system-properties");
            gf.restRequest(endpoint="#{sessionScope.REST_URL}/configs/config/#{pageSession.configName}/system-property/#{pageSession.propName}", method="get",
                result="#{requestScope.result}");
            setPageSessionAttribute(key="defaultValue", value="#{requestScope.result.data.extraProperties.entity.value}");

            // Get instance to cluster mapping
            createMap(result="#{requestScope.instanceMapping}");
            gf.restRequest(endpoint="#{sessionScope.REST_URL}/clusters/cluster", method="get", result="#{requestScope.clusterResult}");
            gf.getMapKeys(Map="#{requestScope.clusterResult.data.extraProperties.childResources}", Keys="#{requestScope.clusters}");
            foreach (var="cluster", list="#{requestScope.clusters}") {
                gf.restRequest(endpoint="#{sessionScope.REST_URL}/clusters/cluster/#{cluster}/server-ref", method="get", result="#{requestScope.serverRefResults}");
                gf.getMapKeys(Map="#{requestScope.serverRefResults.data.extraProperties.childResources}", Keys="#{requestScope.serverRefs}");
                foreach (var="serverRef", list="#{requestScope.serverRefs}") {
                    mapPut(map="#{requestScope.instanceMapping}", key="#{serverRef}", value="#{cluster}");
                }
            }
            
            createList(result="#{pageSession.tableList}" size="0");
            gf.restRequest(endpoint="#{sessionScope.REST_URL}/servers/server", method="get", result="#{requestScope.result}");
            gf.getMapKeys(Map="#{requestScope.result.data.extraProperties.childResources}", Keys="#{requestScope.instances}");
            foreach (var="instance", list="#{requestScope.instances}") {
                gf.restRequest(endpoint="#{sessionScope.REST_URL}/servers/server/#{instance}", method="get", result="#{requestScope.instanceResults}");
                if ("#{requestScope.instanceResults.data.extraProperties.entity.configRef}=#{pageSession.configName}") {
                    createMap(result="#{requestScope.instanceMap}");
                    gf.restRequest(endpoint="#{sessionScope.REST_URL}/servers/server/#{instance}/system-properties", method="get", result="#{requestScope.result}");
                    mapPut(map="#{requestScope.instanceMap}", key="instance", value="#{instance}");
                    mapPut(map="#{requestScope.instanceMap}", key="currentOverrideValue", value="");
                    mapPut(map="#{requestScope.instanceMap}", key="overrideValue", value="");
                    mapPut(map="#{requestScope.instanceMap}", key="cluster", value="");
                    foreach(var="sysprop", list="#{requestScope.result.data.extraProperties.systemProperties}") {
                        if ("#{sysprop.name}=#{propName}") {
                            if ("#{sysprop.value}") {
                                mapPut(map="#{requestScope.instanceMap}", key="currentOverrideValue", value="#{sysprop.value}");
                                mapPut(map="#{requestScope.instanceMap}", key="overrideValue", value="#{sysprop.value}");
                            }
                        }
                    }
                    setAttribute(key="tmp" value="#{instance}");
                    if ("!empty #{requestScope.instanceMapping['$attribute{tmp}']}") {
                        mapPut(map="#{requestScope.instanceMap}", key="cluster", value="#{requestScope.instanceMapping['$attribute{tmp}']}");
                    }
                    listAdd(list="#{pageSession.tableList}", value="#{requestScope.instanceMap}");
                }
            }
        />
    </event>
    <sun:form id="propertyForm">
        <sun:title id="propertyContentPage" title="$resource{i18n.instanceValues.PageTitle,$pageSession{propName}}" >
            <!facet pageButtonsTop>
                <sun:panelGroup id="topButtons">
                    <sun:button id="saveButton" text="$resource{i18n.button.Save}" >
                        <!command
                            foreach (var="row" list="#{pageSession.tableList}") {
                                createMap(result="#{requestScope.attrs}");
                                mapPut(map="#{requestScope.attrs}", key="value", value="#{row.overrideValue}");
                                if ("!(#{row.overrideValue}=#{row.currentOverrideValue})") {
                                    if ("#{row.overrideValue}") {
                                        gf.restRequest(endpoint="#{sessionScope.REST_URL}/servers/server/#{row.instance}/system-properties/#{pageSession.propName}", method="POST",
                                            data="#{requestScope.attrs}", contentType="application/x-www-form-urlencoded", result="#{requestScope.restResponse}");
                                    }
                                    if ("!#{row.overrideValue}") {
                                        gf.restRequest(endpoint="#{sessionScope.REST_URL}/servers/server/#{row.instance}/system-properties/#{pageSession.propName}", method="DELETE",
                                            result="#{requestScope.restResponse}");
                                    }
                                }
                            }
                            prepareSuccessfulMsg();
                            gf.redirect(page="#{request.contextPath}#{pageSession.selfPage}&propName=#{pageSession.propName}&alertType=${alertType}&alertSummary=${alertSummary}&alertDetail=${alertDetail}");
                        />
                    </sun:button>

                    <sun:button id="cancelButton" immediate="#{true}" primary="#{false}" rendered="#{pageSession.showCancelButton}" text="$resource{i18n.button.Cancel}" >
                        <!command
                            gf.redirect(page="#{parentPage}");
                        />
                    </sun:button>
                </sun:panelGroup>
            </facet>
        </sun:title>
#include "/common/shared/alertMsg.inc"
#include "/common/shared/configNameSection.inc"
        <sun:table id="basicTable"  style="padding: 10pt" title="$resource{i18n.common.AdditionalProperties}">
            <!afterCreate
                getClientId(component="$this{component}" clientId=>$page{tableId});
            />
            <sun:tableRowGroup id="rowGroup1" data={"$pageSession{tableList}"} sourceVar="td">
                <ui:event type="afterCreate">
                    getClientId(component="$this{component}" clientId=>$page{propertyTableRowGroupId});
                </ui:event>
                <sun:tableColumn id="nameCol" headerText="$resource{i18n.instanceValues.colInstanceName}" sort="name" rowHeader="$boolean{false}" >
                    <sun:hyperlink id="saLink" url="/cluster/cluster/clusterInstanceEdit.jsf?clusterName=#{td.value.cluster}&instanceName=#{td.value.instance}"
                        rendered="#{!empty td.value.cluster}" text="#{td.value.instance}"/>
                    <h:outputText rendered="#{empty td.value.cluster}" value="#{td.value.instance}"/>
                </sun:tableColumn>
                <sun:tableColumn id="clusterCol" headerText="$resource{i18n.instanceValues.colClusterName}" sort="value" rendered="#{!empty td.value.cluster}" rowHeader="$boolean{false}">
                    "#{td.value.cluster}
                </sun:tableColumn>
                <sun:tableColumn id="defValCol" headerText="$resource{i18n.systemProps.colDefaultValue}" sort="value" rowHeader="$boolean{false}">
                    "#{pageSession.defaultValue}
                </sun:tableColumn>
                <sun:tableColumn id="overrideValCol" headerText="$resource{i18n.inst.ColOverrideValue}" sort="value" rowHeader="$boolean{false}">
                    <sun:textField id="overrideVal" columns="$int{40}" maxLength="#{sessionScope.fieldLengths['maxLength.common.PropertyValue']}" value="#{td.value.overrideValue}" />
                </sun:tableColumn>
                "<br/>
            </sun:tableRowGroup>
        </sun:table>

    <sun:hidden id="helpKey" value="$resource{help_common.sysInstanceValues}" />
    </sun:form>
#include "/common/shared/changeButtonsJS.inc"
</define>
</composition>
