From 07f2f3c30a6e0bc811e436925dfdfcf5befdecb7 Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Sat, 12 Nov 2011 14:33:35 +0100 Subject: Entry single pages: handle permalinks gracefully, populate with attribute. * A single page is generated from the single-page attribute on element (stored in database as do_single_page). * Permalink refers to the single page. Same from weblog index. Other links are subject to debate (e.g., what about internal links? now we link to single page when link has a supplement part, but this is debatable). --- org/madore/damlengine/WeblogPopulate.java | 37 ++++++++++++++++++------------- 1 file changed, 21 insertions(+), 16 deletions(-) (limited to 'org/madore/damlengine/WeblogPopulate.java') diff --git a/org/madore/damlengine/WeblogPopulate.java b/org/madore/damlengine/WeblogPopulate.java index 9b6694e..6593f9f 100644 --- a/org/madore/damlengine/WeblogPopulate.java +++ b/org/madore/damlengine/WeblogPopulate.java @@ -46,13 +46,13 @@ public final class WeblogPopulate { final PreparedStatement checkSt = conn.prepareStatement("SELECT sha1 FROM entries WHERE id=?"); final PreparedStatement insertNSt - = conn.prepareStatement("INSERT INTO entries(id,edate,lang,title,title_xml,content,sha1) VALUES (?,?,?,?,?::xml,?::xml,?)"); + = conn.prepareStatement("INSERT INTO entries(id,edate,lang,do_single_page,title,title_xml,content,sha1) VALUES (?,?,?,?,?,?::xml,?::xml,?)"); final PreparedStatement insertCSt - = conn.prepareStatement("INSERT INTO entries(id,edate,lang,title,title_xml,content,sha1,cdate) VALUES (?,?,?,?,?::xml,?::xml,?,?::timestamptz)"); + = conn.prepareStatement("INSERT INTO entries(id,edate,lang,do_single_page,title,title_xml,content,sha1,cdate) VALUES (?,?,?,?,?,?::xml,?::xml,?,?::timestamptz)"); final PreparedStatement updateNSt - = conn.prepareStatement("UPDATE entries SET (edate,mdate,lang,title,title_xml,content,sha1)=(?,DEFAULT,?,?,?::xml,?::xml,?) WHERE id=?"); + = conn.prepareStatement("UPDATE entries SET (edate,mdate,lang,do_single_page,title,title_xml,content,sha1)=(?,DEFAULT,?,?,?,?::xml,?::xml,?) WHERE id=?"); final PreparedStatement updateCSt - = conn.prepareStatement("UPDATE entries SET (edate,mdate,lang,title,title_xml,content,sha1,cdate)=(?,DEFAULT,?,?,?::xml,?::xml,?,?::timestamptz) WHERE id=?"); + = conn.prepareStatement("UPDATE entries SET (edate,mdate,lang,do_single_page,title,title_xml,content,sha1,cdate)=(?,DEFAULT,?,?,?,?::xml,?::xml,?,?::timestamptz) WHERE id=?"); final PreparedStatement checkDateSt = conn.prepareStatement("SELECT to_char(cdate,'YYYY-MM-DD\"T\"HH24:MI:SS\"Z\"') FROM entries WHERE id=?"); final PreparedStatement clearCatSt @@ -85,6 +85,9 @@ public final class WeblogPopulate { cdate = null; String catStr = ent.getAttributeNS(null, "cat"); String[] catList = catStr.split("\\s+"); + String doSinglePage = ent.getAttributeNS(null, "single-page"); + if ( doSinglePage.equals("") ) + doSinglePage = null; String lang = LangHelper.getLangRec(ent); String content = ser.writeToString(ent); sha1.reset(); @@ -108,15 +111,16 @@ public final class WeblogPopulate { updateSt = updateCSt; updateSt.setString(1, date); updateSt.setString(2, lang); - updateSt.setString(3, titleTxt); - updateSt.setString(4, titleXml); - updateSt.setString(5, content); - updateSt.setString(6, digest); + updateSt.setString(3, doSinglePage); + updateSt.setString(4, titleTxt); + updateSt.setString(5, titleXml); + updateSt.setString(6, content); + updateSt.setString(7, digest); if ( cdate != null ) { - updateSt.setString(7, cdate); - updateSt.setInt(8, id); + updateSt.setString(8, cdate); + updateSt.setInt(9, id); } else { - updateSt.setInt(7, id); + updateSt.setInt(8, id); } updateSt.executeUpdate(); } else { @@ -129,12 +133,13 @@ public final class WeblogPopulate { insertSt.setInt(1, id); insertSt.setString(2, date); insertSt.setString(3, lang); - insertSt.setString(4, titleTxt); - insertSt.setString(5, titleXml); - insertSt.setString(6, content); - insertSt.setString(7, digest); + insertSt.setString(4, doSinglePage); + insertSt.setString(5, titleTxt); + insertSt.setString(6, titleXml); + insertSt.setString(7, content); + insertSt.setString(8, digest); if ( cdate != null ) - insertSt.setString(8, cdate); + insertSt.setString(9, cdate); insertSt.executeUpdate(); } if ( ! Pattern.matches("^\\d{4}-\\d{2}-\\d{2}T\\d{2}\\:\\d{2}(?:\\:\\d{2})?(?:Z|[\\+\\-]\\d{2}\\:\\d{2})$", cdate) ) { -- cgit v1.2.3