organizing imports
[mir.git] / source / mircoders / localizer / basic / MirBasicArticlePostingHandler.java
index 6afb6f7..7a082a9 100755 (executable)
  * exception to your version of the file, but you are not obligated to do so.
  * If you do not wish to do so, delete this exception statement from your version.
  */
+
 package mircoders.localizer.basic;
 
-import java.util.Arrays;
-import java.util.*;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Vector;
+import java.util.Map;
 
 import mir.entity.Entity;
+import mir.misc.StringUtil;
 import mir.session.Request;
 import mir.session.Response;
 import mir.session.Session;
 import mir.session.SessionExc;
 import mir.session.SessionFailure;
 import mir.session.UploadedFile;
-import mir.util.ExceptionFunctions;
+import mircoders.entity.EntityContent;
 import mircoders.global.MirGlobal;
-import mir.misc.*;
 import mircoders.media.MediaUploadProcessor;
-import mircoders.module.*;
-import mircoders.entity.*;
-import mircoders.storage.*;
+import mircoders.module.ModuleContent;
 import mircoders.storage.DatabaseContent;
-import mircoders.media.*;
+import mircoders.storage.DatabaseContentToMedia;
+import mircoders.storage.DatabaseContentToTopics;
 
 /**
  *
@@ -67,6 +67,16 @@ public class MirBasicArticlePostingHandler extends MirBasicPostingSessionHandler
   protected DatabaseContentToMedia contentToMedia = DatabaseContentToMedia.getInstance();
   protected DatabaseContent contentDatabase = DatabaseContent.getInstance();
 
+  public MirBasicArticlePostingHandler() {
+    super();
+
+    setResponseGenerators(
+      configuration.getString("Localizer.OpenSession.article.EditTemplate"),
+      configuration.getString("Localizer.OpenSession.article.DupeTemplate"),
+      configuration.getString("Localizer.OpenSession.article.UnsupportedMediaTemplate"),
+      configuration.getString("Localizer.OpenSession.article.DoneTemplate"));
+  }
+
   protected void initializeResponseData(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure {
     super.initializeResponseData(aRequest, aSession, aResponse);
 
@@ -75,24 +85,40 @@ public class MirBasicArticlePostingHandler extends MirBasicPostingSessionHandler
       String field = (String) i.next();
       aResponse.setResponseValue(field, aRequest.getParameter(field));
     }
-    aResponse.setResponseValue("to_topic", aRequest.getParameter("to_topic"));
+    aResponse.setResponseValue("to_topic", aRequest.getParameters("to_topic"));
   }
 
   public void validate(List aResults, Request aRequest, Session aSession) throws SessionExc, SessionFailure {
+    super.validate(aResults, aRequest, aSession);
+
     testFieldEntered(aRequest, "title", "validationerror.missing", aResults);
     testFieldEntered(aRequest, "description", "validationerror.missing", aResults);
     testFieldEntered(aRequest, "creator", "validationerror.missing", aResults);
     testFieldEntered(aRequest, "content_data", "validationerror.missing", aResults);
   }
 
-  public void finalizeArticle(Request aRequest, Session aSession, EntityContent aContent) throws SessionExc, SessionFailure {
-    aContent.setValueForProperty("is_published", "1");
-    aContent.setValueForProperty("is_produced", "0");
-    aContent.setValueForProperty("date", StringUtil.date2webdbDate(new GregorianCalendar()));
-    aContent.setValueForProperty("is_html","0");
-    aContent.setValueForProperty("publish_path", StringUtil.webdbDate2path(aContent.getValue("date")));
-    aContent.setValueForProperty("to_article_type", "1");
-    aContent.setValueForProperty("to_publisher", "1");
+  public void finalizeArticle(Request aRequest, Session aSession, EntityContent anArticle) throws SessionExc, SessionFailure {
+    anArticle.setValueForProperty("is_published", "1");
+    anArticle.setValueForProperty("is_produced", "0");
+    anArticle.setValueForProperty("date", StringUtil.date2webdbDate(new GregorianCalendar()));
+    anArticle.setValueForProperty("is_html","0");
+    anArticle.setValueForProperty("publish_path", StringUtil.webdbDate2path(anArticle.getValue("date")));
+    anArticle.setValueForProperty("to_article_type", "1");
+    anArticle.setValueForProperty("to_publisher", "1");
+  }
+
+  public void setArticleTopics(Request aRequest, Session aSession, EntityContent aContent) throws SessionExc, SessionFailure {
+    // topics:
+    List topics = aRequest.getParameters("to_topic");
+    if (topics.size() > 0) {
+      try {
+        DatabaseContentToTopics.getInstance().setTopics(aContent.getId(), topics);
+      }
+      catch (Throwable e) {
+        logger.error("setting content_x_topic failed");
+        throw new SessionFailure("MirBasicArticlePostingHandler: can't set topics: " + e.toString(), e);
+      }
+    }
   }
 
   public void preProcessRequest(Request aRequest, Session aSession) throws SessionExc, SessionFailure {
@@ -107,22 +133,13 @@ public class MirBasicArticlePostingHandler extends MirBasicPostingSessionHandler
       id = article.insert();
       if (id == null) {
         logger.info("Duplicate article rejected");
-        throw new DuplicateArticleExc("Duplicate article rejected");
+        throw new DuplicatePostingExc("Duplicate article rejected");
       }
       aSession.setAttribute("content", article);
 
-      // topics:
-      List topics = aRequest.getParameters("to_topic");
-      if (topics.size() > 0) {
-        try {
-          DatabaseContentToTopics.getInstance().setTopics(id, topics);
-        }
-        catch (Throwable e) {
-          logger.error("setting content_x_topic failed");
-          contentModule.deleteById(id);
-          throw new SessionFailure("MirBasicArticlePostingHandler: can't set topics: " + e.toString(), e);
-        }
-      }
+
+      setArticleTopics(aRequest, aSession, article);
+
     }
     catch (Throwable t) {
       throw new SessionFailure(t);
@@ -159,251 +176,4 @@ public class MirBasicArticlePostingHandler extends MirBasicPostingSessionHandler
     logger.info("article posted");
   };
 
-  protected void makeInitialResponse(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure {
-    aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.article.EditTemplate"));
-  };
-
-  protected void makeResponse(Request aRequest, Session aSession, Response aResponse, List anErrors) throws SessionExc, SessionFailure {
-    aResponse.setResponseValue("errors", anErrors);
-    aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.article.EditTemplate"));
-  };
-
-  protected void makeFinalResponse(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure {
-    aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.article.DoneTemplate"));
-  };
-
-  protected void makeErrorResponse(Request aRequest, Session aSession, Response aResponse, Throwable anError) throws SessionExc, SessionFailure {
-    anError.printStackTrace();
-    Throwable rootCause = ExceptionFunctions.traceCauseException(anError);
-
-    if (rootCause instanceof DuplicateArticleExc)
-      aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.article.DupeTemplate"));
-    if (rootCause instanceof ModuleMediaType.UnsupportedMimeTypeExc) {
-      aResponse.setResponseValue("mimetype", ((ModuleMediaType.UnsupportedMimeTypeExc) rootCause).getMimeType());
-      aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.article.UnsupportedMediaTemplate"));
-    }
-    else
-      super.makeErrorResponse(aRequest, aSession, aResponse, anError);
-  };
-
-  protected static class DuplicateArticleExc extends SessionExc {
-    public DuplicateArticleExc(String aMessage) {
-      super(aMessage);
-    }
-  }
-}
-
-/*
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import mir.entity.Entity;
-import mir.session.Request;
-import mir.session.Response;
-import mir.session.Session;
-import mir.session.SessionExc;
-import mir.session.SessionFailure;
-import mir.session.UploadedFile;
-import mir.util.ExceptionFunctions;
-import mircoders.entity.EntityContent;
-import mircoders.global.MirGlobal;
-import mircoders.media.MediaUploadProcessor;
-import mircoders.module.ModuleContent;
-import mircoders.storage.DatabaseContent;
-import mircoders.storage.DatabaseContentToMedia;
-import mircoders.storage.DatabaseContent;
-
-public abstract class MirBasicArticlePostingHandler extends MirBasicPostingSessionHandler {
-  protected ModuleContent contentModule;
-  protected DatabaseContentToMedia contentToMedia = DatabaseContentToMedia.getInstance();
-
-  public MirBasicArticlePostingHandler() {
-    super();
-
-    contentModule= new ModuleContent(DatabaseContent.getInstance());
-  }
-
-  public void processRequest(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure {
-    if (aSession.getAttribute("initialRequest")==null) {
-      initialRequest(aRequest, aSession, aResponse);
-      aSession.setAttribute("initialRequest", "no");
-    }
-    else {
-      subsequentRequest(aRequest, aSession, aResponse);
-    }
-  };
-
-  protected void initializeResponseData(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure {
-    super.initializeResponseData(aRequest, aSession, aResponse);
-
-    Iterator i = DatabaseContent.getInstance().getFields().iterator();
-    while (i.hasNext()) {
-      String field = (String) i.next();
-      aResponse.setResponseValue(field, aRequest.getParameter(field));
-    }
-
-  };
-
-  public void initialRequest(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure{
-    super.initialRequest(aRequest, aSession, aResponse);
-
-    String articleId = aRequest.getParameter("to_media");
-    if (articleId == null)
-      throw new SessionExc("MirBasicArticlePostingHandler.initialRequest: article id not set!");
-    aSession.setAttribute("to_media", articleId);
-
-    aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.content.EditTemplate"));
-  }
-
-  public void subsequentRequest(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure {
-    try {
-      initializeResponseData(aRequest, aSession, aResponse);
-
-      List validationErrors = validate(aRequest, aSession);
-
-      if (validationErrors != null && validationErrors.size()>0) {
-        returnValidationErrors(aRequest, aSession, aResponse, validationErrors);
-      }
-      else {
-        EntityContent content = (EntityContent) contentModule.createNew ();
-        Iterator i = DatabaseContent.getInstance().getFields().iterator();
-//        content.setValues(contentFields);
-
-        finishContent(aRequest, aSession, content);
-
-        String id = content.insert();
-        if(id==null){
-          afterDuplicateContentPosting(aRequest, aSession, aResponse, content);
-          logger.info("Dupe content rejected");
-          aSession.terminate();
-        }
-        else {
-          i = aRequest.getUploadedFiles().iterator();
-          while (i.hasNext()) {
-            UploadedFile file = (UploadedFile) i.next();
-            processMediaFile(aRequest, aSession, content, file);
-          }
-
-          afterContentPosting(aRequest, aSession, aResponse, content);
-          MirGlobal.abuse().checkArticle(content, aRequest, null);
-          MirGlobal.localizer().openPostings().afterContentPosting(content);
-          logger.info("Content posted");
-          aSession.terminate();
-        }
-      }
-    }
-    catch (Throwable t) {
-      ExceptionFunctions.traceCauseException(t).printStackTrace();
-
-      throw new SessionFailure("MirBasicArticlePostingHandler.subsequentRequest: " + t.getMessage(), t);
-    }
-  }
-
-  public void initializeContentPosting(Request aRequest, Session aSession, Response aResponse) throws SessionFailure, SessionExc {
-    String articleId = aRequest.getParameter("to_media");
-    if (articleId==null)
-      articleId = aRequest.getParameter("aid");
-
-    if (articleId==null)
-      throw new SessionExc("initializeContentPosting: article id not set!");
-
-    aSession.setAttribute("to_media", articleId);
-    processContentPosting(aRequest, aSession, aResponse);
-  };
-
-  public void returnValidationErrors(Request aRequest, Session aSession, Response aResponse, List aValidationErrors) throws SessionFailure, SessionExc {
-    aResponse.setResponseValue("errors", aValidationErrors);
-    aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.content.EditTemplate"));
-  };
-
-  public void processContentPosting(Request aRequest, Session aSession, Response aResponse) throws SessionExc, SessionFailure {
-    if (MirGlobal.abuse().getOpenPostingPassword()) {
-      String password = generateOnetimePassword();
-      aSession.setAttribute("password", password);
-      aResponse.setResponseValue("password", password);
-      aResponse.setResponseValue("passwd", password);
-    }
-    else {
-      aResponse.setResponseValue("password", null);
-    }
-
-    aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.content.EditTemplate"));
-  };
-
-  public void processMediaFile(Request aRequest, Session aSession, EntityContent aContent, UploadedFile aFile) throws SessionExc, SessionFailure {
-    try {
-      Entity mediaItem = MediaUploadProcessor.processMediaUpload(aFile, new HashMap());
-      finishMedia(aRequest, aSession, aFile, mediaItem);
-      mediaItem.update();
-      contentToMedia.addMedia(aContent.getId(), mediaItem.getId());
-    }
-    catch (Throwable t) {
-      throw new SessionFailure(t);
-    }
-  }
-
-  public void finishMedia(Request aRequest, Session aSession, UploadedFile aFile, Entity aMedia) throws SessionExc, SessionFailure {
-  }
-
-  public void finishContent(Request aRequest, Session aSession, EntityContent aContent) throws SessionExc, SessionFailure {
-    if (aSession.getAttribute("to_media") == null)
-      throw new SessionExc("missing to_media");
-
-    aContent.setValueForProperty("is_published", "1");
-    aContent.setValueForProperty("to_content_status", "1");
-    aContent.setValueForProperty("is_html","0");
-    aContent.setValueForProperty("to_media", (String) aSession.getAttribute("to_media"));
-  };
-
-  public void addMedia(Request aRequest, Session aSession, EntityContent aContent)  throws SessionExc, SessionFailure {
-  }
-
-  public void afterContentPosting(Request aRequest, Session aSession, Response aResponse, EntityContent aContent) {
-    DatabaseContent.getInstance().setUnproduced("id=" + aContent.getValue("to_media"));
-    aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.content.DoneTemplate"));
-  };
-
-  public void afterDuplicateContentPosting(Request aRequest, Session aSession, Response aResponse, EntityContent aContent) {
-    aResponse.setResponseGenerator(configuration.getString("Localizer.OpenSession.content.DupeTemplate"));
-  };
-
-  public class ValidationError {
-    private String field;
-    private String message;
-    private List parameters;
-
-    public ValidationError(String aField, String aMessage) {
-      this (aField, aMessage, new String[] {});
-    }
-
-    public ValidationError(String aField, String aMessage, Object aParameter) {
-      this (aField, aMessage, new Object[] {aParameter});
-    }
-
-    public ValidationError(String aField, String aMessage, Object[] aParameters) {
-      field = aField;
-      message = aMessage;
-      parameters = Arrays.asList(aParameters);
-    }
-
-    public String getMessage() {
-      return message;
-    }
-
-    public String getField() {
-      return field;
-    }
-
-    public List getParameters() {
-      return parameters;
-    }
-  }
-
-
-
-}
-*/
\ No newline at end of file
+}
\ No newline at end of file