diff --git a/webCM/src/main/servlet/org/compiere/cm/AdRedirector.java b/webCM/src/main/servlet/org/compiere/cm/AdRedirector.java index 0c142773f0..a3705c5613 100644 --- a/webCM/src/main/servlet/org/compiere/cm/AdRedirector.java +++ b/webCM/src/main/servlet/org/compiere/cm/AdRedirector.java @@ -3,59 +3,67 @@ * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * - * by the Free Software Foundation. This program is distributed in the hope * - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along * - * with this program; if not, write to the Free Software Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * - * For the text or an alternative of this public license, you may reach us * - * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * - * or via info@compiere.org or http://www.compiere.org/license.html * - *****************************************************************************/ -package org.compiere.cm; - -import java.io.IOException; -import javax.servlet.*; -import javax.servlet.http.*; -import org.compiere.model.*; - -/** - * AdRedirector will forward the Ad Request to the destination URL and log the request - * @author Yves Sandfort - * @version $Id$ - */ -@SuppressWarnings("serial") -public class AdRedirector extends HttpServletCM + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.compiere.cm; + +import java.io.IOException; +import javax.servlet.*; +import javax.servlet.http.*; +import org.compiere.model.*; + +/** + * AdRedirector will forward the Ad Request to the destination URL and log the request + * @author Yves Sandfort + * @version $Id$ + */ +@SuppressWarnings("serial") +public class AdRedirector extends HttpServletCM { /** * Process the HTTP Get request + * @param request + * @param response + * @throws ServletException + * @throws IOException */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException - { - if (request.getParameter("CM_Ad_ID")!=null) { - try { - String CM_Ad_ID = request.getParameter("CM_Ad_ID"); - MAd thisAd = new MAd(ctx, Integer.parseInt(CM_Ad_ID), "webCM"); - thisAd.addClick(request); - response.sendRedirect(thisAd.getTargetURL()); - } catch (Exception E) { - response.sendError(500, "Internal Error while processing Ad Redirect..."); - } - } else { - response.sendError(500,"Unknown or illegal Ad set, can't handle request..."); - } - } - + { + if (request.getParameter("CM_Ad_ID")!=null) { + try { + String CM_Ad_ID = request.getParameter("CM_Ad_ID"); + MAd thisAd = new MAd(ctx, Integer.parseInt(CM_Ad_ID), "webCM"); + thisAd.addClick(request); + response.sendRedirect(thisAd.getTargetURL()); + } catch (Exception E) { + response.sendError(500, "Internal Error while processing Ad Redirect..."); + } + } else { + response.sendError(500,"Unknown or illegal Ad set, can't handle request..."); + } + } + /** * Process the HTTP Post request * to simplify we reuse the doGet functionality + * @param request + * @param response + * @throws ServletException + * @throws IOException */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException - { - doGet(request, response); - } // doPost -} + { + doGet(request, response); + } // doPost +} diff --git a/webCM/src/main/servlet/org/compiere/cm/Broadcast.java b/webCM/src/main/servlet/org/compiere/cm/Broadcast.java index 025858885b..e46f652cba 100644 --- a/webCM/src/main/servlet/org/compiere/cm/Broadcast.java +++ b/webCM/src/main/servlet/org/compiere/cm/Broadcast.java @@ -3,154 +3,152 @@ * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * - * by the Free Software Foundation. This program is distributed in the hope * - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along * - * with this program; if not, write to the Free Software Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * - * For the text or an alternative of this public license, you may reach us * - * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * - * or via info@compiere.org or http://www.compiere.org/license.html * - *****************************************************************************/ -package org.compiere.cm; - -import java.io.*; -import javax.servlet.*; -import javax.servlet.http.*; -import org.compiere.util.*; -import org.compiere.cm.utils.*; -import org.compiere.cm.xml.*; - -/** - * Broadcast Servlet This servlet normally does Page processing for all pages, - * so it creates context etc. - * - * @author Yves Sandfort - * @version $Id$ - */ -@SuppressWarnings("serial") -public class Broadcast extends HttpServletCM -{ - - /** - * Process Get Request - * @param request - * @param response - * @throws ServletException - * @throws IOException - */ - public void doGet (HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException - { - // Create New Session + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.compiere.cm; + +import java.io.*; +import javax.servlet.*; +import javax.servlet.http.*; +import org.compiere.util.*; +import org.compiere.cm.utils.*; +import org.compiere.cm.xml.*; + +/** + * Broadcast Servlet This servlet normally does Page processing for all pages, + * so it creates context etc. + * + * @author Yves Sandfort + * @version $Id$ + */ +@SuppressWarnings("serial") +public class Broadcast extends HttpServletCM +{ + + /** + * Process Get Request + * @param request + * @param response + * @throws ServletException + * @throws IOException + */ + public void doGet (HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException + { + // Create New Session HttpSession sess = request.getSession (true); sess.setMaxInactiveInterval (WebEnv.TIMEOUT); StringBuffer output = new StringBuffer (); - // Check whether internalMediaURL is build up, otherwise create it. (can - // be started only from a servlet!) - if (getInternalMediaURL () == null) - setInternalMediaURL (request); + // We will reset the Media URL for each request. Should be moved in the session. + resetInternalMediaURL (request); if (configLoaded && !fatalError) { String acceptLanguage = request.getHeader ("Accept-Language"); - String acceptCharset = request.getHeader ("Accept-Charset"); - LocaleHandler lhandler = new LocaleHandler (acceptLanguage, - acceptCharset); - RequestAnalyzer thisRequest = new RequestAnalyzer (this, request, - false, ""); - StringBuffer xmlCode = new StringBuffer(); - StringBuffer xmlAppend = new StringBuffer(); - - // Fill up ExternalMediaURL - //if (externalMediaURL == null) { - if (thisRequest.getWebProject()!=null) - externalMediaURL = getExternalMediaURL (thisRequest - .getWebProject ().get_ID ()); - else - externalMediaURL = getInternalMediaURL(); - //} - sess.setAttribute ("ctx", getCtx()); - // This Request has a Processor Class Name, so we should process it! - if (thisRequest.getProcClassName ()!=null) { - try { - org.compiere.cm.Extend thisProcessor = thisRequest.getProcClass(); - thisProcessor.doIt (); - xmlAppend.append(thisProcessor.getXML()); - if (thisProcessor.getRedirectURL()!=null) - thisRequest.setRedirectURL(thisProcessor.getRedirectURL()); - } - catch (Exception ex) - { - ex.printStackTrace (); - } - - } - if (thisRequest.getIsRedirect ()) - { - // If we need to redirect as the URL is different do it beofre - // we transmit to client - response.sendRedirect (thisRequest.getRedirectURL ()); - } - else - { - // No need to redirect so we will display the content - // Generate the needed XMLCode - Generator thisXMLGen = new Generator (this, request, - thisRequest, xmlAppend); - xmlCode.append(thisXMLGen.get ()); - // Get or generate Template needed - String xslCode = templateCache.getCM_Template ( - thisRequest.getCM_Container ().getCM_Template_ID (), - thisRequest.getWebProject ().get_ID ()) - .getPreBuildTemplate ().toString (); - // Put it all together - try - { - output.append (XSLTProcessor.run (request, xslCode, xmlCode.toString())); - } - catch (Exception E) - { - response.sendError (500); - } - // response.setContentType("text/html; charset=" + - // lhandler.getCharset()); - response.setContentType ("text/html; charset=UTF-8"); - response.setHeader ("CMBuild", buildDate); - PrintWriter out; - out = response.getWriter (); - out.print (output.toString ()); - out.close (); - - if (thisRequest.getWebProject()!=null) { - // We will log the request in a seperate task to speed up page display - AccessLogger thisAccessLogger = new AccessLogger(request, this, thisRequest); - thisAccessLogger.setFileSize(new java.math.BigDecimal(output.length())); - thisAccessLogger.start(); - } - } - } - else if (fatalError) - { - PrintWriter out; - out = response.getWriter (); - out.print ("

Fatal Error:" + ErrorMessage + "

"); - out.close (); - } - } // doGet - - /** - * Process Post Request (handled by get) - * - * @param request - * @param response - * @throws ServletException - * @throws IOException - */ - public void doPost (HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException - { - doGet (request, response); - } // doPost -} // Broadcast + String acceptCharset = request.getHeader ("Accept-Charset"); + LocaleHandler lhandler = new LocaleHandler (acceptLanguage, + acceptCharset); + RequestAnalyzer thisRequest = new RequestAnalyzer (this, request, + false, ""); + StringBuffer xmlCode = new StringBuffer(); + StringBuffer xmlAppend = new StringBuffer(); + + // Fill up ExternalMediaURL + //if (externalMediaURL == null) { + if (thisRequest.getWebProject()!=null) + externalMediaURL = getExternalMediaURL (thisRequest + .getWebProject ().get_ID ()); + else + externalMediaURL = getInternalMediaURL(); + //} + sess.setAttribute ("ctx", getCtx()); + // This Request has a Processor Class Name, so we should process it! + if (thisRequest.getProcClassName ()!=null) { + try { + org.compiere.cm.Extend thisProcessor = thisRequest.getProcClass(); + thisProcessor.doIt (); + xmlAppend.append(thisProcessor.getXML()); + if (thisProcessor.getRedirectURL()!=null) + thisRequest.setRedirectURL(thisProcessor.getRedirectURL()); + } + catch (Exception ex) + { + ex.printStackTrace (); + } + + } + if (thisRequest.getIsRedirect ()) + { + // If we need to redirect as the URL is different do it beofre + // we transmit to client + response.sendRedirect (thisRequest.getRedirectURL ()); + } + else + { + // No need to redirect so we will display the content + // Generate the needed XMLCode + Generator thisXMLGen = new Generator (this, request, + thisRequest, xmlAppend); + xmlCode.append(thisXMLGen.get ()); + // Get or generate Template needed + String xslCode = templateCache.getCM_Template ( + thisRequest.getCM_Container ().getCM_Template_ID (), + thisRequest.getWebProject ().get_ID ()) + .getPreBuildTemplate ().toString (); + // Put it all together + try + { + output.append (XSLTProcessor.run (request, xslCode, xmlCode.toString())); + } + catch (Exception E) + { + response.sendError (500); + } + // response.setContentType("text/html; charset=" + + // lhandler.getCharset()); + response.setContentType ("text/html; charset=UTF-8"); + response.setHeader ("CMBuild", buildDate); + PrintWriter out; + out = response.getWriter (); + out.print (output.toString ()); + out.close (); + + if (thisRequest.getWebProject()!=null) { + // We will log the request in a seperate task to speed up page display + AccessLogger thisAccessLogger = new AccessLogger(request, this, thisRequest); + thisAccessLogger.setFileSize(new java.math.BigDecimal(output.length())); + thisAccessLogger.start(); + } + } + } + else if (fatalError) + { + PrintWriter out; + out = response.getWriter (); + out.print ("

Fatal Error:" + ErrorMessage + "

"); + out.close (); + } + } // doGet + + /** + * Process Post Request (handled by get) + * + * @param request + * @param response + * @throws ServletException + * @throws IOException + */ + public void doPost (HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException + { + doGet (request, response); + } // doPost +} // Broadcast diff --git a/webCM/src/main/servlet/org/compiere/cm/Community.java b/webCM/src/main/servlet/org/compiere/cm/Community.java index c2bd5e4ba8..8abc51d380 100644 --- a/webCM/src/main/servlet/org/compiere/cm/Community.java +++ b/webCM/src/main/servlet/org/compiere/cm/Community.java @@ -3,10 +3,10 @@ * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * This program is free software; you can redistribute it and/or modify it * under the terms version 2 of the GNU General Public License as published - * by the Free Software Foundation. This program is distributed in the hope - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. + * by the Free Software Foundation. This program is distributed in the hope + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. @@ -22,84 +22,84 @@ import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import org.compiere.util.*; -import org.compiere.model.*; -import org.compiere.cm.utils.*; - -/** - * Community Servlet to handle login, BPartner create & Update etc. - * - * @author Yves Sandfort - * @version $Id$ - */ -public class Community extends HttpServletCM -{ - /** Logging */ - private CLogger log = CLogger.getCLogger(getClass()); - - /** - * Process Get Request - * @param request - * @param response - * @throws ServletException - * @throws IOException - */ - public void doGet (HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException - { +import javax.servlet.http.HttpSession; +import org.compiere.util.*; +import org.compiere.model.*; +import org.compiere.cm.utils.*; + +/** + * Community Servlet to handle login, BPartner create & Update etc. + * + * @author Yves Sandfort + * @version $Id$ + */ +public class Community extends HttpServletCM +{ + /** Logging */ + private CLogger log = CLogger.getCLogger(getClass()); + + /** + * Process Get Request + * @param request + * @param response + * @throws ServletException + * @throws IOException + */ + public void doGet (HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException + { HttpSession sess = request.getSession (true); sess.setMaxInactiveInterval (WebEnv.TIMEOUT); - Properties ctx = getCtx(); + ctx = getCtx(); if (sess.getAttribute ("ctx")!=null) ctx = (Properties) sess.getAttribute ("ctx"); - - if (ctx.get ("#AD_Client_ID")!=null) { - RequestAnalyzer thisRequest = new RequestAnalyzer(this, request, false, null); - } - - - WebSessionCtx wsc = (WebSessionCtx)sess.getAttribute(WebSessionCtx.NAME); - // Create New - if (wsc == null) - { - int [] allIDs = X_W_Store.getAllIDs ("W_Store", "AD_Client_ID=" + ctx.get ("#AD_Client_ID"), ""); - if (allIDs!=null && allIDs.length>0) - { - wsc = WebSessionCtx.get(request, allIDs[0]); - wsc.setWStore (allIDs[0]); - sess.setAttribute(WebSessionCtx.NAME, wsc); - } - } - - WebLogin thisLogin = new WebLogin(request, response, ctx); - thisLogin.init (); - if (!thisLogin.action ()) - { - WebUtil.reload(thisLogin.getMessage(), thisLogin.getUpdate_page (), sess, request, response, getServletContext()); - return; - } - String url = thisLogin.getForward (); - if (!url.startsWith("/")) - url = "/" + url; - log.info("doPost - Forward to " + url); - response.sendRedirect (url); - } - - /** - * Process Post Request (handled by get) - * - * @param request - * @param response - * @throws ServletException - * @throws IOException - */ - public void doPost (HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException - { - doGet (request, response); - } // doPost - -} + + if (ctx.get ("#AD_Client_ID")!=null) { + RequestAnalyzer thisRequest = new RequestAnalyzer(this, request, false, null); + } + + + WebSessionCtx wsc = (WebSessionCtx)sess.getAttribute(WebSessionCtx.NAME); + // Create New + if (wsc == null) + { + int [] allIDs = X_W_Store.getAllIDs ("W_Store", "AD_Client_ID=" + ctx.get ("#AD_Client_ID"), ""); + if (allIDs!=null && allIDs.length>0) + { + wsc = WebSessionCtx.get(request, allIDs[0]); + wsc.setWStore (allIDs[0]); + sess.setAttribute(WebSessionCtx.NAME, wsc); + } + } + + WebLogin thisLogin = new WebLogin(request, response, ctx); + thisLogin.init (); + if (!thisLogin.action ()) + { + WebUtil.reload(thisLogin.getMessage(), thisLogin.getUpdate_page (), sess, request, response, getServletContext()); + return; + } + String url = thisLogin.getForward (); + if (!url.startsWith("/")) + url = "/" + url; + log.info("doPost - Forward to " + url); + response.sendRedirect (url); + } + + /** + * Process Post Request (handled by get) + * + * @param request + * @param response + * @throws ServletException + * @throws IOException + */ + public void doPost (HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException + { + doGet (request, response); + } // doPost + +} diff --git a/webCM/src/main/servlet/org/compiere/cm/Extend.java b/webCM/src/main/servlet/org/compiere/cm/Extend.java index f4519251b8..2a12dfa090 100644 --- a/webCM/src/main/servlet/org/compiere/cm/Extend.java +++ b/webCM/src/main/servlet/org/compiere/cm/Extend.java @@ -3,10 +3,10 @@ * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * This program is free software; you can redistribute it and/or modify it * under the terms version 2 of the GNU General Public License as published - * by the Free Software Foundation. This program is distributed in the hope - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. + * by the Free Software Foundation. This program is distributed in the hope + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. @@ -15,104 +15,105 @@ *****************************************************************************/ package org.compiere.cm; -import java.io.Serializable; -import org.compiere.util.*; -import java.util.*; -import javax.servlet.http.*; - -/** - * - * - * @author Yves Sandfort - * @version $Id$ - */ -public abstract class Extend implements Serializable -{ - protected HttpServletRequest e_request; - protected HttpSession e_session; - protected Properties ctx; - protected WebInfo wi = null; - private StringBuffer e_xmlCode; +import java.io.Serializable; +import org.compiere.util.*; +import java.util.*; +import javax.servlet.http.*; + +/** + * + * + * @author Yves Sandfort + * @version $Id$ + */ +public abstract class Extend implements Serializable +{ + protected HttpServletRequest e_request; + protected HttpSession e_session; + protected Properties ctx; + protected WebInfo wi = null; + private StringBuffer e_xmlCode; private String e_redirectURL; /** - * Extend - * @param request + * Extend + * @param request + * @param t_ctx */ public Extend (HttpServletRequest request, Properties t_ctx) { ctx = t_ctx; - e_request = request; - e_session = request.getSession(); - if (e_session.getAttribute (WebInfo.NAME)!=null) - { - wi = (WebInfo) e_session.getAttribute (WebInfo.NAME); - } - e_xmlCode = new StringBuffer(); - } - - /** - * set XML Code - * @param xmlCode - */ - protected void setXML(StringBuffer xmlCode) - { - e_xmlCode = xmlCode; - } - - /** - * append XML Code - * @param xmlCode String containing XMLCode - */ - public void appendXML(String xmlCode) - { - e_xmlCode.append(xmlCode); - } - - /** - * append XML Code - * @param xmlCode Stringbuffer containing XMLCode - */ - public void appendXML(StringBuffer xmlCode) - { - e_xmlCode.append(xmlCode); - } - - /** - * get XML Code - * @returns xmlCode - */ - protected StringBuffer getXML() - { - if (e_xmlCode==null) - return new StringBuffer(""); - return e_xmlCode; - } - - /** - * get Redirect URL - * @param redirectURL - */ - protected String getRedirectURL() - { - return e_redirectURL; - } - - /** - * set Redirect URL - * @param redirectURL - */ - protected void setRedirectURL(String redirectURL) - { - e_redirectURL = redirectURL; - } - - protected Properties getCtx() - { - return ctx; - } - - protected boolean doIt() - { - return true; - } -} + e_request = request; + e_session = request.getSession(); + if (e_session.getAttribute (WebInfo.NAME)!=null) + { + wi = (WebInfo) e_session.getAttribute (WebInfo.NAME); + } + e_xmlCode = new StringBuffer(); + } + + /** + * set XML Code + * @param xmlCode + */ + protected void setXML(StringBuffer xmlCode) + { + e_xmlCode = xmlCode; + } + + /** + * append XML Code + * @param xmlCode String containing XMLCode + */ + public void appendXML(String xmlCode) + { + e_xmlCode.append(xmlCode); + } + + /** + * append XML Code + * @param xmlCode Stringbuffer containing XMLCode + */ + public void appendXML(StringBuffer xmlCode) + { + e_xmlCode.append(xmlCode); + } + + /** + * get XML Code + * @returns xmlCode + */ + protected StringBuffer getXML() + { + if (e_xmlCode==null) + return new StringBuffer(""); + return e_xmlCode; + } + + /** + * get Redirect URL + * @param redirectURL + */ + protected String getRedirectURL() + { + return e_redirectURL; + } + + /** + * set Redirect URL + * @param redirectURL + */ + protected void setRedirectURL(String redirectURL) + { + e_redirectURL = redirectURL; + } + + protected Properties getCtx() + { + return ctx; + } + + protected boolean doIt() + { + return true; + } +} diff --git a/webCM/src/main/servlet/org/compiere/cm/HttpServletCM.java b/webCM/src/main/servlet/org/compiere/cm/HttpServletCM.java index eb6479ce46..c67adc9197 100644 --- a/webCM/src/main/servlet/org/compiere/cm/HttpServletCM.java +++ b/webCM/src/main/servlet/org/compiere/cm/HttpServletCM.java @@ -3,377 +3,374 @@ * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * - * by the Free Software Foundation. This program is distributed in the hope * - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along * - * with this program; if not, write to the Free Software Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * - * For the text or an alternative of this public license, you may reach us * - * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * - * or via info@compiere.org or http://www.compiere.org/license.html * - *****************************************************************************/ -package org.compiere.cm; - -import java.util.*; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.*; -import org.compiere.cm.cache.*; -import org.compiere.util.*; - -/** - * HttpServletCM we extended the normal HttpServlet to store some global - * environment and cache here - * - * @author Yves Sandfort - * @version $Id$ - */ -public class HttpServletCM extends HttpServlet -{ - - /** - * serialVersionUID for serializable HttpServlet - */ - private static final long serialVersionUID = 1L; - - /** - * status if config is loaded... true if loaded false is default after - * startup - */ - protected static boolean configLoaded = false; - - /** - * fatalError stores a shared variable which will be set to yes whenever a - * global Server Error from which we can not recover occurs. You should not - * set it manually as will stop all servlet's and will not rerun them unless - * set back to false true if there is a global error false if there is no - * global error - */ - protected static boolean fatalError = false; - - /** - * belongs to fatalError, should get a corresponding error message to - * display in the web frontend. null if no error - */ - protected static String ErrorMessage = null; - - /** - * special application templates ssometimes depend on a special version, - * this is to give them an idea. Is included in the XML Code. - */ - protected static String buildDate = "200606062343"; - - /** - * DomainCache is storing the domains of the system, to reduce DB lookups - */ - protected static Domain domainCache = new Domain (); - - /** - * WebProject is storing the projects often used by the system, to reduce DB - * lookups - */ - protected static WebProject webProjectCache = new WebProject (); - - /** - * ChatCache is storing the chat's often used by the system, to reduce DB - * lookups - */ - protected static Chat chatCache = new Chat (); - - /** - * ContainerCache is storing the containers's often used by the system, to - * reduce DB lookups - */ - protected static Container containerCache = new Container (); - - /** - * ContainerElementCache is storing the container's elements often used by - * the system, to reduce DB lookups - */ - protected static ContainerElement containerElementCache = new ContainerElement (); - - /** - * ContainerTreeCache is storing the container's tree often used by the - * system, to reduce DB lookups - */ - protected static ContainerTree containerTreeCache = new ContainerTree (); - - /** - * MediaServerCache is storing the project's media server in combination - * with Request Info - */ - protected static MediaServer mediaServerCache = new MediaServer (); - - /** - * TemplateCache stores the oftens used templates - */ - protected static Template templateCache = new Template (); - - /** - * XMLCache stores the oftens used templates - */ - protected static XML xmlCache = new XML (); - - /** - * Context of this Servlet - */ - protected Properties ctx = null; - - /** - * String containing the internal media path (should not be used for real + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.compiere.cm; + +import java.util.*; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.*; +import org.compiere.cm.cache.*; +import org.compiere.util.*; + +/** + * HttpServletCM we extended the normal HttpServlet to store some global + * environment and cache here + * + * @author Yves Sandfort + * @version $Id$ + */ +public class HttpServletCM extends HttpServlet +{ + + /** + * serialVersionUID for serializable HttpServlet + */ + private static final long serialVersionUID = 1L; + + /** + * status if config is loaded... true if loaded false is default after + * startup + */ + protected static boolean configLoaded = false; + + /** + * fatalError stores a shared variable which will be set to yes whenever a + * global Server Error from which we can not recover occurs. You should not + * set it manually as will stop all servlet's and will not rerun them unless + * set back to false true if there is a global error false if there is no + * global error + */ + protected static boolean fatalError = false; + + /** + * belongs to fatalError, should get a corresponding error message to + * display in the web frontend. null if no error + */ + protected static String ErrorMessage = null; + + /** + * special application templates ssometimes depend on a special version, + * this is to give them an idea. Is included in the XML Code. + */ + protected static String buildDate = "200606062343"; + + /** + * DomainCache is storing the domains of the system, to reduce DB lookups + */ + protected static Domain domainCache = new Domain (); + + /** + * WebProject is storing the projects often used by the system, to reduce DB + * lookups + */ + protected static WebProject webProjectCache = new WebProject (); + + /** + * ChatCache is storing the chat's often used by the system, to reduce DB + * lookups + */ + protected static Chat chatCache = new Chat (); + + /** + * ContainerCache is storing the containers's often used by the system, to + * reduce DB lookups + */ + protected static Container containerCache = new Container (); + + /** + * ContainerElementCache is storing the container's elements often used by + * the system, to reduce DB lookups + */ + protected static ContainerElement containerElementCache = new ContainerElement (); + + /** + * ContainerTreeCache is storing the container's tree often used by the + * system, to reduce DB lookups + */ + protected static ContainerTree containerTreeCache = new ContainerTree (); + + /** + * MediaServerCache is storing the project's media server in combination + * with Request Info + */ + protected static MediaServer mediaServerCache = new MediaServer (); + + /** + * TemplateCache stores the oftens used templates + */ + protected static Template templateCache = new Template (); + + /** + * XMLCache stores the oftens used templates + */ + protected static XML xmlCache = new XML (); + + /** + * Context of this Servlet + */ + protected Properties ctx = null; + + /** + * String containing the internal media path (should not be used for real * page deployment) the normal broadcaster will replace this URL with the * correct media server for this client */ - protected static String internalMediaURL = null; + protected String internalMediaURL = null; /** * String containing the external media URL - */ - protected String externalMediaURL = null; - - /** Logger */ - protected CLogger log = CLogger.getCLogger (this.getClass ()); - - /** - * Init - * - * @param config - * @throws ServletException - */ - public void init (ServletConfig config) - throws ServletException - { - super.init (config); - if (!WebEnv.initWeb (config)) - throw new ServletException ("Broadcast.init"); - if (!DB.isConnected ()) - { - fatalError = true; - ErrorMessage = "Connection to DB dropped!"; - log.severe ("No Database Connection!"); - } - org.compiere.cm.utils.CMEnv cmEnv = new org.compiere.cm.utils.CMEnv (); - ctx = cmEnv.getDefaults (); - chatCache.setCtx (ctx); - containerCache.setCtx (ctx); - containerElementCache.setCtx (ctx); - containerTreeCache.setCtx (ctx); - domainCache.setCtx (ctx); - mediaServerCache.setCtx (ctx); - templateCache.setCtx (ctx); - webProjectCache.setCtx (ctx); - xmlCache.setCtx(ctx); - if (!fatalError) - configLoaded = true; - } - - /** - * Returns the current build version/date of the servlet engine, this is - * used by special application templates which depend on certain - * functionality to check for their availability. - * - * @return the Build Date as a string in format YYYYMMDDHHMM - */ - public String getBuildDate () - { - return buildDate; - } - - /** - * Returns the ContainerCache Object - * - * @return CO Object Container - */ - public org.compiere.cm.cache.Container getContainerCache () - { - return containerCache; - } - - /** - * Returns the ChatCache Object - * - * @return CO Object Chat - */ - public org.compiere.cm.cache.Chat getChatCache () - { - return chatCache; - } - - /** - * Returns the ContainerElementCache Object - * - * @return CO Object ContainerElement - */ - public org.compiere.cm.cache.ContainerElement getContainerElementCache () - { - return containerElementCache; - } - - /** - * Returns the ContainerTreeCache Object - * - * @return CO Object ContainerElement - */ - public org.compiere.cm.cache.ContainerTree getContainerTreeCache () - { - return containerTreeCache; - } - - /** - * Returns the DomainCache Object - * - * @return CO Object Domain - */ - public org.compiere.cm.cache.Domain getDomainCache () - { - return domainCache; - } - - /** - * Returns the MediaServerCache Object - * - * @return CO Object MediaServer - */ - public org.compiere.cm.cache.MediaServer getMediaServerCache () - { - return mediaServerCache; - } - - /** - * Returns the WebProjectCache Object - * - * @return CO Object WebProject - */ - public org.compiere.cm.cache.WebProject getWebProjectCache () - { - return webProjectCache; - } - - /** - * Returns the Template Object - * - * @return CO Object Template - */ - public org.compiere.cm.cache.Template getTemplateCache () - { - return templateCache; - } - - /** - * Returns the Template Object - * - * @return CO Object Template - */ - public org.compiere.cm.cache.XML getXMLCache () - { - return xmlCache; - } - - /** - * Returns the internalMediaURL for replacement - * - * @return String with internal MediaURL normally context + "/" + media + - * "/" - */ - public String getInternalMediaURL () - { - return internalMediaURL; - } - - /** - * Returns the sessionMediaURL, this is the ideal Media URL for this Request - * - * @param request - * the Request for this - * @param CM_WebProject_ID - * Returns the WebProject ID - * @return String with session MediaURL, if none found we return the - * internal one - */ - public String getSessionMediaURL (HttpServletRequest request, - int CM_WebProject_ID) - { - String sessionMediaURL = getMediaServerCache ().getMediaServer ( - getCtx (), CM_WebProject_ID, null); - if (sessionMediaURL == null) - sessionMediaURL = getInternalMediaURL (); - return internalMediaURL; - } - - /** - * Sets internal Media URL + */ + protected String externalMediaURL = null; + + /** Logger */ + protected CLogger log = CLogger.getCLogger (this.getClass ()); + + /** + * Init + * + * @param config + * @throws ServletException + */ + public void init (ServletConfig config) + throws ServletException + { + super.init (config); + if (!WebEnv.initWeb (config)) + throw new ServletException ("Broadcast.init"); + if (!DB.isConnected ()) + { + fatalError = true; + ErrorMessage = "Connection to DB dropped!"; + log.severe ("No Database Connection!"); + } + org.compiere.cm.utils.CMEnv cmEnv = new org.compiere.cm.utils.CMEnv (); + ctx = cmEnv.getDefaults (); + chatCache.setCtx (ctx); + containerCache.setCtx (ctx); + containerElementCache.setCtx (ctx); + containerTreeCache.setCtx (ctx); + domainCache.setCtx (ctx); + mediaServerCache.setCtx (ctx); + templateCache.setCtx (ctx); + webProjectCache.setCtx (ctx); + xmlCache.setCtx(ctx); + if (!fatalError) + configLoaded = true; + } + + /** + * Returns the current build version/date of the servlet engine, this is + * used by special application templates which depend on certain + * functionality to check for their availability. + * + * @return the Build Date as a string in format YYYYMMDDHHMM + */ + public String getBuildDate () + { + return buildDate; + } + + /** + * Returns the ContainerCache Object + * + * @return CO Object Container + */ + public org.compiere.cm.cache.Container getContainerCache () + { + return containerCache; + } + + /** + * Returns the ChatCache Object + * + * @return CO Object Chat + */ + public org.compiere.cm.cache.Chat getChatCache () + { + return chatCache; + } + + /** + * Returns the ContainerElementCache Object + * + * @return CO Object ContainerElement + */ + public org.compiere.cm.cache.ContainerElement getContainerElementCache () + { + return containerElementCache; + } + + /** + * Returns the ContainerTreeCache Object + * + * @return CO Object ContainerElement + */ + public org.compiere.cm.cache.ContainerTree getContainerTreeCache () + { + return containerTreeCache; + } + + /** + * Returns the DomainCache Object + * + * @return CO Object Domain + */ + public org.compiere.cm.cache.Domain getDomainCache () + { + return domainCache; + } + + /** + * Returns the MediaServerCache Object + * + * @return CO Object MediaServer + */ + public org.compiere.cm.cache.MediaServer getMediaServerCache () + { + return mediaServerCache; + } + + /** + * Returns the WebProjectCache Object + * + * @return CO Object WebProject + */ + public org.compiere.cm.cache.WebProject getWebProjectCache () + { + return webProjectCache; + } + + /** + * Returns the Template Object + * + * @return CO Object Template + */ + public org.compiere.cm.cache.Template getTemplateCache () + { + return templateCache; + } + + /** + * Returns the Template Object + * + * @return CO Object Template + */ + public org.compiere.cm.cache.XML getXMLCache () + { + return xmlCache; + } + + /** + * Returns the internalMediaURL for replacement + * + * @return String with internal MediaURL normally context + "/" + media + + * "/" + */ + public String getInternalMediaURL () + { + return internalMediaURL; + } + + /** + * Returns the sessionMediaURL, this is the ideal Media URL for this Request + * + * @param request + * the Request for this + * @param CM_WebProject_ID + * Returns the WebProject ID + * @return String with session MediaURL, if none found we return the + * internal one + */ + public String getSessionMediaURL (HttpServletRequest request, + int CM_WebProject_ID) + { + String sessionMediaURL = getMediaServerCache ().getMediaServer ( + getCtx (), CM_WebProject_ID, null); + if (sessionMediaURL == null) + sessionMediaURL = getInternalMediaURL (); + return internalMediaURL; + } + + /** + * Sets internal Media URL * * @param request */ - public void setInternalMediaURL (HttpServletRequest request) + public void resetInternalMediaURL (HttpServletRequest request) { - if (internalMediaURL == null) - { - internalMediaURL = request.getRequestURL ().toString ().substring ( - 0, - request.getRequestURL ().toString ().indexOf ( - request.getServerName ()) - + request.getServerName ().length ()) - + request.getContextPath () + "/media/"; - } + internalMediaURL = request.getRequestURL ().toString ().substring ( + 0, + request.getRequestURL ().toString ().indexOf ( + request.getServerName ()) + + request.getServerName ().length ()) + + request.getContextPath () + "/media/"; } /** - * Returns the Context of the current session. This is a very sensitive - * function as we will take care of all parameters here! - * - * @return Context - */ - public Properties getCtx () - { - return ctx; - } - - /** - * Returns the current External Media URL for the Project - * - * @param CM_WebProject_ID - * WebProject - * @return ExternalMediaURL as String - */ - public String getExternalMediaURL (int CM_WebProject_ID) - { - externalMediaURL = getMediaServerCache ().getMediaServer (getCtx (), - CM_WebProject_ID, null); - if (externalMediaURL != null - && externalMediaURL.charAt (externalMediaURL.length () - 1) != '/') - externalMediaURL = externalMediaURL + "/"; - return externalMediaURL; - } - - /** - * Returns the current External Media URL be carefull this Function needs to - * be called after the URL is set! - * - * @return ExternalMediaURL as String - */ - public String getExternalMediaURL () - { - return externalMediaURL; - } - - /** - * setAD_Client_ID to update AD_Client as soon System has recognized the Client - * @param newVal - */ - public void setAD_Client_ID(int newVal) - { - ctx.put ("#AD_Client_ID", (String) (""+newVal)); - } - - /** - * get Servlet Logger - * @return CLooger log - */ - public CLogger getLogger() - { - return log; - } -} + * Returns the Context of the current session. This is a very sensitive + * function as we will take care of all parameters here! + * + * @return Context + */ + public Properties getCtx () + { + return ctx; + } + + /** + * Returns the current External Media URL for the Project + * + * @param CM_WebProject_ID + * WebProject + * @return ExternalMediaURL as String + */ + public String getExternalMediaURL (int CM_WebProject_ID) + { + externalMediaURL = getMediaServerCache ().getMediaServer (getCtx (), + CM_WebProject_ID, null); + if (externalMediaURL != null + && externalMediaURL.charAt (externalMediaURL.length () - 1) != '/') + externalMediaURL = externalMediaURL + "/"; + return externalMediaURL; + } + + /** + * Returns the current External Media URL be carefull this Function needs to + * be called after the URL is set! + * + * @return ExternalMediaURL as String + */ + public String getExternalMediaURL () + { + return externalMediaURL; + } + + /** + * setAD_Client_ID to update AD_Client as soon System has recognized the Client + * @param newVal + */ + public void setAD_Client_ID(int newVal) + { + ctx.put ("#AD_Client_ID", (String) (""+newVal)); + } + + /** + * get Servlet Logger + * @return CLooger log + */ + public CLogger getLogger() + { + return log; + } +} diff --git a/webCM/src/main/servlet/org/compiere/cm/MediaBroadcast.java b/webCM/src/main/servlet/org/compiere/cm/MediaBroadcast.java index fae98fd01c..d4fa963f4c 100644 --- a/webCM/src/main/servlet/org/compiere/cm/MediaBroadcast.java +++ b/webCM/src/main/servlet/org/compiere/cm/MediaBroadcast.java @@ -1,124 +1,132 @@ /****************************************************************************** - * Product: Adempiere ERP & CRM Smart Business Solution * + * Product: Compiere ERP & CRM Smart Business Solution * * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * - * by the Free Software Foundation. This program is distributed in the hope * - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along * - * with this program; if not, write to the Free Software Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * - * For the text or an alternative of this public license, you may reach us * - * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * - * or via info@compiere.org or http://www.compiere.org/license.html * - *****************************************************************************/ -package org.compiere.cm; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.PrintWriter; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import org.compiere.model.MImage; -import org.compiere.model.MMedia; -import org.compiere.util.WebEnv; - -/** - * Broadcast Servlet - * - * @author $Author$ - * @version $Id$ - */ -@SuppressWarnings("serial") -public class MediaBroadcast extends HttpServletCM + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.compiere.cm; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintWriter; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import org.compiere.model.MImage; +import org.compiere.model.MMedia; +import org.compiere.util.WebEnv; + +/** + * Broadcast Servlet + * + * @author $Author$ + * @version $Id$ + */ +@SuppressWarnings("serial") +public class MediaBroadcast extends HttpServletCM { /** * Process the HTTP Get request + * @param request + * @param response + * @throws ServletException + * @throws IOException */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException - { - // Create New Session - HttpSession sess = request.getSession(true); - sess.setMaxInactiveInterval(WebEnv.TIMEOUT); - - if (configLoaded && !fatalError) { - String requestURL = request.getRequestURL().toString(); - String serverName = request.getServerName(); - String baseURL = requestURL.substring(0,requestURL.indexOf(serverName)+serverName.length()+6)+request.getContextPath(); - String relativeURL = requestURL.substring(baseURL.length()); - // If the relativeURL still contains / we will simply strip them off... - if (relativeURL.indexOf("/")>=0) - relativeURL = relativeURL.substring(relativeURL.lastIndexOf("/")+1); - - // We should have only an ID before the first dot. - Integer mediaID = null; - try { - if (relativeURL.indexOf(".")>=0) { - mediaID = Integer.parseInt(relativeURL.substring(0,relativeURL.indexOf("."))); - } else { - mediaID = Integer.parseInt(relativeURL); - } - } catch (NumberFormatException ne) { - - } - - if (mediaID!=null && mediaID.intValue()>0) { - - MMedia thisMedia = new org.compiere.model.MMedia(webProjectCache.getCtx(),mediaID,null); - if (thisMedia!=null && thisMedia.get_ID()>0) { - if (thisMedia.getMediaType ().equals ("CSS")) { - response.setContentType("text/css"); - // Text Content will get handled via direct Stream - response.setContentLength (thisMedia.getContentText ().length ()); - PrintWriter out; - out = response.getWriter (); - out.print (thisMedia.getContentText ()); - out.close (); - } else { - response.setContentType(thisMedia.getMediaType()); - // Binary / Image content will get handled here - MImage thisImage = thisMedia.getImage(); - response.setContentLength(thisImage.getData().length); - - // Open the file and output streams - byte[] buffer = thisImage.getData(); - ByteArrayInputStream in = new ByteArrayInputStream(buffer); - OutputStream out = response.getOutputStream(); - - // Copy the contents of the file to the output stream - byte[] buf = new byte[1024]; - int count = 0; - while ((count = in.read(buf)) >= 0) { - out.write(buf, 0, count); - } - in.close(); - out.close(); - } - } else { - response.sendError(404); - } - } else { - response.sendError(404); - } - } else if (fatalError) { - response.sendError(500, ErrorMessage); - } - } // doGet + { + // Create New Session + HttpSession sess = request.getSession(true); + sess.setMaxInactiveInterval(WebEnv.TIMEOUT); + + if (configLoaded && !fatalError) { + String requestURL = request.getRequestURL().toString(); + String serverName = request.getServerName(); + String baseURL = requestURL.substring(0,requestURL.indexOf(serverName)+serverName.length()+6)+request.getContextPath(); + String relativeURL = requestURL.substring(baseURL.length()); + // If the relativeURL still contains / we will simply strip them off... + if (relativeURL.indexOf("/")>=0) + relativeURL = relativeURL.substring(relativeURL.lastIndexOf("/")+1); + + // We should have only an ID before the first dot. + Integer mediaID = null; + try { + if (relativeURL.indexOf(".")>=0) { + mediaID = Integer.parseInt(relativeURL.substring(0,relativeURL.indexOf("."))); + } else { + mediaID = Integer.parseInt(relativeURL); + } + } catch (NumberFormatException ne) { + + } + + if (mediaID!=null && mediaID.intValue()>0) { + + MMedia thisMedia = new org.compiere.model.MMedia(webProjectCache.getCtx(),mediaID,null); + if (thisMedia!=null && thisMedia.get_ID()>0) { + if (thisMedia.getMediaType ().equals ("CSS")) { + response.setContentType("text/css"); + // Text Content will get handled via direct Stream + response.setContentLength (thisMedia.getContentText ().length ()); + PrintWriter out; + out = response.getWriter (); + out.print (thisMedia.getContentText ()); + out.close (); + } else { + response.setContentType(thisMedia.getMediaType()); + // Binary / Image content will get handled here + MImage thisImage = thisMedia.getImage(); + response.setContentLength(thisImage.getData().length); + + // Open the file and output streams + byte[] buffer = thisImage.getData(); + ByteArrayInputStream in = new ByteArrayInputStream(buffer); + OutputStream out = response.getOutputStream(); + + // Copy the contents of the file to the output stream + byte[] buf = new byte[1024]; + int count = 0; + while ((count = in.read(buf)) >= 0) { + out.write(buf, 0, count); + } + in.close(); + out.close(); + } + } else { + response.sendError(404); + } + } else { + response.sendError(404); + } + } else if (fatalError) { + response.sendError(500, ErrorMessage); + } + } // doGet /** - * Process the HTTP Post request + * Process the HTTP Post request + * @param request + * @param response + * @throws ServletException + * @throws IOException */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException - { - doGet(request, response); - } // doPost - -} // Broadcast + { + doGet(request, response); + } // doPost + +} // Broadcast diff --git a/webCM/src/main/servlet/org/compiere/cm/RequestServlet.java b/webCM/src/main/servlet/org/compiere/cm/RequestServlet.java index 03274d5103..b35702efc4 100644 --- a/webCM/src/main/servlet/org/compiere/cm/RequestServlet.java +++ b/webCM/src/main/servlet/org/compiere/cm/RequestServlet.java @@ -3,10 +3,10 @@ * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * This program is free software; you can redistribute it and/or modify it * under the terms version 2 of the GNU General Public License as published - * by the Free Software Foundation. This program is distributed in the hope - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. + * by the Free Software Foundation. This program is distributed in the hope + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. @@ -15,78 +15,77 @@ *****************************************************************************/ package org.compiere.cm; -import java.io.IOException; -import java.util.Properties; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Properties; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.compiere.cm.request.Request; -import org.compiere.util.CLogger; import org.compiere.util.WebEnv; import org.compiere.util.WebSessionCtx; import org.compiere.util.WebUtil; - -/** - * Request Servlet to handle Request create & Update etc. - * - * @author Kai Viiksaar + +/** + * Request Servlet to handle Request create & Update etc. + * + * @author Kai Viiksaar * @version $Id: RequestServlet.java,v 1.1 2006/10/11 06:30:11 comdivision Exp $ */ public class RequestServlet extends HttpServletCM { - /** Logging */ - private CLogger log = CLogger.getCLogger(getClass()); + /** serialVersionUID */ + private static final long serialVersionUID = 6979583935052312291L; /** * Process Get Request - * @param request - * @param response - * @throws ServletException - * @throws IOException - */ - public void doGet (HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException - { - String l_szRequestID = null; + * @param request + * @param response + * @throws ServletException + * @throws IOException + */ + public void doGet (HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException + { + String l_szRequestID = null; HttpSession sess = request.getSession (true); sess.setMaxInactiveInterval (WebEnv.TIMEOUT); - Properties ctx = getCtx(); + ctx = getCtx(); if (sess.getAttribute ("ctx")!=null) ctx = (Properties) sess.getAttribute ("ctx"); - - WebSessionCtx wsc = (WebSessionCtx)sess.getAttribute(WebSessionCtx.NAME); - - // Create New Request - if (wsc != null) { - String mode = WebUtil.getParameter(request, "Mode"); - if (mode != null && mode.equals("RequestNew")) { - l_szRequestID = Request.createRequest(request, ctx); - } else if (mode != null && mode.equals("RequestChange")) { - l_szRequestID = Request.changeRequest(request, ctx); - } - } - String url = request.getParameter("ForwardTo") + l_szRequestID; - if (!url.startsWith("/")) - url = "/" + url; - response.sendRedirect(url); - } - - /** - * Process Post Request (handled by get) - * - * @param request - * @param response - * @throws ServletException - * @throws IOException - */ - public void doPost (HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException - { - doGet (request, response); - } // doPost - -} + + WebSessionCtx wsc = (WebSessionCtx)sess.getAttribute(WebSessionCtx.NAME); + + // Create New Request + if (wsc != null) { + String mode = WebUtil.getParameter(request, "Mode"); + if (mode != null && mode.equals("RequestNew")) { + l_szRequestID = Request.createRequest(request, ctx); + } else if (mode != null && mode.equals("RequestChange")) { + l_szRequestID = Request.changeRequest(request, ctx); + } + } + String url = request.getParameter("ForwardTo") + l_szRequestID; + if (!url.startsWith("/")) + url = "/" + url; + response.sendRedirect(url); + } + + /** + * Process Post Request (handled by get) + * + * @param request + * @param response + * @throws ServletException + * @throws IOException + */ + public void doPost (HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException + { + doGet (request, response); + } // doPost + +} diff --git a/webCM/src/main/servlet/org/compiere/cm/StageBroadcast.java b/webCM/src/main/servlet/org/compiere/cm/StageBroadcast.java index a7f61856fb..df8b721ef1 100644 --- a/webCM/src/main/servlet/org/compiere/cm/StageBroadcast.java +++ b/webCM/src/main/servlet/org/compiere/cm/StageBroadcast.java @@ -3,118 +3,118 @@ * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * - * by the Free Software Foundation. This program is distributed in the hope * - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along * - * with this program; if not, write to the Free Software Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * - * For the text or an alternative of this public license, you may reach us * - * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * - * or via info@compiere.org or http://www.compiere.org/license.html * - *****************************************************************************/ + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ package org.compiere.cm; import java.io.*; -import java.util.*; import javax.servlet.*; import javax.servlet.http.*; -import org.compiere.Adempiere; import org.compiere.util.*; -import org.compiere.model.*; import org.compiere.cm.utils.*; import org.compiere.cm.xml.*; -/** - * Broadcast Servlet - * - * @author $Author$ - * @version $Id$ - */ +/** + * Broadcast Servlet + * + * @author $Author$ + * @version $Id$ + */ public class StageBroadcast extends HttpServletCM { + /** serialVersionUID */ + private static final long serialVersionUID = 7348394433516908807L; + /** * Handle Get Request * - * @param request - * @param response - * @throws ServletException - * @throws IOException - */ - public void doGet (HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException - { - // Create New Session - HttpSession sess = request.getSession (true); - sess.setMaxInactiveInterval (WebEnv.TIMEOUT); - StringBuffer output = new StringBuffer (); - if (configLoaded && !fatalError) - { - String acceptLanguage = request.getHeader ("Accept-Language"); - String acceptCharset = request.getHeader ("Accept-Charset"); - LocaleHandler lhandler = new LocaleHandler (acceptLanguage, - acceptCharset); - RequestAnalyzer thisRequest = new RequestAnalyzer (this, request, - true, ""); - if (thisRequest.getIsRedirect ()) - { - // If we need to redirect as the URL is different do it beofre - // we transmit to client - response.sendRedirect (thisRequest.getRedirectURL ()); - } - else - { - // No need to redirect so we will display the content - // Generate the needed XMLCode - Generator thisXMLGen = new Generator (this, request, - thisRequest, new StringBuffer("")); - // thisXMLGen.addPObject(thisRequest.getCM_Container()); - String xmlCode = thisXMLGen.get (); - // Get or generate Template needed - String xslCode = templateCache.getCM_Template ( - thisRequest.getCM_Container ().getCM_Template_ID (), - thisRequest.getWebProject ().get_ID ()) - .getTemplateXST (); - // Put it all together - try - { - output.append (XSLTProcessor.run (request, xslCode, xmlCode)); - } - catch (Exception E) - { - response.sendError (500); - } - response.setContentType ("text/html; charset=" - + lhandler.getCharset ()); - response.setHeader ("CMBuild", buildDate); - PrintWriter out; - out = response.getWriter (); - out.print (output.toString ()); - out.close (); - } - } - else if (fatalError) - { - PrintWriter out; - out = response.getWriter (); - out.print ("

Fatal Error:" + ErrorMessage + "

"); - out.close (); - } - } // doGet - - /** - * Process Post Request - handled by Get - * - * @param request - * @param response - * @throws ServletException - * @throws IOException - */ - public void doPost (HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException - { - doGet (request, response); - } // doPost -} // Broadcast + * @param request + * @param response + * @throws ServletException + * @throws IOException + */ + public void doGet (HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException + { + // Create New Session + HttpSession sess = request.getSession (true); + sess.setMaxInactiveInterval (WebEnv.TIMEOUT); + StringBuffer output = new StringBuffer (); + if (configLoaded && !fatalError) + { + String acceptLanguage = request.getHeader ("Accept-Language"); + String acceptCharset = request.getHeader ("Accept-Charset"); + LocaleHandler lhandler = new LocaleHandler (acceptLanguage, + acceptCharset); + RequestAnalyzer thisRequest = new RequestAnalyzer (this, request, + true, ""); + if (thisRequest.getIsRedirect ()) + { + // If we need to redirect as the URL is different do it beofre + // we transmit to client + response.sendRedirect (thisRequest.getRedirectURL ()); + } + else + { + // No need to redirect so we will display the content + // Generate the needed XMLCode + Generator thisXMLGen = new Generator (this, request, + thisRequest, new StringBuffer("")); + // thisXMLGen.addPObject(thisRequest.getCM_Container()); + String xmlCode = thisXMLGen.get (); + // Get or generate Template needed + String xslCode = templateCache.getCM_Template ( + thisRequest.getCM_Container ().getCM_Template_ID (), + thisRequest.getWebProject ().get_ID ()) + .getTemplateXST (); + // Put it all together + try + { + output.append (XSLTProcessor.run (request, xslCode, xmlCode)); + } + catch (Exception E) + { + response.sendError (500); + } + response.setContentType ("text/html; charset=" + + lhandler.getCharset ()); + response.setHeader ("CMBuild", buildDate); + PrintWriter out; + out = response.getWriter (); + out.print (output.toString ()); + out.close (); + } + } + else if (fatalError) + { + PrintWriter out; + out = response.getWriter (); + out.print ("

Fatal Error:" + ErrorMessage + "

"); + out.close (); + } + } // doGet + + /** + * Process Post Request - handled by Get + * + * @param request + * @param response + * @throws ServletException + * @throws IOException + */ + public void doPost (HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException + { + doGet (request, response); + } // doPost +} // Broadcast diff --git a/webCM/src/main/servlet/org/compiere/cm/XMLBroadcast.java b/webCM/src/main/servlet/org/compiere/cm/XMLBroadcast.java index dfc0b70e78..83a55e08dc 100644 --- a/webCM/src/main/servlet/org/compiere/cm/XMLBroadcast.java +++ b/webCM/src/main/servlet/org/compiere/cm/XMLBroadcast.java @@ -3,64 +3,66 @@ * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * - * by the Free Software Foundation. This program is distributed in the hope * - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along * - * with this program; if not, write to the Free Software Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * - * For the text or an alternative of this public license, you may reach us * - * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * - * or via info@compiere.org or http://www.compiere.org/license.html * - *****************************************************************************/ -package org.compiere.cm; - -import java.io.IOException; -import java.io.PrintWriter; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.compiere.cm.utils.RequestAnalyzer; -import org.compiere.cm.xml.Generator; - -/** - * @author YS - * @version $Id$ + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.compiere.cm; + +import java.io.IOException; +import java.io.PrintWriter; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.compiere.cm.utils.RequestAnalyzer; +import org.compiere.cm.xml.Generator; + +/** + * @author YS + * @version $Id$ */ public class XMLBroadcast extends HttpServletCM { + /** serialVersionUID */ + private static final long serialVersionUID = -1280320974132533949L; + /** * Get * @param request - * @param response - * @throws ServletException - * @throws IOException - */ - public void doGet (HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException - { + * @param response + * @throws ServletException + * @throws IOException + */ + public void doGet (HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException + { RequestAnalyzer thisRequest = new RequestAnalyzer (this, request, false, "/xml"); // Even if we will only display the XML tree we are forced to build the Media URLs - if (getInternalMediaURL () == null) - setInternalMediaURL (request); + resetInternalMediaURL (request); if (externalMediaURL == null) { if (thisRequest.getWebProject()!=null) externalMediaURL = getExternalMediaURL (thisRequest - .getWebProject ().get_ID ()); - else - externalMediaURL = getInternalMediaURL(); - - } - // Generate the needed XMLCode - Generator thisXMLGen = new Generator (this, request, thisRequest, new StringBuffer("")); - String xmlCode = thisXMLGen.get (); - response.setContentType ("text/xml; charset=UTF8"); - PrintWriter out; - out = response.getWriter (); - out.print (xmlCode); - out.close (); - } // doGet - -} // HttpServletCM + .getWebProject ().get_ID ()); + else + externalMediaURL = getInternalMediaURL(); + + } + // Generate the needed XMLCode + Generator thisXMLGen = new Generator (this, request, thisRequest, new StringBuffer("")); + String xmlCode = thisXMLGen.get (); + response.setContentType ("text/xml; charset=UTF8"); + PrintWriter out; + out = response.getWriter (); + out.print (xmlCode); + out.close (); + } // doGet + +} // HttpServletCM diff --git a/webCM/src/main/servlet/org/compiere/cm/cache/CO.java b/webCM/src/main/servlet/org/compiere/cm/cache/CO.java index 8bfa2ab802..e4d7d93a5b 100644 --- a/webCM/src/main/servlet/org/compiere/cm/cache/CO.java +++ b/webCM/src/main/servlet/org/compiere/cm/cache/CO.java @@ -3,130 +3,177 @@ * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * - * by the Free Software Foundation. This program is distributed in the hope * - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along * - * with this program; if not, write to the Free Software Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * - * For the text or an alternative of this public license, you may reach us * - * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * - * or via info@compiere.org or http://www.compiere.org/license.html * - *****************************************************************************/ -package org.compiere.cm.cache; + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.compiere.cm.cache; import java.util.*; -import org.compiere.model.*; import org.compiere.util.CLogger; /** - * CO CacheObject - * we store parts of the content in caches on the webservers to reduce DB load and speed up page deployment - * - * @author Yves Sandfort - * @version $Id$ - */ -public class CO { - - protected static int cacheSize = 100; - protected Hashtable cache = new Hashtable(cacheSize); - protected Hashtable cacheUsage = new Hashtable(cacheSize); - protected Properties ctx; - + * CO CacheObject + * we store parts of the content in caches on the webservers to reduce DB load and speed up page deployment + * + * @author Yves Sandfort + * @version $Id$ + */ +public class CO { + + protected static int cacheSize = 100; + protected Hashtable cache = new Hashtable(cacheSize); + protected Hashtable cacheUsage = new Hashtable(cacheSize); + protected Properties ctx; + /** Logger */ protected CLogger log = CLogger.getCLogger(this.getClass()); + /** + * Cache Object + */ public CO () { } + /** + * set Context + * @param thisCtx + */ public void setCtx(Properties thisCtx) { ctx = thisCtx; } + /** + * get Context + * @return Context + */ public Properties getCtx() { return ctx; } + /** + * put + * @param ID + * @param thisObject + */ public void put(String ID, Object thisObject) { cache.put(ID,thisObject); Long thisLong = new Long(new Date().getTime()); - cacheUsage.put(ID, thisLong); - if (cacheUsage.size()>cacheSize-1) { - cleanUp(); + cacheUsage.put(ID, thisLong); + if (cacheUsage.size()>cacheSize-1) { + cleanUp(); } } + /** + * remove + * @param ID + */ public void remove(String ID) { cache.remove(ID); cacheUsage.remove(ID); } + /** + * getSize of current cache + * @return number of cache entries + */ public int getSize() { return cache.size(); } + /** + * get key enumeration + * @return key enumeration + */ public Enumeration getKeys() { return cache.keys(); } - - private void cleanUp () { - Vector vecKeys = new Vector(); - //Gets keys from hashtable - - Enumeration myEnum = cacheUsage.elements(); - - while (myEnum.hasMoreElements()) - { - vecKeys.add(myEnum.nextElement()); - } - - //Sorts vector in Ascending order - Collections.sort(vecKeys); - Collections.reverse(vecKeys); - - //Displays values using Key - for(int i=0;icacheSize-1) { - cache.remove(key); - cacheUsage.remove(key); - log.fine("Item: " + key + " from cache: " + this.getClass().getName() + " was removed."); - } + + private void cleanUp () { + Vector vecKeys = new Vector(); + //Gets keys from hashtable + + Enumeration myEnum = cacheUsage.elements(); + + while (myEnum.hasMoreElements()) + { + vecKeys.add(myEnum.nextElement()); + } + + //Sorts vector in Ascending order + Collections.sort(vecKeys); + Collections.reverse(vecKeys); + + //Displays values using Key + for(int i=0;icacheSize-1) { + cache.remove(key); + cacheUsage.remove(key); + log.fine("Item: " + key + " from cache: " + this.getClass().getName() + " was removed."); + } } } + /** + * Update Usage value for cache optimization + * @param ID + */ + public void use(int ID) { + Long thisLong = new Long(new java.util.Date().getTime()); + cacheUsage.put("" + ID, thisLong); + } + + /** + * Update Usage value for cache optimization + * @param ID + */ public void use(String ID) { Long thisLong = new Long(new java.util.Date().getTime()); cacheUsage.put(ID, thisLong); } + /** + * empty complete Cache + */ public void empty() { cache = new Hashtable(cacheSize); cacheUsage = new Hashtable(cacheSize); log.fine("Cache: " + this.getClass().getName() + " was cleared."); } + /** + * Show Cache Content + * @return XML String with CacheContent + */ public String show() { StringBuffer tStrHTML = new StringBuffer(); Enumeration thisEnum = null; - tStrHTML.append(" " + this.getSize() + "\n"); - thisEnum = this.getKeys(); - while (thisEnum.hasMoreElements()) { - tStrHTML.append(" " + thisEnum.nextElement() + "\n"); - } - return tStrHTML.toString(); - } -} + tStrHTML.append(" " + this.getSize() + "\n"); + thisEnum = this.getKeys(); + while (thisEnum.hasMoreElements()) { + tStrHTML.append(" " + thisEnum.nextElement() + "\n"); + } + return tStrHTML.toString(); + } +} diff --git a/webCM/src/main/servlet/org/compiere/cm/cache/Chat.java b/webCM/src/main/servlet/org/compiere/cm/cache/Chat.java index ffb807737a..23c10cf95c 100644 --- a/webCM/src/main/servlet/org/compiere/cm/cache/Chat.java +++ b/webCM/src/main/servlet/org/compiere/cm/cache/Chat.java @@ -3,47 +3,63 @@ * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * - * by the Free Software Foundation. This program is distributed in the hope * - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along * - * with this program; if not, write to the Free Software Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * - * For the text or an alternative of this public license, you may reach us * - * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * - * or via info@compiere.org or http://www.compiere.org/license.html * - *****************************************************************************/ + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ package org.compiere.cm.cache; import java.util.*; -import org.compiere.model.X_CM_Chat; +import org.compiere.model.MChat; -public class Chat extends CO { - - protected Hashtable cacheContainerURL = new Hashtable(cacheSize); - - public X_CM_Chat getCM_Chat(int ID) { - return getCM_Chat(""+ ID); - } - - public X_CM_Chat getCM_Chat(String ID) { - if (cache.containsKey(ID)) { - use(ID); - return (X_CM_Chat) cache.get(ID); - } else { - int[] tableKeys = X_CM_Chat.getAllIDs("CM_Chat", "CM_Chat_ID=" + ID, "WebCM"); - if (tableKeys.length==0) { - // No Chat entry - return null; - } else if (tableKeys.length==1) { - X_CM_Chat thisChat = new X_CM_Chat(ctx, tableKeys[0], "WebCM"); - put ("" + thisChat.get_ID(),thisChat); - return thisChat; - } else { - // More than one result, this is funny, normally this is not possible :-/ - return null; - } - } - } -} +/** + * Chat Cache Object + * + * @author Yves Sandfort + * @version $Id$ + */ +public class Chat extends CO { + + protected Hashtable cacheContainerURL = new Hashtable(cacheSize); + + /** + * getCM_Chat + * @param ID + * @return Chat + */ + public MChat getCM_Chat(int ID) { + return getCM_Chat(""+ ID); + } + + /** + * getCM_Chat + * @param ID + * @return Chat + */ + public MChat getCM_Chat(String ID) { + if (cache.containsKey(ID)) { + use(ID); + return (MChat) cache.get(ID); + } else { + int[] tableKeys = MChat.getAllIDs("CM_Chat", "CM_Chat_ID=" + ID, "WebCM"); + if (tableKeys.length==0) { + // No Chat entry + return null; + } else if (tableKeys.length==1) { + MChat thisChat = new MChat(ctx, tableKeys[0], "WebCM"); + put ("" + thisChat.get_ID(),thisChat); + return thisChat; + } else { + // More than one result, this is funny, normally this is not possible :-/ + return null; + } + } + } +} diff --git a/webCM/src/main/servlet/org/compiere/cm/cache/Container.java b/webCM/src/main/servlet/org/compiere/cm/cache/Container.java index 9f627e0d54..d6afa87e23 100644 --- a/webCM/src/main/servlet/org/compiere/cm/cache/Container.java +++ b/webCM/src/main/servlet/org/compiere/cm/cache/Container.java @@ -35,8 +35,8 @@ public class Container extends CO { * @param CM_WebProject_ID Web Project * @return Container */ - public MContainer getCM_Container(int ID, int CM_WebProject_ID) { - return getCM_Container(""+ ID, CM_WebProject_ID); + public MContainer getCM_Container(String ID, int CM_WebProject_ID) { + return getCM_Container(Integer.parseInt(ID), CM_WebProject_ID); } /** @@ -45,22 +45,21 @@ public class Container extends CO { * @param CM_WebProject_ID Web Project * @return Container */ - public MContainer getCM_Container(String ID, int CM_WebProject_ID) { - if (cache.containsKey(ID)) { - use(ID); - return (MContainer) cache.get(ID); - } else { - int[] tableKeys = MContainer.getAllIDs("CM_Container", "CM_Container_ID=" + ID + " AND CM_WebProject_ID=" + CM_WebProject_ID, "WebCM"); - if (tableKeys.length==0) { - return getCM_ContainerByURL("/error404.html", CM_WebProject_ID, true); - } else if (tableKeys.length==1) { - MContainer thisContainer = new MContainer(ctx, tableKeys[0], "WebCM"); - put ("" + thisContainer.getCM_Container_ID(),thisContainer); - cacheContainerURL.put (CM_WebProject_ID + "-" + thisContainer.getRelativeURL(),"" + thisContainer.getCM_Container_ID()); - return thisContainer; - } else { - // More than one result, this is funny, normally this is not possible :-/ - return null; + public MContainer getCM_Container(int ID, int CM_WebProject_ID) { + if (cache.containsKey(ID)) { + use(ID); + return (MContainer) cache.get(ID); + } else { + MContainer thisContainer = MContainer.get(ctx, ID, CM_WebProject_ID, "WebCM"); + if (thisContainer==null) + { + return getCM_ContainerByURL("/error404.html", CM_WebProject_ID, true); + } + else + { + put ("" + thisContainer.getCM_Container_ID(),thisContainer); + cacheContainerURL.put (CM_WebProject_ID + "-" + thisContainer.getRelativeURL(),"" + thisContainer.getCM_Container_ID()); + return thisContainer; } } } @@ -69,6 +68,7 @@ public class Container extends CO { * Get Container from cache by URL * @param URL URL to look for * @param CM_WebProject_ID Web Project + * @param resolveURLErrors * @return Container */ public MContainer getCM_ContainerByURL(String URL, int CM_WebProject_ID, boolean resolveURLErrors) { @@ -82,8 +82,8 @@ public class Container extends CO { return thisContainer; } else { // Let's try to find the URL... - int[] tableKeys = MContainer.getAllIDs("CM_Container", "(RelativeURL LIKE '" + URL + "' OR RelativeURL LIKE '" + URL + "/') AND CM_WebProject_ID=" + CM_WebProject_ID, "WebCM"); - if (tableKeys==null || tableKeys.length==0) { + MContainer thisContainer = MContainer.get (ctx, URL, CM_WebProject_ID, "WebCM"); + if (thisContainer==null) { if (resolveURLErrors) { if (URL.equals("/error404.html")) { // Okay we are already been requested as the error message, so we try the index.html @@ -98,17 +98,13 @@ public class Container extends CO { } else { return null; } - } else if (tableKeys.length==1) { - // Found exactly one record, so we return it - MContainer thisContainer = getCM_Container("" + tableKeys[0], CM_WebProject_ID); - if (thisContainer.isSummary ()) { - thisContainer = getCM_ContainerByURL(URL + "/index.html", CM_WebProject_ID, resolveURLErrors); - } - return thisContainer; - } else { - // More than one result, this is funny, normally this is not possible :-/ - return null; + } else { + // Found exactly one record, so we return it + if (thisContainer.isSummary ()) { + thisContainer = getCM_ContainerByURL(URL + "/index.html", CM_WebProject_ID, resolveURLErrors); + } + return thisContainer; } } } -} +} diff --git a/webCM/src/main/servlet/org/compiere/cm/cache/ContainerElement.java b/webCM/src/main/servlet/org/compiere/cm/cache/ContainerElement.java index 77496b37b2..24814a93a9 100644 --- a/webCM/src/main/servlet/org/compiere/cm/cache/ContainerElement.java +++ b/webCM/src/main/servlet/org/compiere/cm/cache/ContainerElement.java @@ -16,31 +16,45 @@ *****************************************************************************/ package org.compiere.cm.cache; -import org.compiere.model.X_CM_Container_Element; - -public class ContainerElement extends CO { - public X_CM_Container_Element getCM_Container_Element(int ID, int CM_WebProject_ID) { - return getCM_Container_Element(""+ ID, CM_WebProject_ID); - } - - public X_CM_Container_Element getCM_Container_Element(String ID, int CM_WebProject_ID) { - if (cache.containsKey(ID)) { - use(ID); - return (X_CM_Container_Element) cache.get(ID); - } else { - int[] tableKeys = X_CM_Container_Element.getAllIDs("CM_Container_Element", "CM_Container_Element_ID=" + ID, "WebCM"); - if (tableKeys==null || tableKeys.length==0) { - // No Elements in DB found, needs to get handled - return null; - } else if (tableKeys.length==1) { - X_CM_Container_Element thisContainerElement = new X_CM_Container_Element(ctx, tableKeys[0], "WebCM"); - put ("" + thisContainerElement.get_ID(),thisContainerElement); - return thisContainerElement; - } else { - // More than one result, this is funny, normally this is not possible :-/ - return null; +import org.compiere.model.MContainerElement; + +/** + * Container Element Cache + * + * @author Yves Sandfort + * @version $Id$ + */ +public class ContainerElement extends CO { + /** + * getCM_Container_Element + * @param ID + * @param CM_WebProject_ID + * @return Container Element + */ + public MContainerElement getCM_Container_Element(String ID, int CM_WebProject_ID) { + return getCM_Container_Element(Integer.parseInt(ID), CM_WebProject_ID); + } + + /** + * getCM_Container_Element + * @param ID + * @param CM_WebProject_ID + * @return Container Element + */ + public MContainerElement getCM_Container_Element(int ID, int CM_WebProject_ID) { + if (cache.containsKey(ID)) { + use(ID); + return (MContainerElement) cache.get(ID); + } else { + MContainerElement thisContainerElement = MContainerElement.get(ctx, ID, "WebCM"); + if (thisContainerElement==null) { + // No Elements in DB found, needs to get handled + return null; + } else { + put ("" + thisContainerElement.get_ID(),thisContainerElement); + return thisContainerElement; } } } - -} + +} diff --git a/webCM/src/main/servlet/org/compiere/cm/cache/ContainerTree.java b/webCM/src/main/servlet/org/compiere/cm/cache/ContainerTree.java index 265749be41..903385268b 100644 --- a/webCM/src/main/servlet/org/compiere/cm/cache/ContainerTree.java +++ b/webCM/src/main/servlet/org/compiere/cm/cache/ContainerTree.java @@ -21,11 +21,23 @@ import java.util.*; import org.compiere.cm.utils.TreeXML; import org.compiere.model.MWebProject; -public class ContainerTree extends CO { - - protected Hashtable cacheContainerURL = new Hashtable(cacheSize); - - public StringBuffer getContainerTree(Properties ctx, int ID, String trxName) { +/** + * Container Tree Cache + * + * @author Yves Sandfort + * @version $Id$ + */ +public class ContainerTree extends CO { + + protected Hashtable cacheContainerURL = new Hashtable(cacheSize); + + /** + * getContainerTree + * @param ID + * @param trxName + * @return XML StringBuffer + */ + public StringBuffer getContainerTree(int ID, String trxName) { StringBuffer xmlCode = new StringBuffer(); if (cache.containsKey("" + ID)) { use("" + ID); diff --git a/webCM/src/main/servlet/org/compiere/cm/cache/Domain.java b/webCM/src/main/servlet/org/compiere/cm/cache/Domain.java index 2d845a5f80..2ba1a03ebc 100644 --- a/webCM/src/main/servlet/org/compiere/cm/cache/Domain.java +++ b/webCM/src/main/servlet/org/compiere/cm/cache/Domain.java @@ -38,47 +38,17 @@ public class Domain extends CO } else { - int[] tableKeys = MWebProjectDomain.getAllIDs ( - "CM_WebProject_Domain", - "lower(FQDN) LIKE '" + serverName + "'", "WebCM"); - if (tableKeys==null || tableKeys.length == 0) - { - // HardCoded to deliver the GardenWorld Site as default - return null; - } - else if (tableKeys.length == 1) - { - MWebProjectDomain thisDomain = new MWebProjectDomain ( - ctx, tableKeys[0], "WebCM"); - put (thisDomain.getFQDN (), thisDomain); - return thisDomain; - } - // We found more than one hit, this is bad, so we will try to use the first non system / gardenworld one - else if (tableKeys.length>1) - { - for (int i=0;i=1000000) { - MWebProjectDomain thisDomain = new MWebProjectDomain ( - ctx, tableKeys[i], "WebCM"); - put (thisDomain.getFQDN (), thisDomain); - return thisDomain; - } - } - // We can't find any non system/gardenworld hit, so we will try the first one - for (int i=0;i\n"); - xmlCode.append ("\n"); + xmlCode.append ("\n"); xmlCode.append ("" + Adempiere.MAIN_VERSION + "\n"); xmlCode.append ("" + Adempiere.DATE_VERSION @@ -238,7 +234,7 @@ public class Generator //genTable("AD_Role", "AD_Role.IsActive='Y' AND AD_Role.AD_Client_ID=" + l_nClientID + " ORDER BY AD_Role.AD_Role_ID", false, ctx, wi); genTable("C_Activity", "C_Activity.IsActive='Y' AND C_Activity.AD_Client_ID=" + l_nClientID + " ORDER BY C_Activity.C_Activity_ID", false, ctx, wi); genTable("C_Campaign", "C_Campaign.IsActive='Y' AND C_Campaign.AD_Client_ID=" + l_nClientID + " ORDER BY C_Campaign.C_Campaign_ID", false, ctx, wi); - genTable("M_Product", "M_Product.IsActive='Y' AND M_Product.AD_Client_ID=" + l_nClientID + " ORDER BY M_Product.M_Product_ID", false, ctx, wi); + genTable("M_Product", "M_Product.IsActive='Y' AND M_Product.AD_Client_ID=" + l_nClientID + " AND M_Product.Value like 'cd_%' ORDER BY M_Product.M_Product_ID", false, ctx, wi); genTable("M_RMA", "M_RMA.IsActive='Y' AND M_RMA.AD_Client_ID=" + l_nClientID + " ORDER BY M_RMA.M_RMA_ID", false, ctx, wi); genTable("R_Category", "R_Category.IsActive='Y' AND R_Category.AD_Client_ID=" + l_nClientID + " ORDER BY R_Category.R_Category_ID", false, ctx, wi); genTable("R_Group", "R_Group.IsActive='Y' AND R_Group.AD_Client_ID=" + l_nClientID + " ORDER BY R_Group.R_Group_ID", false, ctx, wi); @@ -465,8 +461,10 @@ public class Generator private void generateContainerTree (ContainerTree containerTreeCache) { - xmlCode.append (containerTreeCache.getContainerTree (containerTreeCache - .getCtx (), thisRequest.getWebProject ().get_ID (), null)); +/* xmlCode.append (containerTreeCache.getContainerTree (containerTreeCache + .getCtx (), thisRequest.getWebProject ().get_ID (), null));*/ + xmlCode.append (containerTreeCache.getContainerTree ( + thisRequest.getWebProject ().get_ID (), null)); } /**