image bugfixx - mir now depends on jai imagio
[mir.git] / source / mircoders / servlet / ServletModuleOpenIndy.java
index 6896876..6172d1c 100755 (executable)
@@ -30,6 +30,9 @@
 
 package mircoders.servlet;
 
+import gnu.regexp.RE;
+import gnu.regexp.REMatch;
+
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -47,24 +50,10 @@ import java.util.Map;
 import java.util.Random;
 import java.util.Set;
 import java.util.Vector;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpUtils;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.net.smtp.SMTPClient;
-import org.apache.commons.net.smtp.SMTPReply;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.search.Hits;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.Searcher;
-import org.apache.struts.util.MessageResources;
-import gnu.regexp.RE;
-import gnu.regexp.REMatch;
 
 import mir.entity.Entity;
 import mir.generator.Generator;
@@ -101,6 +90,7 @@ import mircoders.search.ContentSearchTerm;
 import mircoders.search.ImagesSearchTerm;
 import mircoders.search.KeywordSearchTerm;
 import mircoders.search.TextSearchTerm;
+import mircoders.search.TopicMatrixSearchTerm;
 import mircoders.search.TopicSearchTerm;
 import mircoders.search.UnIndexedSearchTerm;
 import mircoders.search.VideoSearchTerm;
@@ -112,6 +102,18 @@ import mircoders.storage.DatabaseImages;
 import mircoders.storage.DatabaseLanguage;
 import mircoders.storage.DatabaseTopics;
 
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.net.smtp.SMTPClient;
+import org.apache.commons.net.smtp.SMTPReply;
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.queryParser.QueryParser;
+import org.apache.lucene.search.Hits;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.Searcher;
+import org.apache.struts.util.MessageResources;
+
 /*
  *  ServletModuleOpenIndy -
  *   is the open-access-servlet, which is responsible for
@@ -119,7 +121,7 @@ import mircoders.storage.DatabaseTopics;
  *    open-postings to the newswire
  *
  * @author mir-coders group
- * @version $Id: ServletModuleOpenIndy.java,v 1.89.2.1 2003/05/17 16:21:14 john Exp $
+ * @version $Id: ServletModuleOpenIndy.java,v 1.89.2.8 2003/10/23 14:55:25 rk Exp $
  *
  */
 
@@ -353,7 +355,7 @@ public class ServletModuleOpenIndy extends ServletModule
 
       Map extraInfo = new HashMap();
       extraInfo.put("languagePopUpData", DatabaseLanguage.getInstance().getPopupData());
-      extraInfo.put("themenPopupData", topicsModule.getTopicsAsSimpleList());
+      extraInfo.put("themenPopupData", DatabaseTopics.getInstance().getPopupData());
 
       extraInfo.put("topics", topicsModule.getTopicsList());
       deliver(req, res, mergeData, extraInfo, postingFormTemplate);
@@ -523,6 +525,35 @@ public class ServletModuleOpenIndy extends ServletModule
   private static final String SESSION_REQUEST_KEY="sessionid";
 
   /**
+   * Selects the language for the response.
+   *
+   * @param session
+   * @param aRequest
+   */
+
+  protected Locale getResponseLocale(HttpSession aSession, HttpServletRequest aRequest) {
+    String requestLanguage = aRequest.getParameter("language");
+    String sessionLanguage = (String) aSession.getAttribute("language");
+    String acceptLanguage = aRequest.getLocale().getLanguage();
+    String defaultLanguage = configuration.getString("Mir.Login.DefaultLanguage", "en");
+
+    String language = requestLanguage;
+
+    if (language==null)
+      language = sessionLanguage;
+
+    if (language==null)
+      language = acceptLanguage;
+
+    if (language==null)
+      language = defaultLanguage;
+
+    aSession.setAttribute("language", language);
+
+    return new Locale(language, "");
+  }
+
+  /**
    * Dispatch method for open sessions: a flexible extensible and customizable way
    *   for open access. Can be used for postings, but also for lots of other stuff.
    *
@@ -550,10 +581,10 @@ public class ServletModuleOpenIndy extends ServletModule
       Session session = new HTTPAdapters.HTTPSessionAdapter(aRequest.getSession());
 
       SimpleResponse response = new SimpleResponse(
-          ServletHelper.makeGenerationData(aResponse, new Locale[] {getLocale(aRequest), getFallbackLocale(aRequest)},
+          ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getResponseLocale(aRequest.getSession(), aRequest), getFallbackLocale(aRequest)},
              "bundles.open"));
 
-      response.setResponseValue("actionURL", aResponse.encodeURL(HttpUtils.getRequestURL(aRequest).toString())+"?"+SESSION_REQUEST_KEY+"="+aRequest.getSession().getId());
+      response.setResponseValue("actionURL", aResponse.encodeURL(MirGlobal.config().getString("RootUri") + "/servlet/OpenMir")+"?"+SESSION_REQUEST_KEY+"="+aRequest.getSession().getId());
 
       SessionHandler handler = MirGlobal.localizer().openPostings().getOpenSessionHandler(request, session);
 
@@ -617,8 +648,8 @@ public class ServletModuleOpenIndy extends ServletModule
       String theEmailText;
 
       if (MirGlobal.mruCache().hasObject(theCacheKey)){
-  logger.info("fetching email text for article "+aid+" from cache");
-  theEmailText = (String) MirGlobal.mruCache().getObject(theCacheKey);
+        logger.info("fetching email text for article "+aid+" from cache");
+        theEmailText = (String) MirGlobal.mruCache().getObject(theCacheKey);
       }
       else {
         EntityContent contentEnt;
@@ -728,6 +759,7 @@ public class ServletModuleOpenIndy extends ServletModule
       TextSearchTerm descriptionTerm = new TextSearchTerm("description", "search_content", "description", "description", "description");
       ContentSearchTerm contentTerm = new ContentSearchTerm("content_data", "search_content", "content", "", "");
       TopicSearchTerm topicTerm = new TopicSearchTerm();
+      TopicMatrixSearchTerm topicMatrixTerm = new TopicMatrixSearchTerm();
       ImagesSearchTerm imagesTerm = new ImagesSearchTerm();
       AudioSearchTerm audioTerm = new AudioSearchTerm();
       VideoSearchTerm videoTerm = new VideoSearchTerm();
@@ -742,7 +774,7 @@ public class ServletModuleOpenIndy extends ServletModule
       }
 
       try {
-        mergeData.put("topics", topicsModule.getTopicsAsSimpleList());
+        mergeData.put("topics", DatabaseTopics.getInstance().getPopupData());
       }
       catch (Throwable e) {
         logger.debug("Can't get topics: " + e.toString());
@@ -792,6 +824,11 @@ public class ServletModuleOpenIndy extends ServletModule
             queryString = queryString + " +" + topicFragment;
           }
 
+          String topicMatrixFragment = topicMatrixTerm.makeTerm(req);
+          if (topicMatrixFragment != null) {
+            queryString = queryString + " +" + topicMatrixFragment;
+          }
+
           String imagesFragment = imagesTerm.makeTerm(req);
           if (imagesFragment != null) {
             queryString = queryString + " +" + imagesFragment;
@@ -1090,7 +1127,7 @@ public class ServletModuleOpenIndy extends ServletModule
   public void deliver(PrintWriter anOutputWriter, HttpServletRequest aRequest, HttpServletResponse aResponse, Map aData, Map anExtra, String aGenerator)
       throws ServletModuleFailure {
     try {
-      Map responseData = ServletHelper.makeGenerationData(aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)}, "bundles.open");
+      Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)}, "bundles.open");
       responseData.put("data", aData);
       responseData.put("extra", anExtra);
 
@@ -1110,7 +1147,7 @@ public class ServletModuleOpenIndy extends ServletModule
   public void deliver(PrintWriter anOutputWriter, HttpServletRequest aRequest, HttpServletResponse aResponse, Map aData, Map anExtra, String aGenerator,String aLocaleString)
       throws ServletModuleFailure {
     try {
-      Map responseData = ServletHelper.makeGenerationData(aResponse, new Locale[] { new Locale(aLocaleString,""), getFallbackLocale(aRequest)}, "bundles.open");
+      Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { new Locale(aLocaleString,""), getFallbackLocale(aRequest)}, "bundles.open");
       responseData.put("data", aData);
       responseData.put("extra", anExtra);