Java tutorial
/* * Copyright (c) 2016. Fbrica de Software - Instituto de Informtica (UFG) * Creative Commons Attribution 4.0 International License. */ package br.ufg.inf.es.saep.sandbox.persistencia.service; import br.ufg.inf.es.saep.sandbox.dominio.IdentificadorDesconhecido; import br.ufg.inf.es.saep.sandbox.dominio.IdentificadorExistente; import br.ufg.inf.es.saep.sandbox.dominio.Parecer; import br.ufg.inf.es.saep.sandbox.persistencia.model.InterfaceParecerDAO; import com.google.gson.Gson; import com.mongodb.MongoWriteException; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.IndexOptions; import java.util.Collection; import java.util.HashSet; import org.bson.Document; /** * * @author Pedro Henrique Silva Farias * @see InterfaceParecerDAO * * Classe responsvel por realizar operaes no banco de dados mongo referentes * aos Parecers do projeto. */ public class BasicParecerDAO implements InterfaceParecerDAO { /** * Instancia referente a um banco de dados Mongo. */ private MongoDatabase mongoDatabase; /** * Instancia referente a uma collection de dado Mongo aonde se armazenara os * Parecers. * * @see Parecer * @see InterfaceResolucaoDAO */ private MongoCollection mongoCollection; /** * Palavra-chave referente ao identificador unico de um {@code Parecer}. * * @see Parecer */ private final String ID = "id"; /** * Construtor responsvel por inicializar a coleo referente aos Parecer. * * @param mongoDatabase Instancia do banco de dados mongo. * @param collectionName Nome da coleo referente ao {@code Parecer} * @see Parecer */ public BasicParecerDAO(MongoDatabase mongoDatabase, String collectionName) { this.mongoDatabase = mongoDatabase; this.mongoCollection = this.mongoDatabase.getCollection(collectionName); Document index = new Document(ID, 1); this.mongoCollection.createIndex(index, new IndexOptions().unique(true)); } /** * A descrio do mtodo est na interface {@code InterfaceParecerDAO} * * @see InterfaceParecerDAO */ @Override public Parecer findParecerById(String id) { FindIterable<Document> iterable = this.mongoCollection.find(new Document("id", id)); if (iterable.first() == null) { throw new IdentificadorDesconhecido(id); } Gson gson = new Gson(); Parecer parecer = gson.fromJson(iterable.first().toJson(), Parecer.class); return (parecer); } /** * A descrio do mtodo est na interface {@code InterfaceParecerDAO} * * @see InterfaceParecerDAO */ @Override public HashSet<Parecer> findAllParecer() { Collection<Parecer> collectionParecer = this.mongoCollection.find().into(new HashSet<>()); return ((HashSet<Parecer>) collectionParecer); } /** * A descrio do mtodo est na interface {@code InterfaceParecerDAO} * * @see InterfaceParecerDAO */ @Override public void updateParecerById(String id, Parecer parecer) { Gson gson = new Gson(); Document docParecer = Document.parse(gson.toJson(parecer)); try { Object foar = this.mongoCollection.findOneAndReplace(new Document("id", id), docParecer); if (foar == null) { throw new IdentificadorDesconhecido(id); } } catch (MongoWriteException e) { throw new IdentificadorExistente(id); } } /** * A descrio do mtodo est na interface {@code InterfaceParecerDAO} * * @see InterfaceParecerDAO */ @Override public void deleteParecerById(String id) { Object foad = this.mongoCollection.findOneAndDelete(new Document("id", id)); if (foad == null) { throw new IdentificadorDesconhecido(id); } } /** * A descrio do mtodo est na interface {@code InterfaceParecerDAO} * * @see InterfaceParecerDAO */ @Override public void deleteAllParecer() { this.mongoCollection.drop(); } /** * A descrio do mtodo est na interface {@code InterfaceParecerDAO} * * @see InterfaceParecerDAO */ @Override public void insertParecer(Parecer parecer) { Gson gson = new Gson(); Document docParecer = Document.parse(gson.toJson(parecer)); try { this.mongoCollection.insertOne(docParecer); } catch (MongoWriteException e) { throw new IdentificadorExistente(parecer.getId()); } } }