List of usage examples for javax.servlet.http HttpServletRequest getContentType
public String getContentType();
null
if the type is not known. From source file:org.kuali.rice.kns.web.struts.action.KualiRequestProcessor.java
/** * Checks for return from a lookup or question, and restores the action form * stored under the request parameter docFormKey. *//* www .ja va 2s .c o m*/ @Override protected ActionForm processActionForm(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping) { String documentNumber = getDocumentNumber(request); if (documentNumber != null) { MDC.put(MDC_DOC_ID, documentNumber); } UserSession userSession = (UserSession) request.getSession().getAttribute(KRADConstants.USER_SESSION_KEY); String docFormKey = request.getParameter(KRADConstants.DOC_FORM_KEY); String methodToCall = request.getParameter(KRADConstants.DISPATCH_REQUEST_PARAMETER); String refreshCaller = request.getParameter(KRADConstants.REFRESH_CALLER); // String searchListRequestKey = request.getParameter(KRADConstants.SEARCH_LIST_REQUEST_KEY); String documentWebScope = request.getParameter(KRADConstants.DOCUMENT_WEB_SCOPE); if (mapping.getPath().startsWith(KRADConstants.REFRESH_MAPPING_PREFIX) || KRADConstants.RETURN_METHOD_TO_CALL.equalsIgnoreCase(methodToCall) || KRADConstants.QUESTION_REFRESH.equalsIgnoreCase(refreshCaller) || KRADConstants.TEXT_AREA_REFRESH.equalsIgnoreCase(refreshCaller) || KRADConstants.SESSION_SCOPE.equalsIgnoreCase(documentWebScope)) { ActionForm form = null; // check for search result storage and clear GlobalVariables.getUserSession().removeObjectsByPrefix(KRADConstants.SEARCH_LIST_KEY_PREFIX); // We put different type of forms such as document form, lookup form // in session but we only store document form in // database. if (userSession.retrieveObject(docFormKey) != null) { LOG.debug("getDecomentForm KualiDocumentFormBase from session"); form = (ActionForm) userSession.retrieveObject(docFormKey); } else if (StringUtils.isNotBlank(documentNumber)) { form = getSessionDocumentService().getDocumentForm(documentNumber, docFormKey, userSession, request.getRemoteAddr()); } request.setAttribute(mapping.getAttribute(), form); if (!KRADConstants.SESSION_SCOPE.equalsIgnoreCase(documentWebScope)) { userSession.removeObject(docFormKey); } // we should check whether this is a multipart request because we // could have had a combination of query parameters and a multipart // request String contentType = request.getContentType(); String method = request.getMethod(); if (("POST".equalsIgnoreCase(method) && contentType != null && contentType.startsWith("multipart/form-data"))) { // this method parses the multipart request and adds new // non-file parameters into the request WebUtils.getMultipartParameters(request, null, form, mapping); } // The form can be null if the document is not a session document if (form != null) { return form; } } // Rice has the ability to limit file upload sizes on a per-form basis, // so the max upload sizes may be accessed by calling methods on // PojoFormBase. // This requires that we are able know the file upload size limit (i.e. // retrieve a form instance) before we parse a mulitpart request. ActionForm form = super.processActionForm(request, response, mapping); // for sessiondocument with multipart request String contentType = request.getContentType(); String method = request.getMethod(); if ("GET".equalsIgnoreCase(method) && StringUtils.isNotBlank(methodToCall) && form instanceof PojoForm && ((PojoForm) form).getMethodToCallsToBypassSessionRetrievalForGETRequests() .contains(methodToCall)) { return createNewActionForm(mapping, request); } // if we have a multipart request, parse it and return the stored form // from session if the doc form key is not blank. If it is blank, then // we just return the form // generated from the superclass processActionForm method. Either way, // we need to parse the mulitpart request now so that we may determine // what the value of the doc form key is. // This is generally against the contract of processActionForm, because // processPopulate should be responsible for parsing the mulitpart // request, but we need to parse it now // to determine the doc form key value. if (("POST".equalsIgnoreCase(method) && contentType != null && contentType.startsWith("multipart/form-data"))) { WebUtils.getMultipartParameters(request, null, form, mapping); docFormKey = request.getParameter(KRADConstants.DOC_FORM_KEY); documentWebScope = request.getParameter(KRADConstants.DOCUMENT_WEB_SCOPE); documentNumber = getDocumentNumber(request); if (KRADConstants.SESSION_SCOPE.equalsIgnoreCase(documentWebScope) || (form instanceof KualiDocumentFormBase && WebUtils.isDocumentSession( ((KualiDocumentFormBase) form).getDocument(), (KualiDocumentFormBase) form))) { Object userSessionObject = userSession.retrieveObject(docFormKey); if (userSessionObject != null && userSessionObject instanceof ActionForm) { LOG.debug("getDocumentForm KualiDocumentFormBase from session"); form = (ActionForm) userSessionObject; } else { ActionForm tempForm = getSessionDocumentService().getDocumentForm(documentNumber, docFormKey, userSession, request.getRemoteAddr()); if (tempForm != null) { form = tempForm; } } request.setAttribute(mapping.getAttribute(), form); if (form != null) { return form; } } } return form; }
From source file:com.zimbra.cs.zimlet.ProxyServlet.java
private void doProxy(HttpServletRequest req, HttpServletResponse resp) throws IOException { ZimbraLog.clearContext();/*from w w w.ja v a 2 s .c o m*/ boolean isAdmin = isAdminRequest(req); AuthToken authToken = isAdmin ? getAdminAuthTokenFromCookie(req, resp, true) : getAuthTokenFromCookie(req, resp, true); if (authToken == null) { String zAuthToken = req.getParameter(QP_ZAUTHTOKEN); if (zAuthToken != null) { try { authToken = AuthProvider.getAuthToken(zAuthToken); if (authToken.isExpired()) { resp.sendError(HttpServletResponse.SC_UNAUTHORIZED, "authtoken expired"); return; } if (!authToken.isRegistered()) { resp.sendError(HttpServletResponse.SC_UNAUTHORIZED, "authtoken is invalid"); return; } if (isAdmin && !authToken.isAdmin()) { resp.sendError(HttpServletResponse.SC_UNAUTHORIZED, "permission denied"); return; } } catch (AuthTokenException e) { resp.sendError(HttpServletResponse.SC_UNAUTHORIZED, "unable to parse authtoken"); return; } } } if (authToken == null) { resp.sendError(HttpServletResponse.SC_UNAUTHORIZED, "no authtoken cookie"); return; } // get the posted body before the server read and parse them. byte[] body = copyPostedData(req); // sanity check String target = req.getParameter(TARGET_PARAM); if (target == null) { resp.sendError(HttpServletResponse.SC_BAD_REQUEST); return; } // check for permission URL url = new URL(target); if (!isAdmin && !checkPermissionOnTarget(url, authToken)) { resp.sendError(HttpServletResponse.SC_FORBIDDEN); return; } // determine whether to return the target inline or store it as an upload String uploadParam = req.getParameter(UPLOAD_PARAM); boolean asUpload = uploadParam != null && (uploadParam.equals("1") || uploadParam.equalsIgnoreCase("true")); HttpMethod method = null; try { HttpClient client = ZimbraHttpConnectionManager.getExternalHttpConnMgr().newHttpClient(); HttpProxyUtil.configureProxy(client); String reqMethod = req.getMethod(); if (reqMethod.equalsIgnoreCase("GET")) { method = new GetMethod(target); } else if (reqMethod.equalsIgnoreCase("POST")) { PostMethod post = new PostMethod(target); if (body != null) post.setRequestEntity(new ByteArrayRequestEntity(body, req.getContentType())); method = post; } else if (reqMethod.equalsIgnoreCase("PUT")) { PutMethod put = new PutMethod(target); if (body != null) put.setRequestEntity(new ByteArrayRequestEntity(body, req.getContentType())); method = put; } else if (reqMethod.equalsIgnoreCase("DELETE")) { method = new DeleteMethod(target); } else { ZimbraLog.zimlet.info("unsupported request method: " + reqMethod); resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED); return; } // handle basic auth String auth, user, pass; auth = req.getParameter(AUTH_PARAM); user = req.getParameter(USER_PARAM); pass = req.getParameter(PASS_PARAM); if (auth != null && user != null && pass != null) { if (!auth.equals(AUTH_BASIC)) { ZimbraLog.zimlet.info("unsupported auth type: " + auth); resp.sendError(HttpServletResponse.SC_BAD_REQUEST); return; } HttpState state = new HttpState(); state.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(user, pass)); client.setState(state); method.setDoAuthentication(true); } Enumeration headers = req.getHeaderNames(); while (headers.hasMoreElements()) { String hdr = (String) headers.nextElement(); ZimbraLog.zimlet.debug("incoming: " + hdr + ": " + req.getHeader(hdr)); if (canProxyHeader(hdr)) { ZimbraLog.zimlet.debug("outgoing: " + hdr + ": " + req.getHeader(hdr)); if (hdr.equalsIgnoreCase("x-host")) method.getParams().setVirtualHost(req.getHeader(hdr)); else method.addRequestHeader(hdr, req.getHeader(hdr)); } } try { if (!(reqMethod.equalsIgnoreCase("POST") || reqMethod.equalsIgnoreCase("PUT"))) { method.setFollowRedirects(true); } HttpClientUtil.executeMethod(client, method); } catch (HttpException ex) { ZimbraLog.zimlet.info("exception while proxying " + target, ex); resp.sendError(HttpServletResponse.SC_NOT_FOUND); return; } int status = method.getStatusLine() == null ? HttpServletResponse.SC_INTERNAL_SERVER_ERROR : method.getStatusCode(); // workaround for Alexa Thumbnails paid web service, which doesn't bother to return a content-type line Header ctHeader = method.getResponseHeader("Content-Type"); String contentType = ctHeader == null || ctHeader.getValue() == null ? DEFAULT_CTYPE : ctHeader.getValue(); InputStream targetResponseBody = method.getResponseBodyAsStream(); if (asUpload) { String filename = req.getParameter(FILENAME_PARAM); if (filename == null || filename.equals("")) filename = new ContentType(contentType).getParameter("name"); if ((filename == null || filename.equals("")) && method.getResponseHeader("Content-Disposition") != null) filename = new ContentDisposition(method.getResponseHeader("Content-Disposition").getValue()) .getParameter("filename"); if (filename == null || filename.equals("")) filename = "unknown"; List<Upload> uploads = null; if (targetResponseBody != null) { try { Upload up = FileUploadServlet.saveUpload(targetResponseBody, filename, contentType, authToken.getAccountId()); uploads = Arrays.asList(up); } catch (ServiceException e) { if (e.getCode().equals(MailServiceException.UPLOAD_REJECTED)) status = HttpServletResponse.SC_REQUEST_ENTITY_TOO_LARGE; else status = HttpServletResponse.SC_INTERNAL_SERVER_ERROR; } } resp.setStatus(status); FileUploadServlet.sendResponse(resp, status, req.getParameter(FORMAT_PARAM), null, uploads, null); } else { resp.setStatus(status); resp.setContentType(contentType); for (Header h : method.getResponseHeaders()) if (canProxyHeader(h.getName())) resp.addHeader(h.getName(), h.getValue()); if (targetResponseBody != null) ByteUtil.copy(targetResponseBody, true, resp.getOutputStream(), true); } } finally { if (method != null) method.releaseConnection(); } }
From source file:org.apache.nifi.processors.standard.servlets.ListenHTTPServlet.java
@Override protected void doPost(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { final ProcessContext context = processContext; ProcessSessionFactory sessionFactory; do {//from w w w . ja va 2 s . c o m sessionFactory = sessionFactoryHolder.get(); if (sessionFactory == null) { try { Thread.sleep(10); } catch (final InterruptedException e) { } } } while (sessionFactory == null); final ProcessSession session = sessionFactory.createSession(); FlowFile flowFile = null; String holdUuid = null; String foundSubject = null; try { final long n = filesReceived.getAndIncrement() % FILES_BEFORE_CHECKING_DESTINATION_SPACE; if (n == 0 || !spaceAvailable.get()) { if (context.getAvailableRelationships().isEmpty()) { spaceAvailable.set(false); if (logger.isDebugEnabled()) { logger.debug("Received request from " + request.getRemoteHost() + " but no space available; Indicating Service Unavailable"); } response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE); return; } else { spaceAvailable.set(true); } } response.setHeader("Content-Type", MediaType.TEXT_PLAIN); final boolean contentGzipped = Boolean.parseBoolean(request.getHeader(GZIPPED_HEADER)); final X509Certificate[] certs = (X509Certificate[]) request .getAttribute("javax.servlet.request.X509Certificate"); foundSubject = DEFAULT_FOUND_SUBJECT; if (certs != null && certs.length > 0) { for (final X509Certificate cert : certs) { foundSubject = cert.getSubjectDN().getName(); if (authorizedPattern.matcher(foundSubject).matches()) { break; } else { logger.warn("Rejecting transfer attempt from " + foundSubject + " because the DN is not authorized, host=" + request.getRemoteHost()); response.sendError(HttpServletResponse.SC_FORBIDDEN, "not allowed based on dn"); return; } } } final String destinationVersion = request.getHeader(PROTOCOL_VERSION_HEADER); Integer protocolVersion = null; if (destinationVersion != null) { try { protocolVersion = Integer.valueOf(destinationVersion); } catch (final NumberFormatException e) { // Value was invalid. Treat as if the header were missing. } } final boolean destinationIsLegacyNiFi = (protocolVersion == null); final boolean createHold = Boolean.parseBoolean(request.getHeader(FLOWFILE_CONFIRMATION_HEADER)); final String contentType = request.getContentType(); final InputStream unthrottled = contentGzipped ? new GZIPInputStream(request.getInputStream()) : request.getInputStream(); final InputStream in = (streamThrottler == null) ? unthrottled : streamThrottler.newThrottledInputStream(unthrottled); if (logger.isDebugEnabled()) { logger.debug("Received request from " + request.getRemoteHost() + ", createHold=" + createHold + ", content-type=" + contentType + ", gzip=" + contentGzipped); } final AtomicBoolean hasMoreData = new AtomicBoolean(false); final FlowFileUnpackager unpackager; if (APPLICATION_FLOW_FILE_V3.equals(contentType)) { unpackager = new FlowFileUnpackagerV3(); } else if (APPLICATION_FLOW_FILE_V2.equals(contentType)) { unpackager = new FlowFileUnpackagerV2(); } else if (APPLICATION_FLOW_FILE_V1.equals(contentType)) { unpackager = new FlowFileUnpackagerV1(); } else { unpackager = null; } final Set<FlowFile> flowFileSet = new HashSet<>(); do { final long startNanos = System.nanoTime(); final Map<String, String> attributes = new HashMap<>(); flowFile = session.create(); flowFile = session.write(flowFile, new OutputStreamCallback() { @Override public void process(final OutputStream rawOut) throws IOException { try (final BufferedOutputStream bos = new BufferedOutputStream(rawOut, 65536)) { if (unpackager == null) { IOUtils.copy(in, bos); hasMoreData.set(false); } else { attributes.putAll(unpackager.unpackageFlowFile(in, bos)); if (destinationIsLegacyNiFi) { if (attributes.containsKey("nf.file.name")) { // for backward compatibility with old nifi... attributes.put(CoreAttributes.FILENAME.key(), attributes.remove("nf.file.name")); } if (attributes.containsKey("nf.file.path")) { attributes.put(CoreAttributes.PATH.key(), attributes.remove("nf.file.path")); } } hasMoreData.set(unpackager.hasMoreData()); } } } }); final long transferNanos = System.nanoTime() - startNanos; final long transferMillis = TimeUnit.MILLISECONDS.convert(transferNanos, TimeUnit.NANOSECONDS); // put metadata on flowfile final String nameVal = request.getHeader(CoreAttributes.FILENAME.key()); if (StringUtils.isNotBlank(nameVal)) { attributes.put(CoreAttributes.FILENAME.key(), nameVal); } // put arbitrary headers on flow file for (Enumeration<String> headerEnum = request.getHeaderNames(); headerEnum.hasMoreElements();) { String headerName = headerEnum.nextElement(); if (headerPattern != null && headerPattern.matcher(headerName).matches()) { String headerValue = request.getHeader(headerName); attributes.put(headerName, headerValue); } } String sourceSystemFlowFileIdentifier = attributes.get(CoreAttributes.UUID.key()); if (sourceSystemFlowFileIdentifier != null) { sourceSystemFlowFileIdentifier = "urn:nifi:" + sourceSystemFlowFileIdentifier; // If we receveied a UUID, we want to give the FlowFile a new UUID and register the sending system's // identifier as the SourceSystemFlowFileIdentifier field in the Provenance RECEIVE event attributes.put(CoreAttributes.UUID.key(), UUID.randomUUID().toString()); } flowFile = session.putAllAttributes(flowFile, attributes); session.getProvenanceReporter().receive(flowFile, request.getRequestURL().toString(), sourceSystemFlowFileIdentifier, "Remote DN=" + foundSubject, transferMillis); flowFile = session.putAttribute(flowFile, "restlistener.remote.source.host", request.getRemoteHost()); flowFile = session.putAttribute(flowFile, "restlistener.remote.user.dn", foundSubject); flowFileSet.add(flowFile); if (holdUuid == null) { holdUuid = flowFile.getAttribute(CoreAttributes.UUID.key()); } } while (hasMoreData.get()); if (createHold) { String uuid = (holdUuid == null) ? UUID.randomUUID().toString() : holdUuid; if (flowFileMap.containsKey(uuid)) { uuid = UUID.randomUUID().toString(); } final FlowFileEntryTimeWrapper wrapper = new FlowFileEntryTimeWrapper(session, flowFileSet, System.currentTimeMillis()); FlowFileEntryTimeWrapper previousWrapper; do { previousWrapper = flowFileMap.putIfAbsent(uuid, wrapper); if (previousWrapper != null) { uuid = UUID.randomUUID().toString(); } } while (previousWrapper != null); response.setStatus(HttpServletResponse.SC_SEE_OTHER); final String ackUri = "/" + basePath + "/holds/" + uuid; response.addHeader(LOCATION_HEADER_NAME, ackUri); response.addHeader(LOCATION_URI_INTENT_NAME, LOCATION_URI_INTENT_VALUE); response.getOutputStream().write(ackUri.getBytes("UTF-8")); if (logger.isDebugEnabled()) { logger.debug( "Ingested {} from Remote Host: [{}] Port [{}] SubjectDN [{}]; placed hold on these {} files with ID {}", new Object[] { flowFileSet, request.getRemoteHost(), request.getRemotePort(), foundSubject, flowFileSet.size(), uuid }); } } else { response.setStatus(HttpServletResponse.SC_OK); logger.info( "Received from Remote Host: [{}] Port [{}] SubjectDN [{}]; transferring to 'success' {}", new Object[] { request.getRemoteHost(), request.getRemotePort(), foundSubject, flowFile }); session.transfer(flowFileSet, ListenHTTP.RELATIONSHIP_SUCCESS); session.commit(); } } catch (final Throwable t) { session.rollback(); if (flowFile == null) { logger.error("Unable to receive file from Remote Host: [{}] SubjectDN [{}] due to {}", new Object[] { request.getRemoteHost(), foundSubject, t }); } else { logger.error("Unable to receive file {} from Remote Host: [{}] SubjectDN [{}] due to {}", new Object[] { flowFile, request.getRemoteHost(), foundSubject, t }); } response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, t.toString()); } }
From source file:org.wyona.yanel.servlet.YanelServlet.java
/** * Write to output stream of modifiable resource */// w ww . j av a2 s .c o m private void write(InputStream in, OutputStream out, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (out != null) { log.debug("Content-Type: " + request.getContentType()); // TODO: Compare mime-type from response with mime-type of resource //if (contentType.equals("text/xml")) { ... } byte[] buffer = new byte[8192]; int bytesRead; while ((bytesRead = in.read(buffer)) != -1) { out.write(buffer, 0, bytesRead); } out.flush(); out.close(); StringBuffer sb = new StringBuffer(); sb.append("<?xml version=\"1.0\"?>"); sb.append("<html>"); sb.append("<body>"); sb.append("<p>Data has been saved ...</p>"); sb.append("</body>"); sb.append("</html>"); response.setStatus(javax.servlet.http.HttpServletResponse.SC_OK); response.setContentType("application/xhtml+xml; charset=" + DEFAULT_ENCODING); PrintWriter w = response.getWriter(); w.print(sb); log.info("Data has been saved ..."); return; } else { log.error("OutputStream is null!"); StringBuffer sb = new StringBuffer(); sb.append("<?xml version=\"1.0\"?>"); sb.append("<html>"); sb.append("<body>"); sb.append("<p>Exception: OutputStream is null!</p>"); sb.append("</body>"); sb.append("</html>"); PrintWriter w = response.getWriter(); w.print(sb); response.setContentType("application/xhtml+xml; charset=" + DEFAULT_ENCODING); response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR); return; } }
From source file:com.zimbra.cs.service.AutoDiscoverServlet.java
@Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ZimbraLog.clearContext();/* w w w. j av a 2s .c om*/ addRemoteIpToLoggingContext(req); log.info("Handling autodiscover request..."); byte[] reqBytes = null; reqBytes = ByteUtil.getContent(req.getInputStream(), req.getContentLength()); if (reqBytes == null) { log.warn("No content found in the request"); sendError(resp, 600, "No content found in the request"); return; } String content = new String(reqBytes, "UTF-8"); log.debug("Request before auth: %s", content); if (log.isDebugEnabled()) { Enumeration<String> enm = req.getHeaderNames(); while (enm.hasMoreElements()) { String header = enm.nextElement(); log.info("POST header: %s", header + ":" + req.getHeader(header)); } } String email = null; String responseSchema = null; try { DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); Document doc = docBuilder.parse(new InputSource(new StringReader(content))); NodeList nList = doc.getElementsByTagName("Request"); for (int i = 0; i < nList.getLength(); i++) { Node node = nList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Element element = (Element) node; email = getTagValue("EMailAddress", element); responseSchema = getTagValue("AcceptableResponseSchema", element); if (email != null) break; } } } catch (Exception e) { log.warn("cannot parse body: %s", content); sendError(resp, HttpServletResponse.SC_BAD_REQUEST, "Body cannot be parsed"); return; } //Return an error if there's no email address specified! if (email == null || email.length() == 0) { log.warn("No Email address is specified in the Request, %s", content); sendError(resp, HttpServletResponse.SC_BAD_REQUEST, "No Email address is specified in the Request"); return; } //Return an error if the response schema doesn't match ours! if (responseSchema != null && responseSchema.length() > 0) { if (!(responseSchema.equals(NS_MOBILE) || responseSchema.equals(NS_OUTLOOK))) { log.warn("Requested response schema not available " + responseSchema); sendError(resp, HttpServletResponse.SC_SERVICE_UNAVAILABLE, "Requested response schema not available " + responseSchema); return; } } log.debug("Authenticating user"); Account acct = authenticate(req, resp, responseSchema); if (acct == null) { return; } log.debug("Authentication finished successfully"); log.debug("content length: %d, content type: %s", req.getContentLength(), req.getContentType()); if (req.getContentLength() == 0 || req.getContentType() == null) { log.warn("No suitable content found in the request"); sendError(resp, 600, "No suitable content found in the request"); return; } try { if (!(AccountUtil.addressMatchesAccount(acct, email) || acct.isAvailabilityServiceProvider())) { //Exchange server sends dummy email address from service account. log.warn(email + " doesn't match account addresses for user " + acct.getName()); sendError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, email + " doesn't match account addresses"); return; } } catch (ServiceException e) { log.warn("Account access error; user=" + acct.getName(), e); sendError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Account access error; user=" + acct.getName()); return; } String respDoc = null; try { String serviceUrl = getServiceUrl(acct, responseSchema); String displayName = acct.getDisplayName() == null ? email : acct.getDisplayName(); if (displayName.contains("@")) { displayName = displayName.substring(0, displayName.indexOf("@")); } log.debug("displayName: %s, email: %s, serviceUrl: %s", displayName, email, serviceUrl); if (isEwsClient(responseSchema)) { respDoc = createResponseDocForEws(displayName, email, serviceUrl, acct); } else { respDoc = createResponseDoc(displayName, email, serviceUrl); } } catch (Exception e) { log.warn(e); sendError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); return; } log.info("Response: %s", respDoc); log.debug("response length: %d", respDoc.length()); try { ByteUtil.copy(new ByteArrayInputStream(respDoc.getBytes("UTF-8")), true, resp.getOutputStream(), false); } catch (IOException e) { log.error("copy response error", e); sendError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); return; } log.debug("setting content type to text/xml"); resp.setContentType("text/xml"); log.info("sending autodiscover response..."); }
From source file:com.day.cq.wcm.foundation.impl.Rewriter.java
/** * Process a page./*from w ww.j a va 2s .c om*/ */ public void rewrite(HttpServletRequest request, HttpServletResponse response) throws IOException { try { targetURL = new URI(target); } catch (URISyntaxException e) { IOException ioe = new IOException("Bad URI syntax: " + target); ioe.initCause(e); throw ioe; } setHostPrefix(targetURL); HttpClient httpClient = new HttpClient(); HttpState httpState = new HttpState(); HostConfiguration hostConfig = new HostConfiguration(); HttpMethodBase httpMethod; // define host hostConfig.setHost(targetURL.getHost(), targetURL.getPort()); // create http method String method = (String) request.getAttribute("cq.ext.app.method"); if (method == null) { method = request.getMethod(); } method = method.toUpperCase(); boolean isPost = "POST".equals(method); String urlString = targetURL.getPath(); StringBuffer query = new StringBuffer(); if (targetURL.getQuery() != null) { query.append("?"); query.append(targetURL.getQuery()); } //------------ GET --------------- if ("GET".equals(method)) { // add internal props Iterator<String> iter = extraParams.keySet().iterator(); while (iter.hasNext()) { String name = iter.next(); String value = extraParams.get(name); if (query.length() == 0) { query.append("?"); } else { query.append("&"); } query.append(Text.escape(name)); query.append("="); query.append(Text.escape(value)); } if (passInput) { // add request params @SuppressWarnings("unchecked") Enumeration<String> e = request.getParameterNames(); while (e.hasMoreElements()) { String name = e.nextElement(); if (targetParamName.equals(name)) { continue; } String[] values = request.getParameterValues(name); for (int i = 0; i < values.length; i++) { if (query.length() == 0) { query.append("?"); } else { query.append("&"); } query.append(Text.escape(name)); query.append("="); query.append(Text.escape(values[i])); } } } httpMethod = new GetMethod(urlString + query); //------------ POST --------------- } else if ("POST".equals(method)) { PostMethod m = new PostMethod(urlString + query); httpMethod = m; String contentType = request.getContentType(); boolean mp = contentType != null && contentType.toLowerCase().startsWith("multipart/"); if (mp) { //------------ MULTPART POST --------------- List<Part> parts = new LinkedList<Part>(); Iterator<String> iter = extraParams.keySet().iterator(); while (iter.hasNext()) { String name = iter.next(); String value = extraParams.get(name); parts.add(new StringPart(name, value)); } if (passInput) { // add request params @SuppressWarnings("unchecked") Enumeration<String> e = request.getParameterNames(); while (e.hasMoreElements()) { String name = e.nextElement(); if (targetParamName.equals(name)) { continue; } String[] values = request.getParameterValues(name); for (int i = 0; i < values.length; i++) { parts.add(new StringPart(name, values[i])); } } } m.setRequestEntity( new MultipartRequestEntity(parts.toArray(new Part[parts.size()]), m.getParams())); } else { //------------ NORMAL POST --------------- // add internal props Iterator<String> iter = extraParams.keySet().iterator(); while (iter.hasNext()) { String name = iter.next(); String value = extraParams.get(name); m.addParameter(name, value); } if (passInput) { // add request params @SuppressWarnings("unchecked") Enumeration e = request.getParameterNames(); while (e.hasMoreElements()) { String name = (String) e.nextElement(); if (targetParamName.equals(name)) { continue; } String[] values = request.getParameterValues(name); for (int i = 0; i < values.length; i++) { m.addParameter(name, values[i]); } } } } } else { log.error("Unsupported method ''{0}''", method); throw new IOException("Unsupported http method " + method); } log.debug("created http connection for method {0} to {1}", method, urlString + query); // add some request headers httpMethod.addRequestHeader("User-Agent", request.getHeader("User-Agent")); httpMethod.setFollowRedirects(!isPost); httpMethod.getParams().setSoTimeout(soTimeout); httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(connectionTimeout); // send request httpClient.executeMethod(hostConfig, httpMethod, httpState); String contentType = httpMethod.getResponseHeader("Content-Type").getValue(); log.debug("External app responded: {0}", httpMethod.getStatusLine()); log.debug("External app contenttype: {0}", contentType); // check response code int statusCode = httpMethod.getStatusCode(); if (statusCode >= HttpURLConnection.HTTP_BAD_REQUEST) { PrintWriter writer = response.getWriter(); writer.println("External application returned status code: " + statusCode); return; } else if (statusCode == HttpURLConnection.HTTP_MOVED_TEMP || statusCode == HttpURLConnection.HTTP_MOVED_PERM) { String location = httpMethod.getResponseHeader("Location").getValue(); if (location == null) { response.sendError(HttpURLConnection.HTTP_NOT_FOUND); return; } response.sendRedirect(rewriteURL(location, false)); return; } // open input stream InputStream in = httpMethod.getResponseBodyAsStream(); // check content type if (contentType != null && contentType.startsWith("text/html")) { rewriteHtml(in, contentType, response); } else { // binary mode if (contentType != null) { response.setContentType(contentType); } OutputStream outs = response.getOutputStream(); try { byte buf[] = new byte[8192]; int len; while ((len = in.read(buf)) != -1) { outs.write(buf, 0, len); } } finally { if (in != null) { in.close(); } } } }
From source file:forseti.nomina.JNomMovDirDlg.java
@SuppressWarnings({ "rawtypes", "unchecked" }) public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { super.doPost(request, response); String nom_nomina_dlg = ""; request.setAttribute("nom_nomina_dlg", nom_nomina_dlg); String mensaje = ""; short idmensaje = -1; String usuario = getSesion(request).getID_Usuario(); if (request.getContentType() != null && request.getContentType().toLowerCase().indexOf("multipart/form-data") > -1) { if (!getSesion(request).getRegistrado()) { irApag("/forsetiweb/errorAtributos.jsp", request, response); return; } else {// www . j a v a 2s . co m try { HttpSession ses = request.getSession(true); JFacturasXML nomrecxml = (JFacturasXML) ses.getAttribute("nom_rec_xml"); Vector archivos = new Vector(); DiskFileUpload fu = new DiskFileUpload(); List items = fu.parseRequest(request); Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) nomrecxml.getParametros().put(item.getFieldName(), item.getString()); else archivos.addElement(item); } // revisa por las entidades JNominaEntidadesSetIds setids = new JNominaEntidadesSetIds(request, usuario, getSesion(request).getSesion("NOM_NOMINA").getEspecial()); setids.Open(); if (setids.getNumRows() < 1) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } SubirArchivosCFD(request, response, nomrecxml, archivos); return; } catch (FileUploadException e) { e.printStackTrace(); return; } catch (Exception e) { e.printStackTrace(); return; } } } if (request.getParameter("proceso") != null && !request.getParameter("proceso").equals("")) { // revisa por las entidades JNominaEntidadesSetIds setids = new JNominaEntidadesSetIds(request, usuario, getSesion(request).getSesion("NOM_NOMINA").getEspecial()); setids.Open(); if (setids.getNumRows() < 1) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } request.setAttribute("idmod", "NOM_NOMINA"); request.setAttribute("fact_xml", "NOMINA"); // Revisa por intento de intrusion (Salto de permiso de entidad) if (!request.getParameter("proceso").equals("AGREGAR_NOMINA") && request.getParameter("id") != null) { JNominasModuloSet set = new JNominasModuloSet(request); set.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; set.Open(); if (set.getNumRows() < 1) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "AL", getSesion(request).getID_Usuario(), "NOM_NOMINA", "NNOM|" + request.getParameter("id") + "|" + setids.getAbsRow(0).getID_Sucursal() + "||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } if (request.getParameter("proceso").equals("ENLAZAR_RECIBO")) { //System.out.println("Enlazar Recibos"); // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA_CAMBIAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA_CAMBIAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA_CAMBIAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JNominasModuloSet setnom = new JNominasModuloSet(request); setnom.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; setnom.Open(); if (setids.getAbsRow(0).getCFD() || (setnom.getAbsRow(0).getTipo() != 1 && setnom.getAbsRow(0).getTipo() != 2 && setnom.getAbsRow(0).getTipo() != 5 && setnom.getAbsRow(0).getTipo() != 6 && setnom.getAbsRow(0).getTipo() != 7 && setnom.getAbsRow(0).getTipo() != 8)) { idmensaje = 3; mensaje += "ERROR: No se puede enlazar ningun CFDI porque esta entidad de nmina genera sus propios CFDIs, o porque esta nmina es del tipo especial, la cual no es compatible para sellar.<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (request.getParameter("subproceso") == null) // Como el subproceso no es ENVIAR ni ENLAZAR, { //System.out.println("Subproceso Nulo"); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/fact_dlg_xmls.jsp", request, response); return; } else { //System.out.println("Subproceso NO Nulo"); if (request.getParameter("subproceso").equals("ENLAZAR")) { // Se supone que el recibo aun no estar ligado a un recibo existente... JCFDCompSet comprobante = new JCFDCompSet(request, "NOMINA"); comprobante.m_Where = "UUID = '" + p(request.getParameter("uuid")) + "'"; comprobante.Open(); if (comprobante.getNumRows() < 1 || !comprobante.getAbsRow(0).getFSI_Tipo().equals("ENT") || comprobante.getAbsRow(0).getFSI_ID() != Integer .parseInt(getSesion(request).getSesion("NOM_NOMINA").getEspecial())) { idmensaje = 3; mensaje += "ERROR: No se ha cargado el CFDI del recibo, ste ya esta ligado a otro recibo, el CFDI se carg en otra entidad<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } HttpSession ses = request.getSession(true); JFacturasXML nomrecxml = (JFacturasXML) ses.getAttribute("nom_rec_xml"); if (nomrecxml == null) { nomrecxml = new JFacturasXML(); ses.setAttribute("nom_rec_xml", nomrecxml); } else { nomrecxml = null; nomrecxml = new JFacturasXML(); ses.setAttribute("nom_rec_xml", nomrecxml); } StringBuffer sb_mensaje = new StringBuffer(); if (!JForsetiCFD.CargarDocumentoCFDI(request, nomrecxml, sb_mensaje, request.getParameter("uuid"), "N")) { idmensaje = 3; mensaje += sb_mensaje.toString(); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (nomrecxml.getComprobante().getProperty("tipoDeComprobante").equals("ingreso") || nomrecxml.getComprobante().getProperty("tipoDeComprobante").equals("traslado")) { idmensaje = 3; mensaje += "ERROR: El tipo de comprobante fiscal digital CFDI, No corresponde con el tipo de documento a enlazar.<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } //Verifica que el RFC del Emisor sea igual al RFC registrado, o que sea rfc generico JBDSSet set = new JBDSSet(request); set.ConCat(true); set.m_Where = "Nombre = 'FSIBD_" + p(getSesion(request).getBDCompania()) + "'"; set.Open(); if (!nomrecxml.getRFC_Emisor().equalsIgnoreCase(set.getAbsRow(0).getRFC())) { idmensaje = 3; mensaje = "ERROR: El RFC del emisor en el XML no pertenece a la compaia"; getSesion(request).setID_Mensaje(idmensaje, mensaje.toString()); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (request.getParameter("idempleado") == null) // Significa que debe agregar un nuevo recibo { if (setnom.getAbsRow(0).getCerrado()) { idmensaje = 3; mensaje += "ERROR: No se puede enlazar el CFDI a un recibo nuevo porque la nmina ya esta protegida <br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } //float descuento = Float.parseFloat(nomrecxml.getComprobante().getProperty("descuento")); //float totalImpuestosRetenidos = Float.parseFloat(nomrecxml.getImpuestos().getProperty("totalImpuestosRetenidos")); JMasempSet setemp = new JMasempSet(request); setemp.m_Where = "ID_Compania = '0' and ID_Sucursal = '" + getSesion(request).getSesion("NOM_NOMINA").getEspecial() + "' and ( RFC_Letras || RFC_Fecha || RFC_Homoclave ) ~~* '" + p(nomrecxml.getRFC_Receptor()) + "'"; setemp.Open(); //System.out.println(setemp.getSQL()); if (setemp.getNumRows() == 0) { idmensaje = 1; mensaje = "PRECAUCION: No existe el empleado dado de alta en el sistema, est dado de alta en otra entidad o el RFC del empleado no coincide con el del recibo"; getSesion(request).setID_Mensaje(idmensaje, mensaje.toString()); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JNomMovDirSes rec = (JNomMovDirSes) ses.getAttribute("nom_nomina_dlg"); if (rec == null) { rec = new JNomMovDirSes(); ses.setAttribute("nom_nomina_dlg", rec); } else rec.resetear(); JProcessSet setRec = new JProcessSet(request); setRec.setSQL("select Recibo from VIEW_NOM_CALCULO_NOMINA_ESP where ID_Nomina = '" + p(request.getParameter("id")) + "' order by Recibo desc limit 1"); setRec.Open(); if (setRec.getNumRows() > 0) rec.setRecibo(Integer.valueOf(setRec.getAbsRow(0).getSTS("Col1")) + 1); else rec.setRecibo(1); //Llena el recibo rec.setUUID(nomrecxml.getTFD().getProperty("UUID")); rec.setID_Empleado(setemp.getAbsRow(0).getID_Empleado()); rec.setNombre(setemp.getAbsRow(0).getNombre() + " " + setemp.getAbsRow(0).getApellido_Paterno() + " " + setemp.getAbsRow(0).getApellido_Materno()); JCalculoNominaDetSet dset = new JCalculoNominaDetSet(request); dset.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "' and ID_Empleado = '" + p(request.getParameter("idempleado")) + "'"; dset.Open(); for (int i = 0; i < nomrecxml.getPercepciones().size(); i++) { Properties percepcion = (Properties) nomrecxml.getPercepciones().elementAt(i); int clave; String descripcion; boolean esDeduccion; int idmovimiento; try { idmovimiento = Integer.parseInt(percepcion.getProperty("Clave")); } catch (NumberFormatException e) { idmovimiento = 0; } JMovimientosNomSet cat = new JMovimientosNomSet(request); cat.m_Where = "ID_Movimiento = '" + idmovimiento + "'"; //System.out.println(cat.getSQL()); cat.Open(); if (cat.getNumRows() > 0) { clave = cat.getAbsRow(0).getID_Movimiento(); descripcion = cat.getAbsRow(0).getDescripcion(); esDeduccion = cat.getAbsRow(0).getDeduccion(); } else // Si no existe la clave en el catalogo, enlaza desde catlogo intermediario { clave = 0; descripcion = percepcion.getProperty("Concepto"); esDeduccion = false; } float gravado = Float.parseFloat(percepcion.getProperty("ImporteGravado")); float exento = Float.parseFloat(percepcion.getProperty("ImporteExento")); rec.agregaPartida(clave, descripcion, gravado, exento, 0.00F, esDeduccion); } for (int i = 0; i < nomrecxml.getDeducciones().size(); i++) { Properties deduccion = (Properties) nomrecxml.getDeducciones().elementAt(i); int clave; String descripcion; boolean esDeduccion; JMovimientosNomSet cat = new JMovimientosNomSet(request); cat.m_Where = "ID_Movimiento = '" + p(deduccion.getProperty("Clave")) + "'"; //System.out.println(cat.getSQL()); cat.Open(); if (cat.getNumRows() > 0) { clave = cat.getAbsRow(0).getID_Movimiento(); descripcion = cat.getAbsRow(0).getDescripcion(); esDeduccion = cat.getAbsRow(0).getDeduccion(); } else // Si no existe la clave en el catalogo, enlaza desde catlogo intermediario { clave = 0; descripcion = deduccion.getProperty("Concepto"); esDeduccion = true; } float gravado = Float.parseFloat(deduccion.getProperty("ImporteGravado")); float exento = Float.parseFloat(deduccion.getProperty("ImporteExento")); rec.agregaPartida(clave, descripcion, 0.00F, 0.00F, -(gravado + exento), esDeduccion); } for (int i = 0; i < nomrecxml.getIncapacidades().size(); i++) { Properties incapacidad = (Properties) nomrecxml.getIncapacidades().elementAt(i); float dias = Float.parseFloat(incapacidad.getProperty("DiasIncapacidad")); int tipo = Integer.parseInt(incapacidad.getProperty("TipoIncapacidad")); if (tipo == 1) rec.setIXA(dias); else if (tipo == 2) rec.setIXE(dias); else rec.setIXM(dias); } for (int i = 0; i < nomrecxml.getHorasExtras().size(); i++) { Properties horasextra = (Properties) nomrecxml.getHorasExtras().elementAt(i); byte dias = Byte.parseByte(horasextra.getProperty("Dias")); String tipo = horasextra.getProperty("TipoHoras"); float horas = Float.parseFloat(horasextra.getProperty("HorasExtra")); rec.setDiasHorasExtras(dias); if (tipo.equals("Dobles") || tipo.equals("dobles")) rec.setHE(horas); else // Triples o triples rec.setHT(horas); } rec.establecerResultados(); if ((JUtil.redondear(rec.getSumGravado() + rec.getSumExento() + rec.getSumDeduccion(), 2) - JUtil.redondear( Float.parseFloat(nomrecxml.getComprobante().getProperty("total")), 2)) > 0.1 || (JUtil.redondear( rec.getSumGravado() + rec.getSumExento() + rec.getSumDeduccion(), 2) - JUtil.redondear( Float.parseFloat( nomrecxml.getComprobante().getProperty("total")), 2)) < -0.1) { idmensaje = 3; mensaje = "ERROR: El total en el CFDI no corresponde al Total calculado en el registro a partir de este CFDI. No se puede agregar. DOC: " + JUtil.redondear( rec.getSumGravado() + rec.getSumExento() + rec.getSumDeduccion(), 2) + " XML: " + JUtil.redondear( Float.parseFloat(nomrecxml.getComprobante().getProperty("total")), 2); getSesion(request).setID_Mensaje(idmensaje, mensaje.toString()); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/nomina/nom_nomina_dlg_emp.jsp", request, response); return; } else // Significa que debe Enlazar a un recibo existente { if (setnom.getAbsRow(0).getFormaPago().equals("N")) //Si no est ya pagada la nomina lo rechaza porque no hay poliza para enlazar el cfdi a la contabilidad electronica { idmensaje = 3; mensaje += "ERROR: No se puede enlazar el CFDI a un recibo existente porque la nmina no esta pagada an, lo que significa que no existe una pliza asociada para el enlace a la contabilidad elecrnica <br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } String[] valoresParam = request.getParameterValues("idempleado"); if (valoresParam.length == 1) { JCalculoNominaEspSet cset = new JCalculoNominaEspSet(request); cset.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "' and ID_Empleado = '" + p(request.getParameter("idempleado")) + "'"; cset.Open(); //System.out.println(setemp.getSQL()); if (cset.getAbsRow(0).getID_CFD() != 0) { idmensaje = 1; mensaje += "PRECAUCION: Este recibo ya tiene un CFDI asociado. No puedes asociar otro CFDI al mismo recibo<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JMasempSetCons setemp = new JMasempSetCons(request); setemp.m_Where = "ID_Empleado = '" + p(request.getParameter("idempleado")) + "'"; setemp.Open(); if (JUtil.redondear( cset.getAbsRow(0).getGravado() + cset.getAbsRow(0).getExento() + cset.getAbsRow(0).getDeduccion(), 2) != JUtil.redondear( Float.parseFloat(nomrecxml.getComprobante().getProperty("total")), 2) || !(setemp.getAbsRow(0).getRFC_Letras() + setemp.getAbsRow(0).getRFC_Fecha() + setemp.getAbsRow(0).getRFC_Homoclave()) .equals(nomrecxml.getRFC_Receptor())) { idmensaje = 1; mensaje += "PRECAUCION: Los totales o los RFCs del recibo y el CFDI no coinciden. No se puede asociar este CFDI al registro<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } // Aqui asocia. Enlazar(request, response); return; } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } } else if (request.getParameter("subproceso").equals("ENVIAR")) { if (AgregarRecursos(request, response) == -1) { AgregarCambiarEmp(request, response); return; } irApag("/forsetiweb/nomina/nom_nomina_dlg_emp.jsp", request, response); return; } } } else if (request.getParameter("proceso").equals("AGREGAR_NOMINA")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA_AGREGAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA_AGREGAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA_AGREGAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JAdmCompaniasSet setcom = new JAdmCompaniasSet(request); setcom.m_Where = "ID_Compania = '0' and ID_Sucursal = '" + getSesion(request).getSesion("NOM_NOMINA").getEspecial() + "'"; setcom.Open(); Byte numero_nomina = new Byte(setcom.getAbsRow(0).getNumero()); Date desde = new Date(setcom.getAbsRow(0).getFecha().getTime()); Calendar hast = new GregorianCalendar(); hast.setTime(setcom.getAbsRow(0).getFecha()); Integer ano = new Integer(JUtil.obtAno(hast)); Integer tipo_de_nomina = new Integer(-1); if (setcom.getAbsRow(0).getPeriodo().equals("sem")) hast.add(Calendar.DATE, 6); else if (setcom.getAbsRow(0).getPeriodo().equals("qui")) hast.add(Calendar.DATE, 14); else { hast.add(Calendar.MONTH, 1); hast.add(Calendar.DATE, -1); } Date hasta = hast.getTime(); request.setAttribute("numero_nomina", numero_nomina); request.setAttribute("ano", ano); request.setAttribute("desde", desde); request.setAttribute("hasta", hasta); request.setAttribute("tipo_de_nomina", tipo_de_nomina); // Solicitud de envio a procesar if (request.getParameter("subproceso") != null && request.getParameter("subproceso").equals("ENVIAR")) { // Verificacion if (VerificarParametros(request, response)) { AgregarCambiarCabecero(request, response); return; } irApag("/forsetiweb/nomina/nom_nomina_dlg.jsp", request, response); return; } else // Como el subproceso no es ENVIAR, abre la ventana del proceso de AGREGADO para agregar `por primera vez { getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/nomina/nom_nomina_dlg.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("CAMBIAR_NOMINA")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA_CAMBIAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA_CAMBIAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA_CAMBIAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } // Solicitud de envio a procesar if (request.getParameter("id") != null) { String[] valoresParam = request.getParameterValues("id"); if (valoresParam.length == 1) { JNominasModuloSet setnom = new JNominasModuloSet(request); setnom.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; setnom.Open(); if (setnom.getAbsRow(0).getCerrado()) { idmensaje = 3; mensaje += "ERROR: No se puede cambiar la nómina porque ya esta protegida<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (setnom.getAbsRow(0).getTipo() != 1 && setnom.getAbsRow(0).getTipo() != 2) { idmensaje = 3; mensaje += "ERROR: No se puede cambiar la nmina porque no es una nmina normal<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } Byte numero_nomina = new Byte((byte) setnom.getAbsRow(0).getNumero_Nomina()); Integer ano = new Integer(setnom.getAbsRow(0).getAno()); Date desde = new Date(setnom.getAbsRow(0).getFecha_Desde().getTime()); Date hasta = new Date(setnom.getAbsRow(0).getFecha_Hasta().getTime()); Integer tipo_de_nomina = new Integer(setnom.getAbsRow(0).getTipo()); request.setAttribute("numero_nomina", numero_nomina); request.setAttribute("ano", ano); request.setAttribute("desde", desde); request.setAttribute("hasta", hasta); request.setAttribute("tipo_de_nomina", tipo_de_nomina); // Solicitud de envio a procesar if (request.getParameter("subproceso") != null && request.getParameter("subproceso").equals("ENVIAR")) { // Verificacion if (VerificarParametros(request, response)) { AgregarCambiarCabecero(request, response); return; } irApag("/forsetiweb/nomina/nom_nomina_dlg.jsp", request, response); return; } else // Como el subproceso no es ENVIAR, abre la ventana del proceso de AGREGADO para agregar `por primera vez { getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/nomina/nom_nomina_dlg.jsp", request, response); return; } } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("ELIMINAR_NOMINA")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA_ELIMINAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA_ELIMINAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA_ELIMINAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } // Solicitud de envio a procesar if (request.getParameter("id") != null) { String[] valoresParam = request.getParameterValues("id"); if (valoresParam.length == 1) { JNominasModuloSet setnom = new JNominasModuloSet(request); setnom.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; setnom.Open(); if (setnom.getAbsRow(0).getCerrado()) { idmensaje = 3; mensaje += "ERROR: No se puede eliminar la nómina porque ya esta protegida <br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JCalculoNominaEspSet cset = new JCalculoNominaEspSet(request); cset.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "' and TFD >= 2"; cset.Open(); if (cset.getNumRows() > 0) { idmensaje = 3; mensaje += "ERROR: No se puede eliminar la nmina porque por lo menos un recibo ya tiene su CFDI enlazado. Primero debes desenlazar el CFDI desde el mdulo de CFDI y CE del centro de control<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } Eliminar(request, response); return; } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("CALCULAR_NOMINA")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA_AGREGAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA_AGREGAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA_AGREGAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } // Solicitud de envio a procesar if (request.getParameter("id") != null) { String[] valoresParam = request.getParameterValues("id"); if (valoresParam.length == 1) { JNominasModuloSet setnom = new JNominasModuloSet(request); setnom.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; setnom.Open(); if (setnom.getAbsRow(0).getCerrado()) { idmensaje = 3; mensaje += "ERROR: No se puede calcular la nómina porque ya est protegida <br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (setnom.getAbsRow(0).getTipo() == 1 || setnom.getAbsRow(0).getTipo() == 2) { if (request.getParameter("subproceso") != null && request.getParameter("subproceso").equals("ENVIAR")) { //Normales Calcular(request, response, 12); return; } else // Como el subproceso no es ENVIAR, abre la ventana del proceso de AGREGADO para agregar `por primera vez { getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/nomina/nom_nomina_dlg_calcular.jsp", request, response); return; } } else if (setnom.getAbsRow(0).getTipo() == 5 || setnom.getAbsRow(0).getTipo() == 6) { //Aguinaldo Calcular(request, response, 56); return; } else { idmensaje = 3; mensaje += "ERROR: No se puede calcular la nmina porque el tipo de nmina no es calculable <br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("GENERAR_NOMINA")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA_AGREGAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA_AGREGAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA_AGREGAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } // Solicitud de envio a procesar if (request.getParameter("id") != null) { String[] valoresParam = request.getParameterValues("id"); if (valoresParam.length == 1) { JNominasModuloSet setnom = new JNominasModuloSet(request); setnom.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; setnom.Open(); if (!setnom.getAbsRow(0).getCerrado() || setnom.getAbsRow(0).getStatus().equals("P") || setnom.getAbsRow(0).getStatus().equals("C")) { idmensaje = 3; mensaje += "ERROR: No se puede generar pago de nómina porque no esta protegida, ya esta pagada o esta cancelada <br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } Generar(request, response); return; } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("CARGAR_RECIBO")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("ADM_CFDI_CARGAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "ADM_CFDI_CARGAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "ADM_CFDI_CARGAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JNominasModuloSet setnom = new JNominasModuloSet(request); setnom.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; setnom.Open(); if (setids.getAbsRow(0).getCFD() || (setnom.getAbsRow(0).getTipo() != 1 && setnom.getAbsRow(0).getTipo() != 2 && setnom.getAbsRow(0).getTipo() != 5 && setnom.getAbsRow(0).getTipo() != 6)) { idmensaje = 3; mensaje += "ERROR: No se puede cargar ningun CFDI porque esta entidad de nmina genera sus propios CFDIs, o porque el tipo, no es compatible para sellar.<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } Integer subir_archivos = new Integer(2); request.setAttribute("subir_archivos", subir_archivos); HttpSession ses = request.getSession(true); JFacturasXML rec = (JFacturasXML) ses.getAttribute("nom_rec_xml"); if (rec == null) { rec = new JFacturasXML(); ses.setAttribute("nom_rec_xml", rec); } else { rec = null; rec = new JFacturasXML(); ses.setAttribute("nom_rec_xml", rec); } getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/subir_archivos.jsp?verif=/servlet/CEFNomMovDirDlg&archivo_1=xml&archivo_2=pdf&proceso=CARGAR_RECIBO&subproceso=ENVIAR", request, response); return; } else if (request.getParameter("proceso").equals("SELLAR_NOMINA")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA_AGREGAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA_AGREGAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA_AGREGAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (request.getParameter("id") != null) { String[] valoresParam = request.getParameterValues("id"); if (valoresParam.length == 1) { if (setids.getAbsRow(0).getCFD() == false) { idmensaje = 1; mensaje += "PRECAUCION: Esta entidad de nmina no está establecida como CFDI. No se pueden sellar los registros<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JNominasModuloSet setnom = new JNominasModuloSet(request); setnom.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; setnom.Open(); if (!setnom.getAbsRow(0).getCerrado() || !setnom.getAbsRow(0).getStatus().equals("P") || setnom.getAbsRow(0).getStatus().equals("C")) { idmensaje = 3; mensaje += "ERROR: No se puede sellar esta nmina porque no esta protegida, no esta pagada o est cancelada <br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (setnom.getAbsRow(0).getTipo() == 1 || setnom.getAbsRow(0).getTipo() == 2 || setnom.getAbsRow(0).getTipo() == 5 || setnom.getAbsRow(0).getTipo() == 6 || setnom.getAbsRow(0).getTipo() == 7 || setnom.getAbsRow(0).getTipo() == 8) { JCalculoNominaEspSet SetMod = new JCalculoNominaEspSet(request); SetMod.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; SetMod.m_OrderBy = "Recibo ASC"; SetMod.Open(); for (int i = 0; i < SetMod.getNumRows(); i++) { if (SetMod.getAbsRow(i).getTFD() == 3) continue; StringBuffer sb_mensaje = new StringBuffer(254); idmensaje = generarCFDI(request, response, "NOMINA", Integer.parseInt(request.getParameter("id")), SetMod.getAbsRow(i).getID_Empleado(), setids, SetMod.getAbsRow(i).getTFD(), sb_mensaje); mensaje += SetMod.getAbsRow(i).getID_Empleado() + " " + sb_mensaje.toString() + "<br>"; if (idmensaje == 3) break; } getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } else { idmensaje = 3; mensaje += "ERROR: No se puede sellar la nómina porque se trata de una nómina especial. <br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("PROTEGER_NOMINA")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA_CAMBIAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA_CAMBIAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA_CAMBIAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } // Solicitud de envio a procesar if (request.getParameter("id") != null) { String[] valoresParam = request.getParameterValues("id"); if (valoresParam.length == 1) { JNominasModuloSet setnom = new JNominasModuloSet(request); setnom.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; setnom.Open(); if (!setnom.getAbsRow(0).getFormaPago().equals("N") || setnom.getAbsRow(0).getStatus().equals("C")) { idmensaje = 3; mensaje += "ERROR: No se puede desproteger la nmina porque ya esta pagada o esta cancelada.<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } Proteger(request, response); return; } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("CONSULTAR_NOMINA")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } // Solicitud de envio a procesar if (request.getParameter("id") != null) { String[] valoresParam = request.getParameterValues("id"); if (valoresParam.length == 1) { getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/nomina/nom_nomina_dlg_cons.jsp", request, response); return; } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("MOVER_NOMINA")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA_CAMBIAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA_CAMBIAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA_CAMBIAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } // Solicitud de envio a procesar if (request.getParameter("id") != null) { String[] valoresParam = request.getParameterValues("id"); if (valoresParam.length == 1) { getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/nomina/nom_nomina_dlg_cons.jsp", request, response); return; } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("AGR_EMP")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA_CAMBIAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA_CAMBIAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA_CAMBIAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JNominasModuloSet setnom = new JNominasModuloSet(request); setnom.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; setnom.Open(); if (setnom.getAbsRow(0).getCerrado() || setnom.getAbsRow(0).getStatus().equals("C")) { idmensaje = 3; mensaje += "ERROR: No se puede agregar el empleado porque la nmina ya est protegida o est cancelada.<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } // Solicitud de envio a procesar if (request.getParameter("subproceso") != null && request.getParameter("subproceso").equals("ENVIAR")) { if (AgregarCabeceroRecibo(request, response) == -1) { AgregarCambiarEmp(request, response); return; } irApag("/forsetiweb/nomina/nom_nomina_dlg_emp.jsp", request, response); return; } else if (request.getParameter("subproceso") != null && request.getParameter("subproceso").equals("AGR_PART")) { if (AgregarCabeceroRecibo(request, response) == -1) { if (VerificarParametrosPartida(request, response)) AgregarPartida(request, response); } irApag("/forsetiweb/nomina/nom_nomina_dlg_emp.jsp", request, response); return; } else if (request.getParameter("subproceso") != null && request.getParameter("subproceso").equals("EDIT_PART")) { if (AgregarCabeceroRecibo(request, response) == -1) { if (VerificarParametrosPartida(request, response)) EditarPartida(request, response); } irApag("/forsetiweb/nomina/nom_nomina_dlg_emp.jsp", request, response); return; } else if (request.getParameter("subproceso") != null && request.getParameter("subproceso").equals("BORR_PART")) { if (AgregarCabeceroRecibo(request, response) == -1) { BorrarPartida(request, response); } irApag("/forsetiweb/nomina/nom_nomina_dlg_emp.jsp", request, response); return; } else // Como el subproceso no es ENVIAR ni AGR_PART ni EDIT_PART ni BORR_PART, abre la ventana del proceso de AGREGADO para agregar `por primera vez { HttpSession ses = request.getSession(true); JNomMovDirSes rec = (JNomMovDirSes) ses.getAttribute("nom_nomina_dlg"); if (rec == null) { rec = new JNomMovDirSes(); ses.setAttribute("nom_nomina_dlg", rec); } else rec.resetear(); JProcessSet setRec = new JProcessSet(request); setRec.setSQL("select Recibo from VIEW_NOM_CALCULO_NOMINA_ESP where ID_Nomina = '" + p(request.getParameter("id")) + "' order by Recibo desc limit 1"); setRec.Open(); if (setRec.getNumRows() > 0) rec.setRecibo(Integer.valueOf(setRec.getAbsRow(0).getSTS("Col1")) + 1); else rec.setRecibo(1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/nomina/nom_nomina_dlg_emp.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("CAM_EMP")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA_CAMBIAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA_CAMBIAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA_CAMBIAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JNominasModuloSet setnom = new JNominasModuloSet(request); setnom.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; setnom.Open(); if (setnom.getAbsRow(0).getCerrado() || setnom.getAbsRow(0).getStatus().equals("C")) { idmensaje = 3; mensaje += "ERROR: No se puede cambiar el recibo porque la nmina ya est protegida o est cancelada.<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (request.getParameter("idempleado") != null) { String[] valoresParam = request.getParameterValues("idempleado"); if (valoresParam.length == 1) { JCalculoNominaEspSet cset = new JCalculoNominaEspSet(request); cset.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "' and ID_Empleado = '" + p(request.getParameter("idempleado")) + "'"; cset.Open(); if (cset.getAbsRow(0).getTFD() >= 2) { idmensaje = 3; mensaje += "ERROR: No se puede cambiar el recibo porque ya tiene un CFDI enlazado.<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } //Solicitud de envio a procesar if (request.getParameter("subproceso") != null && request.getParameter("subproceso").equals("ENVIAR")) { // Verificacion if (AgregarCabeceroRecibo(request, response) == -1) { AgregarCambiarEmp(request, response); return; } irApag("/forsetiweb/nomina/nom_nomina_dlg_emp.jsp", request, response); return; } else if (request.getParameter("subproceso") != null && request.getParameter("subproceso").equals("AGR_PART")) { if (AgregarCabeceroRecibo(request, response) == -1) { if (VerificarParametrosPartida(request, response)) AgregarPartida(request, response); } irApag("/forsetiweb/nomina/nom_nomina_dlg_emp.jsp", request, response); return; } else if (request.getParameter("subproceso") != null && request.getParameter("subproceso").equals("EDIT_PART")) { if (AgregarCabeceroRecibo(request, response) == -1) { if (VerificarParametrosPartida(request, response)) EditarPartida(request, response); } irApag("/forsetiweb/nomina/nom_nomina_dlg_emp.jsp", request, response); return; } else if (request.getParameter("subproceso") != null && request.getParameter("subproceso").equals("BORR_PART")) { if (AgregarCabeceroRecibo(request, response) == -1) { BorrarPartida(request, response); } irApag("/forsetiweb/nomina/nom_nomina_dlg_emp.jsp", request, response); return; } else // Como el subproceso no es ENVIAR ni AGR_PART ni EDIT_PART ni BORR_PART, abre la ventana del proceso de AGREGADO para agregar `por primera vez { HttpSession ses = request.getSession(true); JNomMovDirSes rec = (JNomMovDirSes) ses.getAttribute("nom_nomina_dlg"); if (rec == null) { rec = new JNomMovDirSes(); ses.setAttribute("nom_nomina_dlg", rec); } else rec.resetear(); //Llena el empleado JCalculoNominaEspSet set = new JCalculoNominaEspSet(request); set.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "' and ID_Empleado = '" + p(request.getParameter("idempleado")) + "'"; set.Open(); rec.setID_Empleado(set.getAbsRow(0).getID_Empleado()); rec.setNombre(set.getAbsRow(0).getNombre()); rec.setFaltas(set.getAbsRow(0).getFaltas()); rec.setHE(set.getAbsRow(0).getHE()); rec.setHD(set.getAbsRow(0).getHD()); rec.setHT(set.getAbsRow(0).getHT()); rec.setIXA(set.getAbsRow(0).getIXA()); rec.setIXE(set.getAbsRow(0).getIXE()); rec.setIXM(set.getAbsRow(0).getIXM()); rec.setRecibo(set.getAbsRow(0).getRecibo()); rec.setDiasHorasExtras(set.getAbsRow(0).getDiasHorasExtras()); JCalculoNominaDetSet dset = new JCalculoNominaDetSet(request); dset.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "' and ID_Empleado = '" + p(request.getParameter("idempleado")) + "'"; dset.Open(); for (int i = 0; i < dset.getNumRows(); i++) { rec.agregaPartida(dset.getAbsRow(i).getID_Movimiento(), dset.getAbsRow(i).getDescripcion(), dset.getAbsRow(i).getGravado(), dset.getAbsRow(i).getExento(), dset.getAbsRow(i).getDeduccion(), dset.getAbsRow(i).getEsDeduccion()); } getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/nomina/nom_nomina_dlg_emp.jsp", request, response); return; } } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("BORR_EMP")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA_CAMBIAR")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA_CAMBIAR"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA_CAMBIAR", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JNominasModuloSet setnom = new JNominasModuloSet(request); setnom.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "'"; setnom.Open(); if (setnom.getAbsRow(0).getCerrado() || setnom.getAbsRow(0).getStatus().equals("C")) { idmensaje = 3; mensaje += "ERROR: No se puede borrar el recibo porque la nmina ya est protegida o est cancelada.<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (request.getParameter("idempleado") != null) { String[] valoresParam = request.getParameterValues("idempleado"); if (valoresParam.length == 1) { JCalculoNominaEspSet cset = new JCalculoNominaEspSet(request); cset.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "' and ID_Empleado = '" + p(request.getParameter("idempleado")) + "'"; cset.Open(); if (cset.getAbsRow(0).getTFD() >= 2) { idmensaje = 3; mensaje += "ERROR: No se puede eliminar el recibo porque ya tiene un CFDI enlazado.<br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } EliminarEmp(request, response); return; } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("IMPRIMIR")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (request.getParameter("idempleado") != null) { String[] valoresParam = request.getParameterValues("idempleado"); if (valoresParam.length == 1) { //Solicitud de envio a procesar if (request.getParameter("subproceso") != null && request.getParameter("subproceso").equals("IMPRESION")) { // Impresion StringBuffer bsmensaje = new StringBuffer(254); String SQLCab = "select * from view_nomina_recibos_impcab where ID_Nomina = " + request.getParameter("id") + " and ID_Empleado = '" + request.getParameter("idempleado") + "'"; String SQLDet = "select * from view_nomina_recibos_impdet where ID_Nomina = " + request.getParameter("id") + " and ID_Empleado = '" + request.getParameter("idempleado") + "' order by esdeduccion asc, id_movimiento asc"; idmensaje = Imprimir(SQLCab, SQLDet, request.getParameter("idformato"), bsmensaje, request, response); if (idmensaje != -1) { getSesion(request).setID_Mensaje(idmensaje, bsmensaje.toString()); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { request.setAttribute("impresion", "CEFNomMovDirDlg"); request.setAttribute("tipo_imp", "NOM_NOMINA"); request.setAttribute("formato_default", setids.getAbsRow(0).getFmt_Recibo()); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/impresion_dlg.jsp", request, response); return; } } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("ENVIAR_RECIBO")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (request.getParameter("idempleado") != null) { String[] valoresParam = request.getParameterValues("idempleado"); if (valoresParam.length == 1) { //Solicitud de envio a procesar JCalculoNominaEspSet SetMod = new JCalculoNominaEspSet(request); SetMod.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "' and ID_Empleado = '" + p(request.getParameter("idempleado")) + "'"; SetMod.Open(); if (SetMod.getAbsRow(0).getTFD() != 3) { idmensaje = 1; mensaje += "PRECAUCION: Este recibo no está sellado completamente, no se puede enviar <br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JMasempSet set = new JMasempSet(request); set.m_Where = "ID_Empleado = '" + p(request.getParameter("idempleado")) + "'"; set.Open(); if (set.getAbsRow(0).getSMTP() == 0) // Maneja smtp manual o automtico { idmensaje = 1; mensaje += "PRECAUCION: Este empleado no esta confgurado para recibir sus recibos por correo <br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JFsiSMTPClient smtp = new JFsiSMTPClient(); smtp.enviarCFDIMPE(request, "NOM", request.getParameter("id"), request.getParameter("idempleado"), set.getAbsRow(0).getNombre(), set.getAbsRow(0).getEMail()); if (smtp.getStatusSMTP() == JFsiSMTPClient.ERROR) { idmensaje = 3; mensaje += "ERROR: " + smtp.getError(); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } getSesion(request).setID_Mensaje((short) 0, "El correo se ha mandado satisfactoriamente"); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("XML_RECIBO")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (request.getParameter("idempleado") != null) { String[] valoresParam = request.getParameterValues("idempleado"); if (valoresParam.length == 1) { //Solicitud de envio a procesar JCalculoNominaEspSet SetMod = new JCalculoNominaEspSet(request); SetMod.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "' and ID_Empleado = '" + p(request.getParameter("idempleado")) + "'"; SetMod.Open(); if (SetMod.getAbsRow(0).getTFD() != 3 || SetMod.getAbsRow(0).getID_CFD() == 0) { idmensaje = 1; mensaje += "PRECAUCION: Este recibo no está sellado completamente, no hay nada que bajar <br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JCFDCompSet cfd = new JCFDCompSet(request, "NOMINA"); cfd.m_Where = "ID_CFD = '" + SetMod.getAbsRow(0).getID_CFD() + "'"; cfd.Open(); String nombre, destino; if (cfd.getNumRows() > 0) nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania() + "/nom/TFDs/" + cfd.getAbsRow(0).getUUID() + ".xml"; else // Es CFDI generado internamente { nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania() + "/TFDs/SIGN_NOM-" + request.getParameter("id") + "-" + request.getParameter("idempleado") + ".xml"; } destino = "NOM-" + SetMod.getAbsRow(0).getID_Nomina() + "-" + SetMod.getAbsRow(0).getRecibo() + ".xml"; JBajarArchivo fd = new JBajarArchivo(); fd.doDownload(response, getServletConfig().getServletContext(), nombre, destino); idmensaje = 0; mensaje = "El recibo se bajo satisfactoriamente"; return; } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else if (request.getParameter("proceso").equals("PDF_RECIBO")) { // Revisa si tiene permisos if (!getSesion(request).getPermiso("NOM_NOMINA")) { idmensaje = 3; mensaje += MsjPermisoDenegado(request, "CEF", "NOM_NOMINA"); getSesion(request).setID_Mensaje(idmensaje, mensaje); RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), "NOM_NOMINA", "NNOM||||", mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } if (request.getParameter("idempleado") != null) { String[] valoresParam = request.getParameterValues("idempleado"); if (valoresParam.length == 1) { //Solicitud de envio a procesar JCalculoNominaEspSet SetMod = new JCalculoNominaEspSet(request); SetMod.m_Where = "ID_Nomina = '" + p(request.getParameter("id")) + "' and ID_Empleado = '" + p(request.getParameter("idempleado")) + "'"; SetMod.Open(); if (SetMod.getAbsRow(0).getTFD() != 3 || SetMod.getAbsRow(0).getID_CFD() == 0) { idmensaje = 1; mensaje += "PRECAUCION: Este recibo no está sellado completamente, no hay nada que bajar <br>"; getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } JCFDCompSet cfd = new JCFDCompSet(request, "NOMINA"); cfd.m_Where = "ID_CFD = '" + SetMod.getAbsRow(0).getID_CFD() + "'"; cfd.Open(); String nombre, destino; if (cfd.getNumRows() > 0) nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania() + "/nom/PDFs/" + cfd.getAbsRow(0).getUUID() + ".pdf"; else nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania() + "/PDFs/NOM-" + request.getParameter("id") + "-" + request.getParameter("idempleado") + ".pdf"; destino = "NOM-" + SetMod.getAbsRow(0).getID_Nomina() + "-" + SetMod.getAbsRow(0).getRecibo() + ".pdf"; JBajarArchivo fd = new JBajarArchivo(); fd.doDownload(response, getServletConfig().getServletContext(), nombre, destino); idmensaje = 0; mensaje = "El recibo se bajo satisfactoriamente"; return; } else { idmensaje = 1; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 3); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } } else // si no se mandan parametros, manda a error { idmensaje = 3; mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 3); getSesion(request).setID_Mensaje(idmensaje, mensaje); irApag("/forsetiweb/caja_mensajes.jsp", request, response); return; } }
From source file:net.wastl.webmail.server.WebMailServlet.java
/** * Handle a request to the WebMail servlet. This is the central method of * the WebMailServlet. It first gathers all of the necessary information * from the client, then either creates or gets a Session and executes the * URL handler for the given path./*from ww w . java 2 s.com*/ */ public void service(ServletRequest req1, ServletResponse res1) throws ServletException { final HttpServletRequest req = (HttpServletRequest) req1; final HttpServletResponse res = (HttpServletResponse) res1; final HTTPRequestHeader http_header = new HTTPRequestHeader(); if (req.getServletPath().equals("/admin")) try { log.debug("Forwarding /admin request back to self"); req.getRequestDispatcher("WebMail/admin").forward(req1, res1); return; } catch (IOException ioe) { log.fatal("Forward from '/admin' failed", ioe); throw new ServletException(ioe.getMessage()); } final Enumeration en = req.getHeaderNames(); while (en.hasMoreElements()) { final String s = (String) en.nextElement(); http_header.setHeader(s, req.getHeader(s)); } http_header.setPath(req.getPathInfo() == null ? "/" : req.getPathInfo()); InetAddress addr; try { addr = InetAddress.getByName(req.getRemoteHost()); } catch (final UnknownHostException e) { try { addr = InetAddress.getByName(req.getRemoteAddr()); } catch (final Exception ex) { throw new ServletException("Remote host must identify!"); } } HTMLDocument content = null; final int err_code = 400; HTTPSession sess = null; /* * Here we try to parse the MIME content that the Client sent in his * POST since the JServ doesn't do that for us:-( At least we can use * the functionality provided by the standalone server where we need to * parse the content ourself anyway. */ try { final BufferedOutputStream out = new BufferedOutputStream(res.getOutputStream()); /* * First we try to use the Servlet API's methods to parse the * parameters. Unfortunately, it doesn't know how to handle MIME * multipart POSTs, so we will have to handle that ourselves */ /* * First get all the parameters and set their values into * http_header */ Enumeration enum2 = req.getParameterNames(); while (enum2.hasMoreElements()) { final String s = (String) enum2.nextElement(); http_header.setContent(s, req.getParameter(s)); // log.info("Parameter "+s); } /* Then we set all the headers in http_header */ enum2 = req.getHeaderNames(); while (enum2.hasMoreElements()) { final String s = (String) enum2.nextElement(); http_header.setHeader(s, req.getHeader(s)); } /* * In Servlet API 2.2 we might want to fetch the attributes also, * but this doesn't work in API 2.0, so we leave it commented out */ // enum2=req.getAttributeNames(); // while(enum2.hasMoreElements()) { // String s=(String)enum2.nextElement(); // log.info("Attribute "+s); // } /* Now let's try to handle multipart/form-data posts */ if (req.getContentType() != null && req.getContentType().toUpperCase().startsWith("MULTIPART/FORM-DATA")) { final int size = Integer.parseInt(WebMailServer.getStorage().getConfig("max attach size")); final MultipartParser mparser = new MultipartParser(req, size); Part p; while ((p = mparser.readNextPart()) != null) { if (p.isFile()) { final ByteStore bs = ByteStore.getBinaryFromIS(((FilePart) p).getInputStream(), size); bs.setName(((FilePart) p).getFileName()); bs.setContentType(getStorage().getMimeType(((FilePart) p).getFileName())); http_header.setContent(p.getName(), bs); log.info("File name " + bs.getName()); log.info("Type " + bs.getContentType()); } else if (p.isParam()) { http_header.setContent(p.getName(), ((ParamPart) p).getStringValue()); } // log.info("Parameter "+p.getName()); } } try { final String url = http_header.getPath(); try { /* Find out about the session id */ sess = req.getSession(false) == null ? null : (HTTPSession) req.getSession(false).getAttribute("webmail.session"); /* * If the user was logging on, he doesn't have a session id, * so generate one. If he already had one, all the better, * we will take the old one */ if (sess == null && url.startsWith("/login")) { sess = newSession(req, http_header); } else if (sess == null && url.startsWith("/admin/login")) { http_header.setHeader("LOGIN", "Administrator"); sess = newAdminSession(req, http_header); } if (sess == null && !url.equals("/") && !url.startsWith("/passthrough") && !url.startsWith("/admin")) { content = getURLHandler().handleURL("/logout", sess, http_header); } else { /* Ensure that the session state is up-to-date */ if (sess != null) { sess.setEnv(); } /* Let the URLHandler determine the result of the query */ content = getURLHandler().handleURL(url, sess, http_header); } } catch (final InvalidPasswordException e) { log.error("Connection to " + addr.toString() + ": Authentication failed!"); if (url.startsWith("/admin/login")) { content = getURLHandler().handleURL("/admin", null, http_header); } else if (url.startsWith("/login")) { content = getURLHandler().handleURL("/", null, http_header); } else // content=new // HTMLErrorMessage(getStorage(),e.getMessage()); throw new ServletException("Invalid URL called!"); } catch (final Exception ex) { content = getURLHandler().handleException(ex, sess, http_header); log.debug("Some strange error while handling request", ex); } /* * Set some HTTP headers: Date is now, the document should * expire in 5 minutes, proxies and clients shouldn't cache it * and all WebMail documents must be revalidated when they think * they don't have to follow the "no-cache". */ res.setDateHeader("Date:", System.currentTimeMillis()); res.setDateHeader("Expires", System.currentTimeMillis() + 300000); res.setHeader("Pragma", "no-cache"); res.setHeader("Cache-Control", "must-revalidate"); synchronized (out) { res.setStatus(content.getReturnCode()); if (content.hasHTTPHeader()) { final Enumeration enumVar = content.getHTTPHeaderKeys(); while (enumVar.hasMoreElements()) { final String s = (String) enumVar.nextElement(); res.setHeader(s, content.getHTTPHeader(s)); } } /* * What we will send is an image or some other sort of * binary */ if (content instanceof HTMLImage) { final HTMLImage img = (HTMLImage) content; /* * the HTMLImage class provides us with most of the * necessary information that we want to send */ res.setHeader("Content-Type", img.getContentType()); res.setHeader("Content-Transfer-Encoding", img.getContentEncoding()); res.setHeader("Content-Length", "" + img.size()); res.setHeader("Connection", "Keep-Alive"); /* Send 8k junks */ int offset = 0; while (offset + chunk_size < img.size()) { out.write(img.toBinary(), offset, chunk_size); offset += chunk_size; } out.write(img.toBinary(), offset, img.size() - offset); out.flush(); out.close(); } else { final byte[] encoded_content = content.toString().getBytes("UTF-8"); /* * We are sending HTML text. Set the encoding to UTF-8 * for Unicode messages */ res.setHeader("Content-Length", "" + (encoded_content.length + 2)); res.setHeader("Connection", "Keep-Alive"); res.setHeader("Content-Type", "text/html; charset=\"UTF-8\""); out.write(encoded_content); out.write("\r\n".getBytes()); out.flush(); out.close(); } } } catch (final DocumentNotFoundException e) { log.info("Connection to " + addr.toString() + ": Could not handle request (" + err_code + ") (Reason: " + e.getMessage() + ")"); throw new ServletException("Error: " + e.getMessage(), e); // res.setStatus(err_code); // res.setHeader("Content-type","text/html"); // res.setHeader("Connection","close"); // content=new HTMLErrorMessage(getStorage(),e.getMessage()); // out.write((content+"\r\n").getBytes("UTF-8")); // out.write("</HTML>\r\n".getBytes()); // out.flush(); // out.close(); } } catch (final Exception e) { log.info("Connection to " + addr.toString() + " closed unexpectedly", e); throw new ServletException(e.getMessage()); } }
From source file:com.icesoft.faces.webapp.http.servlet.ServletEnvironmentRequest.java
public ServletEnvironmentRequest(Object request, HttpSession session, Authorization authorization) { HttpServletRequest initialRequest = (HttpServletRequest) request; this.session = session; this.authorization = authorization; //Copy common data authType = initialRequest.getAuthType(); contextPath = initialRequest.getContextPath(); remoteUser = initialRequest.getRemoteUser(); userPrincipal = initialRequest.getUserPrincipal(); requestedSessionId = initialRequest.getRequestedSessionId(); requestedSessionIdValid = initialRequest.isRequestedSessionIdValid(); attributes = new HashMap(); Enumeration attributeNames = initialRequest.getAttributeNames(); while (attributeNames.hasMoreElements()) { String name = (String) attributeNames.nextElement(); Object attribute = initialRequest.getAttribute(name); if ((null != name) && (null != attribute)) { attributes.put(name, attribute); }/*from w w w . j ava2 s. co m*/ } // Warning: For some reason, the various javax.include.* attributes are // not available via the getAttributeNames() call. This may be limited // to a Liferay issue but when the MainPortlet dispatches the call to // the MainServlet, all of the javax.include.* attributes can be // retrieved using this.request.getAttribute() but they do NOT appear in // the Enumeration of names returned by getAttributeNames(). So here // we manually add them to our map to ensure we can find them later. String[] incAttrKeys = Constants.INC_CONSTANTS; for (int index = 0; index < incAttrKeys.length; index++) { String incAttrKey = incAttrKeys[index]; Object incAttrVal = initialRequest.getAttribute(incAttrKey); if (incAttrVal != null) { attributes.put(incAttrKey, initialRequest.getAttribute(incAttrKey)); } } headers = new HashMap(); Enumeration headerNames = initialRequest.getHeaderNames(); while (headerNames.hasMoreElements()) { String name = (String) headerNames.nextElement(); Enumeration values = initialRequest.getHeaders(name); headers.put(name, Collections.list(values)); } parameters = new HashMap(); Enumeration parameterNames = initialRequest.getParameterNames(); while (parameterNames.hasMoreElements()) { String name = (String) parameterNames.nextElement(); parameters.put(name, initialRequest.getParameterValues(name)); } scheme = initialRequest.getScheme(); serverName = initialRequest.getServerName(); serverPort = initialRequest.getServerPort(); secure = initialRequest.isSecure(); //Copy servlet specific data cookies = initialRequest.getCookies(); method = initialRequest.getMethod(); pathInfo = initialRequest.getPathInfo(); pathTranslated = initialRequest.getPathTranslated(); queryString = initialRequest.getQueryString(); requestURI = initialRequest.getRequestURI(); try { requestURL = initialRequest.getRequestURL(); } catch (NullPointerException e) { //TODO remove this catch block when GlassFish bug is addressed if (log.isErrorEnabled()) { log.error("Null Protocol Scheme in request", e); } HttpServletRequest req = initialRequest; requestURL = new StringBuffer( "http://" + req.getServerName() + ":" + req.getServerPort() + req.getRequestURI()); } servletPath = initialRequest.getServletPath(); servletSession = initialRequest.getSession(); isRequestedSessionIdFromCookie = initialRequest.isRequestedSessionIdFromCookie(); isRequestedSessionIdFromURL = initialRequest.isRequestedSessionIdFromURL(); characterEncoding = initialRequest.getCharacterEncoding(); contentLength = initialRequest.getContentLength(); contentType = initialRequest.getContentType(); protocol = initialRequest.getProtocol(); remoteAddr = initialRequest.getRemoteAddr(); remoteHost = initialRequest.getRemoteHost(); initializeServlet2point4Properties(initialRequest); }