/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package action;
import bo.Proba;
import dao.ProbaDao;
import daoI.IProbaDao;
import dao.CompresibilitateDao;
import daoI.ICompresibilitateDao;
import bo.Compresiune;
import dao.CompresiuneDao;
import daoI.ICompresiuneDao;
import dao.StantaDao;
import daoI.IStantaDao;
import bo.Stanta;
import auxiliar.CompresiuneTabel;
import bo.Compresibilitate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import net.sourceforge.stripes.action.DefaultHandler;
import net.sourceforge.stripes.action.ForwardResolution;
import net.sourceforge.stripes.action.Resolution;
public class CompresiuneActionBean extends BaseActionBean {
private List<Float> sarcini = null;
private String sarcina1;
private String sarcina2;
@DefaultHandler
public Resolution view() {
IProbaDao probaDao = new ProbaDao();
Proba proba = probaDao.geProbaByID(Integer.parseInt(getContext().getRequest().getSession().getAttribute("idProba").toString()));
// trebuie modificat sa afiseze sarcinile in comboboxuri direct cu gettere, asta dupa ce se rezolva punerea pe sesiune al id-ului probei
ICompresibilitateDao compresibilitateDao = new CompresibilitateDao();
List<Float> sarciniL = compresibilitateDao.geSarciniByIDProba(proba.getIdProba());
setSarcini(sarciniL);
ICompresiuneDao compresiuneDao = new CompresiuneDao();
List<Compresiune> compresiuni = compresiuneDao.geCompresiuneByIDProba(proba.getIdProba());
CompresiuneTabel compTabel = new CompresiuneTabel();
if (compresiuni.size() != 0) {
List<String> sigmaList = new ArrayList<String>();
Iterator it = compresiuni.iterator();
while (it.hasNext()) {
sigmaList.add(((Compresiune) it.next()).getSigma());
}
compTabel.setC1(sigmaList);
compTabel.setC2(formulaCompresiuneCol2(sigmaList, proba.getIdProba()));
compTabel.setC3(formulaCompresiuneCol3(sigmaList, proba.getIdProba()));
compTabel.setC4(formulaCompresiuneCol4(sigmaList, proba.getIdProba()));
compTabel.setC5(formulaCompresiuneCol5(sigmaList, proba.getIdProba()));
compTabel.setC6(formulaCompresiuneCol6(sigmaList, proba.getIdProba()));
compTabel.setC7(formulaCompresiuneCol7(sigmaList, proba.getIdProba()));
compTabel.setC8(formulaCompresiuneCol8(sigmaList, proba.getIdProba()));
compTabel.setC9(formulaCompresiuneCol9(sigmaList, proba.getIdProba()));
compTabel.setC10(formulaCompresiuneCol10(sigmaList, proba.getIdProba()));
}
getContext().getRequest().getSession(true).setAttribute("compresiune", compTabel);
return new ForwardResolution("/WEB-INF/jsp/compresiune.jsp");
}
public Resolution submit() {
IProbaDao probaDao = new ProbaDao();
Proba proba = probaDao.geProbaByID(Integer.parseInt(getContext().getRequest().getSession().getAttribute("idProba").toString()));
//sa populeze comboboxurile
ICompresibilitateDao compresibilitateDao = new CompresibilitateDao();
List<Float> sarciniL = compresibilitateDao.geSarciniByIDProba(proba.getIdProba());
setSarcini(sarciniL);
String sigma = getSarcina1() + "-" + getSarcina2();
ICompresiuneDao compresiuneDao = new CompresiuneDao();
Compresiune compresiune = new Compresiune(proba, sigma);
List<Compresiune> compresiuneAuxiliar = compresiuneDao.geCompresiuneByIDProba(proba.getIdProba());
if (compresiuneAuxiliar == null) {
compresiuneDao.saveOrUpdate(compresiune);
} else {
int vb = 0;
Iterator it = compresiuneAuxiliar.iterator();
while (it.hasNext()) {
Compresiune c = (Compresiune) it.next();
if (c.getSigma().equals(sigma)) {
vb = 1;
compresiune.setIdCompresiune(c.getIdCompresiune());
compresiuneDao.saveOrUpdate(compresiune);
break;
}
}
if (vb == 0) {
compresiuneDao.saveOrUpdate(compresiune);
}
}
List<Compresiune> compresiuni = compresiuneDao.geCompresiuneByIDProba(proba.getIdProba());
List<String> sigmaList = new ArrayList<String>();
Iterator it = compresiuni.iterator();
while (it.hasNext()) {
sigmaList.add(((Compresiune) it.next()).getSigma());
}
CompresiuneTabel compTabel = new CompresiuneTabel();
compTabel.setC1(sigmaList);
compTabel.setC2(formulaCompresiuneCol2(sigmaList, proba.getIdProba()));
compTabel.setC3(formulaCompresiuneCol3(sigmaList, proba.getIdProba()));
compTabel.setC4(formulaCompresiuneCol4(sigmaList, proba.getIdProba()));
compTabel.setC5(formulaCompresiuneCol5(sigmaList, proba.getIdProba()));
compTabel.setC6(formulaCompresiuneCol6(sigmaList, proba.getIdProba()));
compTabel.setC7(formulaCompresiuneCol7(sigmaList, proba.getIdProba()));
compTabel.setC8(formulaCompresiuneCol8(sigmaList, proba.getIdProba()));
compTabel.setC9(formulaCompresiuneCol9(sigmaList, proba.getIdProba()));
compTabel.setC10(formulaCompresiuneCol10(sigmaList, proba.getIdProba()));
getContext().getRequest().getSession(true).setAttribute("compresiune", compTabel);
return new ForwardResolution("/WEB-INF/jsp/compresiune.jsp");
}
public List<Float> formulaCompresiuneCol2(List<String> dataS, int idProba) {
List<Float> dateOut = new ArrayList<Float>();
List<Float> citire = new ArrayList<Float>();
float formula = 0;
String[] sigma = new String[2];
ICompresibilitateDao compresibilitateDao = new CompresibilitateDao();
Compresibilitate compresibilitate = null;
IStantaDao stantaDao = new StantaDao();
Stanta stanta = stantaDao.getStantaByIDProba(idProba);
for (int i = 0; i < dataS.size(); i++) {
sigma = dataS.get(i).split("-");
compresibilitate = compresibilitateDao.geCompresibilitateByIDProbaAndSarcina(idProba, sigma[0]);
citire.add(compresibilitate.getCitire());
formula = citire.get(i) / stanta.getInaltimeStanta() / 10;
dateOut.add((Float) zecimale(formula, 3));
}
return dateOut;
}
public List<Float> formulaCompresiuneCol3(List<String> dataS, int idProba) {
List<Float> dateOut = new ArrayList<Float>();
List<Float> citire = new ArrayList<Float>();
float formula = 0;
String[] sigma = new String[2];
ICompresibilitateDao compresibilitateDao = new CompresibilitateDao();
Compresibilitate compresibilitate = null;
IStantaDao stantaDao = new StantaDao();
Stanta stanta = stantaDao.getStantaByIDProba(idProba);
for (int i = 0; i < dataS.size(); i++) {
sigma = dataS.get(i).split("-");
compresibilitate = compresibilitateDao.geCompresibilitateByIDProbaAndSarcina(idProba, sigma[1]);
citire.add(compresibilitate.getCitire());
formula = citire.get(i) / stanta.getInaltimeStanta() / 10;
dateOut.add((Float) zecimale(formula, 3));
}
return dateOut;
}
public List<Float> formulaCompresiuneCol4(List<String> dataS, int idProba) {
List<Float> dateOut = new ArrayList<Float>();
List<Float> citire = new ArrayList<Float>();
float formula = 0;
String[] sigma = new String[2];
ICompresibilitateDao compresibilitateDao = new CompresibilitateDao();
Compresibilitate compresibilitate = null;
IStantaDao stantaDao = new StantaDao();
Stanta stanta = stantaDao.getStantaByIDProba(idProba);
for (int i = 0; i < dataS.size(); i++) {
sigma = dataS.get(i).split("-");
compresibilitate = compresibilitateDao.geCompresibilitateByIDProbaAndSarcina(idProba, sigma[0]);
citire.add(compresibilitate.getCitire());
Float m2MinusM3 = stanta.getM2() - stanta.getTara();
formula = (getSuprafataStanta(stanta) * getDensitateSchelet() / m2MinusM3) * (stanta.getInaltimeStanta() - citire.get(i) / 1000) - 1;
dateOut.add((Float) zecimale(formula, 3));
}
return dateOut;
}
public List<Float> formulaCompresiuneCol5(List<String> dataS, int idProba) {
List<Float> dateOut = new ArrayList<Float>();
List<Float> citire = new ArrayList<Float>();
float formula = 0;
String[] sigma = new String[2];
ICompresibilitateDao compresibilitateDao = new CompresibilitateDao();
Compresibilitate compresibilitate = null;
IStantaDao stantaDao = new StantaDao();
Stanta stanta = stantaDao.getStantaByIDProba(idProba);
Float m2MinusM3 = stanta.getM2() - stanta.getTara();
for (int i = 0; i < dataS.size(); i++) {
sigma = dataS.get(i).split("-");
compresibilitate = compresibilitateDao.geCompresibilitateByIDProbaAndSarcina(idProba, sigma[1]);
citire.add(compresibilitate.getCitire());
formula = (getSuprafataStanta(stanta) * getDensitateSchelet() / m2MinusM3) * (stanta.getInaltimeStanta() - citire.get(i) / 1000) - 1;
dateOut.add((Float) zecimale(formula, 3));
}
return dateOut;
}
public List<Float> formulaCompresiuneCol6(List<String> dataS, int idProba) {
List<Float> dateOut = new ArrayList<Float>();
List<Float> listaSarcini = new ArrayList<Float>();
String sarcinaMinima = null;
String[] sigma = new String[2];
IStantaDao stantaDao = new StantaDao();
Stanta stanta = stantaDao.getStantaByIDProba(idProba);
float formula = 0, citire = 0, sarcinaAux1 = 0, sarcinaAux2 = 0, e0 = 0, e1 = 0, e2 = 0;
Float m2MinusM3 = stanta.getM2() - stanta.getTara();
ICompresibilitateDao compresibilitateDao = new CompresibilitateDao();
List<Compresibilitate> compresibilitate = compresibilitateDao.geCompresibilitateByIDProba(idProba);
Iterator it = compresibilitate.iterator();
while (it.hasNext()) {
listaSarcini.add(((Compresibilitate) it.next()).getSarcina());
}
sarcinaMinima = Collections.min(listaSarcini).toString();
Compresibilitate compresibilitateCuSarcinaMinima = compresibilitateDao.geCompresibilitateByIDProbaAndSarcina(idProba, sarcinaMinima);
citire = compresibilitateCuSarcinaMinima.getCitire();
e0 = getSuprafataStanta(stanta) * getDensitateSchelet() / m2MinusM3 * (stanta.getInaltimeStanta() - citire / 1000) - 1;
for (int i = 0; i < dataS.size(); i++) {
sigma = dataS.get(i).split("-");
sarcinaAux1 = Float.valueOf(sigma[1]);
sarcinaAux2 = Float.valueOf(sigma[0]);
e1 = formulaCompresiuneCol5(dataS, idProba).get(i);
e2 = formulaCompresiuneCol4(dataS, idProba).get(i);
formula = (sarcinaAux2 - sarcinaAux1) * (1 + e0) / (e1 - e2);
dateOut.add(formula);
}
return dateOut;
}
public List<Float> formulaCompresiuneCol7(List<String> dataS, int idProba) {
List<Float> dateOut = new ArrayList<Float>();
Float formula;
for (int i = 0; i < dataS.size(); i++) {
formula = 1 / formulaCompresiuneCol6(dataS, idProba).get(i);
dateOut.add(formula);
}
return dateOut;
}
public List<Float> formulaCompresiuneCol8(List<String> dataS, int idProba) {
List<Float> dateOut = new ArrayList<Float>();
Float formula;
for (int i = 0; i < dataS.size(); i++) {
formula = formulaCompresiuneCol7(dataS, idProba).get(i) * (1 + formulaCompresiuneCol6(dataS, idProba).get(0));
dateOut.add((Float) zecimale(formula, 3));
}
return dateOut;
}
public List<Float> formulaCompresiuneCol9(List<String> dataS, int idProba) {
List<Float> dateOut = new ArrayList<Float>();
String[] sigma = new String[2];
Float formula;
float e1 = 0, e2 = 0, sig1 = 0, sig2 = 0;
for (int i = 0; i < dataS.size(); i++) {
sigma = dataS.get(i).split("-");
sig1 = Float.valueOf(sigma[0]);
sig2 = Float.valueOf(sigma[1]);
e1 = formulaCompresiuneCol4(dataS, idProba).get(i);
e2 = formulaCompresiuneCol5(dataS, idProba).get(i);
formula = (float) ((e2 - e1) / Math.log10(sig1 / sig2));
dateOut.add((Float) zecimale(formula, 3));
}
return dateOut;
}
public List<Float> formulaCompresiuneCol10(List<String> dataS, int idProba) {
List<Float> dateOut = new ArrayList<Float>();
float e1 = 0, e2 = 0, sig1 = 0, sig2 = 0;
String[] sigma = new String[2];
Float formula;
for (int i = 0; i < dataS.size(); i++) {
e1 = formulaCompresiuneCol4(dataS, idProba).get(i);
e2 = formulaCompresiuneCol5(dataS, idProba).get(i);
sigma = dataS.get(i).split("-");
sig1 = Float.valueOf(sigma[0]);
sig2 = Float.valueOf(sigma[1]);
formula = (float) (-(e2 - e1) / Math.log10(sig1 / sig2));
dateOut.add((Float) zecimale(formula, 3));
}
return dateOut;
}
public List<Float> getSarcini() {
return sarcini;
}
public void setSarcini(List<Float> sarcini) {
this.sarcini = sarcini;
}
public String getSarcina1() {
return sarcina1;
}
public void setSarcina1(String sarcina1) {
this.sarcina1 = sarcina1;
}
public String getSarcina2() {
return sarcina2;
}
public void setSarcina2(String sarcina2) {
this.sarcina2 = sarcina2;
}
public Float getDensitateSchelet() {
return (Float) zecimale(Float.parseFloat(getRs()), 2);
}
public Float getSuprafataStanta(Stanta stanta) {
Float diametruStanta = stanta.getDiamStanta();
return (Float) zecimale((diametruStanta * 3.1418 * diametruStanta / 4), 2);
}
}