From d6b9db7926af4dc6d7df5af55d261731bd623c23 Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Fri, 10 Oct 2014 21:21:14 +0200 Subject: Introduce a WeblogLink class to refactor a lot of code on how links are written. --- org/madore/damlengine/TodoEntryElement.java | 39 +++++++++++++---------------- 1 file changed, 18 insertions(+), 21 deletions(-) (limited to 'org/madore/damlengine/TodoEntryElement.java') diff --git a/org/madore/damlengine/TodoEntryElement.java b/org/madore/damlengine/TodoEntryElement.java index 6ba7c5d..7a8c272 100644 --- a/org/madore/damlengine/TodoEntryElement.java +++ b/org/madore/damlengine/TodoEntryElement.java @@ -35,16 +35,16 @@ public final class TodoEntryElement extends TodoDefaultElement { LangHelper.setLangNorec(article, explicitLang); node.getParentNode().replaceChild(article, node); - String entryNumberStr = node.getAttributeNS(null, "number"); + final String entryNumberStr = node.getAttributeNS(null, "number"); if ( ! Pattern.matches("^\\d{4}$", entryNumberStr) ) throw new IllegalArgumentException("entry number attribute must be of the form NNNN"); - String entryDateStr = node.getAttributeNS(null, "date"); - Matcher entryDateMatcher = Pattern.compile("^(\\d{4})-(\\d{2})-(\\d{2})$").matcher(entryDateStr); + final String entryDateStr = node.getAttributeNS(null, "date"); + final Matcher entryDateMatcher = Pattern.compile("^(\\d{4})-(\\d{2})-(\\d{2})$").matcher(entryDateStr); if ( ! entryDateMatcher.matches() ) throw new IllegalArgumentException("entry date attribute must be of the form YYYY-MM-DD"); - String entryYearStr = entryDateMatcher.group(1); - String entryMonthStr = entryDateMatcher.group(2); - String entryDayStr = entryDateMatcher.group(3); + final String entryYearStr = entryDateMatcher.group(1); + final String entryMonthStr = entryDateMatcher.group(2); + final String entryDayStr = entryDateMatcher.group(3); String entryDowStr = node.getAttributeNS(null, "day-of-week"); { final int entryYear = Integer.parseInt(entryYearStr); @@ -61,10 +61,12 @@ public final class TodoEntryElement extends TodoDefaultElement { } } } - String entryCatStr = node.getAttributeNS(null, "cat"); - String entryDoSinglePageStr = node.getAttributeNS(null, "single-page"); - String entryCdateStr = node.getAttributeNS(null, "cdate"); - ArrayList entryCatList; + final String entryCatStr = node.getAttributeNS(null, "cat"); + final String entryDoSinglePageStr + = node.hasAttributeNS(null, "single-page") + ? node.getAttributeNS(null, "single-page") : null; + final String entryCdateStr = node.getAttributeNS(null, "cdate"); + final ArrayList entryCatList; if ( entryCatStr.equals("") ) { entryCatList = new ArrayList(0); } else { @@ -76,7 +78,11 @@ public final class TodoEntryElement extends TodoDefaultElement { } } - String entryIdStr = "d."+entryDateStr+"."+entryNumberStr; + final WeblogLink lk = new WeblogLink(entryYearStr, entryMonthStr, + entryDayStr, entryNumberStr, "", + entryDoSinglePageStr); + lk.setTypeStandard(); + String entryIdStr = lk.getFragment(); article.setAttributeNS(null, "id", entryIdStr); { String classAtt = node.getAttributeNS(null, "class"); @@ -102,16 +108,7 @@ public final class TodoEntryElement extends TodoDefaultElement { header.appendChild(ctx.doc.createTextNode("\n")); Element permalink = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "a"); - if ( entryDoSinglePageStr.equals("") ) - permalink.setAttributeNS(null, "href", - entryYearStr+"-"+entryMonthStr+".html" - +"#"+entryIdStr); - else - permalink.setAttributeNS(null, "href", - entryYearStr+"-"+entryMonthStr - +"-"+entryDayStr+"-"+entryDoSinglePageStr - +".html" - +"#"+entryIdStr); + permalink.setAttributeNS(null, "href", lk.getTarget("")); permalink.setAttributeNS(null, "rel", "bookmark"); Element time = ctx.doc.createElementNS(DamlEngine.XHTML_NS, "time"); permalink.appendChild(time); -- cgit v1.2.3