From e66af6f91b27fb9d5af3f604eb07d9ef207a2e23 Mon Sep 17 00:00:00 2001 From: Alexis Drai Date: Thu, 18 May 2023 00:25:59 +0200 Subject: [PATCH] :card_file_box: :necktie: Add services, repos, entities, controllers (#2) While not "production-ready", this branch contains a partially functional back end with an API and a DB. It can be built upon, as it is. Co-authored-by: Alexis DRAI Reviewed-on: https://codefirst.iut.uca.fr/git/alexis.drai/AD_MongoDB/pulls/2 --- .../iut/controllers/PokemongController.java | 105 ++ src/main/java/fr/uca/iut/entities/Move.java | 13 + .../java/fr/uca/iut/entities/Pokemong.java | 25 + .../java/fr/uca/iut/entities/Trainer.java | 18 + src/main/java/fr/uca/iut/entities/Type.java | 30 + .../uca/iut/repositories/MoveRepository.java | 9 + .../iut/repositories/PokemongRepository.java | 9 + .../iut/repositories/TrainerRepository.java | 9 + .../uca/iut/repositories/TypeRepository.java | 9 + .../java/fr/uca/iut/services/MoveService.java | 4 + .../fr/uca/iut/services/PokemongService.java | 64 + .../fr/uca/iut/services/TrainerService.java | 4 + .../java/fr/uca/iut/services/TypeService.java | 4 + .../java/fr/uca/iut/utils/PokemongName.java | 1285 +++++++++++++++++ src/main/java/fr/uca/iut/utils/TypeName.java | 22 + 15 files changed, 1610 insertions(+) create mode 100644 src/main/java/fr/uca/iut/controllers/PokemongController.java create mode 100644 src/main/java/fr/uca/iut/entities/Move.java create mode 100644 src/main/java/fr/uca/iut/entities/Pokemong.java create mode 100644 src/main/java/fr/uca/iut/entities/Trainer.java create mode 100644 src/main/java/fr/uca/iut/entities/Type.java create mode 100644 src/main/java/fr/uca/iut/repositories/MoveRepository.java create mode 100644 src/main/java/fr/uca/iut/repositories/PokemongRepository.java create mode 100644 src/main/java/fr/uca/iut/repositories/TrainerRepository.java create mode 100644 src/main/java/fr/uca/iut/repositories/TypeRepository.java create mode 100644 src/main/java/fr/uca/iut/services/MoveService.java create mode 100644 src/main/java/fr/uca/iut/services/PokemongService.java create mode 100644 src/main/java/fr/uca/iut/services/TrainerService.java create mode 100644 src/main/java/fr/uca/iut/services/TypeService.java create mode 100644 src/main/java/fr/uca/iut/utils/PokemongName.java create mode 100644 src/main/java/fr/uca/iut/utils/TypeName.java diff --git a/src/main/java/fr/uca/iut/controllers/PokemongController.java b/src/main/java/fr/uca/iut/controllers/PokemongController.java new file mode 100644 index 0000000..af6e2f6 --- /dev/null +++ b/src/main/java/fr/uca/iut/controllers/PokemongController.java @@ -0,0 +1,105 @@ +package fr.uca.iut.controllers; + +import fr.uca.iut.entities.Pokemong; +import fr.uca.iut.services.PokemongService; +import jakarta.inject.Inject; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import org.bson.types.ObjectId; + +@Path("/pokemong") +@Produces(MediaType.APPLICATION_JSON) +public class PokemongController { + + @Inject + PokemongService pokemongService; + + @GET + @Path("/{id}") + public Response getPokemong(@PathParam("id") String id) { + try { + ObjectId objectId = new ObjectId(id); + Pokemong pokemong = pokemongService.getPokemong(objectId); + if (pokemong != null) { + return Response.ok(pokemong) + .build(); + } + else { + return Response.status(Response.Status.NOT_FOUND) + .entity("Pokemong not found for id: " + id) + .build(); + } + } catch (IllegalArgumentException e) { + return Response.status(Response.Status.BAD_REQUEST) + .entity("Invalid id format: " + id) + .build(); + } + } + + @GET + public Response getAllPokemongs() { + return Response.ok(pokemongService.getAllPokemongs()) + .build(); + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + public Response createPokemong(Pokemong pokemong) { + + if (pokemongService.isNotMature(pokemong)) { + pokemong.isMegaEvolved = null; + } + + Pokemong newPokemong = pokemongService.addPokemong(pokemong); + + return Response.status(Response.Status.CREATED) + .entity(newPokemong) + .build(); + } + + @PUT + @Path("/{id}") + @Consumes(MediaType.APPLICATION_JSON) + public Response updatePokemong(@PathParam("id") String id, Pokemong pokemong) { + try { + if (pokemongService.isNotMature(pokemong)) { + pokemong.isMegaEvolved = null; + } + + pokemong.id = new ObjectId(id); + Pokemong updatedPokemong = pokemongService.updatePokemong(pokemong); + + if (updatedPokemong != null) { + return Response.status(Response.Status.OK) + .entity(updatedPokemong) + .build(); + } + else { + return Response.status(Response.Status.NOT_FOUND) + .entity("Pokemong not found for id: " + id) + .build(); + } + } catch (IllegalArgumentException e) { + return Response.status(Response.Status.BAD_REQUEST) + .entity("Invalid id format: " + id) + .build(); + } + } + + @DELETE + @Path("/{id}") + public Response deletePokemong(@PathParam("id") String id) { + try { + ObjectId objectId = new ObjectId(id); + pokemongService.deletePokemong(objectId); + return Response.ok() + .build(); + + } catch (IllegalArgumentException e) { + return Response.status(Response.Status.BAD_REQUEST) + .entity("Invalid id format: " + id) + .build(); + } + } +} diff --git a/src/main/java/fr/uca/iut/entities/Move.java b/src/main/java/fr/uca/iut/entities/Move.java new file mode 100644 index 0000000..c1655fd --- /dev/null +++ b/src/main/java/fr/uca/iut/entities/Move.java @@ -0,0 +1,13 @@ +package fr.uca.iut.entities; + +import io.quarkus.mongodb.panache.PanacheMongoEntity; +import io.quarkus.mongodb.panache.common.MongoEntity; + +@MongoEntity(collection = "moves") +public class Move extends PanacheMongoEntity { + public String name; + public String category; + public Integer power; + public Integer accuracy; + public Type type; +} \ No newline at end of file diff --git a/src/main/java/fr/uca/iut/entities/Pokemong.java b/src/main/java/fr/uca/iut/entities/Pokemong.java new file mode 100644 index 0000000..e4ac19a --- /dev/null +++ b/src/main/java/fr/uca/iut/entities/Pokemong.java @@ -0,0 +1,25 @@ +package fr.uca.iut.entities; + +import fr.uca.iut.utils.PokemongName; +import io.quarkus.mongodb.panache.PanacheMongoEntity; +import io.quarkus.mongodb.panache.common.MongoEntity; +import org.bson.types.ObjectId; + +import java.time.LocalDate; +import java.util.List; +import java.util.Set; + +@MongoEntity(collection = "pokemongs") +public class Pokemong extends PanacheMongoEntity { + public String nickname; + public LocalDate dob; + public Integer level; + public Integer pokedexId; + public Integer evoStage; + public List evoTrack; + public Boolean isMegaEvolved; + public ObjectId trainer; + public Set types; // TODO Bound this within [1;2] (in controller) + public List moveSet; // TODO Bound this within [1;4] (in controller) and denormalize move "name" +} + diff --git a/src/main/java/fr/uca/iut/entities/Trainer.java b/src/main/java/fr/uca/iut/entities/Trainer.java new file mode 100644 index 0000000..e4330e4 --- /dev/null +++ b/src/main/java/fr/uca/iut/entities/Trainer.java @@ -0,0 +1,18 @@ +package fr.uca.iut.entities; + +import io.quarkus.mongodb.panache.PanacheMongoEntity; +import io.quarkus.mongodb.panache.common.MongoEntity; +import org.bson.types.ObjectId; + +import java.time.LocalDate; +import java.util.List; + +@MongoEntity(collection = "trainers") +public class Trainer extends PanacheMongoEntity { + public String name; + public LocalDate dob; + public Integer wins; + public Integer losses; + public List pastOpponents; + public List pokemongs; +} diff --git a/src/main/java/fr/uca/iut/entities/Type.java b/src/main/java/fr/uca/iut/entities/Type.java new file mode 100644 index 0000000..476cfe5 --- /dev/null +++ b/src/main/java/fr/uca/iut/entities/Type.java @@ -0,0 +1,30 @@ +package fr.uca.iut.entities; + +import fr.uca.iut.utils.TypeName; +import io.quarkus.mongodb.panache.PanacheMongoEntity; +import io.quarkus.mongodb.panache.common.MongoEntity; + +import java.util.List; +import java.util.Objects; + +@MongoEntity(collection = "types") +public class Type extends PanacheMongoEntity { + public TypeName name; + public List weakAgainst; + public List effectiveAgainst; + + @Override + public int hashCode() { + return Objects.hash(name, weakAgainst, effectiveAgainst); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Type type = (Type) o; + return Objects.equals(name, type.name) && + Objects.equals(weakAgainst, type.weakAgainst) && + Objects.equals(effectiveAgainst, type.effectiveAgainst); + } +} diff --git a/src/main/java/fr/uca/iut/repositories/MoveRepository.java b/src/main/java/fr/uca/iut/repositories/MoveRepository.java new file mode 100644 index 0000000..14a2007 --- /dev/null +++ b/src/main/java/fr/uca/iut/repositories/MoveRepository.java @@ -0,0 +1,9 @@ +package fr.uca.iut.repositories; + +import fr.uca.iut.entities.Move; +import io.quarkus.mongodb.panache.PanacheMongoRepository; +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class MoveRepository implements PanacheMongoRepository { +} diff --git a/src/main/java/fr/uca/iut/repositories/PokemongRepository.java b/src/main/java/fr/uca/iut/repositories/PokemongRepository.java new file mode 100644 index 0000000..a883808 --- /dev/null +++ b/src/main/java/fr/uca/iut/repositories/PokemongRepository.java @@ -0,0 +1,9 @@ +package fr.uca.iut.repositories; + +import fr.uca.iut.entities.Pokemong; +import io.quarkus.mongodb.panache.PanacheMongoRepository; +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class PokemongRepository implements PanacheMongoRepository { +} diff --git a/src/main/java/fr/uca/iut/repositories/TrainerRepository.java b/src/main/java/fr/uca/iut/repositories/TrainerRepository.java new file mode 100644 index 0000000..ac92959 --- /dev/null +++ b/src/main/java/fr/uca/iut/repositories/TrainerRepository.java @@ -0,0 +1,9 @@ +package fr.uca.iut.repositories; + +import fr.uca.iut.entities.Trainer; +import io.quarkus.mongodb.panache.PanacheMongoRepository; +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class TrainerRepository implements PanacheMongoRepository { +} diff --git a/src/main/java/fr/uca/iut/repositories/TypeRepository.java b/src/main/java/fr/uca/iut/repositories/TypeRepository.java new file mode 100644 index 0000000..cfa5f57 --- /dev/null +++ b/src/main/java/fr/uca/iut/repositories/TypeRepository.java @@ -0,0 +1,9 @@ +package fr.uca.iut.repositories; + +import fr.uca.iut.entities.Type; +import io.quarkus.mongodb.panache.PanacheMongoRepository; +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class TypeRepository implements PanacheMongoRepository { +} diff --git a/src/main/java/fr/uca/iut/services/MoveService.java b/src/main/java/fr/uca/iut/services/MoveService.java new file mode 100644 index 0000000..ba5413a --- /dev/null +++ b/src/main/java/fr/uca/iut/services/MoveService.java @@ -0,0 +1,4 @@ +package fr.uca.iut.services; + +public class MoveService { +} diff --git a/src/main/java/fr/uca/iut/services/PokemongService.java b/src/main/java/fr/uca/iut/services/PokemongService.java new file mode 100644 index 0000000..a0fb627 --- /dev/null +++ b/src/main/java/fr/uca/iut/services/PokemongService.java @@ -0,0 +1,64 @@ +package fr.uca.iut.services; + +import fr.uca.iut.entities.Pokemong; +import fr.uca.iut.repositories.PokemongRepository; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import org.bson.types.ObjectId; + +import java.util.List; + +@ApplicationScoped +public class PokemongService { + + @Inject + PokemongRepository pokemongRepository; + + public Pokemong addPokemong(Pokemong pokemong) { + pokemongRepository.persist(pokemong); + return pokemong; + } + + public Pokemong getPokemong(ObjectId id) { + return pokemongRepository.findById(id); + } + + public List getAllPokemongs() { + return pokemongRepository.listAll(); + } + + public void deletePokemong(ObjectId id) { + Pokemong pokemong = pokemongRepository.findById(id); + if (pokemong != null) { + pokemongRepository.delete(pokemong); + } + } + + public Pokemong updatePokemong(Pokemong pokemong) { + Pokemong existingPokemong = pokemongRepository.findById(pokemong.id); + if (existingPokemong != null) { + existingPokemong.nickname = pokemong.nickname; + existingPokemong.dob = pokemong.dob; + existingPokemong.level = pokemong.level; + existingPokemong.pokedexId = pokemong.pokedexId; + existingPokemong.evoStage = pokemong.evoStage; + existingPokemong.evoTrack = pokemong.evoTrack; + existingPokemong.isMegaEvolved = pokemong.isMegaEvolved; + existingPokemong.trainer = pokemong.trainer; + existingPokemong.types = pokemong.types; + existingPokemong.moveSet = pokemong.moveSet; + pokemongRepository.persistOrUpdate(existingPokemong); + } + return existingPokemong; + } + + public boolean isNotMature(Pokemong pokemong) { + return pokemong == null + || pokemong.evoStage == null + || pokemong.evoTrack == null + || pokemong.evoTrack.isEmpty() + || (pokemong.evoStage != pokemong.evoTrack.size() - 1); + } + + // TODO PATCH ? +} diff --git a/src/main/java/fr/uca/iut/services/TrainerService.java b/src/main/java/fr/uca/iut/services/TrainerService.java new file mode 100644 index 0000000..5a52ba9 --- /dev/null +++ b/src/main/java/fr/uca/iut/services/TrainerService.java @@ -0,0 +1,4 @@ +package fr.uca.iut.services; + +public class TrainerService { +} diff --git a/src/main/java/fr/uca/iut/services/TypeService.java b/src/main/java/fr/uca/iut/services/TypeService.java new file mode 100644 index 0000000..8584257 --- /dev/null +++ b/src/main/java/fr/uca/iut/services/TypeService.java @@ -0,0 +1,4 @@ +package fr.uca.iut.services; + +public class TypeService { +} diff --git a/src/main/java/fr/uca/iut/utils/PokemongName.java b/src/main/java/fr/uca/iut/utils/PokemongName.java new file mode 100644 index 0000000..dcd0723 --- /dev/null +++ b/src/main/java/fr/uca/iut/utils/PokemongName.java @@ -0,0 +1,1285 @@ +package fr.uca.iut.utils; + +public enum PokemongName { + BULBASAUR, + IVYSAUR, + VENUSAUR, + CHARMANDER, + CHARMELEON, + CHARIZARD, + SQUIRTLE, + WARTORTLE, + BLASTOISE, + CATERPIE, + METAPOD, + BUTTERFREE, + WEEDLE, + KAKUNA, + BEEDRILL, + PIDGEY, + PIDGEOTTO, + PIDGEOT, + RATTATA, + RATICATE, + SPEAROW, + FEAROW, + EKANS, + ARBOK, + PIKACHU, + RAICHU, + SANDSHREW, + SANDSLASH, + NIDORAN_F, + NIDORINA, + NIDOQUEEN, + NIDORAN_M, + NIDORINO, + NIDOKING, + CLEFAIRY, + CLEFABLE, + VULPIX, + NINETALES, + JIGGLYPUFF, + WIGGLYTUFF, + ZUBAT, + GOLBAT, + ODDISH, + GLOOM, + VILEPLUME, + PARAS, + PARASECT, + VENONAT, + VENOMOTH, + DIGLETT, + DUGTRIO, + MEOWTH, + PERSIAN, + PSYDUCK, + GOLDUCK, + MANKEY, + PRIMEAPE, + GROWLITHE, + ARCANINE, + POLIWAG, + POLIWHIRL, + POLIWRATH, + ABRA, + KADABRA, + ALAKAZAM, + MACHOP, + MACHOKE, + MACHAMP, + BELLSPROUT, + WEEPINBELL, + VICTREEBEL, + TENTACOOL, + TENTACRUEL, + GEODUDE, + GRAVELER, + GOLEM, + PONYTA, + RAPIDASH, + SLOWPOKE, + SLOWBRO, + MAGNEMITE, + MAGNETON, + FARFETCHD, + DODUO, + DODRIO, + SEEL, + DEWGONG, + GRIMER, + MUK, + SHELLDER, + CLOYSTER, + GASTLY, + HAUNTER, + GENGAR, + ONIX, + DROWZEE, + HYPNO, + KRABBY, + KINGLER, + VOLTORB, + ELECTRODE, + EXEGGCUTE, + EXEGGUTOR, + CUBONE, + MAROWAK, + HITMONLEE, + HITMONCHAN, + LICKITUNG, + KOFFING, + WEEZING, + RHYHORN, + RHYDON, + CHANSEY, + TANGELA, + KANGASKHAN, + HORSEA, + SEADRA, + GOLDEEN, + SEAKING, + STARYU, + STARMIE, + MR_MIME, + SCYTHER, + JYNX, + ELECTABUZZ, + MAGMAR, + PINSIR, + TAUROS, + MAGIKARP, + GYARADOS, + LAPRAS, + DITTO, + EEVEE, + VAPOREON, + JOLTEON, + FLAREON, + PORYGON, + OMANYTE, + OMASTAR, + KABUTO, + KABUTOPS, + AERODACTYL, + SNORLAX, + ARTICUNO, + ZAPDOS, + MOLTRES, + DRATINI, + DRAGONAIR, + DRAGONITE, + MEWTWO, + MEW, + CHIKORITA, + BAYLEEF, + MEGANIUM, + CYNDAQUIL, + QUILAVA, + TYPHLOSION, + TOTODILE, + CROCONAW, + FERALIGATR, + SENTRET, + FURRET, + HOOTHOOT, + NOCTOWL, + LEDYBA, + LEDIAN, + SPINARAK, + ARIADOS, + CROBAT, + CHINCHOU, + LANTURN, + PICHU, + CLEFFA, + IGGLYBUFF, + TOGEPI, + TOGETIC, + NATU, + XATU, + MAREEP, + FLAAFFY, + AMPHAROS, + BELLOSSOM, + MARILL, + AZUMARILL, + SUDOWOODO, + POLITOED, + HOPPIP, + SKIPLOOM, + JUMPLUFF, + AIPOM, + SUNKERN, + SUNFLORA, + YANMA, + WOOPER, + QUAGSIRE, + ESPEON, + UMBREON, + MURKROW, + SLOWKING, + MISDREAVUS, + UNOWN, + WOBBUFFET, + GIRAFARIG, + PINECO, + FORRETRESS, + DUNSPARCE, + GLIGAR, + STEELIX, + SNUBBULL, + GRANBULL, + QWILFISH, + SCIZOR, + SHUCKLE, + HERACROSS, + SNEASEL, + TEDDIURSA, + URSARING, + SLUGMA, + MAGCARGO, + SWINUB, + PILOSWINE, + CORSOLA, + REMORAID, + OCTILLERY, + DELIBIRD, + MANTINE, + SKARMORY, + HOUNDOUR, + HOUNDOOM, + KINGDRA, + PHANPY, + DONPHAN, + PORYGON2, + STANTLER, + SMEARGLE, + TYROGUE, + HITMONTOP, + SMOOCHUM, + ELEKID, + MAGBY, + MILTANK, + BLISSEY, + RAIKOU, + ENTEI, + SUICUNE, + LARVITAR, + PUPITAR, + TYRANITAR, + LUGIA, + HO_OH, + CELEBI, + TREECKO, + GROVYLE, + SCEPTILE, + TORCHIC, + COMBUSKEN, + BLAZIKEN, + MUDKIP, + MARSHTOMP, + SWAMPERT, + POOCHYENA, + MIGHTYENA, + ZIGZAGOON, + LINOONE, + WURMPLE, + SILCOON, + BEAUTIFLY, + CASCOON, + DUSTOX, + LOTAD, + LOMBRE, + LUDICOLO, + SEEDOT, + NUZLEAF, + SHIFTRY, + TAILLOW, + SWELLOW, + WINGULL, + PELIPPER, + RALTS, + KIRLIA, + GARDEVOIR, + SURSKIT, + MASQUERAIN, + SHROOMISH, + BRELOOM, + SLAKOTH, + VIGOROTH, + SLAKING, + NINCADA, + NINJASK, + SHEDINJA, + WHISMUR, + LOUDRED, + EXPLOUD, + MAKUHITA, + HARIYAMA, + AZURILL, + NOSEPASS, + SKITTY, + DELCATTY, + SABLEYE, + MAWILE, + ARON, + LAIRON, + AGGRON, + MEDITITE, + MEDICHAM, + ELECTRIKE, + MANECTRIC, + PLUSLE, + MINUN, + VOLBEAT, + ILLUMISE, + ROSELIA, + GULPIN, + SWALOT, + CARVANHA, + SHARPEDO, + WAILMER, + WAILORD, + NUMEL, + CAMERUPT, + TORKOAL, + SPOINK, + GRUMPIG, + SPINDA, + TRAPINCH, + VIBRAVA, + FLYGON, + CACNEA, + CACTURNE, + SWABLU, + ALTARIA, + ZANGOOSE, + SEVIPER, + LUNATONE, + SOLROCK, + BARBOACH, + WHISCASH, + CORPHISH, + CRAWDAUNT, + BALTOY, + CLAYDOL, + LILEEP, + CRADILY, + ANORITH, + ARMALDO, + FEEBAS, + MILOTIC, + CASTFORM, + KECLEON, + SHUPPET, + BANETTE, + DUSKULL, + DUSCLOPS, + TROPIUS, + CHIMECHO, + ABSOL, + WYNAUT, + SNORUNT, + GLALIE, + SPHEAL, + SEALEO, + WALREIN, + CLAMPERL, + HUNTAIL, + GOREBYSS, + RELICANTH, + LUVDISC, + BAGON, + SHELGON, + SALAMENCE, + BELDUM, + METANG, + METAGROSS, + REGIROCK, + REGICE, + REGISTEEL, + LATIAS, + LATIOS, + KYOGRE, + GROUDON, + RAYQUAZA, + JIRACHI, + DEOXYS_NORMAL, + TURTWIG, + GROTLE, + TORTERRA, + CHIMCHAR, + MONFERNO, + INFERNAPE, + PIPLUP, + PRINPLUP, + EMPOLEON, + STARLY, + STARAVIA, + STARAPTOR, + BIDOOF, + BIBAREL, + KRICKETOT, + KRICKETUNE, + SHINX, + LUXIO, + LUXRAY, + BUDEW, + ROSERADE, + CRANIDOS, + RAMPARDOS, + SHIELDON, + BASTIODON, + BURMY, + WORMADAM_PLANT, + MOTHIM, + COMBEE, + VESPIQUEN, + PACHIRISU, + BUIZEL, + FLOATZEL, + CHERUBI, + CHERRIM, + SHELLOS, + GASTRODON, + AMBIPOM, + DRIFLOON, + DRIFBLIM, + BUNEARY, + LOPUNNY, + MISMAGIUS, + HONCHKROW, + GLAMEOW, + PURUGLY, + CHINGLING, + STUNKY, + SKUNTANK, + BRONZOR, + BRONZONG, + BONSLY, + MIME_JR, + HAPPINY, + CHATOT, + SPIRITOMB, + GIBLE, + GABITE, + GARCHOMP, + MUNCHLAX, + RIOLU, + LUCARIO, + HIPPOPOTAS, + HIPPOWDON, + SKORUPI, + DRAPION, + CROAGUNK, + TOXICROAK, + CARNIVINE, + FINNEON, + LUMINEON, + MANTYKE, + SNOVER, + ABOMASNOW, + WEAVILE, + MAGNEZONE, + LICKILICKY, + RHYPERIOR, + TANGROWTH, + ELECTIVIRE, + MAGMORTAR, + TOGEKISS, + YANMEGA, + LEAFEON, + GLACEON, + GLISCOR, + MAMOSWINE, + PORYGON_Z, + GALLADE, + PROBOPASS, + DUSKNOIR, + FROSLASS, + ROTOM, + UXIE, + MESPRIT, + AZELF, + DIALGA, + PALKIA, + HEATRAN, + REGIGIGAS, + GIRATINA_ALTERED, + CRESSELIA, + PHIONE, + MANAPHY, + DARKRAI, + SHAYMIN_LAND, + ARCEUS, + VICTINI, + SNIVY, + SERVINE, + SERPERIOR, + TEPIG, + PIGNITE, + EMBOAR, + OSHAWOTT, + DEWOTT, + SAMUROTT, + PATRAT, + WATCHOG, + LILLIPUP, + HERDIER, + STOUTLAND, + PURRLOIN, + LIEPARD, + PANSAGE, + SIMISAGE, + PANSEAR, + SIMISEAR, + PANPOUR, + SIMIPOUR, + MUNNA, + MUSHARNA, + PIDOVE, + TRANQUILL, + UNFEZANT, + BLITZLE, + ZEBSTRIKA, + ROGGENROLA, + BOLDORE, + GIGALITH, + WOOBAT, + SWOOBAT, + DRILBUR, + EXCADRILL, + AUDINO, + TIMBURR, + GURDURR, + CONKELDURR, + TYMPOLE, + PALPITOAD, + SEISMITOAD, + THROH, + SAWK, + SEWADDLE, + SWADLOON, + LEAVANNY, + VENIPEDE, + WHIRLIPEDE, + SCOLIPEDE, + COTTONEE, + WHIMSICOTT, + PETILIL, + LILLIGANT, + BASCULIN_RED_STRIPED, + SANDILE, + KROKOROK, + KROOKODILE, + DARUMAKA, + DARMANITAN_STANDARD, + MARACTUS, + DWEBBLE, + CRUSTLE, + SCRAGGY, + SCRAFTY, + SIGILYPH, + YAMASK, + COFAGRIGUS, + TIRTOUGA, + CARRACOSTA, + ARCHEN, + ARCHEOPS, + TRUBBISH, + GARBODOR, + ZORUA, + ZOROARK, + MINCCINO, + CINCCINO, + GOTHITA, + GOTHORITA, + GOTHITELLE, + SOLOSIS, + DUOSION, + REUNICLUS, + DUCKLETT, + SWANNA, + VANILLITE, + VANILLISH, + VANILLUXE, + DEERLING, + SAWSBUCK, + EMOLGA, + KARRABLAST, + ESCAVALIER, + FOONGUS, + AMOONGUSS, + FRILLISH, + JELLICENT, + ALOMOMOLA, + JOLTIK, + GALVANTULA, + FERROSEED, + FERROTHORN, + KLINK, + KLANG, + KLINKLANG, + TYNAMO, + EELEKTRIK, + EELEKTROSS, + ELGYEM, + BEHEEYEM, + LITWICK, + LAMPENT, + CHANDELURE, + AXEW, + FRAXURE, + HAXORUS, + CUBCHOO, + BEARTIC, + CRYOGONAL, + SHELMET, + ACCELGOR, + STUNFISK, + MIENFOO, + MIENSHAO, + DRUDDIGON, + GOLETT, + GOLURK, + PAWNIARD, + BISHARP, + BOUFFALANT, + RUFFLET, + BRAVIARY, + VULLABY, + MANDIBUZZ, + HEATMOR, + DURANT, + DEINO, + ZWEILOUS, + HYDREIGON, + LARVESTA, + VOLCARONA, + COBALION, + TERRAKION, + VIRIZION, + TORNADUS_INCARNATE, + THUNDURUS_INCARNATE, + RESHIRAM, + ZEKROM, + LANDORUS_INCARNATE, + KYUREM, + KELDEO_ORDINARY, + MELOETTA_ARIA, + GENESECT, + CHESPIN, + QUILLADIN, + CHESNAUGHT, + FENNEKIN, + BRAIXEN, + DELPHOX, + FROAKIE, + FROGADIER, + GRENINJA, + BUNNELBY, + DIGGERSBY, + FLETCHLING, + FLETCHINDER, + TALONFLAME, + SCATTERBUG, + SPEWPA, + VIVILLON, + LITLEO, + PYROAR, + FLABEBE, + FLOETTE, + FLORGES, + SKIDDO, + GOGOAT, + PANCHAM, + PANGORO, + FURFROU, + ESPURR, + MEOWSTIC_MALE, + HONEDGE, + DOUBLADE, + AEGISLASH_SHIELD, + SPRITZEE, + AROMATISSE, + SWIRLIX, + SLURPUFF, + INKAY, + MALAMAR, + BINACLE, + BARBARACLE, + SKRELP, + DRAGALGE, + CLAUNCHER, + CLAWITZER, + HELIOPTILE, + HELIOLISK, + TYRUNT, + TYRANTRUM, + AMAURA, + AURORUS, + SYLVEON, + HAWLUCHA, + DEDENNE, + CARBINK, + GOOMY, + SLIGGOO, + GOODRA, + KLEFKI, + PHANTUMP, + TREVENANT, + PUMPKABOO_AVERAGE, + GOURGEIST_AVERAGE, + BERGMITE, + AVALUGG, + NOIBAT, + NOIVERN, + XERNEAS, + YVELTAL, + ZYGARDE_50, + DIANCIE, + HOOPA, + VOLCANION, + ROWLET, + DARTRIX, + DECIDUEYE, + LITTEN, + TORRACAT, + INCINEROAR, + POPPLIO, + BRIONNE, + PRIMARINA, + PIKIPEK, + TRUMBEAK, + TOUCANNON, + YUNGOOS, + GUMSHOOS, + GRUBBIN, + CHARJABUG, + VIKAVOLT, + CRABRAWLER, + CRABOMINABLE, + ORICORIO_BAILE, + CUTIEFLY, + RIBOMBEE, + ROCKRUFF, + LYCANROC_MIDDAY, + WISHIWASHI_SOLO, + MAREANIE, + TOXAPEX, + MUDBRAY, + MUDSDALE, + DEWPIDER, + ARAQUANID, + FOMANTIS, + LURANTIS, + MORELULL, + SHIINOTIC, + SALANDIT, + SALAZZLE, + STUFFUL, + BEWEAR, + BOUNSWEET, + STEENEE, + TSAREENA, + COMFEY, + ORANGURU, + PASSIMIAN, + WIMPOD, + GOLISOPOD, + SANDYGAST, + PALOSSAND, + PYUKUMUKU, + TYPE_NULL, + SILVALLY, + MINIOR_RED_METEOR, + KOMALA, + TURTONATOR, + TOGEDEMARU, + MIMIKYU_DISGUISED, + BRUXISH, + DRAMPA, + DHELMISE, + JANGMO_O, + HAKAMO_O, + KOMMO_O, + TAPU_KOKO, + TAPU_LELE, + TAPU_BULU, + TAPU_FINI, + COSMOG, + COSMOEM, + SOLGALEO, + LUNALA, + NIHILEGO, + BUZZWOLE, + PHEROMOSA, + XURKITREE, + CELESTEELA, + KARTANA, + GUZZLORD, + NECROZMA, + MAGEARNA, + MARSHADOW, + POIPOLE, + NAGANADEL, + STAKATAKA, + BLACEPHALON, + ZERAORA, + MELTAN, + MELMETAL, + GROOKEY, + THWACKEY, + RILLABOOM, + SCORBUNNY, + RABOOT, + CINDERACE, + SOBBLE, + DRIZZILE, + INTELEON, + SKWOVET, + GREEDENT, + ROOKIDEE, + CORVISQUIRE, + CORVIKNIGHT, + BLIPBUG, + DOTTLER, + ORBEETLE, + NICKIT, + THIEVUL, + GOSSIFLEUR, + ELDEGOSS, + WOOLOO, + DUBWOOL, + CHEWTLE, + DREDNAW, + YAMPER, + BOLTUND, + ROLYCOLY, + CARKOL, + COALOSSAL, + APPLIN, + FLAPPLE, + APPLETUN, + SILICOBRA, + SANDACONDA, + CRAMORANT, + ARROKUDA, + BARRASKEWDA, + TOXEL, + TOXTRICITY_AMPED, + SIZZLIPEDE, + CENTISKORCH, + CLOBBOPUS, + GRAPPLOCT, + SINISTEA, + POLTEAGEIST, + HATENNA, + HATTREM, + HATTERENE, + IMPIDIMP, + MORGREM, + GRIMMSNARL, + OBSTAGOON, + PERRSERKER, + CURSOLA, + SIRFETCHD, + MR_RIME, + RUNERIGUS, + MILCERY, + ALCREMIE, + FALINKS, + PINCURCHIN, + SNOM, + FROSMOTH, + STONJOURNER, + EISCUE_ICE, + INDEEDEE_MALE, + MORPEKO_FULL_BELLY, + CUFANT, + COPPERAJAH, + DRACOZOLT, + ARCTOZOLT, + DRACOVISH, + ARCTOVISH, + DURALUDON, + DREEPY, + DRAKLOAK, + DRAGAPULT, + ZACIAN, + ZAMAZENTA, + ETERNATUS, + KUBFU, + URSHIFU_SINGLE_STRIKE, + ZARUDE, + REGIELEKI, + REGIDRAGO, + GLASTRIER, + SPECTRIER, + CALYREX, + WYRDEER, + KLEAVOR, + URSALUNA, + BASCULEGION_MALE, + SNEASLER, + OVERQWIL, + ENAMORUS_INCARNATE, + SPRIGATITO, + FLORAGATO, + MEOWSCARADA, + FUECOCO, + CROCALOR, + SKELEDIRGE, + QUAXLY, + QUAXWELL, + QUAQUAVAL, + LECHONK, + OINKOLOGNE, + TAROUNTULA, + SPIDOPS, + NYMBLE, + LOKIX, + PAWMI, + PAWMO, + PAWMOT, + TANDEMAUS, + MAUSHOLD, + FIDOUGH, + DACHSBUN, + SMOLIV, + DOLLIV, + ARBOLIVA, + SQUAWKABILLY, + NACLI, + NACLSTACK, + GARGANACL, + CHARCADET, + ARMAROUGE, + CERULEDGE, + TADBULB, + BELLIBOLT, + WATTREL, + KILOWATTREL, + MASCHIFF, + MABOSSTIFF, + SHROODLE, + GRAFAIAI, + BRAMBLIN, + BRAMBLEGHAST, + TOEDSCOOL, + TOEDSCRUEL, + KLAWF, + CAPSAKID, + SCOVILLAIN, + RELLOR, + RABSCA, + FLITTLE, + ESPATHRA, + TINKATINK, + TINKATUFF, + TINKATON, + WIGLETT, + WUGTRIO, + BOMBIRDIER, + FINIZEN, + PALAFIN, + VAROOM, + REVAVROOM, + CYCLIZAR, + ORTHWORM, + GLIMMET, + GLIMMORA, + GREAVARD, + HOUNDSTONE, + FLAMIGO, + CETODDLE, + CETITAN, + VELUZA, + DONDOZO, + TATSUGIRI, + ANNIHILAPE, + CLODSIRE, + FARIGIRAF, + DUDUNSPARCE, + KINGAMBIT, + GREAT_TUSK, + SCREAM_TAIL, + BRUTE_BONNET, + FLUTTER_MANE, + SLITHER_WING, + SANDY_SHOCKS, + IRON_TREADS, + IRON_BUNDLE, + IRON_HANDS, + IRON_JUGULIS, + IRON_MOTH, + IRON_THORNS, + FRIGIBAX, + ARCTIBAX, + BAXCALIBUR, + GIMMIGHOUL, + GHOLDENGO, + WO_CHIEN, + CHIEN_PAO, + TING_LU, + CHI_YU, + ROARING_MOON, + IRON_VALIANT, + KORAIDON, + MIRAIDON, + WALKING_WAKE, + IRON_LEAVES, + DEOXYS_ATTACK, + DEOXYS_DEFENSE, + DEOXYS_SPEED, + WORMADAM_SANDY, + WORMADAM_TRASH, + SHAYMIN_SKY, + GIRATINA_ORIGIN, + ROTOM_HEAT, + ROTOM_WASH, + ROTOM_FROST, + ROTOM_FAN, + ROTOM_MOW, + CASTFORM_SUNNY, + CASTFORM_RAINY, + CASTFORM_SNOWY, + BASCULIN_BLUE_STRIPED, + DARMANITAN_ZEN, + MELOETTA_PIROUETTE, + TORNADUS_THERIAN, + THUNDURUS_THERIAN, + LANDORUS_THERIAN, + KYUREM_BLACK, + KYUREM_WHITE, + KELDEO_RESOLUTE, + MEOWSTIC_FEMALE, + AEGISLASH_BLADE, + PUMPKABOO_SMALL, + PUMPKABOO_LARGE, + PUMPKABOO_SUPER, + GOURGEIST_SMALL, + GOURGEIST_LARGE, + GOURGEIST_SUPER, + VENUSAUR_MEGA, + CHARIZARD_MEGA_X, + CHARIZARD_MEGA_Y, + BLASTOISE_MEGA, + ALAKAZAM_MEGA, + GENGAR_MEGA, + KANGASKHAN_MEGA, + PINSIR_MEGA, + GYARADOS_MEGA, + AERODACTYL_MEGA, + MEWTWO_MEGA_X, + MEWTWO_MEGA_Y, + AMPHAROS_MEGA, + SCIZOR_MEGA, + HERACROSS_MEGA, + HOUNDOOM_MEGA, + TYRANITAR_MEGA, + BLAZIKEN_MEGA, + GARDEVOIR_MEGA, + MAWILE_MEGA, + AGGRON_MEGA, + MEDICHAM_MEGA, + MANECTRIC_MEGA, + BANETTE_MEGA, + ABSOL_MEGA, + GARCHOMP_MEGA, + LUCARIO_MEGA, + ABOMASNOW_MEGA, + FLOETTE_ETERNAL, + LATIAS_MEGA, + LATIOS_MEGA, + SWAMPERT_MEGA, + SCEPTILE_MEGA, + SABLEYE_MEGA, + ALTARIA_MEGA, + GALLADE_MEGA, + AUDINO_MEGA, + SHARPEDO_MEGA, + SLOWBRO_MEGA, + STEELIX_MEGA, + PIDGEOT_MEGA, + GLALIE_MEGA, + DIANCIE_MEGA, + METAGROSS_MEGA, + KYOGRE_PRIMAL, + GROUDON_PRIMAL, + RAYQUAZA_MEGA, + PIKACHU_ROCK_STAR, + PIKACHU_BELLE, + PIKACHU_POP_STAR, + PIKACHU_PHD, + PIKACHU_LIBRE, + PIKACHU_COSPLAY, + HOOPA_UNBOUND, + CAMERUPT_MEGA, + LOPUNNY_MEGA, + SALAMENCE_MEGA, + BEEDRILL_MEGA, + RATTATA_ALOLA, + RATICATE_ALOLA, + RATICATE_TOTEM_ALOLA, + PIKACHU_ORIGINAL_CAP, + PIKACHU_HOENN_CAP, + PIKACHU_SINNOH_CAP, + PIKACHU_UNOVA_CAP, + PIKACHU_KALOS_CAP, + PIKACHU_ALOLA_CAP, + RAICHU_ALOLA, + SANDSHREW_ALOLA, + SANDSLASH_ALOLA, + VULPIX_ALOLA, + NINETALES_ALOLA, + DIGLETT_ALOLA, + DUGTRIO_ALOLA, + MEOWTH_ALOLA, + PERSIAN_ALOLA, + GEODUDE_ALOLA, + GRAVELER_ALOLA, + GOLEM_ALOLA, + GRIMER_ALOLA, + MUK_ALOLA, + EXEGGUTOR_ALOLA, + MAROWAK_ALOLA, + GRENINJA_BATTLE_BOND, + GRENINJA_ASH, + ZYGARDE_10_POWER_CONSTRUCT, + ZYGARDE_50_POWER_CONSTRUCT, + ZYGARDE_COMPLETE, + GUMSHOOS_TOTEM, + VIKAVOLT_TOTEM, + ORICORIO_POM_POM, + ORICORIO_PAU, + ORICORIO_SENSU, + LYCANROC_MIDNIGHT, + WISHIWASHI_SCHOOL, + LURANTIS_TOTEM, + SALAZZLE_TOTEM, + MINIOR_ORANGE_METEOR, + MINIOR_YELLOW_METEOR, + MINIOR_GREEN_METEOR, + MINIOR_BLUE_METEOR, + MINIOR_INDIGO_METEOR, + MINIOR_VIOLET_METEOR, + MINIOR_RED, + MINIOR_ORANGE, + MINIOR_YELLOW, + MINIOR_GREEN, + MINIOR_BLUE, + MINIOR_INDIGO, + MINIOR_VIOLET, + MIMIKYU_BUSTED, + MIMIKYU_TOTEM_DISGUISED, + MIMIKYU_TOTEM_BUSTED, + KOMMO_O_TOTEM, + MAGEARNA_ORIGINAL, + PIKACHU_PARTNER_CAP, + MAROWAK_TOTEM, + RIBOMBEE_TOTEM, + ROCKRUFF_OWN_TEMPO, + LYCANROC_DUSK, + ARAQUANID_TOTEM, + TOGEDEMARU_TOTEM, + NECROZMA_DUSK, + NECROZMA_DAWN, + NECROZMA_ULTRA, + PIKACHU_STARTER, + EEVEE_STARTER, + PIKACHU_WORLD_CAP, + MEOWTH_GALAR, + PONYTA_GALAR, + RAPIDASH_GALAR, + SLOWPOKE_GALAR, + SLOWBRO_GALAR, + FARFETCHD_GALAR, + WEEZING_GALAR, + MR_MIME_GALAR, + ARTICUNO_GALAR, + ZAPDOS_GALAR, + MOLTRES_GALAR, + SLOWKING_GALAR, + CORSOLA_GALAR, + ZIGZAGOON_GALAR, + LINOONE_GALAR, + DARUMAKA_GALAR, + DARMANITAN_GALAR_STANDARD, + DARMANITAN_GALAR_ZEN, + YAMASK_GALAR, + STUNFISK_GALAR, + ZYGARDE_10, + CRAMORANT_GULPING, + CRAMORANT_GORGING, + TOXTRICITY_LOW_KEY, + EISCUE_NOICE, + INDEEDEE_FEMALE, + MORPEKO_HANGRY, + ZACIAN_CROWNED, + ZAMAZENTA_CROWNED, + ETERNATUS_ETERNAMAX, + URSHIFU_RAPID_STRIKE, + ZARUDE_DADA, + CALYREX_ICE, + CALYREX_SHADOW, + VENUSAUR_GMAX, + CHARIZARD_GMAX, + BLASTOISE_GMAX, + BUTTERFREE_GMAX, + PIKACHU_GMAX, + MEOWTH_GMAX, + MACHAMP_GMAX, + GENGAR_GMAX, + KINGLER_GMAX, + LAPRAS_GMAX, + EEVEE_GMAX, + SNORLAX_GMAX, + GARBODOR_GMAX, + MELMETAL_GMAX, + RILLABOOM_GMAX, + CINDERACE_GMAX, + INTELEON_GMAX, + CORVIKNIGHT_GMAX, + ORBEETLE_GMAX, + DREDNAW_GMAX, + COALOSSAL_GMAX, + FLAPPLE_GMAX, + APPLETUN_GMAX, + SANDACONDA_GMAX, + TOXTRICITY_AMPED_GMAX, + CENTISKORCH_GMAX, + HATTERENE_GMAX, + GRIMMSNARL_GMAX, + ALCREMIE_GMAX, + COPPERAJAH_GMAX, + DURALUDON_GMAX, + URSHIFU_SINGLE_STRIKE_GMAX, + URSHIFU_RAPID_STRIKE_GMAX, + TOXTRICITY_LOW_KEY_GMAX, + GROWLITHE_HISUI, + ARCANINE_HISUI, + VOLTORB_HISUI, + ELECTRODE_HISUI, + TYPHLOSION_HISUI, + QWILFISH_HISUI, + SNEASEL_HISUI, + SAMUROTT_HISUI, + LILLIGANT_HISUI, + ZORUA_HISUI, + ZOROARK_HISUI, + BRAVIARY_HISUI, + SLIGGOO_HISUI, + GOODRA_HISUI, + AVALUGG_HISUI, + DECIDUEYE_HISUI, + DIALGA_ORIGIN, + PALKIA_ORIGIN, + BASCULIN_WHITE_STRIPED, + BASCULEGION_FEMALE, + ENAMORUS_THERIAN, + TAUROS_PALDEA_COMBAT_BREED, + TAUROS_PALDEA_BLAZE_BREED, + TAUROS_PALDEA_AQUA_BREED, + WOOPER_PALDEA, + OINKOLOGNE_FEMALE, + DUDUNSPARCE_THREE_SEGMENT, + PALAFIN_HERO, + MAUSHOLD_FAMILY_OF_THREE, + TATSUGIRI_DROOPY, + TATSUGIRI_STRETCHY, + SQUAWKABILLY_BLUE_PLUMAGE, + SQUAWKABILLY_YELLOW_PLUMAGE, + SQUAWKABILLY_WHITE_PLUMAGE, + GIMMIGHOUL_ROAMING, + KORAIDON_LIMITED_BUILD, + KORAIDON_SPRINTING_BUILD, + KORAIDON_SWIMMING_BUILD, + KORAIDON_GLIDING_BUILD, + MIRAIDON_LOW_POWER_MODE, + MIRAIDON_DRIVE_MODE, + MIRAIDON_AQUATIC_MODE, + MIRAIDON_GLIDE_MODE, +} diff --git a/src/main/java/fr/uca/iut/utils/TypeName.java b/src/main/java/fr/uca/iut/utils/TypeName.java new file mode 100644 index 0000000..3383d2d --- /dev/null +++ b/src/main/java/fr/uca/iut/utils/TypeName.java @@ -0,0 +1,22 @@ +package fr.uca.iut.utils; + +public enum TypeName { + NORMAL, + GRASS, + ELECTRIC, + WATER, + FIRE, + BUG, + GHOST, + PSYCHIC, + STEEL, + DARK, + FLYING, + ICE, + POISON, + GROUND, + ROCK, + DRAGON, + FIGHTING, + FAIRY, +}