com.bibisco.manager.HttpManager.java Source code

Java tutorial

Introduction

Here is the source code for com.bibisco.manager.HttpManager.java

Source

/*
 * Copyright (C) 2014-2016 Andrea Feccomandi
 *
 * Licensed under the terms of GNU GPL License;
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.gnu.org/licenses/gpl-2.0.html
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY. 
 * See the GNU General Public License for more details.
 * 
 */
package com.bibisco.manager;

import javax.ws.rs.core.MediaType;

import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.bibisco.BibiscoException;
import com.bibisco.bean.WebMessage;
import com.bibisco.dao.SqlSessionFactoryManager;
import com.bibisco.dao.client.MessagesMapper;
import com.bibisco.dao.model.Messages;
import com.bibisco.log.Log;
import com.google.gson.Gson;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;

/**
 * Manager of http messages.
 * 
 * @author Andrea Feccomandi
 *
 */
public class HttpManager {

    private static Log mLog = Log.getInstance(HttpManager.class);

    public static void precompileLoadingPage(String lStrURL) {

        mLog.debug("Start precompileLoadingPage()");

        try {
            ClientConfig lClientConfig = new DefaultClientConfig();
            Client lClient = Client.create(lClientConfig);
            WebResource lWebResource = lClient.resource(lStrURL);
            WebResource.Builder lBuilder = lWebResource.accept(MediaType.TEXT_HTML);
            lBuilder.get(String.class);
        } catch (Throwable t) {
            // Maybe we Jetty is not started...
            mLog.error(t);
        }

        mLog.debug("End precompileLoadingPage()");
    }

    public static WebMessage getMessageFromBibiscoWebSite() {

        WebMessage lWebMessage = null;

        mLog.debug("Start getMessageFromBibiscoWebSite()");

        String lStrJson = getMessagesFromBibiscoWebSite();
        if (StringUtils.isNotEmpty(lStrJson)) {
            Gson lGson = new Gson();
            WebMessage[] lWebMessages = lGson.fromJson(lStrJson, WebMessage[].class);

            for (int i = 0; i < lWebMessages.length; i++) {
                mLog.debug(lWebMessages[i].getIdMessage() + " " + lWebMessages[i].getTitle());
                if (showMessage(lWebMessages[i])) {
                    lWebMessage = lWebMessages[i];
                    break;
                }
            }
        }

        mLog.debug("End getMessageFromBibiscoWebSite() return: ",
                lWebMessage != null ? lWebMessage.getMessage() : "null");

        return lWebMessage;
    }

    private static String getMessagesFromBibiscoWebSite() {

        String lStrJsonMessages = null;

        mLog.debug("Start getMessagesFromBibiscoWebSite()");

        String lStrVersion = VersionManager.getInstance().getVersion();
        String lStrLanguage = LocaleManager.getInstance().getLocale().getLanguage();

        try {
            ClientConfig lClientConfig = new DefaultClientConfig();
            Client lClient = Client.create(lClientConfig);
            WebResource lWebResource = lClient.resource(ContextManager.getInstance().getURIWeb());
            WebResource.Builder lBuilder = lWebResource.path("rest").path("messages").path("get").path(lStrVersion)
                    .path(lStrLanguage).accept(MediaType.APPLICATION_JSON);
            lStrJsonMessages = lBuilder.get(String.class);
        } catch (Throwable t) {
            // Maybe we are offline...
            mLog.error(t);
        }

        mLog.debug("End getMessagesFromBibiscoWebSite()");

        return lStrJsonMessages;
    }

    private static boolean showMessage(WebMessage pWebMessage) {

        boolean lBlnResult = false;

        mLog.debug("Start showMessage(WebMessage)");

        SqlSessionFactory lSqlSessionFactory = SqlSessionFactoryManager.getInstance().getSqlSessionFactoryBibisco();
        SqlSession lSqlSession = lSqlSessionFactory.openSession();
        try {

            MessagesMapper lMessagesMapper = lSqlSession.getMapper(MessagesMapper.class);
            Messages lMessages = lMessagesMapper.selectByPrimaryKey(pWebMessage.getIdMessage());

            if (lMessages != null) {
                // message already read: check if i can show another time
                if (lMessages.getNumberOfViews() < pWebMessage.getNumberOfViewsAllowed()) {
                    lMessages.setNumberOfViews(lMessages.getNumberOfViews() + 1);
                    lMessagesMapper.updateByPrimaryKey(lMessages);
                    lBlnResult = true;
                } else {
                    lBlnResult = false;
                }
            } else {
                // message not read
                lMessages = new Messages();
                lMessages.setIdMessage(pWebMessage.getIdMessage());
                lMessages.setNumberOfViews(1);
                lMessagesMapper.insert(lMessages);
                lBlnResult = true;
            }

            lSqlSession.commit();

        } catch (Throwable t) {
            mLog.error(t);
            lSqlSession.rollback();
            throw new BibiscoException(t, BibiscoException.SQL_EXCEPTION);
        } finally {
            lSqlSession.close();
        }

        mLog.debug("End showMessage(WebMessage)");

        return lBlnResult;
    }
}