/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package action;
import bo.CitiriAreometru;
import bo.TempCitita;
import auxiliar.FormularMetodaSedimentarii;
import auxiliar.MetodaSedimentarii;
import bo.Proba;
import dao.ProbaDao;
import daoI.IProbaDao;
import dao.CitiriAreometruDao;
import dao.TempCititaDao;
import daoI.ICitiriAreometruDao;
import daoI.ITempCititaDao;
import dao.CorectiaTemperaturiiDao;
import daoI.ICorectiaTemperaturiiDao;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.sourceforge.stripes.action.DefaultHandler;
import net.sourceforge.stripes.action.ForwardResolution;
import net.sourceforge.stripes.action.Resolution;
public class MetodaSedimentariiActionBean extends BaseActionBean {
private FormularMetodaSedimentarii formular = new FormularMetodaSedimentarii();
private MetodaSedimentarii medSedimentarii;
private String aInput;
private String bInput;
@DefaultHandler
public Resolution view() {
//daca s-a mai facut metoda cernerii pt proba curenta,atunci se afiseaza valorile din BD
medSedimentarii = new MetodaSedimentarii();
ICitiriAreometruDao citiriAreometruDao = new CitiriAreometruDao();
ITempCititaDao tempCititaDao = new TempCititaDao();
CitiriAreometru citiriAreometruAuxiliar = citiriAreometruDao.getCitiriAreometruByIDProba(Integer.parseInt(getContext().getRequest().getSession().getAttribute("idProba").toString()));
TempCitita tempCititaAuxiliar = tempCititaDao.getTempCititaByIDProba(Integer.parseInt(getContext().getRequest().getSession().getAttribute("idProba").toString()));
if ((citiriAreometruAuxiliar != null) && (tempCititaAuxiliar != null)) {
CitiriAreometru citiriAreometruDinBD = citiriAreometruDao.getCitiriAreometruByIDProba(Integer.parseInt(getContext().getRequest().getSession().getAttribute("idProba").toString()));
List<Float> citiriAreometruDinBDList = Arrays.asList(citiriAreometruDinBD.getVal05(), citiriAreometruDinBD.getVal1(), citiriAreometruDinBD.getVal2(), citiriAreometruDinBD.getVal4(), citiriAreometruDinBD.getVal8(), citiriAreometruDinBD.getVal15(), citiriAreometruDinBD.getVal30(), citiriAreometruDinBD.getVal60(), citiriAreometruDinBD.getVal120(), citiriAreometruDinBD.getVal240(), citiriAreometruDinBD.getVal720(), citiriAreometruDinBD.getVal960());
medSedimentarii.setCitiriAreometru(citiriAreometruDinBDList);
TempCitita tempCititaDinBd = tempCititaDao.getTempCititaByIDProba(Integer.parseInt(getContext().getRequest().getSession().getAttribute("idProba").toString()));
List<Float> tempCititaDinBdList = Arrays.asList(tempCititaDinBd.getVal05(), tempCititaDinBd.getVal1(), tempCititaDinBd.getVal2(), tempCititaDinBd.getVal4(), tempCititaDinBd.getVal8(), tempCititaDinBd.getVal15(), tempCititaDinBd.getVal30(), tempCititaDinBd.getVal60(), tempCititaDinBd.getVal120(), tempCititaDinBd.getVal240(), tempCititaDinBd.getVal720(), tempCititaDinBd.getVal960());
medSedimentarii.setTemperaturaCitita(tempCititaDinBdList);
populeazaColoana2Si3 (citiriAreometruDinBD,tempCititaDinBd);
medSedimentarii.setCitiriCorectate(formulaMetSedimentariiCol4(citiriAreometruDinBDList));
medSedimentarii.setCorectiaTemperaturii(formulaMetSedimentariiCol6(tempCititaDinBdList));
medSedimentarii.setRc(formulaMetSedimentariiCol7(medSedimentarii.getCitiriCorectate(), medSedimentarii.getCorectiaTemperaturii()));
medSedimentarii.setDiametruGranule(formulaMetSedimentariiCol5(medSedimentarii.getRc(), medSedimentarii.getTimpFloat(), Float.parseFloat(getB()), Float.parseFloat(getRs())));
medSedimentarii.setMp(formulaMetSedimentariiCol8(medSedimentarii.getRc(), Float.parseFloat(getRs())));
getContext().getRequest().getSession(true).setAttribute("metS", medSedimentarii);
}
getContext().getRequest().getSession(true).setAttribute("metS", medSedimentarii);
return new ForwardResolution("/WEB-INF/jsp/metoda_sedimentarii.jsp");
}
public Resolution submit() {
IProbaDao probaDao = new ProbaDao();
//proba curenta
Proba proba = probaDao.geProbaByID(Integer.parseInt(getContext().getRequest().getSession().getAttribute("idProba").toString()));
//valori introduse
List<Float> valoriIntroduseTemperatura = Arrays.asList(Float.parseFloat(getFormular().getT0()), Float.parseFloat(getFormular().getT1()), Float.parseFloat(getFormular().getT2()), Float.parseFloat(getFormular().getT3()), Float.parseFloat(getFormular().getT4()), Float.parseFloat(getFormular().getT5()), Float.parseFloat(getFormular().getT6()), Float.parseFloat(getFormular().getT7()), Float.parseFloat(getFormular().getT8()), Float.parseFloat(getFormular().getT9()), Float.parseFloat(getFormular().getT10()), Float.parseFloat(getFormular().getT11()));
List<Float> valoriIntroduseAreometru = Arrays.asList(Float.parseFloat(getFormular().getA0()), Float.parseFloat(getFormular().getA1()), Float.parseFloat(getFormular().getA2()), Float.parseFloat(getFormular().getA3()), Float.parseFloat(getFormular().getA4()), Float.parseFloat(getFormular().getA5()), Float.parseFloat(getFormular().getA6()), Float.parseFloat(getFormular().getA7()), Float.parseFloat(getFormular().getA8()), Float.parseFloat(getFormular().getA9()), Float.parseFloat(getFormular().getA10()), Float.parseFloat(getFormular().getA11()));
//obiect format pt proba curenta cu valorile introduse pt introducere in BD
TempCitita tempCititaBO = new TempCitita(proba, valoriIntroduseTemperatura.get(0), valoriIntroduseTemperatura.get(1), valoriIntroduseTemperatura.get(2), valoriIntroduseTemperatura.get(3), valoriIntroduseTemperatura.get(4), valoriIntroduseTemperatura.get(5), valoriIntroduseTemperatura.get(6), valoriIntroduseTemperatura.get(7), valoriIntroduseTemperatura.get(8), valoriIntroduseTemperatura.get(9), valoriIntroduseTemperatura.get(10), valoriIntroduseTemperatura.get(11));
ITempCititaDao tempCititaDao = new TempCititaDao();
TempCitita tempCititaAuxiliar = tempCititaDao.getTempCititaByIDProba(proba.getIdProba());
if (tempCititaAuxiliar == null) {
tempCititaDao.saveOrUpdate(tempCititaBO);
} else {
tempCititaBO.setIdSedimentare(tempCititaAuxiliar.getIdSedimentare());
tempCititaDao.saveOrUpdate(tempCititaBO);
}
CitiriAreometru citireAreometruBO = new CitiriAreometru(proba, valoriIntroduseAreometru.get(0), valoriIntroduseAreometru.get(1), valoriIntroduseAreometru.get(2), valoriIntroduseAreometru.get(3), valoriIntroduseAreometru.get(4), valoriIntroduseAreometru.get(5), valoriIntroduseAreometru.get(6), valoriIntroduseAreometru.get(7), valoriIntroduseAreometru.get(8), valoriIntroduseAreometru.get(9), valoriIntroduseAreometru.get(10), valoriIntroduseAreometru.get(11));
ICitiriAreometruDao citiriAreometruDao = new CitiriAreometruDao();
CitiriAreometru citiriAreometruAuxiliar = citiriAreometruDao.getCitiriAreometruByIDProba(proba.getIdProba());
if (citiriAreometruAuxiliar == null) {
citiriAreometruDao.saveOrUpdate(citireAreometruBO);
} else {
citireAreometruBO.setIdSedimentare(citiriAreometruAuxiliar.getIdSedimentare());
citiriAreometruDao.saveOrUpdate(citireAreometruBO);
}
//update la proba pt parametrii md si rs
proba.setA(Float.parseFloat(getaInput()));
proba.setB(Float.parseFloat(getbInput()));
probaDao.saveOrUpdate(proba);
medSedimentarii = new MetodaSedimentarii();
//se modifica pt a afisa in pagina, noile valori introduse
CitiriAreometru citiriAreometruDinBD = citiriAreometruDao.getCitiriAreometruByIDProba(proba.getIdProba());
List<Float> citiriAreometruDinBDList = Arrays.asList(citiriAreometruDinBD.getVal05(), citiriAreometruDinBD.getVal1(), citiriAreometruDinBD.getVal2(), citiriAreometruDinBD.getVal4(), citiriAreometruDinBD.getVal8(), citiriAreometruDinBD.getVal15(), citiriAreometruDinBD.getVal30(), citiriAreometruDinBD.getVal60(), citiriAreometruDinBD.getVal120(), citiriAreometruDinBD.getVal240(), citiriAreometruDinBD.getVal720(), citiriAreometruDinBD.getVal960());
medSedimentarii.setCitiriAreometru(citiriAreometruDinBDList);
TempCitita tempCititaDinBd = tempCititaDao.getTempCititaByIDProba(proba.getIdProba());
List<Float> tempCititaDinBdList = Arrays.asList(tempCititaDinBd.getVal05(), tempCititaDinBd.getVal1(), tempCititaDinBd.getVal2(), tempCititaDinBd.getVal4(), tempCititaDinBd.getVal8(), tempCititaDinBd.getVal15(), tempCititaDinBd.getVal30(), tempCititaDinBd.getVal60(), tempCititaDinBd.getVal120(), tempCititaDinBd.getVal240(), tempCititaDinBd.getVal720(), tempCititaDinBd.getVal960());
medSedimentarii.setTemperaturaCitita(tempCititaDinBdList);
medSedimentarii.setCitiriCorectate(formulaMetSedimentariiCol4(citiriAreometruDinBDList));
medSedimentarii.setCorectiaTemperaturii(formulaMetSedimentariiCol6(tempCititaDinBdList));
medSedimentarii.setRc(formulaMetSedimentariiCol7(medSedimentarii.getCitiriCorectate(), medSedimentarii.getCorectiaTemperaturii()));
medSedimentarii.setDiametruGranule(formulaMetSedimentariiCol5(medSedimentarii.getRc(), medSedimentarii.getTimpFloat(), Float.parseFloat(getB()), Float.parseFloat(getRs())));
medSedimentarii.setMp(formulaMetSedimentariiCol8(medSedimentarii.getRc(), Float.parseFloat(getRs())));
getContext().getRequest().getSession(true).setAttribute("metS", medSedimentarii);
return new ForwardResolution("/WEB-INF/jsp/metoda_sedimentarii.jsp");
}
public List<Float> formulaMetSedimentariiCol4(List<Float> dateIn)//dataIn=citiri_areometru
{
List<Float> dateOut = new ArrayList<Float>();
for (int i = 0; i < dateIn.size(); i++) {
Float formula = (dateIn.get(i) - 1) * 1000 + (float) 0.2;
dateOut.add((Float)zecimale(formula,5));
}
return dateOut;
}
//dataIn1=citiri_areometru.dateIn2=timp,param1=b,param2=rs
public List<Float> formulaMetSedimentariiCol5(List<Float> dateIn1, List<Float> dateIn2, Float param1, Float param2) {
List<Float> dateOut = new ArrayList<Float>();
for (int i = 0; i < dateIn1.size(); i++) {
Float formula = (float) (Math.sqrt(1800 * 0.01 * 1000 * (20.17 - param1 * dateIn1.get(i)) / ((param2 - 1) * dateIn2.get(i) * 60)) / 1000);
dateOut.add((Float)zecimale(formula,5));
}
return dateOut;
}
//dateIn - temp_citita
public List<Float> formulaMetSedimentariiCol6(List<Float> dateIn) {
List<Float> dateOut = new ArrayList<Float>();
ICorectiaTemperaturiiDao corectiaTempDao = new CorectiaTemperaturiiDao();
for (int i = 0; i < dateIn.size(); i++) {
Float formula = corectiaTempDao.getTempCititaByTemp(dateIn.get(i));
if (formula == null) {
dateOut.add((float) 0.0);
} else {
dateOut.add((Float)zecimale(formula,5));
}
}
return dateOut;
}
//dataIn1=temperatura Citita,dateIn2=corectia temperaturi
public List<Float> formulaMetSedimentariiCol7(List<Float> dateIn1, List<Float> dateIn2) {
List<Float> dateOut = new ArrayList<Float>();
for (int i = 0; i < dateIn1.size(); i++) {
Float formula = dateIn1.get(i) + dateIn2.get(i);
dateOut.add((Float)zecimale(formula,5));
}
return dateOut;
}
//dataIn=citiri_areometru,param1=rs
public List<Float> formulaMetSedimentariiCol8(List<Float> dateIn, Float param) {
List<Float> dateOut = new ArrayList<Float>();
for (int i = 0; i < dateIn.size(); i++) {
Float formula = 100 * (param / (param - 1)) * dateIn.get(i) / 50;
dateOut.add((Float)zecimale(formula,5));
}
return dateOut;
}
public FormularMetodaSedimentarii getFormular() {
return formular;
}
public void setFormular(FormularMetodaSedimentarii formular) {
this.formular = formular;
}
public String getaInput() {
return aInput;
}
public void setaInput(String aInput) {
this.aInput = aInput;
}
public String getbInput() {
return bInput;
}
public void setbInput(String bInput) {
this.bInput = bInput;
}
private void populeazaColoana2Si3(CitiriAreometru citiriAreometru,TempCitita tempCitita ) {
formular.setA0(citiriAreometru.getVal05().toString());
formular.setA1(citiriAreometru.getVal1().toString());
formular.setA2(citiriAreometru.getVal2().toString());
formular.setA3(citiriAreometru.getVal4().toString());
formular.setA4(citiriAreometru.getVal8().toString());
formular.setA5(citiriAreometru.getVal15().toString());
formular.setA6(citiriAreometru.getVal30().toString());
formular.setA7(citiriAreometru.getVal60().toString());
formular.setA8(citiriAreometru.getVal120().toString());
formular.setA9(citiriAreometru.getVal240().toString());
formular.setA10(citiriAreometru.getVal720().toString());
formular.setA11(citiriAreometru.getVal960().toString());
formular.setT0(tempCitita.getVal05().toString());
formular.setT1(tempCitita.getVal1().toString());
formular.setT2(tempCitita.getVal2().toString());
formular.setT3(tempCitita.getVal4().toString());
formular.setT4(tempCitita.getVal8().toString());
formular.setT5(tempCitita.getVal15().toString());
formular.setT6(tempCitita.getVal30().toString());
formular.setT7(tempCitita.getVal60().toString());
formular.setT8(tempCitita.getVal120().toString());
formular.setT9(tempCitita.getVal240().toString());
formular.setT10(tempCitita.getVal720().toString());
formular.setT11(tempCitita.getVal960().toString());
}
}