Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.mycompany.bean; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.MongoClient; import com.mycompany.model.Plyta; import com.mycompany.model.Utwor; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.ejb.Stateless; import org.bson.Document; /** * * @author HP */ @Stateless public class PlytaService { Logger log = Logger.getLogger(PlytaService.class.getName()); public static DBCollection getConnection(String DBName, String CollectionName) throws Exception { MongoClient mongo = new MongoClient("localhost", 27017); DB db = mongo.getDB(DBName); DBCollection table = db.getCollection(CollectionName); return table; } public String insertDocument(String DBName, String CollectionName, Plyta PlytaInstance) throws Exception { try { DBCollection collection = getConnection(DBName, CollectionName); BasicDBObject utwor; List<BasicDBObject> utwory = new ArrayList<BasicDBObject>(); if (PlytaInstance.getUtwory() != null) { for (int i = 0; i < PlytaInstance.getUtwory().size(); i++) { utwor = new BasicDBObject(); utwor.put("nazwa", PlytaInstance.getUtwory().get(i).getNazwa()); utwor.put("dlugosc", PlytaInstance.getUtwory().get(i).getDlugosc()); utwory.add(utwor); } } BasicDBObject document = new BasicDBObject("tytul", PlytaInstance.getTytul()) .append("autor", PlytaInstance.getAutor()) .append("liczbaUtworow", PlytaInstance.getLiczbaUtworow()) .append("wytwornia", PlytaInstance.getWytwornia()) .append("rokWydania", PlytaInstance.getRokWydania()) .append("producent", PlytaInstance.getProducent()).append("gatunek", PlytaInstance.getGatunek()) .append("dlugosc", PlytaInstance.getDlugosc()).append("single", PlytaInstance.getSingle()) .append("nagrody", PlytaInstance.getNagrody()) .append("rodzajAlbumu", PlytaInstance.getRodzajAlbumu()).append("utwory", utwory); collection.insert(document); log.log(Level.INFO, "Document inserted"); return "Pomyslnie dodano dokument: " + collection.count(); } catch (Exception e) { log.log(Level.SEVERE, "Document inserting error! Exception thrown"); System.out.println("Blad podczas dodawania dokumentu:" + e.getClass().getName()); System.out.println("wiadomosc: " + e.getMessage()); e.printStackTrace(); return null; } } /* GET A COLLECTION */ public List<Plyta> getCollenction(String dbName, String colName) throws Exception { DBCollection collection = getConnection(dbName, colName); DBCursor cur = collection.find(); List<Plyta> plyty = new ArrayList(); //List<String> autorzy; DBObject o; Plyta p; while (cur.hasNext()) { p = new Plyta(); o = cur.next(); p.setTytul((String) o.get("tytul")); p.setAutor((List<String>) o.get("autor")); p.setLiczbaUtworow((Integer) o.get("liczbaUtworow")); p.setWytwornia((List<String>) o.get("wytwornia")); p.setRokWydania((Integer) o.get("rokWydania")); p.setProducent((String) o.get("producent")); p.setGatunek((List<String>) o.get("gatunek")); p.setDlugosc((String) o.get("dlugosc")); p.setSingle((List<String>) o.get("single")); p.setNagrody((List<String>) o.get("nagrody")); p.setRodzajAlbumu((String) o.get("rodzajAlbumu")); p.setUtwory((List<Utwor>) o.get("utwory")); plyty.add(p); } return plyty; } public String deleteDocument(String DBName, String CollectionName, Plyta PlytaInstance) throws Exception { try { DBCollection collection = getConnection(DBName, CollectionName); BasicDBObject query = new BasicDBObject(); query.append("tytul", PlytaInstance.getTytul()); collection.remove(query); return "Dokument pomyslnie usuniety"; } catch (Exception e) { System.out.println("Blad podaczas usuwania dokumentu!"); e.printStackTrace(); } return "Blad poczas usuwania dokumentu"; } public List<Plyta> searchByTytul(String DBName, String CollectionName, String paramTytul) throws Exception { List<Plyta> plyty = new ArrayList(); try { DBCollection collection = getConnection(DBName, CollectionName); BasicDBObject TytulIndex = new BasicDBObject(); TytulIndex.put("tytul", 1); collection.createIndex(TytulIndex, "TytulIndex", true); // tworzy index jeeli takiego nie ma BasicDBObject query = new BasicDBObject(); query.append("tytul", paramTytul); DBCursor cur = collection.find(query); DBObject o; Plyta p; while (cur.hasNext()) { p = new Plyta(); o = cur.next(); p.setTytul((String) o.get("tytul")); p.setAutor((List<String>) o.get("autor")); p.setLiczbaUtworow((Integer) o.get("liczbaUtworow")); p.setWytwornia((List<String>) o.get("wytwornia")); p.setRokWydania((Integer) o.get("rokWydania")); p.setProducent((String) o.get("producent")); p.setGatunek((List<String>) o.get("gatunek")); p.setDlugosc((String) o.get("dlugosc")); p.setSingle((List<String>) o.get("single")); p.setNagrody((List<String>) o.get("nagrody")); p.setRodzajAlbumu((String) o.get("rodzajAlbumu")); p.setUtwory((List<Utwor>) o.get("utwory")); plyty.add(p); } log.log(Level.INFO, "Zapytanie wykonane poprawnie"); } catch (Exception e) { log.log(Level.SEVERE, "Blad wykonania zapytania"); } return plyty; } public Plyta findPlytaByTytul(String tytul) throws Exception { DBCollection collection = getConnection("PlytyDB", "plyty"); BasicDBObject query = new BasicDBObject(); query.append("tytul", tytul); DBObject o = collection.findOne(query); Plyta p = new Plyta(); p.setTytul((String) o.get("tytul")); p.setAutor((List<String>) o.get("autor")); p.setLiczbaUtworow((Integer) o.get("liczbaUtworow")); p.setWytwornia((List<String>) o.get("wytwornia")); p.setRokWydania((Integer) o.get("rokWydania")); p.setProducent((String) o.get("producent")); p.setGatunek((List<String>) o.get("gatunek")); p.setDlugosc((String) o.get("dlugosc")); p.setSingle((List<String>) o.get("single")); p.setNagrody((List<String>) o.get("nagrody")); p.setRodzajAlbumu((String) o.get("rodzajAlbumu")); p.setUtwory((List<Utwor>) o.get("utwory")); return p; } public List<Plyta> searchByAutor(String DBName, String CollectionName, String paramAutor) throws Exception { List<Plyta> plyty = new ArrayList(); try { DBCollection collection = getConnection(DBName, CollectionName); BasicDBObject AutorIndex = new BasicDBObject(); AutorIndex.put("autor", 1); collection.createIndex(AutorIndex, "IndexAutor"); BasicDBObject query = new BasicDBObject(); query.append("autor", paramAutor); DBCursor cur = collection.find(query); DBObject o; Plyta p; while (cur.hasNext()) { p = new Plyta(); o = cur.next(); p.setTytul((String) o.get("tytul")); p.setAutor((List<String>) o.get("autor")); p.setLiczbaUtworow((Integer) o.get("liczbaUtworow")); p.setWytwornia((List<String>) o.get("wytwornia")); p.setRokWydania((Integer) o.get("rokWydania")); p.setProducent((String) o.get("producent")); p.setGatunek((List<String>) o.get("gatunek")); p.setDlugosc((String) o.get("dlugosc")); p.setSingle((List<String>) o.get("single")); p.setNagrody((List<String>) o.get("nagrody")); p.setRodzajAlbumu((String) o.get("rodzajAlbumu")); p.setUtwory((List<Utwor>) o.get("utwory")); plyty.add(p); } log.log(Level.INFO, "Zapytanie wykonane poprawnie"); } catch (Exception e) { log.log(Level.SEVERE, "Blad wykonania zapytania"); } return plyty; } public List<Plyta> searchByGatunek(String DBName, String CollectionName, String paramGatunek) throws Exception { List<Plyta> plyty = new ArrayList(); try { DBCollection collection = getConnection(DBName, CollectionName); BasicDBObject GatunekIndex = new BasicDBObject(); GatunekIndex.put("gatunek", 1); collection.createIndex(GatunekIndex, "IndexGatunek"); BasicDBObject query = new BasicDBObject(); query.append("gatunek", paramGatunek); DBCursor cur = collection.find(query); DBObject o; Plyta p; while (cur.hasNext()) { p = new Plyta(); o = cur.next(); p.setTytul((String) o.get("tytul")); p.setAutor((List<String>) o.get("autor")); p.setLiczbaUtworow((Integer) o.get("liczbaUtworow")); p.setWytwornia((List<String>) o.get("wytwornia")); p.setRokWydania((Integer) o.get("rokWydania")); p.setProducent((String) o.get("producent")); p.setGatunek((List<String>) o.get("gatunek")); p.setDlugosc((String) o.get("dlugosc")); p.setSingle((List<String>) o.get("single")); p.setNagrody((List<String>) o.get("nagrody")); p.setRodzajAlbumu((String) o.get("rodzajAlbumu")); p.setUtwory((List<Utwor>) o.get("utwory")); plyty.add(p); } log.log(Level.INFO, "Zapytanie wykonane poprawnie"); } catch (Exception e) { log.log(Level.SEVERE, "Blad wykonania zapytania"); } return plyty; } public List<Plyta> searchByUtwor(String DBName, String CollectionName, String paramUtwor) throws Exception { List<Plyta> plyty = new ArrayList(); try { DBCollection collection = getConnection(DBName, CollectionName); BasicDBObject UtworIndex = new BasicDBObject(); UtworIndex.put("utwory.nazwa", 1); collection.createIndex(UtworIndex, "IndexUtwor"); // tworzy index jeeli takiego nie ma BasicDBObject query = new BasicDBObject(); query.append("utwory.nazwa", paramUtwor); DBCursor cur = collection.find(query); DBObject o; Plyta p; while (cur.hasNext()) { p = new Plyta(); o = cur.next(); p.setTytul((String) o.get("tytul")); p.setAutor((List<String>) o.get("autor")); p.setLiczbaUtworow((Integer) o.get("liczbaUtworow")); p.setWytwornia((List<String>) o.get("wytwornia")); p.setRokWydania((Integer) o.get("rokWydania")); p.setProducent((String) o.get("producent")); p.setGatunek((List<String>) o.get("gatunek")); p.setDlugosc((String) o.get("dlugosc")); p.setSingle((List<String>) o.get("single")); p.setNagrody((List<String>) o.get("nagrody")); p.setRodzajAlbumu((String) o.get("rodzajAlbumu")); p.setUtwory((List<Utwor>) o.get("utwory")); plyty.add(p); } log.log(Level.INFO, "Zapytanie wykonane poprawnie"); } catch (Exception e) { log.log(Level.SEVERE, "Blad wykonania zapytania"); } return plyty; } public String updateDocProducent(String tytulBase, String producentNew) throws Exception { try { DBCollection collection = getConnection("PlytyDB", "plyty"); collection.update(new BasicDBObject("tytul", tytulBase), new BasicDBObject("$set", new BasicDBObject("producent", producentNew))); } catch (Exception e) { log.log(Level.SEVERE, "Blad podczas edycji plyty"); System.out.println(e.getClass().getName() + ": " + e.getMessage()); } return "Edycja wykonana"; } public String updateDocGatunek(String tytulBase, ArrayList<String> gatunekNew) { try { DBCollection collection = getConnection("PlytyDB", "plyty"); collection.update(new BasicDBObject("tytul", tytulBase), new BasicDBObject("$set", new BasicDBObject("gatunek", gatunekNew))); } catch (Exception e) { log.log(Level.SEVERE, "Blad podczas edycji plyty"); System.out.println(e.getClass().getName() + ": " + e.getMessage()); } return "Edycja wykonana"; } public String updateDocSingle(String tytulBase, ArrayList<String> single) { try { DBCollection collection = getConnection("PlytyDB", "plyty"); collection.update(new BasicDBObject("tytul", tytulBase), new BasicDBObject("$set", new BasicDBObject("single", single))); } catch (Exception e) { log.log(Level.SEVERE, "Blad podczas edycji plyty"); System.out.println(e.getClass().getName() + ": " + e.getMessage()); } return "Edycja wykonana"; } public String updateDocNagrody(String tytulBase, ArrayList<String> nagrody) { try { DBCollection collection = getConnection("PlytyDB", "plyty"); collection.update(new BasicDBObject("tytul", tytulBase), new BasicDBObject("$set", new BasicDBObject("nagrody", nagrody))); } catch (Exception e) { log.log(Level.SEVERE, "Blad podczas edycji plyty"); System.out.println(e.getClass().getName() + ": " + e.getMessage()); } return "Edycja wykonana"; } public String updateDocTytul(String tytulBase, String tytulNew) { try { DBCollection collection = getConnection("PlytyDB", "plyty"); collection.update(new BasicDBObject("tytul", tytulBase), new BasicDBObject("$set", new BasicDBObject("tytul", tytulNew))); } catch (Exception e) { log.log(Level.SEVERE, "Blad podczas edycji plyty"); System.out.println(e.getClass().getName() + ": " + e.getMessage()); } return "Edycja wykonana"; } }