package pl.zgora.uz.wmie.fe.action;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import pl.zgora.uz.wmie.fe.service.StanowiskoService;
import pl.zgora.uz.wmie.fe.hbm.classes.Stanowisko;
import pl.zgora.uz.wmie.fe.util.BusinessUtil;
public class StanowiskaAction extends HttpServlet {
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String page = null;
if (("table".equals(req.getParameter("method")))
|| ("table".equals(getInitParameter("method")))) {
// setTableData(req);
page = "/pages/stanowiska/stanowiskaTable.jsp";
} else if("preAdd".equals(getInitParameter("method"))){
prepareDataForStanowiskaSelect(req);
page = "/pages/stanowiska/addStanowisko.jsp";
}else if("add".equals(getInitParameter("method"))){
addStanowisko(req);
req.setAttribute("refreshTableFun", "refreshTabeleStanowisk()");
page = "/pages/default/closeAndRefresh.jsp";
}else if("details".equals(getInitParameter("method"))){
Integer id = Integer.valueOf(req.getParameter("id"));
setStanowiskoDetails(req, id);
page = getInitParameter("page");
}else {
setSelectData(req);
page = "/pages/stanowiska/stanowiskaSelect.jsp";
}
RequestDispatcher rd = req.getRequestDispatcher(page);
if (rd != null) {
rd.forward(req, res);
}
}
private void setTableData(HttpServletRequest req) {
StanowiskoService stanowiskoService = null;
try {
stanowiskoService = (StanowiskoService) BusinessUtil
.findBusiness("StanowiskoService");
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property(Stanowisko.PROPERTY_ID));
projectionList.add(Projections.property(Stanowisko.PROPERTY_NAZWA));
List<Object[]> dane = stanowiskoService.findByParams(
projectionList);
List<Object[]> pusteDane = new ArrayList<Object[]>();
req.setAttribute("daneDoTabelki", dane);
pusteDane.add(new Object[]{"id","nazwa","typ"});
req.setAttribute("pusteDane", pusteDane);
} catch (Exception e) {
e.printStackTrace();
}
}
private void setSelectData(HttpServletRequest req) {
StanowiskoService stanowiskoService = null;
try {
stanowiskoService = (StanowiskoService) BusinessUtil
.findBusiness("StanowiskoService");
req.setAttribute("stanowisko", stanowiskoService.load(1));
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property(Stanowisko.PROPERTY_ID));
projectionList.add(Projections.property(Stanowisko.PROPERTY_NAZWA));
req.setAttribute("stanowiskaDoSelecta", stanowiskoService
.findByParams(projectionList));
} catch (Exception e) {
e.printStackTrace();
}
}
private void addStanowisko(HttpServletRequest req){
try {
String nazwa = req.getParameter("nazwaStanowiska");
StanowiskoService stanowiskoService = (StanowiskoService)BusinessUtil.findBusiness("StanowiskoService");
Stanowisko stanowisko = new Stanowisko();
stanowisko.setNazwa(nazwa);
stanowiskoService.save(stanowisko);
} catch (Exception e) {
e.printStackTrace();
}
}
private void prepareDataForStanowiskaSelect(HttpServletRequest request){
StanowiskoService stanowiskoService = null;
List<Stanowisko> stanowiska = null;
try {
stanowiskoService = (StanowiskoService) BusinessUtil.findBusiness("StanowiskoService");
List<Criterion> criterions = new ArrayList<Criterion>();
criterions.add(Restrictions.le(Stanowisko.PROPERTY_ID, 20));
stanowiska = stanowiskoService.findByParams(criterions);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Map<String, String> data = new HashMap<String, String>();
for(Stanowisko s: stanowiska){
data.put(String.valueOf(s.getIdStanowisko()), s.getNazwa());
}
request.setAttribute("stanowiskaData", data);
}
private void setStanowiskoDetails(HttpServletRequest request, Integer id) {
StanowiskoService stanowiskoService = null;
try {
stanowiskoService = (StanowiskoService) BusinessUtil
.findBusiness("StanowiskoService");
Stanowisko stanowisko = stanowiskoService.load(id);
request.setAttribute("id", stanowisko.getIdStanowisko());
request.setAttribute("name", stanowisko.getNazwa());
} catch (Exception e) {
e.printStackTrace();
}
}
}