Package wecui

Source Code of wecui.Updater

package wecui;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.reader.UnicodeReader;
import wecui.config.ConfigurationNode;
import wecui.exception.ConfigurationException;
import wecui.util.ChatColor;

public class Updater extends Thread {

    protected WorldEditCUI controller;
    protected final int updaterVersion = 1;

    public Updater(WorldEditCUI controller) {
        this.controller = controller;
    }

    /**
     * Checks the most recent version of updates.yml on GitHub, and parses the
     * YAML to find supported versions. If the current version isn't supported,
     * show an error to the user.
     */
    @Override
    @SuppressWarnings("unchecked")
    public void run() {
        if (controller.configuration.ignoreUpdates()) {
            return;
        }

        InputStream is = null;
        ConfigurationNode node = new ConfigurationNode(new HashMap<String, Object>());

        try {
            URL url = new URL(controller.getConfiguration().getUpdateFile());
            url.openConnection();
            is = url.openStream();

            Yaml yaml = new Yaml();
            Object out = yaml.load(new UnicodeReader(is));

            try {
                if (null != out) {
                    node.setRoot((Map<String, Object>) out);
                }
            } catch (ClassCastException e) {
                throw new ConfigurationException("Root document must be an key-value structure");
            }

            String currentVersion = node.getString("updaterVersion" + this.updaterVersion + ".current");
            List<String> supportedVersions = node.getStringList("updaterVersion" + this.updaterVersion + ".supported", new ArrayList<String>());

            if (currentVersion != null && !currentVersion.equals(WorldEditCUI.VERSION) && !(currentVersion + "beta").equals(WorldEditCUI.VERSION)) {
                if (supportedVersions != null && !supportedVersions.contains(WorldEditCUI.VERSION)) {
                    controller.getObfuscation().showChatMessage(ChatColor.RED + "Your WorldEditCUI version is out of date! ");
                    controller.getObfuscation().showChatMessage(ChatColor.RED + "The latest version is " + currentVersion + ". http://bit.ly/wecui");

                }
            }

        } catch (Exception e) {
            controller.getDebugger().info("Error in fetching update file!", e);
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                }
            }
        }
    }
}
TOP

Related Classes of wecui.Updater

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.