HQL Query and Criteria - Examples
HQL doc. - dokumentacija
two examples - dva primjera
Criterium doc. - kriterijumi dokumentacija
Criteria - kriterija
Vrati zaduzene Primjerke
Session sesija = HibernateUtil.getSessionFactory().getCurrentSession();
sesija.beginTransaction();
List<Primerak> lista = new ArrayList<Primerak>();
Query upit = sesija.createQuery("select p from Primerak as p join p.knjiga as k join p.zaduzenjes as z"
+ " where z.datumVracanja is null");
lista = upit.list();
sesija.getTransaction().commit();
List<Knjiga> getKnjigeForZaduzenjeKategorija(Date od, Date doK, Kategorija kat)
Session sesija = HibernateUtil.getSessionFactory().getCurrentSession();
sesija.beginTransaction();
List<Knjiga> lista = new ArrayList<Knjiga>();
Query upit = sesija.createQuery("select k from Knjiga as k " +
"join k.primeraks as p join p.zaduzenjes as z where z.clan.kategorija = :kat " +
"and z.datumZaduzenja >= :od and z.datumZaduzenja <= :doK");
upit.setParameter("kat", kat);
upit.setParameter("od", od);
upit.setParameter("doK", doK);
lista = upit.list();
sesija.getTransaction().commit();
List<Knjiga> findKnjigeby (String izdavac, String godinaIzdanja)
Session sesija = HibernateUtil.getSessionFactory().getCurrentSession();
sesija.beginTransaction();
List<Knjiga> lista = new ArrayList<Knjiga>();
Criteria crit = sesija.createCriteria(Knjiga.class);
if (izdavac != null){
crit.add(Restrictions.like("izdavac", izdavac).ignoreCase());
}
if (godinaIzdanja != null){
crit.add(Restrictions.like("godinaIzdanja", godinaIzdanja).ignoreCase());
}
lista = crit.list();
sesija.getTransaction().commit();
List<Clan> getPrezaduzeniClanovi(int maxZaduzenje)
Session sesija = HibernateUtil.getSessionFactory().getCurrentSession();
sesija.beginTransaction();
List<Clan> lista = new ArrayList<Clan>();
Query upit = sesija.createQuery("select c from Clan c join c.zaduzenjes as z " +
"where z.datumVracanja is null " +
"group by c having count(z) > :maxZ");
upit.setInteger("maxZ", maxZaduzenje);
lista = upit.list();
sesija.getTransaction().commit();
List<Zaduzenje> getNerazduzenaZaClanskiBroj(int clanskiBroj)
Session sesija = HibernateUtil.getSessionFactory().getCurrentSession();
sesija.beginTransaction();
List<Zaduzenje> lista = new ArrayList<Zaduzenje>();
Query upit = sesija.createQuery("from Zaduzenje z where z.datumVracanja is null and " +
"z.clan.clanskiBroj = :clbroj");
upit.setParameter("clbroj", clanskiBroj);
lista = upit.list();
sesija.getTransaction().commit();
* TODO Zadatak 3 (10 poena)
* Implementirati operaciju koja vraca sve knjige
* koje su u periodu @param datumOd do @param datumDo
* zaduzivane vise od @param minBrZaduzenja puta
public List<Knjiga> getKnjigeBrojZaduzenja(Date datumOd, Date datumDo, int minBrZaduzenja){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query q = session.createQuery("select k from Knjiga k join k.primeraks p join p.zaduzenjes z " +
"where z.datumZaduzenja > :datumOd and z.datumZaduzenja < :datumDo group by k having count(z)>:minBr");
q.setDate("datumOd", datumOd);
q.setDate("datumDo", datumDo);
q.setInteger("minBr", minBrZaduzenja);
List<Knjiga> knjige = q.list();
session.getTransaction().commit();
return knjige;
}
*TODO Zadatak 1 (5 poena)
* Implementirati operaciju koja pronalazi clana sa zadatim clanskim brojem
* i zaduzuje ga za primerak @param p
* Operacija treba da vrati true ako je clan zaduzen,
* odnosno false ako nije
public boolean zaduziClana(int clanskiBroj, Primerak p){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Clan c = (Clan) session.get(Clan.class, clanskiBroj);
session.getTransaction().commit();
if(c==null || !isSlobodanPrimerak(p.getInvBroj())) return false;
session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Zaduzenje z = new Zaduzenje();
z.setId(446);
z.setClan(c);
z.setPrimerak(p);
z.setDatumZaduzenja(new Date());
session.save(z);
session.getTransaction().commit();
return true;
}
* TODO Zadatak 2 (5 poena)
* @param invBroj
* @return
public boolean isSlobodanPrimerak(String invBroj){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query q = session.createQuery("from Zaduzenje z where z.primerak.invBroj like :invBroj and z.datumVracanja is null");
q.setString("invBroj",invBroj);
if(q.list().isEmpty()){
session.getTransaction().commit();
return true;
}else{
session.getTransaction().commit();
return false;
}
}
* Vraca sve clanove cije prezime je jednako @param prezime
* i koji su rodeni u periodu @param datumOd @param datumDo
* @return
public List<Clan> getClanoviPrezimeRodjenje(String prezime, Date datumOd, Date datumDo){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Criteria criteria = session.createCriteria(Clan.class);
criteria.add(Restrictions.like("prezime", prezime));
criteria.add(Restrictions.between("datumRodjenja", datumOd, datumDo));
List<Clan> clanovi = criteria.list();
session.getTransaction().commit();
return clanovi;
}
* Vraca clanove koji imaju nerazduzenih zaduzenja
* pre @param datumDo
* @return
public List<Clan> getZaduzeniClanovi(Date datumDo){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("select c from Clan c join c.zaduzenjes z where " +
"z.datumZaduzenja< :datumDo and z.datumVracanja is null");
query.setDate("datumDo", datumDo);
List<Clan> clanovi = query.list();
session.getTransaction().commit();
return clanovi;
}
* TODO Zadatak 2 (10 poena)
* Implementirati operaciju koja vraca sve clanove kategorije
* @param kat koji su u periodu @param datumOd do @param datumDo
* imali vise od @param minBrZaduzenja zaduzenja
public List<Clan> getClanoviBrojZaduzenja(Kategorija kat, Date datumOd, Date datumDo, int minBrZaduzenja){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("select c from Clan c join c.zaduzenjes z where c.kategorija = :kat " +
"and z.datumZaduzenja> :d1 and z.datumZaduzenja < :d2 group by c having count(z) > :min ");
query.setEntity("kat", kat);
query.setDate("d1", datumOd);
query.setDate("d2", datumDo);
query.setInteger("min", minBrZaduzenja);
List<Clan> result = query.list();
return result;
}
* TODO Zadatak 1 (10 poena)
* Implementirati operaciju koja pronalazi primerak sa inventarnim brojem
* @param invBroj
* i zaduzuje ga za clana @param c
* pri tome treba voditi racuna
* da primerak ne moze biti dva puta zaduzen i
* da clan ne moze imati vise od tri nerazduzena zaduzenja
* Operacija treba da vrati true ako je clan zaduzen,
* odnosno false ako nije
public boolean zaduziClana(String invBroj, Clan c){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Primerak p = (Primerak)session.get(Primerak.class, invBroj);
if(p==null){
session.getTransaction().commit();
return false;
}
Query queryZaduzenjaPrimerak = session.createQuery(
"select z from Zaduzenje z where z.primerak = :primerak and z.datumVracanja is null");
queryZaduzenjaPrimerak.setEntity("primerak", p);
Query queryZaduzenjaClan = session.createQuery(
"select z from Zaduzenje z where z.clan = :clan and z.datumVracanja is null");
queryZaduzenjaClan.setEntity("clan", c);
if((queryZaduzenjaPrimerak.list().size() > 0) || (queryZaduzenjaClan.list().size() > 3)){
session.getTransaction().commit();
return false;
}
else{
Zaduzenje zaduzenje = new Zaduzenje();
zaduzenje.setId(9990);
zaduzenje.setPrimerak(p);
zaduzenje.setClan(c);
zaduzenje.setDatumZaduzenja(new Date());
session.saveOrUpdate(zaduzenje);
session.getTransaction().commit();
return true;
}
}
* TODO 2. (12 poena) Implementirati operaciju
* koja vraca sve clanove koji su knjigu sa istim autorom i naslovom
* zaduzili vise od @param brZaduzenja puta
public static List<Clan> getClanoviForBrojZaduzenja(int brZaduzenja){
try{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("select c from Clan c join c.zaduzenjes z " +
"group by c,z.primerak.knjiga.naslov,z.primerak.knjiga.autor having count(z) > :min ");
query.setInteger("min", brZaduzenja);
List<Clan> result = query.list();
return result;
}catch(Exception e){
return null;
}
}
* TODO 1. (8 poena) Koriscenjem upita prema kriterijumu
* implementirati operaciju koja vraca sve knjige koje imaju
* primerke i ciji naslov sadrzi podstring @param naslov deo
* Rezultujuce knjige sortirati po naslovu
public static List<Knjiga> getKnjigeZaDeoNaslova(String naslovDeo){
try{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Criteria crit = session.createCriteria(Knjiga.class);
crit.add(Restrictions.like("naslov", naslovDeo, MatchMode.ANYWHERE));
crit.add(Restrictions.sizeGt("primeraks", 0));
List<Knjiga> knjigas = crit.list();
session.getTransaction().commit();
return knjigas;
}catch(Exception e){
return null;
}
}
List<Primerak> list = getZaduzeniPrimerci();
for (Primerak p:list){
System.out.println(p.getInvBroj() + " " + p.getKnjiga().getNaslov());
}
<set name="primeraks" table="PRIMERAK" inverse="true" lazy="true" fetch="select">
<key>
<column name="ID_KNJIGE" />
</key>
<one-to-many class="rs.ac.uns.dmi.is2.dbmodel.Primerak" />
</set>
<many-to-one name="knjiga" class="rs.ac.uns.dmi.is2.dbmodel.Knjiga" fetch="select" lazy="false">
<column name="ID_KNJIGE" />
</many-to-one>
PARSIRANJE DATUMA
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
static Date date = new Date();
static Date datumod;
static Date datumdo;
try{
datumod = sdf.parse("2013-03-03");
datumdo = sdf.parse("2013-03-12");
}catch(Exception e){
e.printStackTrace();
}
public static int updateClan(int clanskiBroj, String ime, String prezime, String adresa, Kategorija kategorija, Date datum1){
try{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Clan c = new Clan();
c.setClanskiBroj(clanskiBroj);
c.setIme(ime);
c.setPrezime(prezime);
c.setAdresa(adresa);
c.setDatumRodjenja(datum1);
c.setDatumUpisa(date);
c.setKategorija(kategorija);
c.setZaduzenjes(null);
session.save(c);
session.getTransaction().commit();
return clanskiBroj;
} catch(Exception e) {
e.printStackTrace();
return 0;
}
}
public static int createAndStoreClan(String ime, String prezime, String adresa, Kategorija kategorija, Date datum1){
try{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Clan c = new Clan();
c.setIme(ime);
c.setPrezime(prezime);
c.setAdresa(adresa);
c.setDatumRodjenja(datum1);
c.setDatumUpisa(date);
c.setKategorija(kategorija);
c.setZaduzenjes(null);
Integer clanskiBroj = (Integer) session.save(c);
session.getTransaction().commit();
return clanskiBroj;
} catch(Exception e) {
e.printStackTrace();
return 0;
}
}
KOLOKVIJUM ODRZAN 04.02.2013 GRUPA 1
Resenje prvog zadatka ne radi ako budete pokusavali da pokrenete u eclipse-u jer se to sada radi na drugi nacin ali je profesorica prihvatila jer nam to ona nije pokazala kako treba ustvari, greska je boldirana i podvucena.
* TODO 1. (8 poena) Koriscenjem upita prema kriterijumu implementirati
* operaciju koja vraca sva razduzena zaduzenja za koje vazi barem jedan od
* dva uslova: - zaduzenje se odnosi na knjige koja u naslovu sadrze @param
* naslovDeo - zaduzenje je izvrseno u periodu @param datumOd - @param
* datumDo
public static List<Zaduzenje> getZaduzenjaZaNaslov(String naslovDeo,
Date datumOd, Date datumDo) {
try {
Session session = HibernateUtil.getSessionFactory()
.getCurrentSession();
session.beginTransaction();
List<Zaduzenje> lista = new ArrayList<Zaduzenje>();
Criteria crit = session.createCriteria(Zaduzenje.class);
Criterion lhs = Restrictions.like("primerak.knjiga.naslov",
naslovDeo, MatchMode.ANYWHERE);
Criterion rhs = Restrictions.between("datumZaduzenja", datumOd,
datumDo);
crit.add(Restrictions.isNotNull("datumVracanja"));
crit.add(Restrictions.or(lhs, rhs));
lista = crit.list();
if (lista.isEmpty()) {
System.out.println("Rezultat upita je prazan!");
return null;
}
session.getTransaction().commit();
return lista;
} catch (Exception e) {
System.out.println("Doslo je do greske!");
e.printStackTrace();
return null;
}
}
* TODO 2. (12 poena) Implementirati operaciju koja vraca sve primerke koji
* su istog dana bili greskom zaduzeni vise puta
public static List<Primerak> pronadjiGreskomZaduzene() {
try {
Session session = HibernateUtil.getSessionFactory()
.getCurrentSession();
session.beginTransaction();
List<Primerak> result = new ArrayList<Primerak>();
Query query = session
.createQuery("select p from Primerak p join p.zaduzenjes z where z.datumVracanja is null"
+ " or (z.datumZaduzenja != z.datumVracanja)"
+ " group by p, z.datumZaduzenja, z.datumVracanja having count(z) > 1");
result = query.list();
if (result.isEmpty()) {
System.out.println("Rezultat upita je prazan!");
return null;
}
return result;
} catch (Exception e) {
System.out.println("Doslo je do greske!");
e.printStackTrace();
return null;
}
}
Kolokvijum odrzan 05.04.2013 god, zadaci su bez resenja to je za vjezbu ukoliko ko bude isao na porpavni ako ko ima resenja neka postavi u komentaru dole...
* TODO 2. (14 poena)
* Implementirati operaciju
* koja zaduzuje clana sa clanskim brojem @param clanskiBroj
* za vise primeraka datih u listi @param invBrojevi pri tom izvrsiti sledece provere:
*
* - clan kategorije student moze zaduziti maksimalno 5 primeraka
* - clanovi ostalih kategorija mogu da zaduze najvise 3 primerka
* - da bi se primerak zaduzio on mora biti slobodan
*
* Ukoliko su ispunjeni uslovi, zaduzenja sacuvati u bazi i vratiti izgenerisane primarne kljuceve
public static List<Integer> zaduzi(int clanskiBroj, List<Integer> invBrojevi){ return null; }
* TODO 1. (6 poena)
* Koriscenjem upita prema kriterijumu
* implementirati operaciju koja vraca sve knjige
* za koje vazi barem jedan od dva uslova:
* - izdavac im se nalazi u listi @param izdavaci
* - naslov ne sadrzi string @param naslovDeo
public static List<Knjiga> getKnjigeZaIzdavace(List<String> izdavaci, String naslovDeo){ return null; }
List<Primerak> list = getZaduzeniPrimerci();
for (Primerak p:list){
System.out.println(p.getInvBroj() + " " + p.getKnjiga().getNaslov());
}
<set name="primeraks" table="PRIMERAK" inverse="true" lazy="true" fetch="select">
<key>
<column name="ID_KNJIGE" />
</key>
<one-to-many class="rs.ac.uns.dmi.is2.dbmodel.Primerak" />
</set>
<many-to-one name="knjiga" class="rs.ac.uns.dmi.is2.dbmodel.Knjiga" fetch="select" lazy="false">
<column name="ID_KNJIGE" />
</many-to-one>
PARSIRANJE DATUMA
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
static Date date = new Date();
static Date datumod;
static Date datumdo;
try{
datumod = sdf.parse("2013-03-03");
datumdo = sdf.parse("2013-03-12");
}catch(Exception e){
e.printStackTrace();
}
public static int updateClan(int clanskiBroj, String ime, String prezime, String adresa, Kategorija kategorija, Date datum1){
try{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Clan c = new Clan();
c.setClanskiBroj(clanskiBroj);
c.setIme(ime);
c.setPrezime(prezime);
c.setAdresa(adresa);
c.setDatumRodjenja(datum1);
c.setDatumUpisa(date);
c.setKategorija(kategorija);
c.setZaduzenjes(null);
session.save(c);
session.getTransaction().commit();
return clanskiBroj;
} catch(Exception e) {
e.printStackTrace();
return 0;
}
}
public static int createAndStoreClan(String ime, String prezime, String adresa, Kategorija kategorija, Date datum1){
try{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Clan c = new Clan();
c.setIme(ime);
c.setPrezime(prezime);
c.setAdresa(adresa);
c.setDatumRodjenja(datum1);
c.setDatumUpisa(date);
c.setKategorija(kategorija);
c.setZaduzenjes(null);
Integer clanskiBroj = (Integer) session.save(c);
session.getTransaction().commit();
return clanskiBroj;
} catch(Exception e) {
e.printStackTrace();
return 0;
}
}
KOLOKVIJUM ODRZAN 04.02.2013 GRUPA 1
Resenje prvog zadatka ne radi ako budete pokusavali da pokrenete u eclipse-u jer se to sada radi na drugi nacin ali je profesorica prihvatila jer nam to ona nije pokazala kako treba ustvari, greska je boldirana i podvucena.
* TODO 1. (8 poena) Koriscenjem upita prema kriterijumu implementirati
* operaciju koja vraca sva razduzena zaduzenja za koje vazi barem jedan od
* dva uslova: - zaduzenje se odnosi na knjige koja u naslovu sadrze @param
* naslovDeo - zaduzenje je izvrseno u periodu @param datumOd - @param
* datumDo
public static List<Zaduzenje> getZaduzenjaZaNaslov(String naslovDeo,
Date datumOd, Date datumDo) {
try {
Session session = HibernateUtil.getSessionFactory()
.getCurrentSession();
session.beginTransaction();
List<Zaduzenje> lista = new ArrayList<Zaduzenje>();
Criteria crit = session.createCriteria(Zaduzenje.class);
Criterion lhs = Restrictions.like("primerak.knjiga.naslov",
naslovDeo, MatchMode.ANYWHERE);
Criterion rhs = Restrictions.between("datumZaduzenja", datumOd,
datumDo);
crit.add(Restrictions.isNotNull("datumVracanja"));
crit.add(Restrictions.or(lhs, rhs));
lista = crit.list();
if (lista.isEmpty()) {
System.out.println("Rezultat upita je prazan!");
return null;
}
session.getTransaction().commit();
return lista;
} catch (Exception e) {
System.out.println("Doslo je do greske!");
e.printStackTrace();
return null;
}
}
* TODO 2. (12 poena) Implementirati operaciju koja vraca sve primerke koji
* su istog dana bili greskom zaduzeni vise puta
public static List<Primerak> pronadjiGreskomZaduzene() {
try {
Session session = HibernateUtil.getSessionFactory()
.getCurrentSession();
session.beginTransaction();
List<Primerak> result = new ArrayList<Primerak>();
Query query = session
.createQuery("select p from Primerak p join p.zaduzenjes z where z.datumVracanja is null"
+ " or (z.datumZaduzenja != z.datumVracanja)"
+ " group by p, z.datumZaduzenja, z.datumVracanja having count(z) > 1");
result = query.list();
if (result.isEmpty()) {
System.out.println("Rezultat upita je prazan!");
return null;
}
return result;
} catch (Exception e) {
System.out.println("Doslo je do greske!");
e.printStackTrace();
return null;
}
}
Kolokvijum odrzan 05.04.2013 god, zadaci su bez resenja to je za vjezbu ukoliko ko bude isao na porpavni ako ko ima resenja neka postavi u komentaru dole...
* TODO 2. (14 poena)
* Implementirati operaciju
* koja zaduzuje clana sa clanskim brojem @param clanskiBroj
* za vise primeraka datih u listi @param invBrojevi pri tom izvrsiti sledece provere:
*
* - clan kategorije student moze zaduziti maksimalno 5 primeraka
* - clanovi ostalih kategorija mogu da zaduze najvise 3 primerka
* - da bi se primerak zaduzio on mora biti slobodan
*
* Ukoliko su ispunjeni uslovi, zaduzenja sacuvati u bazi i vratiti izgenerisane primarne kljuceve
public static List<Integer> zaduzi(int clanskiBroj, List<Integer> invBrojevi){ return null; }
* TODO 1. (6 poena)
* Koriscenjem upita prema kriterijumu
* implementirati operaciju koja vraca sve knjige
* za koje vazi barem jedan od dva uslova:
* - izdavac im se nalazi u listi @param izdavaci
* - naslov ne sadrzi string @param naslovDeo
public static List<Knjiga> getKnjigeZaIzdavace(List<String> izdavaci, String naslovDeo){ return null; }
jako koristan blog
ReplyDeleteTODO 1. (8 poena) Koriscenjem upita prema kriterijumu napraviti operaciju koja vraca sve
ReplyDelete* knjige cija je godina izdanja jednaka @param godina, izdavac nije u skupu @param izdavaci i
* prezime autora je @param prezimeAutora
*
*
*/
public List getKnjige(String godina, String[] izdavaci, String prezimeAutora){
try{
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();
Criteria criteria = s.createCriteria(Knjiga.class);
criteria.add(Restrictions.like("godinaIzdanja",godina));
criteria.add(Restrictions.not(Restrictions.in("izdavac", izdavaci)));
criteria.add(Restrictions.like("prezimeAutora", prezimeAutora, MatchMode.ANYWHERE ));
List knjige = criteria.list();
s.getTransaction().commit();
return knjige;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
bas je lepo ovde.
ReplyDeleteTODO 1. (8 poena) Koriscenjem upita prema kriterijumu
ReplyDelete* implementirati operaciju koja vraca sve
* knjige ciji naslov pocinje sa
* @param pocetakNaslova ili je izdavac jednak sa @param izdavacKnjige,
* i ciji je broj primeraka veci ili jednak sa @param brPrimeraka
* (sortirati rezultate rastuce prema imenu autora knjige)
*/
* TODO 2. (12 poena) Implementirati operaciju
ReplyDelete* koja vraca sve clanove koji nisu zaduzili ni jednu knjigu
* sa naslovom iz skupa
* @param imenaKnjiga i upisani su posle datuma @param datum
*/
/**
ReplyDelete*
* TODO 1. (8 poena) Koriscenjem upita prema kriterijumu
* implementirati operaciju koja vraca sve
* knjige ciji naslov pocinje sa
* @param pocetakNaslova ili je izdavac jednak sa @param izdavacKnjige,
* i ciji je broj primeraka veci ili jednak sa @param brPrimeraka
* (sortirati rezultate rastuce prema imenu autora knjige)
*/
public static List getKnjige(String pocetakNaslova, String izdavacKnjige, int brPrimeraka){
try{
Session s=HibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();
Criteria crit=s.createCriteria(Knjiga.class);
Criterion lhs;
Criterion rhs;
crit.add(Restrictions.or(Restrictions.like("naslov", pocetakNaslova, MatchMode.START), Restrictions.like("izdavac", izdavacKnjige)));
crit.add(Restrictions.sizeGt("primeraks", brPrimeraka));
crit.addOrder(Order.asc("autor"));
List rezultat=crit.list();
s.getTransaction().commit();
return rezultat;
}
catch(Exception e){
e.printStackTrace();
return null;
}
}
public static List getKnjige(String pocetakNaslova, String izdavacKnjige, int brPrimeraka){
ReplyDeleteList knjige = new ArrayList<>();
try{
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();
Criteria crit=s.createCriteria(Knjiga.class);
crit.add(Restrictions.or(Restrictions.like("naslov",pocetakNaslova+"%"), Restrictions.like("izdavac", izdavacKnjige)));
crit.add(Restrictions.sizeGe("primeraks", brPrimeraka));
knjige=crit.list();
s.getTransaction().commit();
return knjige;
}catch(Exception e){
e.printStackTrace();
}
return null;
}
List rezultat = new ArrayList<>();
ReplyDeleterezultat = getKnjige("Pesme", "Prosveta", 12);
for (Knjiga k : rezultat)
System.out.println(k.getNaslov() + " " + k.getAutor());
}
package rs.ac.uns.dmi.is2.managers;
ReplyDeleteimport java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import rs.ac.uns.dmi.is2.dbmodel.Clan;
import rs.ac.uns.dmi.is2.dbmodel.Kategorija;
import rs.ac.uns.dmi.is2.dbmodel.Knjiga;
import rs.ac.uns.dmi.is2.managers.HibernateUtil;
public class ClanManager3 {
public static Integer createAndSaveClan (String ime, String prezime, String adresa, Date datumRodjenja,
Date datumUpisa, Integer idKategorije) {
try{
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();
Clan clan = new Clan();
clan.setIme(ime);
clan.setPrezime(prezime);
clan.setAdresa(adresa);
clan.setDatumRodjenja(datumRodjenja);
clan.setDatumUpisa(datumUpisa);
clan.setKategorija((Kategorija) s.load(Kategorija.class, idKategorije));
Integer id = (Integer) s.save(clan);
s.getTransaction().commit();
return id;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static Integer updateClan (Integer idClan, String ime, String prezime, String adresa, Date datumRodjenja,
Date datumUpisa, Integer idKategorije) {
try{
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();
Clan clan = new Clan();
clan.setClanskiBroj(idClan);
clan.setIme(ime);
clan.setPrezime(prezime);
clan.setAdresa(adresa);
clan.setDatumRodjenja(datumRodjenja);
clan.setDatumUpisa(datumUpisa);
clan.setKategorija((Kategorija) s.load(Kategorija.class, idKategorije));
s.update(clan);
s.getTransaction().commit();
return idClan;
}
catch (Exception e){
e.printStackTrace();
return null;
}
}
/*
* Izlistavanje clanova, koji su se uclanili u biblioteku iymedju dva prosledjena datuma,
* i koji pored toga pripadaju kategoriji, ciji je identifikator prosledjen
*/
public static List getClanoviZaDatumUclanjenjaKategorija(Date datumOd, Date datumDo, Integer idKategorije){
try{
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();
Query query = s.createQuery("from Clan c where c.datumUpisa between :datumOd and :datumDo " +
"and c.kategorija.idkategorije = :idKat");
query.setDate("datumOd", datumOd);
query.setDate("datumDo", datumDo);
query.setInteger("idKat", idKategorije);
List clans = query.list();
s.getTransaction().commit();
return clans;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
/**
* TODO 2. (12 poena) Implementirati operaciju
* koja vraca sve clanove koji nisu zaduzili ni jednu knjigu
* sa naslovom iz skupa
* @param imenaKnjiga i upisani su posle datuma @param datum
*/
public static List getClanoviBezZaduzenjaZaNaslovKnjige(String[] imenaKnjiga, Date datum)
{
try
{
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();
Query query = s.createQuery("from Clan c join fetch c.zaduzenjes z where c.datumUpisa >= :datum AND " +
"z.primerak.knjiga.naslov not in :imenaKnjiga");
query.setDate("datum", datum);
query.setParameterList("imenaKnjiga", (String[])imenaKnjiga);
List clans = (List)query.list();
s.getTransaction().commit();
return clans;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
public static void main(String[] args) throws ParseException
{
String[] str = {"Besnilo", "Informacioni sistemi2","Odjeci", "Pesme"};
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD");
Date dat = sdf.parse("1988-01-01");
List clans = getClanoviBezZaduzenjaZaNaslovKnjige(str, dat);
for(Clan c : clans)
System.out.println(c.getIme());
}
}
/**
ReplyDelete* TODO 2. (12 poena) Implementirati operaciju koja vraca sve clanove koji
* su se upisali u biblioteku u periodu @param datumOd - @param datumDo i
* zaduzili su knjigu koja u naslovu sadrzi
*
* @param deoNaslova
*
*/
public static List getClanoviZaduzenje(Date datumOd, Date datumDo,
String deoNaslova) {
List clanovi = new ArrayList<>();
try {
Session session = HibernateUtil.getSessionFactory()
.getCurrentSession();
session.beginTransaction();
Query query = session
.createQuery("select distinct c from Clan c join c.zaduzenjes z where c.datumUpisa between :datOd and :datDo AND z.primerak.knjiga.naslov like :daoNaslova");
query.setDate("datOd", datumOd);
query.setDate("datDo", datumDo);
query.setString("deoNaslova", "%" + deoNaslova + "%");
clanovi = query.list();
session.getTransaction().commit();
return clanovi;
} catch (Exception e) {
return null;
}
}
public static void main(String[] args) {
List rezultat = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
rezultat = getClanoviZaduzenje(sdf.parse("2000-01-01"),
sdf.parse("2014-12-12"), "Muzicka apo");
} catch (Exception e) {
e.printStackTrace();
}
for (Clan c : rezultat)
System.out.println(c.getClanskiBroj());
}
}
/** (tastatura)
ReplyDelete* TODO 2. (12 poena) Implementirati operaciju koja vraca knjige,
* koje nisu zaduzili clanovi iz kategorije @param kat
*
*
*/
public static List getKnjige(Kategorija kategorija){
return null;
}
//skoro pa dobro resenje, slobodno me ispravite
ReplyDeletepublic static List getKnjige(Kategorija kategorija){
try{
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();
Query query = s.createQuery("from Knjiga k join k.primeraks p join p.zaduzenjes z where" +
"z.datumVracanja is null and z.clan.kategorija not in :kat");
query.setParameter("kat", kategorija);
List rezultati = query.list();
return rezultati;
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return null;
}
}
public static List getKnjige(Kategorija kategorija)
ReplyDelete{
List rez=new List<>();
try {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("select distinct k from Knjiga k where k not in(select distinct k from Knjiga k join k.primeraks p join p.zaduzenjes z where z.clan.kategorija=:kategorija)");
query.setObject("kategorija",kategorija);
rez = query.list();
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrase();
}
return rez;
}
sintaksa nije 100% dobro, radio sam u notepad++, ako ima greska onda verovatno samo stampana greska, pogledaj sta bi modlu da bude, pa ispravi
public static List*Knjiga* getKnjige(Kategorija kategorija)
ReplyDelete{
List*Knjiga* rez=new List**();
try {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("select distinct k from Knjiga k where k not in(select distinct k from Knjiga k join k.primeraks p join p.zaduzenjes z where z.clan.kategorija=:kategorija)");
query.setObject("kategorija",kategorija);
rez = query.list();
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrase();
}
return rez;
}
pojeo je sve sto je bio izmenju znakove manje i vece, * trebas da promenis za odgovarajuci znak
// main metod
ReplyDeleteKategorija kat = new Kategorija();
List resenje = new ArrayList<>();
knjige = getKnjige(kat);
for(Knjiga k: knjige){
System.out.println(k.getNaslov());
// main metod
ReplyDeleteKategorija kat = new Kategorija();
List resenje = new ArrayList<>();
knjige = getKnjige(kat);
for(Knjiga k: knjige){
System.out.println(k.getNaslov());
/**
ReplyDelete* (tastatura)
* TODO 1. (8 poena) Koriscenjem upita prema kriterijumu implementirati operaciju koja vraca sve
* clanove koji su zaduzili primerak sa inventarnim brojem @param invBroj i upisani su posle datuma @param datum
*
*
*/
public static List getClanoviZaduzenjaPrimerka(Integer invBroj, Date datum){
ReplyDeletetry{
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();
Criteria crit=s.createCriteria(Clan.class);
crit.add(Restrictions.ge("datumUpisa", datum));
crit.setFetchMode("zaduzenjes", FetchMode.EAGER).setFetchMode("primerak", FetchMode.EAGER).add(Restrictions.eq("invBroj", invBroj));
List rezultat=crit.list();
s.getTransaction().commit();
return rezultat;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
nisam siguran da li je dobro
mislim da je dobro
ReplyDeleteTODO 2. (12 poena) Implementirati operaciju koja vraca sve primerke i naslov knjige,
ReplyDelete* koje su godine @param godZaduzenja zaduzili clanovi upisani jednog od datuma iz kolekcije @param datumiUpisa
*
TODO 1. (8 poena) Koriscenjem upita prema kriterijumu implementirati operaciju koja vraca sve
ReplyDelete* clanove kategorije sa id-om @param idKategorije kojima je ukupan broj zaduzenja izmedju @param minZaduzenja i @param maxZaduzenja
*
public static List getKategorijaForId(Integer kategorijaidint) {
ReplyDelete// TODO Auto-generated method stub
try{
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();
Query query = s.createQuery("from Kategorija k where k.idkategorija = :idParam ");
query.setInteger("idParam", kategorijaidint);
List rez = query.list();
s.getTransaction().commit();
return rez;
}catch(Exception e){
return null;
}
}
import java.text.ParseException;
ReplyDeleteimport java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import model.Clan;
import model.Kategorija;
import model.Zaduzenje;
public class ClanManager {
public Integer saveClan(String ime, String prezime, String adresa,
Date datumRodjenja, Date datumUpisa, Integer idKategorije) {
try {
EntityManager entityManager = JPAUtil.getEntityManager();
entityManager.getTransaction().begin();
Clan clan = new Clan();
clan.setIme(ime);
clan.setPrezime(prezime);
clan.setAdresa(adresa);
clan.setDatumRodjenja(datumRodjenja);
clan.setDatumUpisa(datumUpisa);
clan.setKategorija(entityManager.find(Kategorija.class,
idKategorije));
entityManager.persist(clan);
entityManager.getTransaction().commit();
entityManager.close();
return clan.getClanskiBroj();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/*
* Selektovati sva zaduženja za člana sa datim članskim brojem
*/
public List getZaduzenjaClana(Integer idClana){
EntityManager entityManager = JPAUtil.getEntityManager();
Query tq=entityManager.createQuery("SELECT c.zaduzenjes FROM Clan c WHERE c.clanskiBroj = :idCl");
tq.setParameter("idCl", idClana);
List zaduzenja=(List)tq.getResultList();
entityManager.close();
return zaduzenja;
}
/*
* Selektovati članove koji imaju nerazdužena zaduženja, ovo je sa join-om
*/
public List getNerazduzeniClanovi(){
EntityManager entityManager = JPAUtil.getEntityManager();
TypedQuery tq=entityManager.createQuery("SELECT c FROM Clan c join fetch c.zaduzenjes z WHERE z.datumVracanja is null", Clan.class);
List clanovi=(List)tq.getResultList();
entityManager.close();
return clanovi;
}
/*
* Selektovati članove koji su učlanjeni u biblioteku u periodu datumOd
datumDo i zadužili su primerak sa inventarnim brojem invBroj
*/
public List getClanoviUclanejniUPerioduSaZaduzenjem(Date odDatum, Date doDatum, Integer invBroj){
EntityManager entityManager = JPAUtil.getEntityManager();
//TypedQuery tq=entityManager.createQuery("SELECT c FROM Clan c join c.zaduzenjes z WHERE"
// + " c.datumUpisa > :datumOd and c.datumUpisa < :datumDo and z.primerak.invBroj like :invBr", Clan.class);
TypedQuery tq=entityManager.createQuery("SELECT c FROM Clan c join c.zaduzenjes z WHERE"
+ " c.datumUpisa between :datumOd and :datumDo and z.primerak.invBroj like :invBr", Clan.class);
tq.setParameter("datumOd", odDatum);
tq.setParameter("datumDo", doDatum);
tq.setParameter("invBr", invBroj);
List clanovi=(List)tq.getResultList();
entityManager.close();
return clanovi;
}
public static void main(String[] args) throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date datumRodjenja=sdf.parse("1990-01-12");
ClanManager cm=new ClanManager();
System.out.println("Sacuvano: "+cm.saveClan("Pera", "Kojot", "Diznilend", datumRodjenja, new Date(), 1));
List zad=cm.getZaduzenjaClana(34);
System.out.println("Get zaduzenja clana:");
for(Zaduzenje z:zad){
System.out.println(z.getId());
}
System.out.println("Get nerazduzeni clanovi:");
List clanovi=cm.getNerazduzeniClanovi();
for(Clan c:clanovi){
System.out.println(c.getClanskiBroj());
List zaduzenja=c.getZaduzenjes();
System.out.println("Zaduzenja su");
for(Zaduzenje z:zaduzenja){
System.out.println(z.getId());
}
}
System.out.println("Cetvrti upit:");
DeleteSimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd");
Date d1=sdf1.parse("2015-03-12");
Date d2=sdf1.parse("2015-03-15");
List cl=cm.getClanoviUclanejniUPerioduSaZaduzenjem(d1, d2, 3);
for(Clan c:cl){
System.out.println(c.getClanskiBroj());
}
}
}
package managers;
ReplyDeleteimport java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import model.Knjiga;
import model.Primerak;
public class KnjigaManager {
public Boolean saveKnjiga(String naslov, String autor, String godIzdanja,
String izdavac) {
try {
EntityManager entityManager=JPAUtil.getEntityManager();
entityManager.getTransaction().begin();
Knjiga k = new Knjiga();
k.setNaslov(naslov);
k.setAutor(autor);
k.setGodinaIzdanja(godIzdanja);
k.setIzdavac(izdavac);
entityManager.persist(k);
entityManager.getTransaction().commit();
entityManager.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public List addPrimeraks(Knjiga k, int brPrimeraka){
try{
EntityManager entityManager=JPAUtil.getEntityManager();
entityManager.getTransaction().begin();
ArrayList idS=new ArrayList();
for(int i=0;i getKnjigeZaDeoNaslova(String deoNaslova){
EntityManager entityManager = JPAUtil.getEntityManager();
TypedQuery tq=entityManager.createQuery("SELECT k FROM Knjiga k WHERE k.naslov LIKE :substring", Knjiga.class);
tq.setParameter("substring", '%'+deoNaslova+'%');
List knjige=tq.getResultList();
entityManager.close();
return knjige;
}
public static void main(String[] args){
EntityManager em=JPAUtil.getEntityManager();
Knjiga k=em.find(Knjiga.class, 1);
KnjigaManager km=new KnjigaManager();
km.saveKnjiga("Rani Jadi", "Danilo Kis", "2000", "Prometej");
List idPr=km.addPrimeraks(k, 5);
System.out.println("Id-ovi primeraka");
for(Integer id:idPr){
System.out.println(id);
}
List knjige=km.getKnjigeZaDeoNaslova("Rat");
for(Knjiga knj:knjige){
System.out.println(knj.getNaslov()+" "+knj.getIdKnjige());
}
}
}
/**
ReplyDelete* brisanje nekoliko n-torki
* @param em - EntityManager
* @param lista - Lista Clanova
* @return
*/
public boolean deleteClanovi(EntityManager em, List lista) {
try {
em.getTransaction().begin();
for (Clan c : lista) {
em.remove(c);
}
em.getTransaction().commit();
em.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* brisanje jedne n-torke
* @param em - EntityManager
* @param c - Clan
* @return
*/
public boolean deleteClan(EntityManager em, Clan c) {
try {
em.getTransaction().begin();
em.remove(c);
em.getTransaction().commit();
em.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
//
/**
* update jedne n-torke
* @param em - EntityManager
* @param id - Clanski broj clana
* @return
*/
public boolean updateClan(EntityManager em, int id) {
try {
em.getTransaction().begin();
Clan c = em.find(Clan.class, id);
c.setIme("novo ime kao primer");
em.merge(c);
em.getTransaction().commit();
em.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* ukoliko imamo listu n-torki koje menjamo onda to izgleda ovako
* @param em - EntityManager
* @param lista - Lista clanova
* @return
*/
public boolean updateClanovi(EntityManager em, List lista) {
try {
em.getTransaction().begin();
for (Clan c : lista) {
c.setIme("novo ime");
em.merge(c);
}
em.getTransaction().commit();
em.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
public static void main(String[] args) {
DeleteClanManager cm = new ClanManager();
EntityManager em = JPAUtil.getEntityManager();
List lista = cm.getNerazduzeniClanovi(em);
cm.deleteClanovi(em, lista);
}
merge() - update
Deletepersist() - insert
remove() - delete
NAPOMENA : da bi kaskadno uradili brisanje potrebno je dodati sledeci atribut u anotaciju: cascade={CascadeType.ALL} .
Npr.
@OneToMany(mappedBy="clan", fetch=FetchType.LAZY, cascade={CascadeType.ALL})
private List zaduzenjes;
to nam kaze da ce obrisati i Zaduzenje u kome je javlja Clan kojeg brisemo.
Ajoj Trile aj stavi ovde metod tvoj prvi :D
ReplyDeleteMECIII TRILEEE
ReplyDeleteList getZaduziliNaUpisu(){
ReplyDeletetry{
EntityManager em=JPAUtil.getEntityManager();
Query q=em.createQuery("SELECT c FROM Clan c join c.zaduzenjes z WHERE z.datumZaduzenja LIKE c.datumUpisa");
List rez=(List)q.getResultList();
em.close();
return rez;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
Bravo Macko, ajde sad I drugi ako uradis :D
ReplyDeleteimeklase atk=new imeklase();
ReplyDeleteList zad=atk.getZaduziliNaUpisu();
for(Clan z:zad){
System.out.println(z.getIme());
}
sipaj miliiii
ReplyDeleteAjde drugi metod Trile mozes ti tooo :D
ReplyDeleteList rezultat= new KolokvijumManager().getZaduziliNaUpisu();
ReplyDeletefor(Clan c:rezultat)
System.out.println(c.getIme());
}
public int getBrojUpisanihClanovaZaPeriod(Date datumOd, Date datumDo)
ReplyDelete{
EntityManager em = JPAUtil.getEntityManager();
TypedQuery q = em.createQuery("SELECT COUNT(c) FROM Clan c WHERE c.datumUpisa BETWEEN :dO AND :dD", Long.class);
q.setParameter("dO", datumOd);
q.setParameter("dD", datumDo);
Long l = q.getSingleResult();
int br = l.intValue();
return br;
}
public List kreirajKategorijuIDodeliRodjenima(String nazivKategorije, Date datumOd, Date datumDo)
{
EntityManager em = JPAUtil.getEntityManager();
em.getTransaction().begin();
TypedQuery q = em.createQuery("SELECT c FROM Clan c WHERE c.datumRodjenja BETWEEN :dO AND :dD", Clan.class);
q.setParameter("dO", datumOd);
q.setParameter("dD", datumDo);
List lista = q.getResultList();
Kategorija k = new Kategorija();
k.setNazivkategorije(nazivKategorije);
for (Clan c : lista)
{
c = k.addClan(c);
}
em.persist(k);
em.getTransaction().commit();
em.close();
return lista;
}
This comment has been removed by the author.
ReplyDeleteasdasdas
Delete=B86/(1/(1+B89*B87)+3/2/(1+B89*B88)) ako je odnos 2:3 At = AT/1+rt MENICA
ReplyDelete=B56/(1/(1+B60*B57)+1,2/(1+B60*B58)+1,44/(1+B60*B59)) ako je svaka sledeca veca za 20%
=(B82-4000/(1+B85*B84))/(1/(1+B85*B83)+1/(1+B85*B84)) kada je prva umanjena za 4000
re=(1-ra/m)^m-1 rk=(1-ra/m)^1/s-1 FV=r,n,-R
ReplyDeleteA(T)=A(0)(1-ra/m)^(sb/db+n+sa/da) kombinacija p i s
=B33*(1+ra/m)^(n+sa/da) komforna ks
=PMT(E40;E37;-E36) R
Djo= Z , Ij = Dj*r , Bj= Rj-Ij , RJ= R= PMT
ReplyDelete--------------------------------------
ReplyDelete- CLAN MANAGER JAVA -
--------------------------------------
public class ClanManager {
public Clan saveClan(String ime, String prezime, String adresa, Date datumRodjenja, Date datumUpisa,
int kat) {
try {
EntityManager em = JPAUtil.getEntityManager();
em.getTransaction().begin();
Clan c = new Clan();
c.setIme(ime);
c.setPrezime(prezime);
c.setAdresa(adresa);
c.setDatumRodjenja(datumRodjenja);
c.setDatumUpisa(datumUpisa);
c.setKategorija(em.find(Kategorija.class, kat));
em.persist(c);
em.getTransaction().commit();
return c;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public List getClanoviZaDatumUpisaKategorija(Date datumUpisa, int kat){
EntityManager em = JPAUtil.getEntityManager();
TypedQuery query = em.createQuery("select c from Clan c where c.datumUpisa = :datumUpisa "
+ "and c.kategorija = :kat", Clan.class);
query.setParameter("datumUpisa", datumUpisa);
query.setParameter("kat", em.find(Kategorija.class, kat));
List rez = query.getResultList();
em.close();
return rez;
}
public List getSveKategorije(){
EntityManager em=JPAUtil.getEntityManager();
Query q=em.createQuery("from Kategorija k");
List kategorije=q.getResultList();
em.close();
return kategorije;
}
public List getNerazduzenaZaduzenjaZaClana(Integer clanskiBroj) {
EntityManager em=JPAUtil.getEntityManager();
Clan c=em.find(Clan.class, clanskiBroj);
Query q=em.createQuery("from Zaduzenje z where z.clan=:c and z.datumVracanja is null");
q.setParameter("c", c);
List zaduzenja=q.getResultList();
em.close();
return zaduzenja;
}
public boolean razduzi(int idZaduzenja){
EntityManager em=JPAUtil.getEntityManager();
try{
em.getTransaction().begin();
Zaduzenje z = em.find(Zaduzenje.class, idZaduzenja);
z.setDatumVracanja(new Date());
em.persist(z);
em.getTransaction().commit();
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}
public List getClanoviZaImePrezime(String ime, String prezime) {
EntityManager em=JPAUtil.getEntityManager();
Query q=em.createQuery("select distinct c from Clan c join fetch c.zaduzenjes z where c.ime like :ime and c.prezime like :prz and z.datumVracanja is null");
q.setParameter("ime", "%"+ime+"%");
q.setParameter("prz", "%"+prezime+"%");
List clanovi=q.getResultList();
em.close();
return clanovi;
}
public static void main(String[] args){
ClanManager cm=new ClanManager();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// Date datumRodjenja;
try {
// datumRodjenja = sdf.parse("1982-05-13");
// Clan c=cm.saveClan("Petar", "Petrovic", "Bulevar Cara Lazara 3, Novi Sad",datumRodjenja, new Date(),1);
// if(c!=null)
// System.out.println("Clan je uspesno sacuvan, clanski broj je "+c.getClanskibroj());
List clanovi=cm.getClanoviZaDatumUpisaKategorija(sdf.parse("2017-02-20"), 2);
for(Clan cl:clanovi)
System.out.println(cl.getIme()+" "+cl.getPrezime());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public Knjiga updateKnjiga (int id, String izdavac){
ReplyDeletetry{
EntityManager em=JPAUtil.getEntityManager();
Knjiga k = em.find(Knjiga.class, id);
em.getTransaction().begin();
k.setIzdavac(izdavac);
em.getTransaction().commit();
return k;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
public List addPrimeraks(Knjiga k, int brojPrimeraka){
try{
EntityManager em = JPAUtil.getEntityManager();
List retVal = new ArrayList();
em.getTransaction().begin();
for(int i=0;i getZaduzeniClanovi(){
EntityManager em = JPAUtil.getEntityManager();
TypedQuery q = em.createQuery("select c from Clan c join fetch c.zaduzenjes z "
+ "where z.datumVracanja is null", Clan.class);
List clanovi = q.getResultList();
em.close();
return clanovi;
}
public List getNezaduzeniClanovi(){
EntityManager em = JPAUtil.getEntityManager();
TypedQuery clanovi = em.createQuery("select distinct c from Clan c where not exists"
+ " (select z from Zaduzenje z where z.datumVracanja is null and z.clan=c)", Clan.class);
List retVal = clanovi.getResultList();
em.close();
return retVal;
}
public List getClanoviZadatumUpisaKategorija(Date datumUpisa, Kategorija kat){
EntityManager em = JPAUtil.getEntityManager();
TypedQuery query = em.createQuery("select c from Clan c where c.datumUpisa = :datumUpisa "
+ "and c.kategorija = :kat", Clan.class);
query.setParameter("datumUpisa", datumUpisa);
query.setParameter("kat", kat);
List rez = query.getResultList();
em.close();
return rez;
}
/*
* vraca sve clanove koji pripadaju nekoj od kategorija datih u listi kategorije
*/
public List getClanoviZaKategorije(List kategorije){
EntityManager em = JPAUtil.getEntityManager();
TypedQuery query = em.createQuery("select c from Clan c where c.kategorija in :katlist", Clan.class);
query.setParameter("katlist", kategorije);
List rez = query.getResultList();
em.close();
return rez;
}
public Clan getClanINerazduzena(Integer clanskiBroj){
EntityManager em = JPAUtil.getEntityManager();
TypedQuery q = em.createQuery("select c from Clan c join fetch c.zaduzenjes z "
+ "where z.datumVracanja is null and c.clanskiBroj = :clanskiBroj", Clan.class);
q.setParameter("clanskiBroj", clanskiBroj);
Clan c = q.getSingleResult();
em.close();
return c;
}
public Zaduzenje saveZaduzenje(int clBr, int invBr){
try{
EntityManager em=JPAUtil.getEntityManager();
Clan c=em.find(Clan.class, clBr);
Primerak p=em.find(Primerak.class, invBr);
Zaduzenje z=new Zaduzenje();
z.setClan(c);
z.setPrimerak(p);
z.setDatumZaduzenja(new Date());
em.getTransaction().begin();
em.persist(z);
em.getTransaction().commit();
em.close();
return z;
}
catch(Exception e){
e.printStackTrace();
return null;
}
}
public List getSvaZaduzenjaClana(int clBr){
try{
EntityManager em=JPAUtil.getEntityManager();
Clan c=em.find(Clan.class, clBr);
Query q=em.createQuery("select z from Zaduzenje z where z.clan= :c");
q.setParameter("c", c);
List zad=q.getResultList();
return zad;
}
catch(Exception e){
e.printStackTrace();
return null;
}
}
public Knjiga pronadjiKnjiguZaPrimerak(int invBr){
try{
EntityManager em=JPAUtil.getEntityManager();
Primerak p=em.find(Primerak.class, invBr);
return p.getKnjiga();
}
catch(Exception e){
e.printStackTrace();
return null;
}
}
-------------------------------
ReplyDelete- Dodavanje Primeraka Servlet -
-------------------------------
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Knjiga knjiga = (Knjiga)request.getSession().getAttribute("knjiga");
String brojPrimeraka = request.getParameter("brojPrimeraka");
int brojPrimerakaInt = Integer.parseInt(brojPrimeraka);
List invBrojevi = new KnjigaManager()
.addPrimeraks(knjiga, brojPrimerakaInt);
request.setAttribute("snimanjePrimeraka", true);
request.setAttribute("invBrojevi", invBrojevi);
RequestDispatcher rd = request.getServletContext().getRequestDispatcher("/unos/UnosPrimeraka.jsp");
rd.forward(request, response);
}
------------------------
- Razduzivanje Servlet -
------------------------
Integer clanskiBroj=Integer.parseInt(request.getParameter("clanskiBroj"));
List zaduzenjaClana=new ClanManager().getNerazduzenaZaduzenjaZaClana(clanskiBroj);
request.setAttribute("zaduzenja",zaduzenjaClana);
request.getSession().setAttribute("clanskiBroj", clanskiBroj);
RequestDispatcher rd=request.getServletContext().getRequestDispatcher("/unos/Razduzenje.jsp");
rd.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Integer idZaduzenja=Integer.parseInt(request.getParameter("zaduzenje"));
boolean razduzen=new ClanManager().razduzi(idZaduzenja);
String poruka="Clan je uspesno razduzen!";
if(!razduzen)
poruka="Doslo je do greske. Clan nije razduzen.";
Integer clanskiBroj=(Integer)request.getSession().getAttribute("clanskiBroj");
List zaduzenja=new ClanManager().getNerazduzenaZaduzenjaZaClana(clanskiBroj);
request.setAttribute("zaduzenja", zaduzenja);
request.setAttribute("poruka", poruka);
RequestDispatcher rd=request.getServletContext().getRequestDispatcher("/unos/Razduzenje.jsp");
rd.forward(request, response);
}
---------------------
- Save Clan Servlet -
---------------------
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
String ime=request.getParameter("ime");
String prezime=request.getParameter("prezime");
String adresa=request.getParameter("adresa");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date datumRodjenja=sdf.parse(request.getParameter("datumRodjenja"));
Date datumUpisa=sdf.parse(request.getParameter("datumUpisa"));
int idKategorije=Integer.parseInt(request.getParameter("kategorija"));
ClanManager cm=new ClanManager();
Clan c=cm.saveClan(ime, prezime, adresa, datumRodjenja, datumUpisa, idKategorije);
String poruka="";
if(c!=null)
poruka="Clan je uspesno sacuvan. Clanski broj je "+c.getClanskibroj();
else
poruka="Doslo je do greske. Clan nije sacuvan";
request.setAttribute("poruka", poruka);
RequestDispatcher rd=request.getServletContext().getRequestDispatcher("/unos/SaveClan.jsp");
rd.forward(request, response);
}
catch(Exception e){
e.printStackTrace();
}
}
public class SaveKnjiga extends HttpServlet {
ReplyDeleteprivate static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SaveKnjiga() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String naslov = request.getParameter("naslov");
String autor = request.getParameter("autor");
String godinaIzdanja = request.getParameter("godinaIzdanja");
String izdavac = request.getParameter("izdavac");
KnjigaManager km=new KnjigaManager();
Knjiga k=km.saveKnjiga(autor, naslov, izdavac, godinaIzdanja);
ServletConfig c=this.getServletConfig();
String adresa;
// if(k!=null)
// adresa = c.getInitParameter("successAddress");
// else
// adresa = getServletContext().getInitParameter("errorAddress");
// RequestDispatcher rd = request.getServletContext().getRequestDispatcher(adresa);//("/unos/SaveKnjiga.jsp");
String poruka;
if(k!=null)
poruka = "Knjiga je uspesno sacuvana!";
else
poruka = "Doslo je do greske, knjiga nije sacuvana!";
request.setAttribute("poruka", poruka);
request.getSession().setAttribute("knjiga", k);
RequestDispatcher rd = request.getServletContext().getRequestDispatcher("/unos/UnosPrimeraka.jsp");
rd.forward(request, response);
}
}
SAVE ZADUZENJE
ReplyDeletepublic class SaveZaduzenje extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SaveZaduzenje() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int clBr=Integer.parseInt(request.getParameter("clanskiBroj"));
int invBr=Integer.parseInt(request.getParameter("inventarniBroj"));
KnjigaManager km=new KnjigaManager();
Zaduzenje z=km.saveZaduzenje(clBr, invBr);
String poruka;
if(z!=null)
poruka="Zaduzenje je uspesno sacuvano!";
else
poruka="Doslo je do greske";
request.setAttribute("poruka", poruka);
List zaduzenja=km.getSvaZaduzenjaClana(clBr);
request.getSession().setAttribute("zaduzenja", zaduzenja);
EntityManager em=JPAUtil.getEntityManager();
request.setAttribute("clan", em.find(Clan.class, clBr));
Knjiga k=km.pronadjiKnjiguZaPrimerak(invBr);
request.setAttribute("knjiga", k);
RequestDispatcher rd = request.getServletContext().getRequestDispatcher("/prikaz/PrikazZaduzenja.jsp");
rd.forward(request, response);
}
}
VRATI CLANOVE SERVLET
ReplyDeleteprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String ime=request.getParameter("ime");
String prezime=request.getParameter("prezime");
List clanovi=new ClanManager().getClanoviZaImePrezime(ime, prezime);
request.getSession().setAttribute("clanovi", clanovi);
RequestDispatcher rd=request.getServletContext().getRequestDispatcher("/prikaz/PrikazClanova.jsp");
rd.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
VRATI ZADUZENJA CLANA SERVLET
ReplyDeleteprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Integer clanskiBroj=Integer.parseInt(request.getParameter("clanskiBroj"));
List clanovi=(List)request.getSession().getAttribute("clanovi");
for(Clan c:clanovi){
if(c.getClanskibroj()==clanskiBroj)
request.setAttribute("zaduzenja", c.getZaduzenjes());
}
RequestDispatcher rd=request.getServletContext().getRequestDispatcher("/prikaz/PrikazZaduzenjaClana.jsp");
rd.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
package managers;
ReplyDeleteimport javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JPAUtil {
private static EntityManagerFactory entityMangerFactory;
static{
entityMangerFactory = Persistence.createEntityManagerFactory("libraryJPA");
}
public static EntityManager getEntityManager(){
return entityMangerFactory.createEntityManager();
}
}