package cc.fascinated.bat.model.guild; import cc.fascinated.bat.common.Profile; import cc.fascinated.bat.service.DiscordService; import lombok.Getter; import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.Setter; import net.dv8tion.jda.api.entities.Guild; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.util.HashMap; import java.util.Map; /** * @author Fascinated (fascinated7) */ @RequiredArgsConstructor @Getter @Setter @Document(collection = "guilds") public class BatGuild { /** * The ID of the guild */ @NonNull @Id private final String id; /** * The profiles for this guild */ private Map profiles; /** * Gets the profile for the guild * * @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; } /** * Gets the guild as the JDA Guild * * @return the guild */ public Guild getDiscordGuild() { return DiscordService.JDA.getGuildById(id); } }