All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.bund.bva.isyfact.common.web.global.AbstractGuiController Maven / Gradle / Ivy

Go to download

Die IsyFact-Standards bilden das architektonische, technologische und methodische Fundament der IsyFact. Sie umfassen allgemeingültige und wiederverwendbare Konzepte und Komponenten, die für die Entwicklung beliebiger Fachanwendungen relevant sind.

There is a newer version: 6.2.0
Show newest version
/*
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 * The Federal Office of Administration (Bundesverwaltungsamt, BVA)
 * licenses this file to you under the Apache License, Version 2.0 (the
 * License). You may not use this file except in compliance with the
 * License. You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
package de.bund.bva.isyfact.common.web.global;

import java.util.Map;

import org.springframework.webflow.core.collection.MutableAttributeMap;
import org.springframework.webflow.execution.RequestContextHolder;

/**
 * Der abstrakte GUI-Controller. Gibt Methoden und Konfigurationen vor, welcher jeder Masken-Controller oder
 * Teimasken-Controller bereitstellen muss.
 *
 * @param 
 *            Das spezifische AbstractMaskenModel.
 *
 * @author Capgemini, Andreas Hörning.
 * @version $Id: AbstractGuiController.java 130157 2015-02-11 16:02:52Z sdm_ahoerning $
 */
public abstract class AbstractGuiController implements RfGuiController {

    /**
     * Extrahiert ein Model vom Typ {@link AbstractMaskenModel} aus dem FlowScope.
     *
     * @return das MaskenModel oder null, falls dieses nicht gefunden wurde.
     */
    public T getMaskenModelZuController() {
        Class modelKlasse = getMaskenModelKlasseZuController();

        Map flowScopeAttributeMap = getFlowScopeAttributeMap();
        if (flowScopeAttributeMap == null) {
            return null;
        }
        for (Object flowScopeAttribute : flowScopeAttributeMap.values()) {
            if (flowScopeAttribute == null) {
                continue;
            }

            if (modelKlasse.isAssignableFrom(flowScopeAttribute.getClass())
                && flowScopeAttribute.getClass().isAssignableFrom(modelKlasse)) {
                T result = modelKlasse.cast(flowScopeAttribute);
                return result;
            }
        }

        return null;
    }

    /**
     * Gibt den Inhalt des Flow-Scopes zurück.
     * @return Der Inhalt des Flowscopes.
     */
    private Map getFlowScopeAttributeMap() {
        MutableAttributeMap mutualAttributeMap =
            RequestContextHolder.getRequestContext().getFlowScope();
        Map result = mutualAttributeMap.asMap();
        return result;
    }

    /**
     * Gibt die durch den Controller verwaltete {@link AbstractMaskenModel}-Klasse zurueck.
     *
     * @return das {@link AbstractMaskenModel}.
     */
    protected abstract Class getMaskenModelKlasseZuController();

}