* 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;
/**
*
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);
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 {
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);
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