org.overlord.dtgov.ui.client.local.beans.UiConfiguration.java Source code

Java tutorial

Introduction

Here is the source code for org.overlord.dtgov.ui.client.local.beans.UiConfiguration.java

Source

/*
 * Copyright 2013 JBoss Inc
 *
 * Licensed 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 org.overlord.dtgov.ui.client.local.beans;

import java.util.LinkedHashMap;
import java.util.Map;

import org.jboss.errai.ui.nav.client.local.HistoryToken;

import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.google.gwt.core.client.GWT;

/**
 * Bean that reads and holds UI configuration. This bean reads its information
 * from a global JavaScript variable
 *
 * @author eric.wittmann@redhat.com
 */
public class UiConfiguration {

    private final Map<String, String> deploymentStages = new LinkedHashMap<String, String>();
    private final Map<String, String> deploymentTypes = new LinkedHashMap<String, String>();
    private String srampUiUrlBase;
    private final Map<String, String> workflowPropertyKeyTypes = new LinkedHashMap<String, String>();

    /**
     * Constructor.
     */
    public UiConfiguration() {
        read();
    }

    /**
     * Adds a single deployment stage to the map.
     *
     * @param label
     * @param classifier
     */
    private void addDeploymentStage(String label, String classifier) {
        this.getDeploymentStages().put(label, classifier);
        GWT.log("[UiConfig] - Registered Deployment Stage: " + label + "=" + classifier); //$NON-NLS-1$ //$NON-NLS-2$
    }

    /**
     * Adds a single deployment type to the map.
     *
     * @param label
     * @param type
     */
    private void addDeploymentType(String label, String type) {
        this.getDeploymentTypes().put(label, type);
        GWT.log("[UiConfig] - Registered Deployment Type: " + label + "=" + type); //$NON-NLS-1$ //$NON-NLS-2$
    }

    /**
     * Adds a single deployment stage to the map.
     *
     * @param label
     * @param classifier
     */
    private void addWorkflowPropertyKeyType(String label, String example) {
        this.getWorkflowPropertyKeyTypes().put(label, example);
        GWT.log("[UiConfig] - Registered Working Type: " + label + " example: " + example); //$NON-NLS-1$ //$NON-NLS-2$
    }

    /**
     * Creates a link into the s-ramp UI.
     *
     * @param pageName
     * @param state
     */
    public String createSrampUiUrl(String pageName, Multimap<String, String> state) {
        HistoryToken token = HistoryToken.of(pageName, state);
        String href = srampUiUrlBase + "#" + token.toString(); //$NON-NLS-1$
        return href;
    }

    /**
     * Creates a link into the s-ramp UI.
     *
     * @param pageName
     * @param stateKey
     * @param stateValue
     */
    public String createSrampUiUrl(String pageName, String stateKey, String stateValue) {
        Multimap<String, String> state = HashMultimap.create();
        state.put(stateKey, stateValue);
        return createSrampUiUrl(pageName, state);
    }

    /**
     * @return the deploymentStages
     */
    public Map<String, String> getDeploymentStages() {
        return deploymentStages;
    }

    /**
     * @return the deploymentTypes
     */
    public Map<String, String> getDeploymentTypes() {
        return deploymentTypes;
    }

    /**
     * @return the deploymentStages
     */
    public Map<String, String> getWorkflowPropertyKeyTypes() {
        return workflowPropertyKeyTypes;
    }

    /**
     * Read the configuration information from the OVERLORD_DTGOVUI_CONFIG
     * javascript variable.
     */
    private final native void read() /*-{
                                     var dis = this;
                                     try {
                                     var deploymentConfig = $wnd.OVERLORD_DTGOVUI_CONFIG.deployments;
                                     // Read the deployment types
                                     var dTypes = deploymentConfig.types;
                                     for ( var k in dTypes) {
                                     if (dTypes.hasOwnProperty(k)) {
                                     var label = k;
                                     var type = dTypes[k];
                                     dis.@org.overlord.dtgov.ui.client.local.beans.UiConfiguration::addDeploymentType(Ljava/lang/String;Ljava/lang/String;)(label, type);
                                     }
                                     }
                                         
                                     // Read the deployment stages
                                     var dStages = deploymentConfig.stages;
                                     for ( var k in dStages) {
                                     if (dStages.hasOwnProperty(k)) {
                                     var label = k;
                                     var classifier = dStages[k];
                                     dis.@org.overlord.dtgov.ui.client.local.beans.UiConfiguration::addDeploymentStage(Ljava/lang/String;Ljava/lang/String;)(label, classifier);
                                     }
                                     }
                                         
                                     var workflowConfig = $wnd.OVERLORD_DTGOVUI_CONFIG.workflow;
                                         
                                     // Read the deployment stages
                                     var propertyTypes = workflowConfig.propertyTypes;
                                     for ( var k in propertyTypes) {
                                     if (propertyTypes.hasOwnProperty(k)) {
                                     var label = k;
                                     var example = propertyTypes[k];
                                     dis.@org.overlord.dtgov.ui.client.local.beans.UiConfiguration::addWorkflowPropertyKeyType(Ljava/lang/String;Ljava/lang/String;)(label,example);
                                     }
                                     }
                                         
                                     // Read the s-ramp UI config
                                     var srampUiConfig = $wnd.OVERLORD_DTGOVUI_CONFIG.srampui;
                                     var urlBase = srampUiConfig.urlBase;
                                     dis.@org.overlord.dtgov.ui.client.local.beans.UiConfiguration::setSrampUiUrlBase(Ljava/lang/String;)(urlBase);
                                     } catch (e) {
                                     // TODO do something interesting here?
                                     }
                                     }-*/;

    /**
     * Sets the s-ramp-ui URL base.
     *
     * @param urlBase
     */
    private void setSrampUiUrlBase(String urlBase) {
        this.srampUiUrlBase = urlBase;
    }

}