/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package action;
import bo.Beneficiar;
import bo.Geolog;
import bo.GeologBeneficiar;
import dao.GeologDao;
import dao.GeologBeneficiarDao;
import daoI.IGeologBeneficiarDao;
import daoI.IGeologDao;
import bo.Amplasament;
import bo.Judet;
import bo.Oras;
import dao.AmplasamentDao;
import dao.JudetDao;
import dao.OrasDao;
import daoI.IAmplasamentDao;
import daoI.IJudetDao;
import daoI.IOrasDao;
import bo.Proiect;
import dao.ProiectDao;
import daoI.IProiectDao;
import auxiliar.ProiecteGeologSef;
import java.util.List;
import auxiliar.RepartizareProiect;
import dao.BeneficiarDao;
import daoI.IBeneficiarDao;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import net.sourceforge.stripes.action.DefaultHandler;
import net.sourceforge.stripes.action.ForwardResolution;
import net.sourceforge.stripes.action.Resolution;
public class ProiectActionBean extends BaseActionBean {
private String numeProiect;
private String geologFilter;
private String judetFilter;
private String orasFilter;
private String locatie;
private Boolean amplasamentAdaugat = false;
private String butonRadio;
private Boolean radioNeselectat = false;
@DefaultHandler
public Resolution view() {
return new ForwardResolution("/WEB-INF/jsp/repartizareAmplasamente.jsp");
}
public Resolution proiecteGeologSef() {
getContext().getRequest().getSession(true).setAttribute("proiecteGeologSef", getProiecteGeologSef());
return new ForwardResolution("/WEB-INF/jsp/proiecteGeologSef.jsp");
}
public Resolution submit() {
IProiectDao proiectDao = new ProiectDao();
int idBeneficiar = ((Beneficiar) getContext().getRequest().getSession().getAttribute("beneficiarProiect")).getIdBeneficiar();
int idGeolog = getIdGeologLogat();
Proiect proiect = new Proiect(getNumeProiect(), idGeolog, idBeneficiar);
proiectDao.saveOrUpdate(proiect);
Proiect p = proiectDao.getUltimulProiectAdaugat(idGeolog);
getContext().getRequest().getSession(true).setAttribute("proiectInLucru", proiectDao.getUltimulProiectAdaugat(idGeolog));
return new ForwardResolution("/WEB-INF/jsp/repartizareAmplasamente.jsp");
}
public Resolution adauga() {
//adaugam beneficiarul si la subgeologul corespunzator
IGeologBeneficiarDao geologBeneficiarDao = new GeologBeneficiarDao();
Beneficiar beneficiar = (Beneficiar) getContext().getRequest().getSession().getAttribute("beneficiarProiect");
int idBeneficiar = beneficiar.getIdBeneficiar();
int idGeolog = Integer.parseInt(getGeologFilter());
geologBeneficiarDao.saveOrUpdate(new GeologBeneficiar(idGeolog, idBeneficiar));
//adaugam amplasamentul
int idProiect = ((Proiect) getContext().getRequest().getSession().getAttribute("proiectInLucru")).getIdProiect();
IOrasDao orasDao = new OrasDao();
Oras oras = orasDao.getOrasByID(Integer.parseInt(getOrasFilter()));
Amplasament amplasament = new Amplasament();
amplasament.setBeneficiar(beneficiar);
amplasament.setOras(oras);
amplasament.setLocatie(getLocatie());
amplasament.setIdGeolog(idGeolog);
amplasament.setIdProiect(idProiect);
setAmplasamentAdaugat(true);
IAmplasamentDao amplasamentDao = new AmplasamentDao();
amplasamentDao.saveOrUpdate(amplasament);
//restul pentru afisarea in tabel
//numele geologului caruia i s-a repartizat amplasamentul
IGeologDao geologDao = new GeologDao();
Geolog geolog = geologDao.getGeologByID(idGeolog);
RepartizareProiect repartizareProiect = (RepartizareProiect) getContext().getRequest().getSession().getAttribute("repartizareAmplasamente");
if (repartizareProiect == null) {
RepartizareProiect repartizareP = new RepartizareProiect();
repartizareP.setIdAmplasament(Arrays.asList(amplasamentDao.getLastAmplasament().getIdAmplasament()));
repartizareP.setGeolog(Arrays.asList(geolog));
repartizareP.setOras(Arrays.asList(oras.getNumeOras()));
repartizareP.setLocatie(Arrays.asList(getLocatie()));
getContext().getRequest().getSession(true).setAttribute("repartizareAmplasamente", repartizareP);
} else {
List<Integer> auxA = new ArrayList<Integer>();
List<Geolog> auxN = new ArrayList<Geolog>();
List<String> auxO = new ArrayList<String>();
List<String> auxL = new ArrayList<String>();
auxA.addAll(repartizareProiect.getIdAmplasament());
auxA.add(amplasamentDao.getLastAmplasament().getIdAmplasament());
repartizareProiect.setIdAmplasament(auxA);
auxN.addAll(repartizareProiect.getGeolog());
auxN.add(geolog);
repartizareProiect.setGeolog(auxN);
auxO.addAll(repartizareProiect.getOras());
auxO.add(oras.getNumeOras());
repartizareProiect.setOras(auxO);
auxL.addAll(repartizareProiect.getLocatie());
auxL.add(getLocatie());
repartizareProiect.setLocatie(auxL);
getContext().getRequest().getSession(true).setAttribute("repartizareAmplasamente", repartizareProiect);
}
setAmplasamentAdaugat(true);
return new ForwardResolution("/WEB-INF/jsp/repartizareAmplasamente.jsp");
}
public Resolution sterge() {
if (getButonRadio() == null) {
setRadioNeselectat(true);
return new ForwardResolution("/WEB-INF/jsp/repartizareAmplasamente.jsp");
} else {
int idAmplasament = Integer.parseInt(getButonRadio());
int idBeneficiar = ((Beneficiar) getContext().getRequest().getSession().getAttribute("beneficiarProiect")).getIdBeneficiar();
IAmplasamentDao amplasamentDao = new AmplasamentDao();
Amplasament amplasament=amplasamentDao.getAmplasamentByID(idAmplasament);
amplasamentDao.delete(idAmplasament);
IGeologBeneficiarDao geologBeneficiarDao = new GeologBeneficiarDao();
int idGeolog = amplasament.getIdGeolog();
geologBeneficiarDao.delete(idGeolog, idBeneficiar);
IGeologDao geologDao = new GeologDao();
Geolog geolog = geologDao.getGeologByID(idGeolog);
RepartizareProiect repartizareProiect = (RepartizareProiect) getContext().getRequest().getSession().getAttribute("repartizareAmplasamente");
List<Integer> auxA = new ArrayList<Integer>();
List<Geolog> auxN = new ArrayList<Geolog>();
List<String> auxO = new ArrayList<String>();
List<String> auxL = new ArrayList<String>();
auxA.addAll(repartizareProiect.getIdAmplasament());
auxN.addAll(repartizareProiect.getGeolog());
auxO.addAll(repartizareProiect.getOras());
auxL.addAll(repartizareProiect.getLocatie());
int aux = 1, pozitie = -1;
Iterator it = auxN.iterator();
while (it.hasNext() && aux == 1) {
pozitie++;
Geolog g = (Geolog) it.next();
if (g.getIdGeolog() == amplasament.getIdGeolog() && (auxO.get(pozitie).equals(amplasament.getOras().getNumeOras()) )&& (auxL.get(pozitie).equals(amplasament.getLocatie()) )) {
aux = 0;
}
}
auxA.remove(pozitie);
repartizareProiect.setIdAmplasament(auxA);
auxN.remove(pozitie);
repartizareProiect.setGeolog(auxN);
auxO.remove(pozitie);
repartizareProiect.setOras(auxO);
auxL.remove(pozitie);
repartizareProiect.setLocatie(auxL);
getContext().getRequest().getSession(true).setAttribute("repartizareAmplasamente", repartizareProiect);
}
return new ForwardResolution("/WEB-INF/jsp/repartizareAmplasamente.jsp");
}
public Resolution stergeProiect(){
int idProiect = ((Proiect) getContext().getRequest().getSession().getAttribute("proiectInLucru")).getIdProiect();
IProiectDao proiectDao=new ProiectDao();
IAmplasamentDao amplasamentDao=new AmplasamentDao();
IGeologBeneficiarDao geologBeneficiarDao=new GeologBeneficiarDao();
int idGeologSef=proiectDao.getProiectByID(idProiect).getIdGeolog();
int idBeneficiar=proiectDao.getProiectByID(idProiect).getIdBeneficiar();
List<Amplasament> amplasamente=amplasamentDao.getAmplasamenteByProiectId(idProiect);
Iterator it=amplasamente.iterator();
while(it.hasNext()){
Amplasament amplasament=(Amplasament)it.next();
geologBeneficiarDao.delete(amplasament.getIdGeolog(), idBeneficiar);
amplasamentDao.delete(amplasament.getIdAmplasament());
}
geologBeneficiarDao.delete(idGeologSef, idBeneficiar);
proiectDao.delete(idProiect);
return new ForwardResolution("/WEB-INF/jsp/geologLogat.jsp");
}
public List<Geolog> getGeologi() {
IGeologDao geologDao = new GeologDao();
List<Geolog> geologi = geologDao.getAll();
return geologi;
}
public List<Judet> getJudete() {
IJudetDao judetDao = new JudetDao();
List<Judet> judete = judetDao.getAll();
return judete;
}
public List<Oras> getOrase() {
if (getJudetFilter() != null) {
IOrasDao orasDao = new OrasDao();
List<Oras> orase = orasDao.getOraseByJudetId(Integer.parseInt(getJudetFilter()));
return orase;
} else {
IOrasDao orasDao = new OrasDao();
List<Oras> orase = orasDao.getOraseByJudetId(getJudete().get(0).getIdJudet());
return orase;
}
}
public Boolean getIsJudetSelectat() {
if (getJudetFilter() != null) {
return true;
} else {
return false;
}
}
public String getNumeProiect() {
return numeProiect;
}
public void setNumeProiect(String numeProiect) {
this.numeProiect = numeProiect;
}
public Boolean getAmplasamentAdaugat() {
return amplasamentAdaugat;
}
public void setAmplasamentAdaugat(Boolean amplasamentAdaugat) {
this.amplasamentAdaugat = amplasamentAdaugat;
}
public String getGeologFilter() {
return geologFilter;
}
public void setGeologFilter(String geologFilter) {
this.geologFilter = geologFilter;
}
public String getJudetFilter() {
return judetFilter;
}
public void setJudetFilter(String judetFilter) {
this.judetFilter = judetFilter;
}
public String getLocatie() {
return locatie;
}
public void setLocatie(String locatie) {
this.locatie = locatie;
}
public String getOrasFilter() {
return orasFilter;
}
public void setOrasFilter(String orasFilter) {
this.orasFilter = orasFilter;
}
public String getButonRadio() {
return butonRadio;
}
public void setButonRadio(String butonRadio) {
this.butonRadio = butonRadio;
}
public Boolean getRadioNeselectat() {
return radioNeselectat;
}
public void setRadioNeselectat(Boolean radioNeselectat) {
this.radioNeselectat = radioNeselectat;
}
public List<ProiecteGeologSef> getProiecteGeologSef() {
IBeneficiarDao beneficiarDao = new BeneficiarDao();
IProiectDao proiectDao = new ProiectDao();
IAmplasamentDao amplasamentDao = new AmplasamentDao();
IGeologDao geologDao = new GeologDao();
Proiect p;
ProiecteGeologSef proiect;
RepartizareProiect repartizareProiect;
List<Amplasament> amplasamente;
List<Geolog> geologi;
List<String> orase;
List<String> locatii;
Amplasament amplasament;
Geolog geolog;
String oras, locatie;
List<ProiecteGeologSef> proiecteGeologSef = new ArrayList<ProiecteGeologSef>();
List<Proiect> proiecte = proiectDao.getProiecteByGeologId(getIdGeologLogat());
Iterator it = proiecte.iterator();
while (it.hasNext()) {
p = (Proiect) it.next();
proiect = new ProiecteGeologSef();
proiect.setNumeProiect(p.getNumeProiect()); //nume proiect
//nume beneficiar
proiect.setNumeBeneficiar(beneficiarDao.getBeneficiarByID(p.getIdBeneficiar()).getNumeBeneficiar());
// determinam amplasamentele pt un proiect
amplasamente = amplasamentDao.getAmplasamenteByProiectId(p.getIdProiect());
repartizareProiect = new RepartizareProiect();
geologi = new ArrayList<Geolog>();
orase = new ArrayList<String>();
locatii = new ArrayList<String>();
for (int i = 0; i < amplasamente.size(); i++) {
amplasament = amplasamente.get(i);
geolog = geologDao.getGeologByID(amplasament.getIdGeolog());
oras = amplasament.getOras().getNumeOras();
locatie = amplasament.getLocatie();
geologi.add(geolog);
orase.add(oras);
locatii.add(locatie);
}
repartizareProiect.setGeolog(geologi);
repartizareProiect.setLocatie(locatii);
repartizareProiect.setOras(orase);
proiect.setRepartizareProiect(repartizareProiect);
proiecteGeologSef.add(proiect);
}
return proiecteGeologSef;
}
}