itachi1706/CheesecakeCapes

View on GitHub
src/main/java/com/jadarstudios/developercapes/cape/CapeManager.java

Summary

Maintainability
A
0 mins
Test Coverage
/*
 * DeveloperCapes by Jadar
 * License: MIT License
 * (https://raw.github.com/jadar/DeveloperCapes/master/LICENSE)
 * version 4.0.0.x
 */
package com.jadarstudios.developercapes.cape;

import com.jadarstudios.developercapes.DevCapes;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collection;
import java.util.HashMap;

/**
 * This manages all of the capes, be nice to it or you won't get one!
 * 
 * @author jadar
 */
public class CapeManager {

    protected static CapeManager instance;

    private HashMap<String, ICape> capes;

    public CapeManager() {
        this.capes = new HashMap<String, ICape>();
    }

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

    public void addCape(ICape cape) {
        if (!capes.containsValue(cape)) {
            capes.put(cape.getName(), cape);
        }
    }

    public void addCapes(Collection<ICape> capes) {
        for (ICape c : capes) {
            this.addCape(c);
        }
    }

    public ICape getCape(String capeName) {
        return capes.get(capeName);
    }

    public ICape newCape(String name) {
        StaticCape cape = new StaticCape(name);
        this.capes.put(name, cape);
        return cape;
    }
    
    public ICape parse(String name, Object object, String type) {
        ICape cape = null;
        if(object instanceof String || object instanceof URL){
            cape = parse(name, object.toString(), type);
        }else{
            DevCapes.logger.error(String.format("Cape, %s, could not be parsed because it is not in an accepted format!", object));
        }
        return cape;
    }

    protected ICape parse(String name, String url, String type) {
        ICape cape = null;

        try {
            cape = new StaticCape(name, new URL(url), type);
        } catch (MalformedURLException e) {
            DevCapes.logger.error(String.format("Are you crazy?? \"%s\" is not a valid URL!", url));
            e.printStackTrace();
        }
        return cape;
    }
}