package cc.fascinated.bat.common; import lombok.Getter; import java.io.Serializable; import java.util.HashMap; import java.util.Map; /** * @author Fascinated (fascinated7) */ @Getter public class ProfileHolder implements Serializable { /** * The profiles for the holder */ private Map profiles; /** * Gets a profile for the holder * * @param clazz The class of the profile * @param The type of the profile * @return The profile */ public T getProfile(Class clazz) { if (profiles == null) { profiles = new HashMap<>(); } Profile profile = profiles.values().stream().filter(p -> p.getClass().equals(clazz)).findFirst().orElse(null); if (profile == null) { try { profile = (Profile) clazz.newInstance(); profiles.put(profile.getProfileKey(), profile); } catch (InstantiationException | IllegalAccessException e) { e.printStackTrace(); } } return (T) profile; } }