🚨 Add some annotations to help with `null`

pull/5/head
Alexis Drai 2 years ago
parent 2733b6d52d
commit cf46b9c44d

@ -9,6 +9,7 @@ import org.bson.codecs.CollectibleCodec;
import org.bson.codecs.DecoderContext;
import org.bson.codecs.EncoderContext;
import org.bson.types.ObjectId;
import org.jetbrains.annotations.NotNull;
public abstract class GenericCodec<T extends GenericEntity> implements CollectibleCodec<T> {
@ -27,12 +28,12 @@ public abstract class GenericCodec<T extends GenericEntity> implements Collectib
}
@Override
public boolean documentHasId(T document) {
public boolean documentHasId(@NotNull T document) {
return document.getId() != null;
}
@Override
public BsonValue getDocumentId(T document) {
public BsonValue getDocumentId(@NotNull T document) {
return new BsonObjectId(new ObjectId(document.getId()));
}

@ -1,78 +1,78 @@
package fr.uca.iut.codecs.move;
import com.mongodb.MongoClientSettings;
import fr.uca.iut.codecs.GenericCodec;
import fr.uca.iut.codecs.type.TypeCodecUtil;
import fr.uca.iut.entities.Move;
import fr.uca.iut.entities.embedded.Type;
import fr.uca.iut.utils.enums.MoveCategoryName;
import org.bson.BsonReader;
import org.bson.BsonWriter;
import org.bson.Document;
import org.bson.codecs.Codec;
import org.bson.codecs.DecoderContext;
import org.bson.codecs.EncoderContext;
import org.bson.types.ObjectId;
public class MoveCodec extends GenericCodec<Move> {
private final Codec<Document> documentCodec;
public MoveCodec() {
this.documentCodec = MongoClientSettings.getDefaultCodecRegistry()
.get(Document.class);
}
@Override
public void encode(BsonWriter writer, Move move, EncoderContext encoderContext) {
Document doc = new Document();
doc.put("_id", new ObjectId(move.getId()));
doc.put("name", move.getName());
doc.put("category", move.getCategory());
doc.put("power", move.getPower());
doc.put("accuracy", move.getAccuracy());
Type moveType = move.getType();
Document typeDoc = new Document();
typeDoc.put("name",
moveType.getName()
.toString());
typeDoc.put("weakAgainst", moveType.getWeakAgainst());
typeDoc.put("effectiveAgainst", moveType.getEffectiveAgainst());
doc.put("type", typeDoc);
documentCodec.encode(writer, doc, encoderContext);
}
@Override
public Class<Move> getEncoderClass() {
return Move.class;
}
@Override
public Move decode(BsonReader reader, DecoderContext decoderContext) {
Document document = documentCodec.decode(reader, decoderContext);
Move move = new Move();
move.setId(document.getObjectId("_id")
.toString());
move.setName(document.getString("name"));
move.setCategory(MoveCategoryName.valueOf(document.getString("category")));
move.setPower(document.getInteger("power"));
move.setAccuracy(document.getInteger("accuracy"));
Document typeDoc = (Document) document.get("type");
move.setType(TypeCodecUtil.extractType(typeDoc));
return move;
}
}
package fr.uca.iut.codecs.move;
import com.mongodb.MongoClientSettings;
import fr.uca.iut.codecs.GenericCodec;
import fr.uca.iut.codecs.type.TypeCodecUtil;
import fr.uca.iut.entities.Move;
import fr.uca.iut.entities.embedded.Type;
import fr.uca.iut.utils.enums.MoveCategoryName;
import org.bson.BsonReader;
import org.bson.BsonWriter;
import org.bson.Document;
import org.bson.codecs.Codec;
import org.bson.codecs.DecoderContext;
import org.bson.codecs.EncoderContext;
import org.bson.types.ObjectId;
public class MoveCodec extends GenericCodec<Move> {
private final Codec<Document> documentCodec;
public MoveCodec() {
this.documentCodec = MongoClientSettings.getDefaultCodecRegistry()
.get(Document.class);
}
@Override
public void encode(BsonWriter writer, @NotNull Move move, EncoderContext encoderContext) {
Document doc = new Document();
doc.put("_id", new ObjectId(move.getId()));
doc.put("name", move.getName());
doc.put("category", move.getCategory());
doc.put("power", move.getPower());
doc.put("accuracy", move.getAccuracy());
Type moveType = move.getType();
Document typeDoc = new Document();
typeDoc.put("name",
moveType.getName()
.toString());
typeDoc.put("weakAgainst", moveType.getWeakAgainst());
typeDoc.put("effectiveAgainst", moveType.getEffectiveAgainst());
doc.put("type", typeDoc);
documentCodec.encode(writer, doc, encoderContext);
}
@Override
public Class<Move> getEncoderClass() {
return Move.class;
}
@Override
public Move decode(BsonReader reader, DecoderContext decoderContext) {
Document document = documentCodec.decode(reader, decoderContext);
Move move = new Move();
move.setId(document.getObjectId("_id")
.toString());
move.setName(document.getString("name"));
move.setCategory(MoveCategoryName.valueOf(document.getString("category")));
move.setPower(document.getInteger("power"));
move.setAccuracy(document.getInteger("accuracy"));
Document typeDoc = (Document) document.get("type");
move.setType(TypeCodecUtil.extractType(typeDoc));
return move;
}
}

@ -14,6 +14,7 @@ import org.bson.codecs.Codec;
import org.bson.codecs.DecoderContext;
import org.bson.codecs.EncoderContext;
import org.bson.types.ObjectId;
import org.jetbrains.annotations.NotNull;
import java.time.ZoneId;
import java.util.Date;
@ -30,7 +31,7 @@ public class PokemongCodec extends GenericCodec<Pokemong> {
}
@Override
public void encode(BsonWriter writer, Pokemong pokemong, EncoderContext encoderContext) {
public void encode(BsonWriter writer, @NotNull Pokemong pokemong, EncoderContext encoderContext) {
Document doc = new Document();
doc.put("_id", new ObjectId(pokemong.getId()));

@ -5,11 +5,12 @@ import fr.uca.iut.entities.Pokemong;
import org.bson.codecs.Codec;
import org.bson.codecs.configuration.CodecProvider;
import org.bson.codecs.configuration.CodecRegistry;
import org.jetbrains.annotations.NotNull;
public class PokemongCodecProvider implements CodecProvider {
@Nullable
@Override
public <T> Codec<T> get(Class<T> clazz, CodecRegistry registry) {
public <T> Codec<T> get(@NotNull Class<T> clazz, CodecRegistry registry) {
if (clazz.equals(Pokemong.class)) {
return (Codec<T>) new PokemongCodec();
}

@ -12,6 +12,7 @@ import org.bson.codecs.Codec;
import org.bson.codecs.DecoderContext;
import org.bson.codecs.EncoderContext;
import org.bson.types.ObjectId;
import org.jetbrains.annotations.NotNull;
import java.time.LocalDate;
import java.time.ZoneId;
@ -28,7 +29,7 @@ public class TrainerCodec extends GenericCodec<Trainer> {
}
@Override
public void encode(BsonWriter writer, Trainer trainer, EncoderContext encoderContext) {
public void encode(BsonWriter writer, @NotNull Trainer trainer, EncoderContext encoderContext) {
Document doc = new Document();
doc.put("_id", new ObjectId(trainer.getId()));

@ -5,11 +5,12 @@ import fr.uca.iut.entities.Trainer;
import org.bson.codecs.Codec;
import org.bson.codecs.configuration.CodecProvider;
import org.bson.codecs.configuration.CodecRegistry;
import org.jetbrains.annotations.NotNull;
public class TrainerCodecProvider implements CodecProvider {
@Nullable
@Override
public <T> Codec<T> get(Class<T> clazz, CodecRegistry registry) {
public <T> Codec<T> get(@NotNull Class<T> clazz, CodecRegistry registry) {
if (clazz.equals(Trainer.class)) {
return (Codec<T>) new TrainerCodec();
}

@ -193,7 +193,7 @@ public class PokemongService extends GenericService<Pokemong> {
return repository.existsById(pokemongId);
}
public void batchUpdatePokemongTrainers(List<TrainerPokemong> trainerPokemongs, @Nullable String trainerId) {
public void batchUpdatePokemongTrainers(@NotNull List<TrainerPokemong> trainerPokemongs, @Nullable String trainerId) {
for (TrainerPokemong trainerPokemong : trainerPokemongs) {
Pokemong pokemong = getOneById(trainerPokemong.getId());
if (pokemong != null) {

Loading…
Cancel
Save