package com.iambookmaster.server; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.jdo.PersistenceManager; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.iambookmaster.client.ServerExchangePanel; import com.iambookmaster.client.locale.AppConstants; import com.iambookmaster.server.beans.JPABook; import com.iambookmaster.server.beans.JPAUser; import com.iambookmaster.server.dao.DAO; public class UploadBookServlet extends AbstractServlet { private static final long serialVersionUID = 1L; private static final Logger log = Logger.getLogger(UploadBookServlet.class.getName()); public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { perform(req,resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { perform(req,resp); } private void perform(HttpServletRequest req, HttpServletResponse resp)throws IOException { req.setCharacterEncoding("UTF-8"); AppConstants appConstants = LocalMessages.getInstance(AppConstants.class, LocalMessages.getLocale(req,resp)); try { PersistenceManager em = getPM(req); JPAUser user = getUser(req,resp); if (user.isLocked()) { //this user is locked throw new LogicException(appConstants.serverAccountLocked()); } String mod = req.getParameter(ServerExchangePanel.FIELD_MODEL); if (mod==null) { throw new LogicException(appConstants.serverModelWasNotSent()); } String externalId = req.getParameter(ServerExchangePanel.FIELD_DATA); if (externalId==null) { throw new LogicException(appConstants.serverNoBookID()); } JPABook book = DAO.getBookDAO().findBook(em, user,externalId); if (book != null && book.isLocked()) { //this book is locked throw new LogicException(appConstants.serverBookIsLocked()); } if (req.getParameter(ServerExchangePanel.FIELD_CODE) != null) { //start from zero user.setUploadExternalId(externalId); user.setUpload(mod); } else if (externalId.equals(user.getUploadExternalId())) { //the same if (mod.length()+user.getUpload().length()>10000000) { //not set, error throw new LogicException(appConstants.serverModelIsTooBig()); } user.setUpload(user.getUpload()+mod); } else { //start from zero user.setUploadExternalId(externalId); user.setUpload(mod); } log.log(Level.INFO,"Success uploaded"); replyOk(req, resp); } catch (LogicException e) { replyError(appConstants.serverErrorsWereDetected(),e.getMessage(),req,resp); } catch (Exception e) { e.printStackTrace(); log.log(Level.SEVERE,e.getMessage()); replyError(e,req,resp); } } }