com.mycompany.bean.PlytaService.java Source code

Java tutorial

Introduction

Here is the source code for com.mycompany.bean.PlytaService.java

Source

/*
 * 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";
    }
}