org.gw2InfoViewer.controllers.MainController.java Source code

Java tutorial

Introduction

Here is the source code for org.gw2InfoViewer.controllers.MainController.java

Source

/*
 *  Gw2InfoViewer - Java Swing based application that reads the Guild Wars 2 JSON API
 *  Copyright (C) 2013 Robert Smieja
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package org.gw2InfoViewer.controllers;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.gw2InfoViewer.views.MainView;
import org.gw2InfoViewer.factories.HttpsConnectionFactory;
import org.gw2InfoViewer.models.EventList;
import org.gw2InfoViewer.maps.EventNames;
import org.gw2InfoViewer.maps.MapNames;
import org.gw2InfoViewer.maps.WorldNames;
import org.gw2InfoViewer.models.Options;
import org.gw2InfoViewer.services.json.JsonConversionService;
import org.gw2InfoViewer.services.settings.SettingsService;

/**
 *
 * @author Robert Smieja
 */
public class MainController {

    private static final String API_BASE_URL = "https://api.guildwars2.com/";
    private static final String API_VERSION = "v1/";
    private static final String API_EVENTS = "events.json";
    private static final String API_EVENT_NAMES = "event_names.json";
    private static final String API_MAP_NAMES = "map_names.json";
    private static final String API_WORLD_NAMES = "world_names.json";
    private static final String API_WVW = "wvw/";
    private static final String API_WVW_MATCHES = "matches.json";
    private static final String API_WVW_MATCH_DETAILS = "match_details.json";
    private static final String API_WVW_OBJECTIVE_NAMES = "objective_names.json";
    private static final String API_ITEMS = "items.json";
    private static final String API_ITEM_DETAILS = "item_details.json";
    private static final String API_RECIPES = "recipes.json";
    private static final String API_RECIPE_DETAILS = "recipe_details.json";
    private static final byte[] StartComRootCertificate = { 45, 45, 45, 45, 45, 66, 69, 71, 73, 78, 32, 67, 69, 82,
            84, 73, 70, 73, 67, 65, 84, 69, 45, 45, 45, 45, 45, 13, 10, 77, 73, 73, 72, 104, 122, 67, 67, 66, 87,
            43, 103, 65, 119, 73, 66, 65, 103, 73, 66, 76, 84, 65, 78, 66, 103, 107, 113, 104, 107, 105, 71, 57,
            119, 48, 66, 65, 81, 115, 70, 65, 68, 66, 57, 77, 81, 115, 119, 67, 81, 89, 68, 86, 81, 81, 71, 69, 119,
            74, 74, 84, 68, 69, 87, 13, 10, 77, 66, 81, 71, 65, 49, 85, 69, 67, 104, 77, 78, 85, 51, 82, 104, 99,
            110, 82, 68, 98, 50, 48, 103, 84, 72, 82, 107, 76, 106, 69, 114, 77, 67, 107, 71, 65, 49, 85, 69, 67,
            120, 77, 105, 85, 50, 86, 106, 100, 88, 74, 108, 73, 69, 82, 112, 90, 50, 108, 48, 89, 87, 119, 103, 13,
            10, 81, 50, 86, 121, 100, 71, 108, 109, 97, 87, 78, 104, 100, 71, 85, 103, 85, 50, 108, 110, 98, 109,
            108, 117, 90, 122, 69, 112, 77, 67, 99, 71, 65, 49, 85, 69, 65, 120, 77, 103, 85, 51, 82, 104, 99, 110,
            82, 68, 98, 50, 48, 103, 81, 50, 86, 121, 100, 71, 108, 109, 97, 87, 78, 104, 13, 10, 100, 71, 108, 118,
            98, 105, 66, 66, 100, 88, 82, 111, 98, 51, 74, 112, 100, 72, 107, 119, 72, 104, 99, 78, 77, 68, 89, 119,
            79, 84, 69, 51, 77, 84, 107, 48, 78, 106, 77, 51, 87, 104, 99, 78, 77, 122, 89, 119, 79, 84, 69, 51, 77,
            84, 107, 48, 78, 106, 77, 50, 87, 106, 66, 57, 13, 10, 77, 81, 115, 119, 67, 81, 89, 68, 86, 81, 81, 71,
            69, 119, 74, 74, 84, 68, 69, 87, 77, 66, 81, 71, 65, 49, 85, 69, 67, 104, 77, 78, 85, 51, 82, 104, 99,
            110, 82, 68, 98, 50, 48, 103, 84, 72, 82, 107, 76, 106, 69, 114, 77, 67, 107, 71, 65, 49, 85, 69, 67,
            120, 77, 105, 13, 10, 85, 50, 86, 106, 100, 88, 74, 108, 73, 69, 82, 112, 90, 50, 108, 48, 89, 87, 119,
            103, 81, 50, 86, 121, 100, 71, 108, 109, 97, 87, 78, 104, 100, 71, 85, 103, 85, 50, 108, 110, 98, 109,
            108, 117, 90, 122, 69, 112, 77, 67, 99, 71, 65, 49, 85, 69, 65, 120, 77, 103, 85, 51, 82, 104, 13, 10,
            99, 110, 82, 68, 98, 50, 48, 103, 81, 50, 86, 121, 100, 71, 108, 109, 97, 87, 78, 104, 100, 71, 108,
            118, 98, 105, 66, 66, 100, 88, 82, 111, 98, 51, 74, 112, 100, 72, 107, 119, 103, 103, 73, 105, 77, 65,
            48, 71, 67, 83, 113, 71, 83, 73, 98, 51, 68, 81, 69, 66, 65, 81, 85, 65, 13, 10, 65, 52, 73, 67, 68,
            119, 65, 119, 103, 103, 73, 75, 65, 111, 73, 67, 65, 81, 68, 66, 105, 78, 115, 74, 118, 71, 120, 71,
            102, 72, 105, 102, 108, 88, 117, 49, 77, 53, 68, 121, 99, 109, 76, 87, 119, 84, 89, 103, 73, 105, 82,
            101, 122, 117, 108, 51, 56, 107, 77, 75, 111, 103, 90, 107, 13, 10, 112, 77, 121, 79, 78, 118, 103, 52,
            53, 105, 80, 119, 98, 109, 50, 120, 80, 78, 49, 121, 111, 52, 85, 99, 111, 100, 77, 57, 116, 68, 77,
            114, 48, 121, 43, 118, 47, 117, 113, 119, 81, 86, 108, 110, 116, 115, 81, 71, 102, 81, 113, 101, 100,
            73, 88, 87, 101, 85, 121, 65, 78, 51, 114, 102, 13, 10, 79, 81, 86, 83, 87, 102, 102, 48, 71, 48, 90,
            68, 112, 78, 75, 70, 104, 100, 76, 68, 99, 102, 78, 49, 89, 106, 83, 54, 76, 73, 112, 47, 72, 111, 47,
            117, 55, 84, 84, 81, 69, 99, 101, 87, 122, 86, 73, 57, 117, 106, 80, 87, 51, 85, 51, 101, 67, 122, 116,
            75, 83, 53, 47, 67, 13, 10, 74, 105, 47, 54, 116, 82, 89, 99, 99, 106, 86, 51, 121, 106, 120, 100, 53,
            115, 114, 104, 74, 111, 115, 97, 78, 110, 90, 99, 65, 100, 116, 48, 70, 67, 88, 43, 55, 98, 87, 103,
            105, 65, 47, 100, 101, 77, 111, 116, 72, 119, 101, 88, 77, 65, 69, 116, 99, 110, 110, 54, 82, 116, 89,
            84, 13, 10, 75, 113, 105, 53, 112, 113, 117, 68, 83, 82, 51, 108, 56, 117, 47, 100, 53, 65, 71, 79, 71,
            65, 113, 80, 89, 49, 77, 87, 104, 87, 75, 112, 68, 104, 107, 54, 122, 76, 86, 109, 112, 115, 74, 114,
            100, 65, 102, 107, 75, 43, 70, 50, 80, 114, 82, 116, 50, 80, 90, 69, 52, 88, 78, 105, 13, 10, 72, 122,
            118, 69, 118, 113, 66, 84, 86, 105, 86, 115, 85, 81, 110, 51, 113, 113, 118, 75, 118, 51, 98, 57, 98,
            90, 118, 122, 110, 100, 117, 47, 80, 87, 97, 56, 68, 70, 97, 113, 114, 53, 104, 73, 108, 84, 112, 76,
            51, 54, 100, 89, 85, 78, 107, 52, 100, 97, 108, 98, 54, 107, 77, 77, 13, 10, 65, 118, 43, 90, 54, 43,
            104, 115, 84, 88, 66, 98, 75, 87, 87, 99, 51, 97, 112, 100, 122, 75, 56, 66, 77, 101, 119, 77, 54, 57,
            75, 78, 54, 79, 113, 99, 101, 43, 90, 117, 57, 121, 100, 109, 68, 66, 112, 73, 49, 50, 53, 67, 52, 122,
            47, 101, 73, 84, 53, 55, 52, 81, 49, 119, 13, 10, 43, 50, 79, 113, 113, 71, 119, 97, 86, 76, 82, 99, 74,
            88, 114, 74, 111, 115, 109, 76, 70, 113, 97, 55, 76, 72, 52, 88, 88, 103, 86, 78, 87, 71, 52, 83, 72,
            81, 72, 117, 69, 104, 65, 78, 120, 106, 74, 47, 71, 80, 47, 56, 57, 80, 114, 78, 98, 112, 72, 111, 78,
            107, 109, 43, 13, 10, 71, 107, 104, 112, 105, 56, 75, 87, 84, 82, 111, 83, 115, 109, 107, 88, 119, 81,
            113, 81, 49, 118, 112, 53, 73, 107, 105, 47, 117, 110, 116, 112, 43, 72, 68, 72, 43, 110, 111, 51, 50,
            78, 103, 78, 48, 110, 90, 80, 86, 47, 43, 81, 116, 43, 79, 82, 48, 116, 51, 118, 119, 109, 67, 51, 13,
            10, 90, 122, 114, 100, 47, 113, 113, 99, 56, 78, 83, 76, 102, 51, 73, 105, 122, 115, 97, 102, 108, 55,
            98, 52, 114, 52, 113, 103, 69, 75, 106, 90, 43, 120, 106, 71, 116, 114, 86, 99, 85, 106, 121, 74, 116,
            104, 107, 113, 99, 119, 69, 75, 68, 119, 79, 122, 69, 109, 68, 121, 101, 105, 43, 66, 13, 10, 50, 54,
            78, 117, 47, 121, 89, 119, 108, 47, 87, 76, 51, 89, 108, 88, 116, 113, 48, 57, 115, 54, 56, 114, 120,
            98, 100, 50, 65, 118, 67, 108, 49, 105, 117, 97, 104, 104, 81, 113, 99, 118, 98, 106, 77, 52, 120, 100,
            67, 85, 115, 84, 51, 55, 117, 77, 100, 66, 78, 83, 83, 119, 73, 68, 13, 10, 65, 81, 65, 66, 111, 52, 73,
            67, 69, 68, 67, 67, 65, 103, 119, 119, 68, 119, 89, 68, 86, 82, 48, 84, 65, 81, 72, 47, 66, 65, 85, 119,
            65, 119, 69, 66, 47, 122, 65, 79, 66, 103, 78, 86, 72, 81, 56, 66, 65, 102, 56, 69, 66, 65, 77, 67, 65,
            81, 89, 119, 72, 81, 89, 68, 13, 10, 86, 82, 48, 79, 66, 66, 89, 69, 70, 69, 52, 76, 55, 120, 113, 107,
            81, 70, 117, 108, 70, 50, 109, 72, 77, 77, 111, 48, 97, 69, 80, 81, 81, 97, 55, 121, 77, 66, 56, 71, 65,
            49, 85, 100, 73, 119, 81, 89, 77, 66, 97, 65, 70, 69, 52, 76, 55, 120, 113, 107, 81, 70, 117, 108, 13,
            10, 70, 50, 109, 72, 77, 77, 111, 48, 97, 69, 80, 81, 81, 97, 55, 121, 77, 73, 73, 66, 87, 103, 89, 68,
            86, 82, 48, 103, 66, 73, 73, 66, 85, 84, 67, 67, 65, 85, 48, 119, 103, 103, 70, 74, 66, 103, 115, 114,
            66, 103, 69, 69, 65, 89, 71, 49, 78, 119, 69, 66, 65, 84, 67, 67, 13, 10, 65, 84, 103, 119, 76, 103, 89,
            73, 75, 119, 89, 66, 66, 81, 85, 72, 65, 103, 69, 87, 73, 109, 104, 48, 100, 72, 65, 54, 76, 121, 57,
            51, 100, 51, 99, 117, 99, 51, 82, 104, 99, 110, 82, 122, 99, 50, 119, 117, 89, 50, 57, 116, 76, 51, 66,
            118, 98, 71, 108, 106, 101, 83, 53, 119, 13, 10, 90, 71, 89, 119, 78, 65, 89, 73, 75, 119, 89, 66, 66,
            81, 85, 72, 65, 103, 69, 87, 75, 71, 104, 48, 100, 72, 65, 54, 76, 121, 57, 51, 100, 51, 99, 117, 99,
            51, 82, 104, 99, 110, 82, 122, 99, 50, 119, 117, 89, 50, 57, 116, 76, 50, 108, 117, 100, 71, 86, 121,
            98, 87, 86, 107, 13, 10, 97, 87, 70, 48, 90, 83, 53, 119, 90, 71, 89, 119, 103, 99, 56, 71, 67, 67, 115,
            71, 65, 81, 85, 70, 66, 119, 73, 67, 77, 73, 72, 67, 77, 67, 99, 87, 73, 70, 78, 48, 89, 88, 74, 48, 73,
            69, 78, 118, 98, 87, 49, 108, 99, 109, 78, 112, 89, 87, 119, 103, 75, 70, 78, 48, 13, 10, 89, 88, 74,
            48, 81, 50, 57, 116, 75, 83, 66, 77, 100, 71, 81, 117, 77, 65, 77, 67, 65, 81, 69, 97, 103, 90, 90, 77,
            97, 87, 49, 112, 100, 71, 86, 107, 73, 69, 120, 112, 89, 87, 74, 112, 98, 71, 108, 48, 101, 83, 119,
            103, 99, 109, 86, 104, 90, 67, 66, 48, 97, 71, 85, 103, 13, 10, 99, 50, 86, 106, 100, 71, 108, 118, 98,
            105, 65, 113, 84, 71, 86, 110, 89, 87, 119, 103, 84, 71, 108, 116, 97, 88, 82, 104, 100, 71, 108, 118,
            98, 110, 77, 113, 73, 71, 57, 109, 73, 72, 82, 111, 90, 83, 66, 84, 100, 71, 70, 121, 100, 69, 78, 118,
            98, 83, 66, 68, 90, 88, 74, 48, 13, 10, 97, 87, 90, 112, 89, 50, 70, 48, 97, 87, 57, 117, 73, 69, 70,
            49, 100, 71, 104, 118, 99, 109, 108, 48, 101, 83, 66, 81, 98, 50, 120, 112, 89, 51, 107, 103, 89, 88,
            90, 104, 97, 87, 120, 104, 89, 109, 120, 108, 73, 71, 70, 48, 73, 71, 104, 48, 100, 72, 65, 54, 76, 121,
            57, 51, 13, 10, 100, 51, 99, 117, 99, 51, 82, 104, 99, 110, 82, 122, 99, 50, 119, 117, 89, 50, 57, 116,
            76, 51, 66, 118, 98, 71, 108, 106, 101, 83, 53, 119, 90, 71, 89, 119, 69, 81, 89, 74, 89, 73, 90, 73,
            65, 89, 98, 52, 81, 103, 69, 66, 66, 65, 81, 68, 65, 103, 65, 72, 77, 68, 103, 71, 13, 10, 67, 87, 67,
            71, 83, 65, 71, 71, 43, 69, 73, 66, 68, 81, 81, 114, 70, 105, 108, 84, 100, 71, 70, 121, 100, 69, 78,
            118, 98, 83, 66, 71, 99, 109, 86, 108, 73, 70, 78, 84, 84, 67, 66, 68, 90, 88, 74, 48, 97, 87, 90, 112,
            89, 50, 70, 48, 97, 87, 57, 117, 73, 69, 70, 49, 13, 10, 100, 71, 104, 118, 99, 109, 108, 48, 101, 84,
            65, 78, 66, 103, 107, 113, 104, 107, 105, 71, 57, 119, 48, 66, 65, 81, 115, 70, 65, 65, 79, 67, 65, 103,
            69, 65, 106, 111, 47, 110, 51, 74, 82, 53, 102, 80, 71, 70, 102, 53, 57, 74, 98, 50, 118, 75, 88, 102,
            117, 77, 47, 103, 84, 70, 13, 10, 119, 87, 76, 82, 102, 85, 75, 75, 118, 70, 79, 51, 108, 65, 78, 109,
            77, 68, 43, 120, 53, 119, 113, 110, 85, 67, 66, 86, 74, 88, 57, 50, 101, 104, 81, 78, 54, 119, 81, 79,
            81, 79, 89, 43, 50, 73, 105, 114, 66, 121, 101, 68, 113, 88, 87, 109, 78, 51, 80, 72, 47, 85, 118, 83,
            13, 10, 84, 97, 48, 88, 81, 77, 104, 71, 118, 106, 116, 47, 85, 102, 122, 68, 116, 103, 85, 120, 51, 77,
            50, 70, 73, 107, 53, 120, 116, 47, 74, 120, 88, 114, 65, 97, 120, 114, 113, 84, 105, 51, 105, 83, 83,
            111, 88, 52, 101, 65, 43, 68, 47, 105, 43, 116, 76, 80, 102, 107, 112, 76, 115, 116, 13, 10, 48, 79, 99,
            78, 79, 114, 103, 43, 122, 118, 90, 52, 57, 113, 53, 72, 74, 77, 113, 106, 78, 84, 98, 79, 120, 56, 97,
            72, 109, 78, 114, 115, 43, 43, 109, 121, 122, 105, 101, 98, 105, 77, 77, 69, 111, 102, 89, 76, 87, 87,
            105, 118, 121, 100, 115, 81, 68, 48, 51, 50, 90, 71, 78, 99, 13, 10, 112, 82, 74, 118, 107, 114, 75, 84,
            108, 77, 101, 73, 70, 119, 54, 84, 116, 110, 53, 105, 105, 53, 66, 47, 113, 48, 54, 102, 47, 79, 78, 49,
            70, 69, 56, 113, 77, 116, 57, 98, 68, 101, 68, 49, 101, 53, 77, 78, 113, 54, 72, 80, 104, 43, 71, 108,
            66, 69, 88, 111, 80, 66, 75, 108, 13, 10, 67, 99, 87, 119, 48, 98, 100, 84, 56, 50, 65, 85, 117, 111,
            86, 112, 97, 105, 70, 56, 72, 51, 86, 104, 70, 121, 65, 88, 101, 50, 119, 55, 81, 83, 108, 99, 52, 97,
            120, 97, 48, 99, 50, 77, 109, 43, 116, 103, 72, 82, 110, 115, 57, 43, 87, 119, 50, 118, 108, 53, 71, 75,
            86, 70, 13, 10, 80, 48, 108, 68, 86, 57, 76, 100, 74, 78, 85, 115, 111, 47, 50, 82, 106, 83, 101, 49,
            53, 101, 115, 85, 66, 112, 112, 77, 101, 121, 71, 55, 79, 113, 48, 119, 66, 104, 106, 65, 50, 77, 70,
            114, 76, 72, 57, 90, 88, 70, 50, 82, 115, 88, 65, 105, 86, 43, 117, 75, 97, 48, 104, 75, 13, 10, 49, 81,
            56, 112, 55, 77, 90, 65, 119, 67, 43, 73, 84, 71, 103, 66, 70, 51, 102, 48, 74, 66, 108, 80, 118, 102,
            114, 104, 115, 105, 65, 104, 83, 57, 48, 97, 50, 67, 108, 57, 113, 114, 106, 101, 86, 79, 119, 104, 86,
            89, 66, 115, 72, 118, 85, 119, 121, 75, 77, 81, 53, 98, 76, 109, 13, 10, 75, 104, 81, 120, 119, 52, 85,
            116, 106, 74, 105, 120, 104, 108, 112, 80, 105, 86, 107, 116, 117, 99, 102, 51, 72, 77, 105, 75, 102,
            56, 67, 100, 66, 85, 114, 109, 81, 107, 57, 105, 111, 50, 48, 112, 112, 66, 43, 70, 113, 57, 118, 108,
            103, 99, 105, 116, 75, 106, 49, 77, 88, 86, 117, 69, 13, 10, 74, 110, 72, 69, 104, 86, 53, 120, 74, 77,
            113, 108, 71, 50, 122, 89, 89, 100, 77, 97, 52, 70, 84, 98, 122, 114, 113, 112, 77, 114, 85, 105, 57,
            110, 78, 66, 67, 86, 50, 52, 70, 49, 48, 79, 68, 53, 109, 81, 49, 107, 102, 97, 98, 119, 111, 54, 89,
            105, 103, 85, 90, 52, 76, 90, 13, 10, 56, 100, 67, 65, 87, 90, 118, 76, 77, 100, 105, 98, 68, 52, 120,
            51, 84, 114, 86, 111, 105, 118, 74, 115, 57, 105, 81, 79, 76, 87, 120, 119, 120, 88, 80, 82, 51, 104,
            84, 81, 99, 89, 43, 50, 48, 51, 115, 67, 57, 117, 79, 52, 49, 65, 108, 117, 97, 53, 53, 49, 104, 68,
            110, 109, 13, 10, 102, 121, 87, 108, 56, 107, 103, 65, 119, 75, 81, 66, 50, 106, 56, 61, 13, 10, 45, 45,
            45, 45, 45, 69, 78, 68, 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, 45, 45, 45, 13, 10 };
    private static MainController instance;
    private static MainView view;

    private MainController() {
        EventList eventList;
        EventNames eventNames;
        WorldNames worldNames;
        MapNames mapNames;
        Options options = null;

        try {
            options = SettingsService.LoadSettings();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            System.out.println("Error loading settings!");
            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (options == null) {
            System.out.println("Settings not found, using defaults.");
            options = new Options();
        }

        view = new MainView(this, options);
        try {
            eventNames = getEventNames(options);
            mapNames = getMapNames(options);
            worldNames = getWorldNames(options);

            eventList = getEventList(eventNames, mapNames, worldNames, options);
        } catch (IOException ex) {
            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
            return;
        }

        view.setEventList(eventList);
        view.setEventNames(eventNames);
        view.setWorldNames(worldNames);
        view.setMapNames(mapNames);
    }

    public static MainController getInstance() {
        if (instance == null) {
            instance = new MainController();
        }

        return instance;
    }

    public static EventList getEventList(EventNames eventNames, MapNames mapNames, WorldNames worldNames,
            Options options) throws IOException {
        String eventsUrl = API_BASE_URL + API_VERSION + API_EVENTS;
        eventsUrl += "?world_id=" + options.getWorld();
        eventsUrl += "&map_id=" + options.getMap();
        eventsUrl += "&event_id=" + options.getEventId();

        EventList eventList;
        HttpClient httpClient;
        HttpGet getEvents;

        getEvents = new HttpGet(eventsUrl);

        if (options.isProxyEnabled()) {
            httpClient = HttpsConnectionFactory.getHttpsClientWithProxy(StartComRootCertificate,
                    options.getProxyAddress(), options.getProxyPort());
        } else {
            httpClient = HttpsConnectionFactory.getHttpsClient(StartComRootCertificate);
        }

        InputStream json = httpClient.execute(getEvents).getEntity().getContent();
        eventList = JsonConversionService.parseEventList(json, eventNames, mapNames, worldNames);
        httpClient.getConnectionManager().shutdown();

        Collections.sort(eventList.getEventList());

        return eventList;
    }

    public static EventList getEventListWithoutNames(Options options) throws IOException {
        String eventsUrl = API_BASE_URL + API_VERSION + API_EVENTS;
        eventsUrl += "?world_id=" + options.getWorld();
        eventsUrl += "&map_id=" + options.getMap();
        eventsUrl += "&event_id=" + options.getEventId();

        EventList eventList;
        HttpClient httpClient;
        HttpGet getEvents;

        getEvents = new HttpGet(eventsUrl);

        if (options.isProxyEnabled()) {
            httpClient = HttpsConnectionFactory.getHttpsClientWithProxy(StartComRootCertificate,
                    options.getProxyAddress(), options.getProxyPort());
        } else {
            httpClient = HttpsConnectionFactory.getHttpsClient(StartComRootCertificate);
        }
        eventList = JsonConversionService
                .parseEventListWithoutNames(httpClient.execute(getEvents).getEntity().getContent());
        httpClient.getConnectionManager().shutdown();

        return eventList;
    }

    public static EventNames getEventNames(Options options) throws IOException {
        String eventNamesUrl = API_BASE_URL + API_VERSION + API_EVENT_NAMES;
        EventNames eventNames;
        HttpClient httpClient;
        HttpGet getEventNames;
        String eventNamesJson;

        getEventNames = new HttpGet(eventNamesUrl);

        if (options.isProxyEnabled()) {
            httpClient = HttpsConnectionFactory.getHttpsClientWithProxy(StartComRootCertificate,
                    options.getProxyAddress(), options.getProxyPort());
        } else {
            httpClient = HttpsConnectionFactory.getHttpsClient(StartComRootCertificate);
        }
        eventNamesJson = HttpsConnectionFactory.getStringFromHttpResponse(httpClient.execute(getEventNames));
        eventNames = JsonConversionService.parseEventNames(eventNamesJson);
        httpClient.getConnectionManager().shutdown();
        return eventNames;
    }

    public static WorldNames getWorldNames(Options options) throws IOException {
        String eventNamesUrl = API_BASE_URL + API_VERSION + API_WORLD_NAMES;
        WorldNames worldNames;
        HttpClient httpClient;
        HttpGet getWorldNames;
        String worldNamesJson;

        getWorldNames = new HttpGet(eventNamesUrl);

        if (options.isProxyEnabled()) {
            httpClient = HttpsConnectionFactory.getHttpsClientWithProxy(StartComRootCertificate,
                    options.getProxyAddress(), options.getProxyPort());
        } else {
            httpClient = HttpsConnectionFactory.getHttpsClient(StartComRootCertificate);
        }
        worldNamesJson = HttpsConnectionFactory.getStringFromHttpResponse(httpClient.execute(getWorldNames));
        worldNames = JsonConversionService.parseWorldNames(worldNamesJson);
        httpClient.getConnectionManager().shutdown();
        return worldNames;
    }

    public static MapNames getMapNames(Options options) throws IOException {
        String eventNamesUrl = API_BASE_URL + API_VERSION + API_MAP_NAMES;
        MapNames mapNames;
        HttpClient httpClient;
        HttpGet getMapNames;
        String mapNamesJson;

        getMapNames = new HttpGet(eventNamesUrl);

        if (options.isProxyEnabled()) {
            httpClient = HttpsConnectionFactory.getHttpsClientWithProxy(StartComRootCertificate,
                    options.getProxyAddress(), options.getProxyPort());
        } else {
            httpClient = HttpsConnectionFactory.getHttpsClient(StartComRootCertificate);
        }
        mapNamesJson = HttpsConnectionFactory.getStringFromHttpResponse(httpClient.execute(getMapNames));
        mapNames = JsonConversionService.parseMapNames(mapNamesJson);
        httpClient.getConnectionManager().shutdown();
        return mapNames;
    }

    public void close(Options options) {
        try {
            SettingsService.SaveSettings(options);
        } catch (IOException ex) {
            System.out.println("Error saving settings!");
            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}