com.hack23.cia.web.impl.ui.application.CitizenIntelligenceAgencyUI.java Source code

Java tutorial

Introduction

Here is the source code for com.hack23.cia.web.impl.ui.application.CitizenIntelligenceAgencyUI.java

Source

/*
 * Copyright 2014 James Pether Srling
 *
 * 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.
 *
 *   $Id$
 *  $HeadURL$
*/
package com.hack23.cia.web.impl.ui.application;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;

import com.hack23.cia.model.internal.application.system.impl.ApplicationSessionType;
import com.hack23.cia.service.api.ApplicationManager;
import com.hack23.cia.service.api.ConfigurationManager;
import com.hack23.cia.service.api.UserConfiguration;
import com.hack23.cia.service.api.action.application.CreateApplicationSessionRequest;
import com.hack23.cia.service.api.action.common.ServiceResponse;
import com.hack23.cia.web.impl.ui.application.util.WebBrowserUtil;
import com.hack23.cia.web.impl.ui.application.views.common.MainView;
import com.vaadin.annotations.Push;
import com.vaadin.annotations.StyleSheet;
import com.vaadin.annotations.Theme;
import com.vaadin.server.Page;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinSession;
import com.vaadin.server.WebBrowser;
import com.vaadin.shared.ui.ui.Transport;
import com.vaadin.ui.UI;

import ru.xpoft.vaadin.DiscoveryNavigator;

/**
 * The Class CitizenIntelligenceAgencyUI.
 */
@Service(value = "ui")
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Theme("cia")
@Push(transport = Transport.WEBSOCKET_XHR)
@StyleSheet({ "https://fonts.googleapis.com/css?family=Inconsolata" })
public final class CitizenIntelligenceAgencyUI extends UI {

    /** The Constant serialVersionUID. */
    private static final long serialVersionUID = 1L;

    /** The Constant LOG_INFO_BROWSER_ADDRESS_APPLICATION_SESSION_ID_RESULT. */
    private static final String LOG_INFO_BROWSER_ADDRESS_APPLICATION_SESSION_ID_RESULT = "Browser url: {} , lang: {} , address: {} , application:{}, sessionId:{}, result:{}";

    /** The Constant LOGGER. */
    private static final Logger LOGGER = LoggerFactory.getLogger(CitizenIntelligenceAgencyUI.class);

    /** The main view. */
    @Autowired
    private MainView mainView;

    /** The application manager. */
    @Autowired
    private transient ApplicationManager applicationManager;

    @Autowired
    private transient ConfigurationManager configurationManager;

    /**
     * Instantiates a new citizen intelligence agency ui.
     */
    public CitizenIntelligenceAgencyUI() {
        super();
    }

    @Override
    protected void init(final VaadinRequest request) {
        VaadinSession.getCurrent().setErrorHandler(new UiInstanceErrorHandler(this));
        setSizeFull();
        final DiscoveryNavigator navigator = new DiscoveryNavigator(this, this);
        navigator.addView("", mainView);
        setNavigator(navigator);

        final Page currentPage = Page.getCurrent();
        final String requestUrl = currentPage.getLocation().toString();
        final String language = request.getLocale().getLanguage();
        final UserConfiguration userConfiguration = configurationManager.getUserConfiguration(requestUrl, language);

        currentPage.setTitle(
                userConfiguration.getAgency().getAgencyName() + ":" + userConfiguration.getPortal().getPortalName()
                        + ":" + userConfiguration.getLanguage().getLanguageName());

        if (getSession().getUIs().isEmpty()) {
            final WebBrowser webBrowser = currentPage.getWebBrowser();

            final CreateApplicationSessionRequest serviceRequest = new CreateApplicationSessionRequest();
            serviceRequest.setSessionId(RequestContextHolder.currentRequestAttributes().getSessionId());

            final String ipInformation = WebBrowserUtil.getIpInformation(webBrowser);
            serviceRequest.setIpInformation(ipInformation);
            serviceRequest.setUserAgentInformation(webBrowser.getBrowserApplication());
            serviceRequest.setLocale(webBrowser.getLocale().toString());
            serviceRequest.setOperatingSystem(WebBrowserUtil.getOperatingSystem(webBrowser));
            serviceRequest.setSessionType(ApplicationSessionType.ANONYMOUS);

            final ServiceResponse serviceResponse = applicationManager.service(serviceRequest);
            LOGGER.info(LOG_INFO_BROWSER_ADDRESS_APPLICATION_SESSION_ID_RESULT, requestUrl, language, ipInformation,
                    webBrowser.getBrowserApplication(), serviceRequest.getSessionId(),
                    serviceResponse.getResult().toString());
        }
    }

}