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.Radoc; import br.ufg.inf.es.saep.sandbox.persistencia.model.InterfaceRadocDAO; 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 InterfaceRadocDAO * * Classe responsvel por realizar operaes no banco de dados mongo referentes * aos Radocs do projeto. */ public class BasicRadocDAO implements InterfaceRadocDAO { /** * Instancia referente a um banco de dados Mongo. */ private MongoDatabase mongoDatabase; /** * Instancia referente a uma collection de dado Mongo aonde se armazenara os * Radocs. * * @see Radoc * @see InterfaceResolucaoDAO */ private MongoCollection mongoCollection; /** * Palavra-chave referente ao identificador unico de um {@code Radoc}. * * @see Radoc */ private final String ID = "id"; /** * Construtor responsvel por inicializar a coleo referente aos Radoc. * * @param mongoDatabase Instancia do banco de dados mongo. * @param collectionName Nome da coleo referente ao {@code Radoc} * @see Radoc */ public BasicRadocDAO(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 InterfaceRadocDAO} * * @see InterfaceRadocDAO */ @Override public Radoc findRadocById(String id) { FindIterable<Document> iterable = this.mongoCollection.find(new Document("id", id)); if (iterable.first() == null) { throw new IdentificadorDesconhecido(id); } Gson gson = new Gson(); Radoc radoc = gson.fromJson(iterable.first().toJson(), Radoc.class); return (radoc); } /** * A descrio do mtodo est na interface {@code InterfaceRadocDAO} * * @see InterfaceRadocDAO */ @Override public HashSet<Radoc> findAllRadoc() { Collection<Radoc> collectionRadoc = this.mongoCollection.find().into(new HashSet<>()); return ((HashSet<Radoc>) collectionRadoc); } /** * A descrio do mtodo est na interface {@code InterfaceRadocDAO} * * @see InterfaceRadocDAO */ @Override public void updateRadocById(String id, Radoc radoc) { Gson gson = new Gson(); Document docRadoc = Document.parse(gson.toJson(radoc)); try { Object foar = this.mongoCollection.findOneAndReplace(new Document("id", id), docRadoc); if (foar == null) { throw new IdentificadorDesconhecido(id); } } catch (MongoWriteException e) { throw new IdentificadorExistente(id); } } /** * A descrio do mtodo est na interface {@code InterfaceRadocDAO} * * @see InterfaceRadocDAO */ @Override public void deleteRadocById(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 InterfaceRadocDAO} * * @see InterfaceRadocDAO */ @Override public void deleteAllRadoc() { this.mongoCollection.drop(); } /** * A descrio do mtodo est na interface {@code InterfaceRadocDAO} * * @see InterfaceRadocDAO */ @Override public void insertRadoc(Radoc radoc) { Gson gson = new Gson(); Document docRadoc = Document.parse(gson.toJson(radoc)); try { this.mongoCollection.insertOne(docRadoc); } catch (MongoWriteException e) { throw new IdentificadorExistente(radoc.getId()); } } }