package it.agilis.mens.azzeroCO2.server.services; import com.google.gwt.user.server.rpc.RemoteServiceServlet; import it.agilis.mens.azzeroCO2.client.services.AzzerroCO2UtilsClientHelper; import it.agilis.mens.azzeroCO2.client.services.HustonService; import it.agilis.mens.azzeroCO2.core.criteria.CouponCriteria; import it.agilis.mens.azzeroCO2.core.criteria.ProgettoCompensazioneCriteria; import it.agilis.mens.azzeroCO2.core.entity.Coupon; import it.agilis.mens.azzeroCO2.core.entity.Esito; import it.agilis.mens.azzeroCO2.core.entity.Ordine; import it.agilis.mens.azzeroCO2.core.entity.UserInfo; import it.agilis.mens.azzeroCO2.core.register.impl.AzzeroCO2Register; import it.agilis.mens.azzeroCO2.core.register.impl.EmailSender; import it.agilis.mens.azzeroCO2.server.GitRepositoryState; import it.agilis.mens.azzeroCO2.server.PropertiesManager; import it.agilis.mens.azzeroCO2.server.utils.Utils; import it.agilis.mens.azzeroCO2.shared.EMailVTO; import it.agilis.mens.azzeroCO2.shared.git.GitRepositoryStateModel; import it.agilis.mens.azzeroCO2.shared.model.OrdineModel; import it.agilis.mens.azzeroCO2.shared.model.amministrazione.CoefficienteModel; import it.agilis.mens.azzeroCO2.shared.model.amministrazione.CouponModel; import it.agilis.mens.azzeroCO2.shared.model.amministrazione.ProgettoDiCompensazioneModel; import it.agilis.mens.azzeroCO2.shared.model.evento.TipoDiCartaModel; import it.agilis.mens.azzeroCO2.shared.model.pagamento.PagamentoModel; import it.agilis.mens.azzeroCO2.shared.model.registrazione.UserInfoModel; import it.agilis.mens.azzeroCO2.shared.vto.OrdineVTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.config.AutowireCapableBeanFactory; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import javax.mail.MessagingException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Created by IntelliJ IDEA. * User: giovannilt * Date: 3/15/11 * Time: 9:57 PM * To change this template use File | Settings | File Templates. */ public class HustonServiceImpl extends RemoteServiceServlet implements HustonService { @Autowired GitRepositoryState gitRepoState; public GitRepositoryState getGitRepoState() { return gitRepoState; } public void setGitRepoState(GitRepositoryState gitRepoState) { this.gitRepoState = gitRepoState; } @Autowired @Qualifier("propertiesManager") private PropertiesManager propertiesManager; public PropertiesManager getPropertiesManager() { return propertiesManager; } public void setPropertiesManager(PropertiesManager propertiesManager) { this.propertiesManager = propertiesManager; } @Override public void init(ServletConfig config) throws ServletException { super.init(config); WebApplicationContext ctx = WebApplicationContextUtils .getRequiredWebApplicationContext(config.getServletContext()); AutowireCapableBeanFactory beanFactory = ctx .getAutowireCapableBeanFactory(); beanFactory.autowireBean(this); } @Autowired @Qualifier("azzeroCO2Register") private AzzeroCO2Register azzeroCO2Register; public AzzeroCO2Register getAzzeroCO2Register() { return azzeroCO2Register; } public void setAzzeroCO2Register(AzzeroCO2Register azzeroCO2Register) { this.azzeroCO2Register = azzeroCO2Register; } @Autowired @Qualifier("emailSender") private EmailSender emailSender; public EmailSender getEmailSender() { return emailSender; } public void setEmailSender(EmailSender emailSender) { this.emailSender = emailSender; } @Override public List<CouponModel> getListOfCoupon() throws IllegalArgumentException { try { return Utils.getListOfCoupon(azzeroCO2Register.getListOfCoupon()); } catch (Exception e) { e.printStackTrace(); return null; } } @Override public List<ProgettoDiCompensazioneModel> getListOfProgettoDiCompensazione(boolean all) throws IllegalArgumentException { try { ProgettoCompensazioneCriteria progettoCompensazioneCriteria = new ProgettoCompensazioneCriteria(); progettoCompensazioneCriteria.setAttivo(!all); return Utils.getListOfProgettoDiCompensazione(azzeroCO2Register.getListOfProgettoDiCompensazione(progettoCompensazioneCriteria)); } catch (Exception e) { e.printStackTrace(); return null; } } @Override public List<OrdineModel> getListOfOrdini(UserInfoModel userInfoModel) { try { return Utils.getListOfOrdini(azzeroCO2Register.getListOfOrdini(Utils.getUserInfo(userInfoModel))); } catch (Exception e) { e.printStackTrace(); return null; } } @Override public Boolean saveCoupons(List<CouponModel> modifiedRecords) throws IllegalArgumentException { try { List<Coupon> coupons = new ArrayList<Coupon>(); for (CouponModel r : modifiedRecords) { coupons.add(Utils.getCoupon(r)); } azzeroCO2Register.saveCoupons(coupons); } catch (Exception e) { e.printStackTrace(); return false; } return true; } @Override public Boolean saveCoefficienti(List<CoefficienteModel> coefficienteModels) { try { azzeroCO2Register.saveCoefficienti(Utils.getCoefficienti(coefficienteModels)); } catch (Exception e) { e.printStackTrace(); return false; } return true; } @Override public Boolean saveProgettiDiCompensazione(List<ProgettoDiCompensazioneModel> progettiDiCompensaziones) { try { azzeroCO2Register.saveProgettiCompensazione(Utils.getProgettiDiCompensazioneList(progettiDiCompensaziones)); } catch (Exception e) { e.printStackTrace(); return false; } return true; } @Override public UserInfoModel createNewUser(UserInfoModel userInfoModel) throws IllegalArgumentException { try { UserInfo ui = azzeroCO2Register.getUserInfo(userInfoModel.getUserName()); if (ui != null) { return null; } return Utils.getUserInfoModel(azzeroCO2Register.saveUserInfo(Utils.getUserInfo(userInfoModel))); } catch (Exception e) { e.printStackTrace(); return null; } } @Override public void saveCoupon(CouponModel couponModel) throws IllegalArgumentException { try { azzeroCO2Register.saveCoupon(Utils.getCoupon(couponModel)); } catch (Exception e) { e.printStackTrace(); } } @Override public UserInfoModel getUserInfo(String userName, String password) throws IllegalArgumentException { try { UserInfoModel userInfoModel = Utils.getUserInfoModel(azzeroCO2Register.getUserInfo(userName)); if (userInfoModel != null && userInfoModel.getPassword() != null && password != null && userInfoModel.getPassword().contentEquals(password)) { return userInfoModel; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override public List<TipoDiCartaModel> getTipoDiCarta() throws IllegalArgumentException { try { return Utils.getTipoDiCarta(azzeroCO2Register.getTipoDiCarta()); } catch (Exception e) { e.printStackTrace(); return null; } } @Override public void disconnectUser() throws IllegalArgumentException { HttpServletRequest req = this.getThreadLocalRequest(); if (req != null && req.isRequestedSessionIdValid()) { req.getSession(false).invalidate(); try { this.doPost(req, this.getThreadLocalResponse()); } catch (Exception e) { e.printStackTrace(); } } } @Override public Map<String, CoefficienteModel> getCoefficienti() { try { return Utils.getCoefficientiModel(azzeroCO2Register.getCoefficienti()); } catch (Exception e) { e.printStackTrace(); return null; } } @Override public GitRepositoryStateModel checkGitRevision() { return Utils.getGitState(gitRepoState); } @Override public OrdineVTO saveOrdine(OrdineVTO evento, UserInfoModel user) { try { OrdineModel ordineModel = AzzerroCO2UtilsClientHelper.getDettaglioModel(evento); Ordine ordine = Utils.getOrdine(ordineModel); Ordine o = azzeroCO2Register.saveOrUpdateOrdine(ordine, Utils.getUserInfo(user)); OrdineModel ordineModel1 = Utils.getOrdineModel(o); OrdineVTO ordineVTO = AzzerroCO2UtilsClientHelper.getDettaglioVTO(ordineModel1); return ordineVTO; } catch (Exception e) { e.printStackTrace(); return null; } } @Override public void sentMail(EMailVTO email) { try { emailSender.sendMail(Utils.getEmail(email)); } catch (MessagingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } @Override public void savePagamento(PagamentoModel pagamentoModel) { try { azzeroCO2Register.saveRicevuta(Utils.getRicevuta(pagamentoModel)); } catch (Exception e) { e.printStackTrace(); } } @Override public boolean saveUserInfo(UserInfoModel userInfoModel) { try { azzeroCO2Register.saveUserInfo(Utils.getUserInfo(userInfoModel)); } catch (Exception e) { e.printStackTrace(); return false; } return true; } @Override public boolean associaIDProgettoDiCompensazioneImmagine(Long idProgetto, String nomeImmagine) { try { azzeroCO2Register.associaIDProgettoDiCompensazioneImmagine(idProgetto, nomeImmagine); } catch (Exception e) { e.printStackTrace(); return false; } return true; } @Override public CouponModel getValidCouponByCode(String couponCode) { CouponCriteria criteria = new CouponCriteria(); criteria.setCodice(couponCode); criteria.setValid(true); List<Coupon> coupons = azzeroCO2Register.getCouponDAO().getListOfCoupon(criteria); if (coupons != null && coupons.size() > 0) { return Utils.getCouponModel(coupons.get(0)); } return null; } @Override public OrdineVTO isPagato(OrdineVTO riepilogo, UserInfoModel userInfoModel) { try { Ordine o = null; if (riepilogo.getOrdineId() == null) { OrdineModel ordineModel = AzzerroCO2UtilsClientHelper.getDettaglioModel(riepilogo); o = azzeroCO2Register.saveOrUpdateOrdine(Utils.getOrdine(ordineModel), Utils.getUserInfo(userInfoModel)); } else { o = azzeroCO2Register.getOrdineDAO().getOrdineEager(riepilogo.getOrdineId()); } if (o.getRicevutaDiPagamento().getESITO().equals(Esito.PAGATO)) { azzeroCO2Register.saveOrUpdateOrdine(o, Utils.getUserInfo(userInfoModel)); } OrdineModel ordineModel1 = Utils.getOrdineModel(o); return AzzerroCO2UtilsClientHelper.getDettaglioVTO(ordineModel1); } catch (Exception e) { e.printStackTrace(); return null; } } }