diff --git a/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/Id2Topic.java b/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/Id2Topic.java index 0d4fbb4cbf5fb7a188d84bf064cd70679fbcf11e..6b65b2a30c8a1bc26fa212bde87b6ecb38939de0 100644 --- a/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/Id2Topic.java +++ b/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/Id2Topic.java @@ -7,11 +7,14 @@ import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; +import org.jdom2.output.Format; +import org.jdom2.output.XMLOutputter; import javax.ws.rs.client.*; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import java.io.File; +import java.io.FileWriter; import java.io.IOException; import java.util.List; import java.util.Map; @@ -51,13 +54,22 @@ public class Id2Topic { final SAXBuilder saxBuilder = new SAXBuilder(); if (0 == args.length) { - System.err.println("Usage: id2topic <docbook2topic file>"); + System.err.println("Usage: id2topic <docbook2topic basefilename>"); } else { - final File inputFile = new File(args[0]); + final File inputFile = new File(args[0] + ".xml"); try { final Document document = saxBuilder.build(inputFile); handleDocbok2idMap(document.getRootElement()); + + final Format outFormat = Format.getPrettyFormat(); + + // Serialize to console + final XMLOutputter printer = new XMLOutputter(outFormat); + + final String outputFileName = args[0] + ".tid.xml"; + final FileWriter outputFile = new FileWriter(outputFileName); + printer.output(document.getRootElement(), outputFile); } catch (JDOMException e) { System.err.println("Unable to parse " + config.getString("dobook2topicFileName")); } catch (IOException e) { @@ -68,15 +80,17 @@ public class Id2Topic { } static void handleDocbok2idMap(final Element map) { + String mapPrefix = map.getAttributeValue("prefix"); for (final Element entry : map.getChildren("entry")) { - createTopic(entry.getAttributeValue("id"), + final int tid = createTopic(mapPrefix + ":" + entry.getAttributeValue("id"), entry.getChildText("title"), entry.getChildText("content")); + entry.setAttribute("tid", "" + tid); } } - static void createTopic(String hdmId, String title, String content) { + static int createTopic(String hdmId, String title, String content) { int tid = db.hdmIdExists(hdmId); if (tid < 0) { // No related topic @@ -96,9 +110,12 @@ public class Id2Topic { final Map<String, Object> payload = (Map<String, Object>) response.get(KEY_PAYLOAD); final Map<String, Object> topicData = (Map<String, Object>) payload.get(KEY_TOPICDATA); - db.addHdmId((int) topicData.get("tid"), hdmId); + int newTid = (int) topicData.get("tid"); + db.addHdmId(newTid, hdmId); + return newTid; } else { - System.out.println("hdmId '" + hdmId + "' already present, no action"); + System.out.println("hdmId '" + hdmId + "' already present, just adding tid"); + return tid; // Possibly aligning title and content with lecture notes? // Difficult: Incomplete NodeBB write API --> required MongoDB fiddling diff --git a/ws/Docbook/Preprocess/Xsl/docbook2topics.xsl b/ws/Docbook/Preprocess/Xsl/docbook2topics.xsl index 79550853c90ab74c513b0e9977b2138a2a7352bc..66169a637bc5dd417d72d2c475cec838127841dc 100644 --- a/ws/Docbook/Preprocess/Xsl/docbook2topics.xsl +++ b/ws/Docbook/Preprocess/Xsl/docbook2topics.xsl @@ -13,10 +13,9 @@ <xsl:include href="common.xsl"/> <xsl:output indent="yes" method="xml"/> - <xsl:variable name="hdmTopicIdPrefix" select="'goiklecture'"/> <xsl:template match="/"> - <map> + <map prefix="goiklecture"> <xsl:apply-templates select=".//d:qandaset"/> </map> </xsl:template> @@ -25,8 +24,6 @@ <entry > <xsl:attribute name="id"> - <xsl:value-of select="$hdmTopicIdPrefix"/> - <xsl:text>:</xsl:text> <xsl:value-of select="@xml:id"/> </xsl:attribute> diff --git a/ws/Docbook/Preprocess/make.rules b/ws/Docbook/Preprocess/make.rules index e8e98c5502417c795b3a5cf0f4419e52346e0182..0d72038ab7409c832bee8fb679dda5cdb0db21e3 100644 --- a/ws/Docbook/Preprocess/make.rules +++ b/ws/Docbook/Preprocess/make.rules @@ -79,7 +79,7 @@ SAXONCMD=java -cp "${DBOOK_XSL}/tools/lib/saxon9he.jar:/usr/share/java/xercesImp -xsl:${DBOOK_XSL_PREPROCESS}/Xsl/docbook2docbook.xsl > ${*}.xml ${SAXONCMD} -s:$*.xml \ -xsl:${DBOOK_XSL_PREPROCESS}/Xsl/docbook2topics.xsl ${dbookXslWebhelpParam} > ${*}.topics.xml - ${CMDID2TOPIC} ${*}.topics.xml + ${CMDID2TOPIC} ${*}.topics # Only basename without .xml extension ${SAXONCMD} -s:$*.xml \ -xsl:${DBOOK_XSL_PREPROCESS}/Xsl/docbook2html.xsl > ${*}.html.xml ${SAXONCMD} -s:$*.xml \ @@ -172,7 +172,7 @@ clean: rm -rf ${BUILDROOT} diff: - diff -r --brief targetReference/ target|grep -v pdf + diff -r --brief targetReference/ target|grep -v pdf || exit 0 #end