import mir.session.SessionExc;
import mir.session.SessionFailure;
import mircoders.entity.EntityContent;
+import mir.entity.adapter.EntityAdapter;
+import mircoders.global.MirGlobal;
+import mircoders.storage.DatabaseContent;
+import mircoders.localizer.MirLocalizerExc;
+import mir.storage.DatabaseExc;
-
+/**
+ * Handler for open postings of "child articles", that is articles
+ * linked to other articles. Used frequently for translations.
+ */
public class MirBasicChildArticlePostingHandler extends MirBasicArticlePostingHandler {
public MirBasicChildArticlePostingHandler() {
super();
setNormalResponseGenerator(configuration.getString("Localizer.OpenSession.article.EditTemplate"));
}
+ /**
+ * {@inheritDoc}
+ *
+ * <p>
+ * This class overrides this method to set the parent article.
+ */
public void finalizeArticle(Request aRequest, Session aSession, EntityContent anArticle) throws SessionExc, SessionFailure {
super.finalizeArticle(aRequest, aSession, anArticle);
anArticle.setFieldValue("to_content", (String) aSession.getAttribute("to_content"));
}
+ /**
+ * {@inheritDoc}
+ *
+ * <p>
+ * Overridden by this class to retrieve and store the to be associated
+ * parent article for subsequent usage.
+ */
protected void initializeSession(Request aRequest, Session aSession) throws SessionExc, SessionFailure {
super.initializeSession(aRequest, aSession);
String parentId = aRequest.getParameter("to_content");
if (parentId==null)
throw new SessionExc("initializeSession: parent id not set!");
+ // check if the parent article is published.
+ EntityAdapter article;
+ try {
+ article = MirGlobal.localizer().dataModel().adapterModel().makeEntityAdapter("content",
+ DatabaseContent.getInstance().selectById(parentId));
+ }
+ catch(MirLocalizerExc e)
+ {
+ throw new SessionExc("Mir localizer error: " + e.getMessage());
+ }
+ catch(DatabaseExc e)
+ {
+ throw new SessionExc("Database error: " + e.getMessage());
+ }
+ if (!MirGlobal.localizer().openPostings().allowArticlePublication((EntityContent)article.getEntity())) {
+ throw new SessionExc("Illegal article");
+ }
+
aSession.setAttribute("to_content", parentId);
- };
-}
\ No newline at end of file
+ }
+}