site

(djk)
2011-02-20: Use file resources in the jar for files instead of hard coding them

Use file resources in the jar for files instead of hard coding them in java.

diff --git a/build.xml b/build.xml
--- a/build.xml
+++ b/build.xml
@@ -3,6 +3,8 @@
   <property name="alien.src" value="./alien/src" />
   <property name="alien.libs" value="./alien/libs" />
   <property name="classes" value="./build/classes" />
+  <property name="doc" value="./doc" />
+  <property name="templates" value="./templates" />
   <property name="jars" value="./build/jar" />
 
   <target name="clean">
@@ -46,6 +48,8 @@
         <attribute name="Main-Class" value="fniki.standalone.ServeHttp"/>
         <attribute name="Plugin-Main-Class" value="fniki.freenet.plugin.Fniki"/>
       </manifest>
+      <fileset dir="${doc}" includes="quickstart.txt"/>
+      <fileset dir="${templates}" includes="*.html"/>
     </jar>
   </target>
 
diff --git a/quickstart.txt b/doc/quickstart.txt
rename from quickstart.txt
rename to doc/quickstart.txt
--- a/quickstart.txt
+++ b/doc/quickstart.txt
@@ -5,9 +5,10 @@
 
 ===Configuration===
 # Click on the "View" link below to view (and edit) the configuration.
-# Set the "FMS name" to the human readable part of your FMS ID (everything before the '@').
+# Set the "FMS Name" to the human readable part of your FMS ID (everything before the '@').
 # Set the FMS Private SSK to your private FMS SSK (see below if you don't know how to find this).
-# Adjust any other values as necessary.  If you're running FMS and Fred on the same machine on the default ports this shouldn't be necessary. # Click the "Done" button to save the configuration changes.
+# Adjust any other values as necessary.  If you're running FMS and Fred on the same machine on the default ports this shouldn't be necessary.
+# Click the "Done" button to save the configuration changes.
 
 === Finding Other Versions===
 Click the "Discover" link below to search for other versions of the wiki.
diff --git a/src/fniki/wiki/WikiApp.java b/src/fniki/wiki/WikiApp.java
--- a/src/fniki/wiki/WikiApp.java
+++ b/src/fniki/wiki/WikiApp.java
@@ -34,6 +34,7 @@ import java.util.List;
 import java.util.Set;
 
 import wormarc.FileManifest;
+import wormarc.IOUtil;
 
 import static fniki.wiki.HtmlUtils.*;
 import static fniki.wiki.Validations.*;
@@ -534,50 +535,10 @@ public class WikiApp implements ChildCon
     }
 
     private static String getDefaultWikiText() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("//You are seeing this Quick Start because the wiki has no Front_Page. It will disappear as soon as you edit and save the page. //\n");
-        sb.append("----\n");
-        sb.append("\n");
-        sb.append("== Quick Start ==\n");
-        sb.append("\n");
-        sb.append("===Configuration===\n");
-        sb.append("# Click on the \"View\" link below to view (and edit) the configuration.\n");
-        sb.append("# Set the \"FMS Name\" to the human readable part of your FMS ID (everything before the '@').\n");
-        sb.append("# Set the FMS Private SSK to your private FMS SSK (see below if you don't know how to find this).\n");
-        sb.append("# Adjust any other values as necessary.  If you're running FMS and Fred on the same machine on the default ports this shouldn't be necessary.\n");
-        sb.append("# Click the \"Done\" button to save the configuration changes.\n");
-        sb.append("\n");
-        sb.append("=== Finding Other Versions===\n");
-        sb.append("Click the \"Discover\" link below to search for other versions of the wiki.\n");
-        sb.append("\n");
-        sb.append("=== Submitting ===\n");
-        sb.append("Use the \"Submit\" link below to submit your changes.  It may take a long time for other people to see them.\n");
-        sb.append("\n");
-        sb.append("=== Finding Your Private SSK ===\n");
-        sb.append("# Go to http://127.0.0.1:18080/localidentities.htm in the FMS web interface and click the \"Export Identities\" button\n");
-        sb.append("to save your FMS indentities to a file.\n");
-        sb.append("\n");
-        sb.append("# In the text editor of your choice, open the file you saved above and look for the Name and PrivateKey values for the identity you want to use.\n");
-        sb.append("\n");
-        sb.append("In the example identity snippet below, the FMS Name value would be:\\\\ \n");
-        sb.append("SomeUser\n");
-        sb.append("\n");
-        sb.append("and the FMS Private Key would be: \\\\ \n");
-        sb.append("SSK@YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,AQECAAE/ \n");
-        sb.append("\n");
-        sb.append("----\n");
-        sb.append("{{{\n");
-        sb.append("<Identity>\n");
-        sb.append("   <Name><![CDATA[SomeUser]]></Name>\n");
-        sb.append("   <PublicKey>SSK@XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,AQACAAE/</PublicKey>\n");
-        sb.append("   <PrivateKey>SSK@YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY,AQECAAE/</PrivateKey>\n");
-        sb.append("   <SingleUse>false</SingleUse>\n");
-        sb.append("   <PublishTrustList>false</PublishTrustList>\n");
-        sb.append("   <PublishBoardList>false</PublishBoardList>\n");
-        sb.append("   <PublishFreesite>false</PublishFreesite>\n");
-        sb.append("</Identity>\n");
-        sb.append("}}}\n");
-        sb.append("\n");
-        return sb.toString();
+        try {
+            return IOUtil.readUtf8StringAndClose(WikiApp.class.getResourceAsStream("/quickstart.txt"));
+        } catch (IOException ioe) {
+            return "Couldn't load default wikitext from jar???";
+        }
     }
 }
diff --git a/src/fniki/wiki/child/SettingConfig.java b/src/fniki/wiki/child/SettingConfig.java
--- a/src/fniki/wiki/child/SettingConfig.java
+++ b/src/fniki/wiki/child/SettingConfig.java
@@ -24,9 +24,12 @@
 
 package fniki.wiki.child;
 
+import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import static ys.wikiparser.Utils.*;
 
+import wormarc.IOUtil;
+
 import fniki.wiki.ArchiveManager;
 import fniki.wiki.ChildContainerException;
 import fniki.wiki.Configuration;
@@ -224,77 +227,11 @@ public class SettingConfig implements Mo
 
     // READ the comment above before modifiy the template!
     private static String formTemplate() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("<html>\n");
-        sb.append("<head>\n");
-        sb.append("<title>\n");
-        sb.append("  Configuration\n");
-        sb.append("</title>\n");
-        sb.append("</head>\n");
-        sb.append("<body>\n");
-        sb.append("%s\n");
-        sb.append("<h1>Configuration</h1>\n");
-        sb.append("<form method=\"post\" action=\"%s\" enctype=\"multipart/form-data\" accept-charset=\"UTF-8\">\n");
-        sb.append("<table>\n");
-        sb.append("  <tr>\n");
-        sb.append("    <td>Fcp Host</td>\n");
-        sb.append("    <td><input type=\"text\" name=\"fcphost\" value=\"%s\" /></td>\n");
-        sb.append("  </tr>\n");
-        sb.append("  <tr>\n");
-        sb.append("    <td>Fcp Port</td>\n");
-        sb.append("    <td><input type=\"text\" name=\"fcpport\" value=\"%d\" /></td>\n");
-        sb.append("  </tr>\n");
-        sb.append("  <tr>\n");
-        sb.append("    <td>Fproxy Prefix</td>\n");
-        sb.append("    <td><input type=\"text\" name=\"fpprefix\" size=\"64\" value=\"%s\" /></td>\n");
-        sb.append("  </tr>\n");
-        sb.append("  <tr>\n");
-        sb.append("    <td>FMS Host</td>\n");
-        sb.append("    <td><input type=\"text\" name=\"fmshost\" value=\"%s\" /></td>\n");
-        sb.append("  </tr>\n");
-        sb.append("  <tr>\n");
-        sb.append("    <td>FMS Port</td>\n");
-        sb.append("    <td><input type=\"text\" name=\"fmsport\" value=\"%d\" /> </td>\n");
-        sb.append("  </tr>\n");
-        sb.append("  <tr>\n");
-        sb.append("    <td>FMS Private SSK</td>\n");
-        sb.append("    <td><input type=\"text\" name=\"fmsssk\" size=\"128\" value=\"\" /> </td>\n");
-        sb.append("  </tr>\n");
-        sb.append("  <tr>\n");
-        sb.append("    <td>FMS Name</td>\n");
-        sb.append("    <td><input type=\"text\" name=\"fmsid\" value=\"%s\" /> </td>\n");
-        sb.append("  </tr>\n");
-        sb.append("  <tr>\n");
-        sb.append("    <td>Full FMS ID</td>\n");
-        sb.append("    <td><input type=\"text\" name=\"fmsfull\" size=\"64\" readonly=\"readonly\" value=\"%s\" /> </td>\n");
-        sb.append("  </tr>\n");
-        sb.append("  <tr>\n");
-        sb.append("    <td>FMS Group</td>\n");
-        sb.append("    <td><input type=\"text\" name=\"fmsgroup\" value=\"%s\" /> </td>\n");
-        sb.append("  </tr>\n");
-        sb.append("  <tr>\n");
-        sb.append("    <td>Wiki Name</td>\n");
-        sb.append("    <td><input type=\"text\" name=\"wikiname\" value=\"%s\"/> </td>\n");
-        sb.append("  </tr>\n");
-        sb.append("  <tr>\n");
-        sb.append("    <td><input type=\"checkbox\" name=\"images\" %s/>Enable Images</td>\n");
-        sb.append("  </tr>\n");
-        sb.append("  <input type=\"hidden\" name=\"formPassword\" value=\"%s\"/>\n");
-        sb.append("</table>\n");
-        sb.append("<input name=\"defaults\" type=\"submit\" value=\"Reset Defaults\"/>\n");
-        sb.append("<input name=\"done\" type=\"submit\" value=\"Done\"/>\n");
-        sb.append("<hr>\n");
-        sb.append("<input name=\"import\" type=\"submit\" value=\"Import Configuration\"/>\n");
-        sb.append("<input type=\"file\" name=\"upload\" size=\"64\">\n");
-        sb.append("<hr>\n");
-        sb.append("<input name=\"export\" type=\"submit\" value=\"Export Configuration\"/>\n");
-        sb.append("<hr>\n");
-        sb.append("</form>\n");
-        sb.append("\n");
-        sb.append("</body>\n");
-        sb.append("</html>\n");
-
-        return sb.toString();
+        try {
+            return IOUtil.readUtf8StringAndClose(SettingConfig.class.getResourceAsStream("/config_form.html"));
+        } catch (IOException ioe) {
+            return "Couldn't load template from jar???";
+        }
     }
 }
 
diff --git a/templates/config_form.html b/templates/config_form.html
new file mode 100644
--- /dev/null
+++ b/templates/config_form.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+<title>Configuration
+</title>
+</head>
+<body>
+%s
+<h1>Configuration</h1>
+<form method="post" action="%s" enctype="multipart/form-data" accept-charset="UTF-8">
+<table>
+  <tr>
+    <td>Fcp Host</td>
+    <td><input type="text" name="fcphost" value="%s" /></td>
+  </tr>
+  <tr>
+    <td>Fcp Port</td>
+    <td><input type="text" name="fcpport" value="%d" /></td>
+  </tr>
+  <tr>
+    <td>Fproxy Prefix</td>
+    <td><input type="text" name="fpprefix" size="64" value="%s" /></td>
+  </tr>
+  <tr>
+    <td>FMS Host</td>
+    <td><input type="text" name="fmshost" value="%s" /></td>
+  </tr>
+  <tr>
+    <td>FMS Port</td>
+    <td><input type="text" name="fmsport" value="%d" /> </td>
+  </tr>
+  <tr>
+    <td>FMS Private SSK</td>
+    <td><input type="text" name="fmsssk" size="128" value="" /> </td>
+  </tr>
+  <tr>
+    <td>FMS Name</td>
+    <td><input type="text" name="fmsid" value="%s" /> </td>
+  </tr>
+  <tr>
+    <td>Full FMS ID</td>
+    <td><input type="text" name="fmsfull" size="64" readonly="readonly" value="%s" /> </td>
+  </tr>
+  <tr>
+    <td>FMS Group</td>
+    <td><input type="text" name="fmsgroup" value="%s" /> </td>
+  </tr>
+  <tr>
+    <td>Wiki Name</td>
+    <td><input type="text" name="wikiname" value="%s"/> </td>
+  </tr>
+  <tr>
+    <td><input type="checkbox" name="images" %s/>Enable Images</td>
+  </tr>
+  <input type="hidden" name="formPassword" value="%s"/>
+</table>
+<input name="defaults" type="submit" value="Reset Defaults"/>
+<input name="done" type="submit" value="Done"/>
+<hr>
+<input name="import" type="submit" value="Import Configuration"/>
+<input type="file" name="upload" size="64">
+<hr>
+<input name="export" type="submit" value="Export Configuration"/>
+<hr>
+</form>
+
+</body>
+</html>