Awight has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/403477 )

Change subject: Light refactoring
......................................................................

Light refactoring

Split from I3517af1cd2a2005596447d154ae338b3bf5692d9

Change-Id: I1d7a7d02623b64471721338bf33b82075010e524
---
M pom.xml
R src/org/mediawiki/dumper/filters/AfterTimeStampFilter.java
R src/org/mediawiki/dumper/filters/BeforeTimeStampFilter.java
R src/org/mediawiki/dumper/filters/ChainingDumpWriter.java
R src/org/mediawiki/dumper/filters/LatestFilter.java
R src/org/mediawiki/dumper/filters/ProgressFilter.java
R src/org/mediawiki/dumper/filters/RevisionListFilter.java
R src/org/mediawiki/dumper/filters/TimeStampFilter.java
A src/org/mediawiki/dumper/filters/predicates/BaseListFilter.java
R src/org/mediawiki/dumper/filters/predicates/ExactListFilter.java
R src/org/mediawiki/dumper/filters/predicates/ListFilter.java
R src/org/mediawiki/dumper/filters/predicates/NamespaceFilter.java
R src/org/mediawiki/dumper/filters/predicates/NotalkFilter.java
A src/org/mediawiki/dumper/filters/predicates/PredicatePageFilter.java
R src/org/mediawiki/dumper/filters/predicates/TitleMatchFilter.java
R src/org/mediawiki/dumper/input/XmlDumpReader.java
R src/org/mediawiki/dumper/wiki/Contributor.java
R src/org/mediawiki/dumper/wiki/Namespace.java
R src/org/mediawiki/dumper/wiki/NamespaceSet.java
R src/org/mediawiki/dumper/wiki/Page.java
R src/org/mediawiki/dumper/wiki/Revision.java
R src/org/mediawiki/dumper/wiki/Siteinfo.java
R src/org/mediawiki/dumper/wiki/Title.java
R src/org/mediawiki/dumper/wiki/Wikiinfo.java
R src/org/mediawiki/dumper/writers/DumpWriter.java
R src/org/mediawiki/dumper/writers/MultiWriter.java
R src/org/mediawiki/dumper/writers/sql/SqlFileStream.java
R src/org/mediawiki/dumper/writers/sql/SqlLiteral.java
R src/org/mediawiki/dumper/writers/sql/SqlServerStream.java
R src/org/mediawiki/dumper/writers/sql/SqlStream.java
R src/org/mediawiki/dumper/writers/sql/SqlWriter.java
R src/org/mediawiki/dumper/writers/sql/SqlWriter14.java
R src/org/mediawiki/dumper/writers/sql/SqlWriter15.java
R src/org/mediawiki/dumper/writers/sql/SqlWriter1_25.java
R src/org/mediawiki/dumper/writers/xml/SphinxWriter.java
R src/org/mediawiki/dumper/writers/xml/XmlDumpWriter0_10.java
R src/org/mediawiki/dumper/writers/xml/XmlDumpWriter0_3.java
R src/org/mediawiki/dumper/writers/xml/XmlWriter.java
38 files changed, 310 insertions(+), 202 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/tools/mwdumper 
refs/changes/77/403477/1

diff --git a/pom.xml b/pom.xml
index 5dc7d5c..b67cc18 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,6 +15,11 @@
 
   <dependencies>
     <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+      <version>19.0</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-compress</artifactId>
       <version>1.4.1</version>
diff --git a/src/org/mediawiki/importer/AfterTimeStampFilter.java 
b/src/org/mediawiki/dumper/filters/AfterTimeStampFilter.java
similarity index 91%
rename from src/org/mediawiki/importer/AfterTimeStampFilter.java
rename to src/org/mediawiki/dumper/filters/AfterTimeStampFilter.java
index 8300fbc..ad0ffdf 100644
--- a/src/org/mediawiki/importer/AfterTimeStampFilter.java
+++ b/src/org/mediawiki/dumper/filters/AfterTimeStampFilter.java
@@ -22,14 +22,16 @@
  *
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.filters;
 
 import java.io.IOException;
-import java.text.ParseException;
+
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.writers.DumpWriter;
 
 public class AfterTimeStampFilter extends TimeStampFilter {
 
-       public AfterTimeStampFilter(DumpWriter sink, String timeStamp) throws 
ParseException {
+       public AfterTimeStampFilter(DumpWriter sink, String timeStamp) {
                super(sink, timeStamp);
        }
 
diff --git a/src/org/mediawiki/importer/BeforeTimeStampFilter.java 
b/src/org/mediawiki/dumper/filters/BeforeTimeStampFilter.java
similarity index 91%
rename from src/org/mediawiki/importer/BeforeTimeStampFilter.java
rename to src/org/mediawiki/dumper/filters/BeforeTimeStampFilter.java
index 6575c3b..7536e49 100644
--- a/src/org/mediawiki/importer/BeforeTimeStampFilter.java
+++ b/src/org/mediawiki/dumper/filters/BeforeTimeStampFilter.java
@@ -22,14 +22,16 @@
  *
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.filters;
 
 import java.io.IOException;
-import java.text.ParseException;
+
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.writers.DumpWriter;
 
 public class BeforeTimeStampFilter extends TimeStampFilter {
 
-       public BeforeTimeStampFilter(DumpWriter sink, String timeStamp) throws 
ParseException {
+       public BeforeTimeStampFilter(DumpWriter sink, String timeStamp) {
                super(sink, timeStamp);
        }
 
diff --git a/src/org/mediawiki/importer/PageFilter.java 
b/src/org/mediawiki/dumper/filters/ChainingDumpWriter.java
similarity index 72%
rename from src/org/mediawiki/importer/PageFilter.java
rename to src/org/mediawiki/dumper/filters/ChainingDumpWriter.java
index d1338b1..f727bd5 100644
--- a/src/org/mediawiki/importer/PageFilter.java
+++ b/src/org/mediawiki/dumper/filters/ChainingDumpWriter.java
@@ -23,51 +23,49 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.filters;
 
 import java.io.IOException;
 
-public abstract class PageFilter implements DumpWriter {
-       DumpWriter sink;
-       boolean showThisPage;
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.wiki.Siteinfo;
+import org.mediawiki.dumper.wiki.Wikiinfo;
+import org.mediawiki.dumper.writers.DumpWriter;
+
+public abstract class ChainingDumpWriter implements DumpWriter {
+       protected final DumpWriter writer;
        
-       public PageFilter(DumpWriter sink) {
-               this.sink = sink;
+       public ChainingDumpWriter(DumpWriter writer) {
+               this.writer = writer;
        }
        
        public void close() throws IOException {
-               sink.close();
+               writer.close();
        }
        
        public void writeStartWiki(Wikiinfo info) throws IOException {
-               sink.writeStartWiki(info);
+               writer.writeStartWiki(info);
        }
        
        public void writeEndWiki() throws IOException {
-               sink.writeEndWiki();
+               writer.writeEndWiki();
        }
        
        public void writeSiteinfo(Siteinfo info) throws IOException {
-               sink.writeSiteinfo(info);
+               writer.writeSiteinfo(info);
        }
        
        public void writeStartPage(Page page) throws IOException {
-               showThisPage = pass(page);
-               if (showThisPage)
-                       sink.writeStartPage(page);
+               writer.writeStartPage(page);
        }
        
        public void writeEndPage() throws IOException {
-               if (showThisPage)
-                       sink.writeEndPage();
+               writer.writeEndPage();
        }
        
        public void writeRevision(Revision revision) throws IOException {
-               if (showThisPage)
-                       sink.writeRevision(revision);
+               writer.writeRevision(revision);
        }
        
-       protected boolean pass(Page page) {
-               return true;
-       }
 }
diff --git a/src/org/mediawiki/importer/LatestFilter.java 
b/src/org/mediawiki/dumper/filters/LatestFilter.java
similarity index 70%
rename from src/org/mediawiki/importer/LatestFilter.java
rename to src/org/mediawiki/dumper/filters/LatestFilter.java
index 709f5bd..8e928db 100644
--- a/src/org/mediawiki/importer/LatestFilter.java
+++ b/src/org/mediawiki/dumper/filters/LatestFilter.java
@@ -23,44 +23,26 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.filters;
 
 import java.io.IOException;
 
-public class LatestFilter implements DumpWriter {
-       DumpWriter sink;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.writers.DumpWriter;
+
+public class LatestFilter extends ChainingDumpWriter {
        Revision lastRevision;
        
        public LatestFilter(DumpWriter sink) {
-               this.sink = sink;
+               super(sink);
        }
-       
-       public void close() throws IOException {
-               sink.close();
-       }
-       
-       public void writeStartWiki(Wikiinfo info) throws IOException {
-               sink.writeStartWiki(info);
-       }
-       
-       public void writeEndWiki() throws IOException {
-               sink.writeEndWiki();
-       }
-       
-       public void writeSiteinfo(Siteinfo info) throws IOException {
-               sink.writeSiteinfo(info);
-       }
-       
-       public void writeStartPage(Page page) throws IOException {
-               sink.writeStartPage(page);
-       }
-       
+
        public void writeEndPage() throws IOException {
                if (lastRevision != null) {
-                       sink.writeRevision(lastRevision);
+                       writer.writeRevision(lastRevision);
                        lastRevision = null;
                }
-               sink.writeEndPage();
+               writer.writeEndPage();
        }
        
        public void writeRevision(Revision revision) {
diff --git a/src/org/mediawiki/dumper/ProgressFilter.java 
b/src/org/mediawiki/dumper/filters/ProgressFilter.java
similarity index 91%
rename from src/org/mediawiki/dumper/ProgressFilter.java
rename to src/org/mediawiki/dumper/filters/ProgressFilter.java
index 01ce837..2cbfe64 100644
--- a/src/org/mediawiki/dumper/ProgressFilter.java
+++ b/src/org/mediawiki/dumper/filters/ProgressFilter.java
@@ -23,17 +23,16 @@
  * $Id$
  */
 
-package org.mediawiki.dumper;
+package org.mediawiki.dumper.filters;
 
 import java.io.IOException;
 import java.text.MessageFormat;
 
-import org.mediawiki.importer.DumpWriter;
-import org.mediawiki.importer.Page;
-import org.mediawiki.importer.PageFilter;
-import org.mediawiki.importer.Revision;
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.writers.DumpWriter;
 
-public class ProgressFilter extends PageFilter {
+public class ProgressFilter extends ChainingDumpWriter {
        int pages = 0;
        int revisions = 0;
        int interval = 1000;
diff --git a/src/org/mediawiki/importer/RevisionListFilter.java 
b/src/org/mediawiki/dumper/filters/RevisionListFilter.java
similarity index 79%
rename from src/org/mediawiki/importer/RevisionListFilter.java
rename to src/org/mediawiki/dumper/filters/RevisionListFilter.java
index 44f4f13..288bb8d 100644
--- a/src/org/mediawiki/importer/RevisionListFilter.java
+++ b/src/org/mediawiki/dumper/filters/RevisionListFilter.java
@@ -23,23 +23,25 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.filters;
 
-import java.lang.Integer;
 import java.io.BufferedReader;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.util.TreeSet;
 
-public class RevisionListFilter implements DumpWriter {
-       DumpWriter sink;
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.writers.DumpWriter;
+
+public class RevisionListFilter extends ChainingDumpWriter {
        protected TreeSet<Integer> revIds;
        protected Page currentPage;
        protected boolean pageWritten;
        
        public RevisionListFilter(DumpWriter sink, String sourceFileName) 
throws IOException {
-               this.sink = sink;
+               super(sink);
                revIds = new TreeSet<Integer>();
                BufferedReader input = new BufferedReader(new InputStreamReader(
                        new FileInputStream(sourceFileName), "utf-8"));
@@ -53,23 +55,7 @@
                }
                input.close();
        }
-       
-       public void close() throws IOException {
-               sink.close();
-       }
-       
-       public void writeStartWiki(Wikiinfo info) throws IOException {
-               sink.writeStartWiki(info);
-       }
-       
-       public void writeEndWiki() throws IOException {
-               sink.writeEndWiki();
-       }
-       
-       public void writeSiteinfo(Siteinfo info) throws IOException {
-               sink.writeSiteinfo(info);
-       }
-       
+               
        public void writeStartPage(Page page) throws IOException {
                currentPage = page;
                pageWritten = false;
@@ -77,17 +63,17 @@
        
        public void writeEndPage() throws IOException {
                if (pageWritten) {
-                       sink.writeEndPage();
+                       writer.writeEndPage();
                }
        }
        
        public void writeRevision(Revision revision) throws IOException {
                if (revIds.contains(new Integer(revision.Id))) {
                        if (!pageWritten) {
-                               sink.writeStartPage(currentPage);
+                               writer.writeStartPage(currentPage);
                                pageWritten = true;
                        }
-                       sink.writeRevision(revision);
+                       writer.writeRevision(revision);
                }
        }
 }
diff --git a/src/org/mediawiki/importer/TimeStampFilter.java 
b/src/org/mediawiki/dumper/filters/TimeStampFilter.java
similarity index 70%
rename from src/org/mediawiki/importer/TimeStampFilter.java
rename to src/org/mediawiki/dumper/filters/TimeStampFilter.java
index 50c0c63..36d26d0 100644
--- a/src/org/mediawiki/importer/TimeStampFilter.java
+++ b/src/org/mediawiki/dumper/filters/TimeStampFilter.java
@@ -22,39 +22,31 @@
  *
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.filters;
 
 import java.io.IOException;
-import java.util.Calendar;
-import java.text.SimpleDateFormat;
 import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
 
-public class TimeStampFilter implements DumpWriter {
-       DumpWriter sink;
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.writers.DumpWriter;
+
+public class TimeStampFilter extends ChainingDumpWriter {
+       public static final String TIMESTAMP_FORMAT = 
"yyyy-MM-dd'T'HH:mm:ss'Z'";
        protected Calendar filterTimeStamp;
        protected Page currentPage;
        protected boolean pageWritten;
 
-       public TimeStampFilter(DumpWriter sink, String timeStamp) throws 
ParseException {
-               this.sink = sink;
+       public TimeStampFilter(DumpWriter sink, String timeStamp) {
+               super(sink);
                filterTimeStamp = Calendar.getInstance();
-               filterTimeStamp.setTime(new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(timeStamp));
-       }
-
-       public void close() throws IOException {
-               sink.close();
-       }
-
-       public void writeStartWiki(Wikiinfo info) throws IOException {
-               sink.writeStartWiki(info);
-       }
-
-       public void writeEndWiki() throws IOException {
-               sink.writeEndWiki();
-       }
-
-       public void writeSiteinfo(Siteinfo info) throws IOException {
-               sink.writeSiteinfo(info);
+               try {
+                       filterTimeStamp.setTime(new 
SimpleDateFormat(TIMESTAMP_FORMAT).parse(timeStamp));
+               } catch (ParseException e) {
+                       throw new RuntimeException(e);
+               }
        }
 
        public void writeStartPage(Page page) throws IOException {
@@ -64,15 +56,15 @@
 
        public void writeEndPage() throws IOException {
                if (pageWritten) {
-                       sink.writeEndPage();
+                       writer.writeEndPage();
                }
        }
 
        public void writeRevision(Revision revision) throws IOException {
                if (!pageWritten) {
-                       sink.writeStartPage(currentPage);
+                       writer.writeStartPage(currentPage);
                        pageWritten = true;
                }
-               sink.writeRevision(revision);
+               writer.writeRevision(revision);
        }
 }
diff --git a/src/org/mediawiki/dumper/filters/predicates/BaseListFilter.java 
b/src/org/mediawiki/dumper/filters/predicates/BaseListFilter.java
new file mode 100644
index 0000000..dac0208
--- /dev/null
+++ b/src/org/mediawiki/dumper/filters/predicates/BaseListFilter.java
@@ -0,0 +1,20 @@
+package org.mediawiki.dumper.filters.predicates;
+
+import java.util.Set;
+
+import org.mediawiki.dumper.wiki.Page;
+
+public abstract class BaseListFilter extends PredicatePageFilter {
+
+       protected final Set<String> set;
+
+       public BaseListFilter(Set<String> set) {
+               this.set = set;
+       }
+
+       public boolean test(Page page) {
+               return set.contains(page.Title.subjectPage().toString())
+                       || set.contains(page.Title.talkPage().toString());
+       }
+
+}
\ No newline at end of file
diff --git a/src/org/mediawiki/importer/ExactListFilter.java 
b/src/org/mediawiki/dumper/filters/predicates/ExactListFilter.java
similarity index 82%
rename from src/org/mediawiki/importer/ExactListFilter.java
rename to src/org/mediawiki/dumper/filters/predicates/ExactListFilter.java
index 50bedfb..2e56230 100644
--- a/src/org/mediawiki/importer/ExactListFilter.java
+++ b/src/org/mediawiki/dumper/filters/predicates/ExactListFilter.java
@@ -23,16 +23,18 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.filters.predicates;
 
 import java.io.IOException;
 
+import org.mediawiki.dumper.wiki.Page;
+
 public class ExactListFilter extends ListFilter {
-       public ExactListFilter(DumpWriter sink, String sourceFileName) throws 
IOException {
-               super(sink, sourceFileName);
+       public ExactListFilter(String sourceFileName) throws IOException {
+               super(sourceFileName);
        }
        
-       protected boolean pass(Page page) {
-               return list.containsKey(page.Title.toString());
+       public boolean test(Page page) {
+               return set.contains(page.Title.toString());
        }
 }
diff --git a/src/org/mediawiki/importer/ListFilter.java 
b/src/org/mediawiki/dumper/filters/predicates/ListFilter.java
similarity index 73%
rename from src/org/mediawiki/importer/ListFilter.java
rename to src/org/mediawiki/dumper/filters/predicates/ListFilter.java
index 9d74ead..fac812a 100644
--- a/src/org/mediawiki/importer/ListFilter.java
+++ b/src/org/mediawiki/dumper/filters/predicates/ListFilter.java
@@ -23,20 +23,26 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.filters.predicates;
 
 import java.io.BufferedReader;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.util.HashMap;
+import java.io.UnsupportedEncodingException;
 
-public class ListFilter extends PageFilter {
-       protected HashMap<String, String> list;
-       
-       public ListFilter(DumpWriter sink, String sourceFileName) throws 
IOException {
-               super(sink);
-               list = new HashMap<String, String>();
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableSet.Builder;
+
+public class ListFilter extends BaseListFilter {
+       public ListFilter(String sourceFileName) throws IOException {
+               super(readFile(sourceFileName));
+       }
+
+       private static ImmutableSet<String> readFile(String sourceFileName)
+                       throws UnsupportedEncodingException, 
FileNotFoundException, IOException {
+               Builder<String> builder = ImmutableSet.builder();
                BufferedReader input = new BufferedReader(new InputStreamReader(
                        new FileInputStream(sourceFileName), "utf-8"));
                String line = input.readLine();
@@ -48,15 +54,11 @@
                                        title = line.substring(1);
                                
                                if (title.length() > 0)
-                                       list.put(title, title);
+                                       builder.add(title);
                        }
                        line = input.readLine();
                }
                input.close();
-       }
-       
-       protected boolean pass(Page page) {
-               return list.containsKey(page.Title.subjectPage().toString())
-                       || list.containsKey(page.Title.talkPage().toString());
+               return builder.build();
        }
 }
diff --git a/src/org/mediawiki/importer/NamespaceFilter.java 
b/src/org/mediawiki/dumper/filters/predicates/NamespaceFilter.java
similarity index 71%
rename from src/org/mediawiki/importer/NamespaceFilter.java
rename to src/org/mediawiki/dumper/filters/predicates/NamespaceFilter.java
index ab5e7f4..07b8d29 100644
--- a/src/org/mediawiki/importer/NamespaceFilter.java
+++ b/src/org/mediawiki/dumper/filters/predicates/NamespaceFilter.java
@@ -23,39 +23,39 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.filters.predicates;
 
 import java.util.HashMap;
 
-public class NamespaceFilter extends PageFilter {
+import org.mediawiki.dumper.wiki.Page;
+
+public class NamespaceFilter extends PredicatePageFilter {
+       private static final String[] NAMESPACE_KEYS = {
+               "NS_MAIN",
+               "NS_TALK",
+               "NS_USER",
+               "NS_USER_TALK",
+               "NS_PROJECT",
+               "NS_PROJECT_TALK",
+               "NS_IMAGE",
+               "NS_IMAGE_TALK",
+               "NS_MEDIAWIKI",
+               "NS_MEDIAWIKI_TALK",
+               "NS_TEMPLATE",
+               "NS_TEMPLATE_TALK",
+               "NS_HELP",
+               "NS_HELP_TALK",
+               "NS_CATEGORY",
+               "NS_CATEGORY_TALK" };
        boolean invert;
        HashMap<Integer, String> matches;
        
-       public NamespaceFilter(DumpWriter sink, String configString) {
-               super(sink);
+       public NamespaceFilter(String configString) {
                
                invert = configString.startsWith("!");
                if (invert)
                        configString = configString.substring(1);
                matches = new HashMap<Integer, String>();
-               
-               String[] namespaceKeys = {
-                       "NS_MAIN",
-                       "NS_TALK",
-                       "NS_USER",
-                       "NS_USER_TALK",
-                       "NS_PROJECT",
-                       "NS_PROJECT_TALK",
-                       "NS_IMAGE",
-                       "NS_IMAGE_TALK",
-                       "NS_MEDIAWIKI",
-                       "NS_MEDIAWIKI_TALK",
-                       "NS_TEMPLATE",
-                       "NS_TEMPLATE_TALK",
-                       "NS_HELP",
-                       "NS_HELP_TALK",
-                       "NS_CATEGORY",
-                       "NS_CATEGORY_TALK" };
                
                String[] itemList = configString.trim().split(",");
                for (int i = 0; i < itemList.length; i++) {
@@ -65,15 +65,16 @@
                                int key = Integer.parseInt(trimmed);
                                matches.put(new Integer(key), trimmed);
                        } catch (NumberFormatException e) {
-                               for (int key = 0; key < namespaceKeys.length; 
key++) {
-                                       if 
(trimmed.equalsIgnoreCase(namespaceKeys[key]))
+                               System.err.println("namespace keys in mwdumper 
are outdated!");
+                               for (int key = 0; key < NAMESPACE_KEYS.length; 
key++) {
+                                       if 
(trimmed.equalsIgnoreCase(NAMESPACE_KEYS[key]))
                                                matches.put(new Integer(key), 
trimmed);
                                }
                        }
                }
        }
        
-       protected boolean pass(Page page) {
+       public boolean test(Page page) {
                return invert ^ matches.containsKey(page.Title.Namespace);
        }
 }
diff --git a/src/org/mediawiki/importer/NotalkFilter.java 
b/src/org/mediawiki/dumper/filters/predicates/NotalkFilter.java
similarity index 86%
rename from src/org/mediawiki/importer/NotalkFilter.java
rename to src/org/mediawiki/dumper/filters/predicates/NotalkFilter.java
index 2eb47a3..465d1ea 100644
--- a/src/org/mediawiki/importer/NotalkFilter.java
+++ b/src/org/mediawiki/dumper/filters/predicates/NotalkFilter.java
@@ -23,14 +23,12 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.filters.predicates;
 
-public class NotalkFilter extends PageFilter {
-       public NotalkFilter(DumpWriter sink) {
-               super(sink);
-       }
+import org.mediawiki.dumper.wiki.Page;
 
-       protected boolean pass(Page page) {
+public class NotalkFilter extends PredicatePageFilter {
+       public boolean test(Page page) {
                return !page.Title.isTalk();
        }
 }
diff --git 
a/src/org/mediawiki/dumper/filters/predicates/PredicatePageFilter.java 
b/src/org/mediawiki/dumper/filters/predicates/PredicatePageFilter.java
new file mode 100644
index 0000000..47c5f19
--- /dev/null
+++ b/src/org/mediawiki/dumper/filters/predicates/PredicatePageFilter.java
@@ -0,0 +1,60 @@
+/*
+ * MediaWiki import/export processing tools
+ * Copyright 2005 by Brion Vibber
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to 
deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
THE
+ * SOFTWARE.
+ *
+ * $Id$
+ */
+
+package org.mediawiki.dumper.filters.predicates;
+
+import java.io.IOException;
+import java.util.function.Predicate;
+
+import org.mediawiki.dumper.filters.ChainingDumpWriter;
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.writers.DumpWriter;
+
+public abstract class PredicatePageFilter implements Predicate<Page> {
+       
+       public static DumpWriter makePredicateDumpWriter(final DumpWriter 
successorWriter, final PredicatePageFilter filter) {
+               return new ChainingDumpWriter(successorWriter) {
+                       boolean showThisPage = true;
+
+                       public void writeStartPage(Page page) throws 
IOException {
+                               showThisPage = filter.test(page);
+                               if (showThisPage)
+                                       writer.writeStartPage(page);
+                       }
+                       
+                       public void writeEndPage() throws IOException {
+                               if (showThisPage)
+                                       writer.writeEndPage();
+                       }
+                       
+                       public void writeRevision(Revision revision) throws 
IOException {
+                               if (showThisPage)
+                                       writer.writeRevision(revision);
+                       }
+                       
+               };
+       }
+}
diff --git a/src/org/mediawiki/importer/TitleMatchFilter.java 
b/src/org/mediawiki/dumper/filters/predicates/TitleMatchFilter.java
similarity index 83%
rename from src/org/mediawiki/importer/TitleMatchFilter.java
rename to src/org/mediawiki/dumper/filters/predicates/TitleMatchFilter.java
index a7429b8..e71c798 100644
--- a/src/org/mediawiki/importer/TitleMatchFilter.java
+++ b/src/org/mediawiki/dumper/filters/predicates/TitleMatchFilter.java
@@ -23,19 +23,20 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.filters.predicates;
 
 import java.util.regex.Pattern;
 
-public class TitleMatchFilter extends PageFilter {
-       Pattern regex;
+import org.mediawiki.dumper.wiki.Page;
+
+public class TitleMatchFilter extends PredicatePageFilter {
+       final Pattern regex;
        
-       public TitleMatchFilter(DumpWriter sink, String regexString) {
-               super(sink);
+       public TitleMatchFilter(String regexString) {
                regex = Pattern.compile(regexString);
        }
        
-       protected boolean pass(Page page) {
+       public boolean test(Page page) {
                return regex.matcher(page.Title.toString()).matches();
        }
 }
diff --git a/src/org/mediawiki/importer/XmlDumpReader.java 
b/src/org/mediawiki/dumper/input/XmlDumpReader.java
similarity index 97%
rename from src/org/mediawiki/importer/XmlDumpReader.java
rename to src/org/mediawiki/dumper/input/XmlDumpReader.java
index aa25b12..82112eb 100644
--- a/src/org/mediawiki/importer/XmlDumpReader.java
+++ b/src/org/mediawiki/dumper/input/XmlDumpReader.java
@@ -23,7 +23,7 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.input;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -38,6 +38,14 @@
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
+import org.mediawiki.dumper.wiki.Contributor;
+import org.mediawiki.dumper.wiki.NamespaceSet;
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.wiki.Siteinfo;
+import org.mediawiki.dumper.wiki.Title;
+import org.mediawiki.dumper.wiki.Wikiinfo;
+import org.mediawiki.dumper.writers.DumpWriter;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
diff --git a/src/org/mediawiki/importer/Contributor.java 
b/src/org/mediawiki/dumper/wiki/Contributor.java
similarity index 97%
rename from src/org/mediawiki/importer/Contributor.java
rename to src/org/mediawiki/dumper/wiki/Contributor.java
index b1f922c..af146a0 100644
--- a/src/org/mediawiki/importer/Contributor.java
+++ b/src/org/mediawiki/dumper/wiki/Contributor.java
@@ -23,7 +23,7 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.wiki;
 
 public class Contributor {
        public String Username;
diff --git a/src/org/mediawiki/importer/Namespace.java 
b/src/org/mediawiki/dumper/wiki/Namespace.java
similarity index 91%
rename from src/org/mediawiki/importer/Namespace.java
rename to src/org/mediawiki/dumper/wiki/Namespace.java
index 1c44735..52ce433 100644
--- a/src/org/mediawiki/importer/Namespace.java
+++ b/src/org/mediawiki/dumper/wiki/Namespace.java
@@ -22,12 +22,12 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.wiki;
 
 public class Namespace {
-       int Index;
-       String Prefix;
-       String Case;
+       public final int Index;
+       public final String Prefix;
+       public final String Case;
 
        public Namespace(int index, String prefix, String nscase) {
                Index = index;
diff --git a/src/org/mediawiki/importer/NamespaceSet.java 
b/src/org/mediawiki/dumper/wiki/NamespaceSet.java
similarity index 98%
rename from src/org/mediawiki/importer/NamespaceSet.java
rename to src/org/mediawiki/dumper/wiki/NamespaceSet.java
index 11d350f..074be5b 100644
--- a/src/org/mediawiki/importer/NamespaceSet.java
+++ b/src/org/mediawiki/dumper/wiki/NamespaceSet.java
@@ -23,7 +23,7 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.wiki;
 
 import java.util.Map;
 import java.util.HashMap;
diff --git a/src/org/mediawiki/importer/Page.java 
b/src/org/mediawiki/dumper/wiki/Page.java
similarity index 97%
rename from src/org/mediawiki/importer/Page.java
rename to src/org/mediawiki/dumper/wiki/Page.java
index edc21c9..ace34c3 100644
--- a/src/org/mediawiki/importer/Page.java
+++ b/src/org/mediawiki/dumper/wiki/Page.java
@@ -23,7 +23,7 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.wiki;
 
 import java.util.Hashtable;
 
diff --git a/src/org/mediawiki/importer/Revision.java 
b/src/org/mediawiki/dumper/wiki/Revision.java
similarity index 97%
rename from src/org/mediawiki/importer/Revision.java
rename to src/org/mediawiki/dumper/wiki/Revision.java
index 9d6f695..e5596f0 100644
--- a/src/org/mediawiki/importer/Revision.java
+++ b/src/org/mediawiki/dumper/wiki/Revision.java
@@ -23,7 +23,7 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.wiki;
 
 import java.util.Calendar;
 
diff --git a/src/org/mediawiki/importer/Siteinfo.java 
b/src/org/mediawiki/dumper/wiki/Siteinfo.java
similarity index 97%
rename from src/org/mediawiki/importer/Siteinfo.java
rename to src/org/mediawiki/dumper/wiki/Siteinfo.java
index 27364c5..696b691 100644
--- a/src/org/mediawiki/importer/Siteinfo.java
+++ b/src/org/mediawiki/dumper/wiki/Siteinfo.java
@@ -23,7 +23,7 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.wiki;
 
 public class Siteinfo {
        public String Sitename;
diff --git a/src/org/mediawiki/importer/Title.java 
b/src/org/mediawiki/dumper/wiki/Title.java
similarity index 98%
rename from src/org/mediawiki/importer/Title.java
rename to src/org/mediawiki/dumper/wiki/Title.java
index 5bdb7b0..f4aeb2a 100644
--- a/src/org/mediawiki/importer/Title.java
+++ b/src/org/mediawiki/dumper/wiki/Title.java
@@ -23,7 +23,7 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.wiki;
 
 public class Title {
        public Integer Namespace;
diff --git a/src/org/mediawiki/importer/Wikiinfo.java 
b/src/org/mediawiki/dumper/wiki/Wikiinfo.java
similarity index 96%
rename from src/org/mediawiki/importer/Wikiinfo.java
rename to src/org/mediawiki/dumper/wiki/Wikiinfo.java
index ea4a94f..7716bc0 100644
--- a/src/org/mediawiki/importer/Wikiinfo.java
+++ b/src/org/mediawiki/dumper/wiki/Wikiinfo.java
@@ -22,7 +22,7 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.wiki;
 
 public class Wikiinfo {
        public String Lang;
diff --git a/src/org/mediawiki/importer/DumpWriter.java 
b/src/org/mediawiki/dumper/writers/DumpWriter.java
similarity index 88%
rename from src/org/mediawiki/importer/DumpWriter.java
rename to src/org/mediawiki/dumper/writers/DumpWriter.java
index eb21f02..49bb8e9 100644
--- a/src/org/mediawiki/importer/DumpWriter.java
+++ b/src/org/mediawiki/dumper/writers/DumpWriter.java
@@ -23,9 +23,14 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers;
 
 import java.io.IOException;
+
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.wiki.Siteinfo;
+import org.mediawiki.dumper.wiki.Wikiinfo;
 
 public interface DumpWriter {
        void close() throws IOException;
@@ -39,5 +44,4 @@
        void writeEndPage() throws IOException;
        
        void writeRevision(Revision revision) throws IOException;
-       //void WriteUpload(Upload upload) throws IOException; // for the future
 }
diff --git a/src/org/mediawiki/importer/MultiWriter.java 
b/src/org/mediawiki/dumper/writers/MultiWriter.java
similarity index 85%
rename from src/org/mediawiki/importer/MultiWriter.java
rename to src/org/mediawiki/dumper/writers/MultiWriter.java
index 305cfdf..365f4d4 100644
--- a/src/org/mediawiki/importer/MultiWriter.java
+++ b/src/org/mediawiki/dumper/writers/MultiWriter.java
@@ -23,18 +23,24 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers;
 
 import java.io.IOException;
-import java.util.ArrayList;
+import java.util.List;
+
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.wiki.Siteinfo;
+import org.mediawiki.dumper.wiki.Wikiinfo;
 
 public class MultiWriter implements DumpWriter {
-       ArrayList<DumpWriter> sinks;
+       private final List<DumpWriter> sinks;
        
-       public MultiWriter() {
-               sinks = new ArrayList<DumpWriter>();
+       public MultiWriter(List<DumpWriter> writers) {
+               this.sinks = writers;
        }
        
+       @Override
        public void close() throws IOException {
                for (int i = 0; i < sinks.size(); i++) {
                        DumpWriter sink = sinks.get(i);
@@ -42,6 +48,7 @@
                }
        }
        
+       @Override
        public void writeStartWiki(Wikiinfo info) throws IOException {
                for (int i = 0; i < sinks.size(); i++) {
                        DumpWriter sink = sinks.get(i);
@@ -49,6 +56,7 @@
                }
        }
        
+       @Override
        public void writeEndWiki() throws IOException {
                for (int i = 0; i < sinks.size(); i++) {
                        DumpWriter sink = sinks.get(i);
@@ -56,6 +64,7 @@
                }
        }
        
+       @Override
        public void writeSiteinfo(Siteinfo info) throws IOException {
                for (int i = 0; i < sinks.size(); i++) {
                        DumpWriter sink = sinks.get(i);
@@ -63,6 +72,7 @@
                }
        }
        
+       @Override
        public void writeStartPage(Page page) throws IOException {
                for (int i = 0; i < sinks.size(); i++) {
                        DumpWriter sink = sinks.get(i);
@@ -70,6 +80,7 @@
                }
        }
        
+       @Override
        public void writeEndPage() throws IOException {
                for (int i = 0; i < sinks.size(); i++) {
                        DumpWriter sink = sinks.get(i);
@@ -77,6 +88,7 @@
                }
        }
        
+       @Override
        public void writeRevision(Revision revision) throws IOException {
                for (int i = 0; i < sinks.size(); i++) {
                        DumpWriter sink = sinks.get(i);
@@ -84,7 +96,4 @@
                }
        }
        
-       public void add(DumpWriter sink) {
-               sinks.add(sink);
-       }
 }
diff --git a/src/org/mediawiki/importer/SqlFileStream.java 
b/src/org/mediawiki/dumper/writers/sql/SqlFileStream.java
similarity index 92%
rename from src/org/mediawiki/importer/SqlFileStream.java
rename to src/org/mediawiki/dumper/writers/sql/SqlFileStream.java
index 9577da3..7e095dd 100644
--- a/src/org/mediawiki/importer/SqlFileStream.java
+++ b/src/org/mediawiki/dumper/writers/sql/SqlFileStream.java
@@ -1,4 +1,4 @@
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers.sql;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/src/org/mediawiki/importer/SqlLiteral.java 
b/src/org/mediawiki/dumper/writers/sql/SqlLiteral.java
similarity index 96%
rename from src/org/mediawiki/importer/SqlLiteral.java
rename to src/org/mediawiki/dumper/writers/sql/SqlLiteral.java
index 1473411..a610cc5 100644
--- a/src/org/mediawiki/importer/SqlLiteral.java
+++ b/src/org/mediawiki/dumper/writers/sql/SqlLiteral.java
@@ -23,7 +23,7 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers.sql;
 
 /**
  * Quickie wrapper class for including literal SQL expressions.
diff --git a/src/org/mediawiki/importer/SqlServerStream.java 
b/src/org/mediawiki/dumper/writers/sql/SqlServerStream.java
similarity index 95%
rename from src/org/mediawiki/importer/SqlServerStream.java
rename to src/org/mediawiki/dumper/writers/sql/SqlServerStream.java
index 7ba921b..2821121 100644
--- a/src/org/mediawiki/importer/SqlServerStream.java
+++ b/src/org/mediawiki/dumper/writers/sql/SqlServerStream.java
@@ -1,4 +1,4 @@
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers.sql;
 
 import java.io.IOException;
 import java.sql.Connection;
diff --git a/src/org/mediawiki/importer/SqlStream.java 
b/src/org/mediawiki/dumper/writers/sql/SqlStream.java
similarity index 84%
rename from src/org/mediawiki/importer/SqlStream.java
rename to src/org/mediawiki/dumper/writers/sql/SqlStream.java
index 9182ea4..7da1668 100644
--- a/src/org/mediawiki/importer/SqlStream.java
+++ b/src/org/mediawiki/dumper/writers/sql/SqlStream.java
@@ -1,4 +1,4 @@
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers.sql;
 
 import java.io.IOException;
 
diff --git a/src/org/mediawiki/importer/SqlWriter.java 
b/src/org/mediawiki/dumper/writers/sql/SqlWriter.java
similarity index 96%
rename from src/org/mediawiki/importer/SqlWriter.java
rename to src/org/mediawiki/dumper/writers/sql/SqlWriter.java
index a155157..6bc6e30 100644
--- a/src/org/mediawiki/importer/SqlWriter.java
+++ b/src/org/mediawiki/dumper/writers/sql/SqlWriter.java
@@ -23,7 +23,7 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers.sql;
 
 import java.io.IOException;
 import java.text.MessageFormat;
@@ -34,6 +34,13 @@
 import java.util.Iterator;
 import java.util.TimeZone;
 
+import org.mediawiki.dumper.wiki.Namespace;
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.wiki.Siteinfo;
+import org.mediawiki.dumper.wiki.Wikiinfo;
+import org.mediawiki.dumper.writers.DumpWriter;
+
 
 public abstract class SqlWriter implements DumpWriter {
        public static abstract class Traits {
diff --git a/src/org/mediawiki/importer/SqlWriter14.java 
b/src/org/mediawiki/dumper/writers/sql/SqlWriter14.java
similarity index 96%
rename from src/org/mediawiki/importer/SqlWriter14.java
rename to src/org/mediawiki/dumper/writers/sql/SqlWriter14.java
index 2585c4d..cbdb908 100644
--- a/src/org/mediawiki/importer/SqlWriter14.java
+++ b/src/org/mediawiki/dumper/writers/sql/SqlWriter14.java
@@ -23,10 +23,13 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers.sql;
 
 import java.io.IOException;
 
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+
 
 public class SqlWriter14 extends SqlWriter {
        private Page currentPage;
diff --git a/src/org/mediawiki/importer/SqlWriter15.java 
b/src/org/mediawiki/dumper/writers/sql/SqlWriter15.java
similarity index 96%
rename from src/org/mediawiki/importer/SqlWriter15.java
rename to src/org/mediawiki/dumper/writers/sql/SqlWriter15.java
index f57473d..52d4672 100644
--- a/src/org/mediawiki/importer/SqlWriter15.java
+++ b/src/org/mediawiki/dumper/writers/sql/SqlWriter15.java
@@ -25,10 +25,13 @@
 
 // Doesn't actually work yet...
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers.sql;
 
 import java.io.IOException;
 
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+
 public class SqlWriter15 extends SqlWriter {
        protected Page currentPage;
        protected Revision lastRevision;
diff --git a/src/org/mediawiki/importer/SqlWriter1_25.java 
b/src/org/mediawiki/dumper/writers/sql/SqlWriter1_25.java
similarity index 96%
rename from src/org/mediawiki/importer/SqlWriter1_25.java
rename to src/org/mediawiki/dumper/writers/sql/SqlWriter1_25.java
index a24696c..9fa9f42 100644
--- a/src/org/mediawiki/importer/SqlWriter1_25.java
+++ b/src/org/mediawiki/dumper/writers/sql/SqlWriter1_25.java
@@ -23,10 +23,12 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers.sql;
 
 import java.io.IOException;
-import java.nio.charset.Charset;
+
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
 
 public class SqlWriter1_25 extends SqlWriter15 {
        public SqlWriter1_25(SqlWriter.Traits tr, SqlStream output) {
diff --git a/src/org/mediawiki/importer/SphinxWriter.java 
b/src/org/mediawiki/dumper/writers/xml/SphinxWriter.java
similarity index 91%
rename from src/org/mediawiki/importer/SphinxWriter.java
rename to src/org/mediawiki/dumper/writers/xml/SphinxWriter.java
index c5ffadb..31eaf54 100644
--- a/src/org/mediawiki/importer/SphinxWriter.java
+++ b/src/org/mediawiki/dumper/writers/xml/SphinxWriter.java
@@ -23,12 +23,18 @@
  * $Id: XmlDumpWriter.java 11268 2005-10-10 06:57:30Z vibber $
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers.xml;
 
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.Calendar;
 
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.wiki.Siteinfo;
+import org.mediawiki.dumper.wiki.Wikiinfo;
+import org.mediawiki.dumper.writers.DumpWriter;
+
 /**
  * Generates XML stream suitable for the Sphinx search engine's xmlpipe input.
  */
diff --git a/src/org/mediawiki/importer/XmlDumpWriter0_10.java 
b/src/org/mediawiki/dumper/writers/xml/XmlDumpWriter0_10.java
similarity index 94%
rename from src/org/mediawiki/importer/XmlDumpWriter0_10.java
rename to src/org/mediawiki/dumper/writers/xml/XmlDumpWriter0_10.java
index 65010da..8a84e94 100644
--- a/src/org/mediawiki/importer/XmlDumpWriter0_10.java
+++ b/src/org/mediawiki/dumper/writers/xml/XmlDumpWriter0_10.java
@@ -23,7 +23,7 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers.xml;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -35,6 +35,14 @@
 import java.util.Map;
 import java.util.TimeZone;
 
+import org.mediawiki.dumper.wiki.Contributor;
+import org.mediawiki.dumper.wiki.Namespace;
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.wiki.Siteinfo;
+import org.mediawiki.dumper.wiki.Wikiinfo;
+import org.mediawiki.dumper.writers.DumpWriter;
+
 public class XmlDumpWriter0_10 implements DumpWriter {
        protected OutputStream stream;
        protected XmlWriter writer;
diff --git a/src/org/mediawiki/importer/XmlDumpWriter0_3.java 
b/src/org/mediawiki/dumper/writers/xml/XmlDumpWriter0_3.java
similarity index 93%
rename from src/org/mediawiki/importer/XmlDumpWriter0_3.java
rename to src/org/mediawiki/dumper/writers/xml/XmlDumpWriter0_3.java
index 40cdbb5..fe47bc4 100644
--- a/src/org/mediawiki/importer/XmlDumpWriter0_3.java
+++ b/src/org/mediawiki/dumper/writers/xml/XmlDumpWriter0_3.java
@@ -23,7 +23,7 @@
  * $Id$
  */
 
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers.xml;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -34,6 +34,14 @@
 import java.util.Map;
 import java.util.TimeZone;
 
+import org.mediawiki.dumper.wiki.Contributor;
+import org.mediawiki.dumper.wiki.Namespace;
+import org.mediawiki.dumper.wiki.Page;
+import org.mediawiki.dumper.wiki.Revision;
+import org.mediawiki.dumper.wiki.Siteinfo;
+import org.mediawiki.dumper.wiki.Wikiinfo;
+import org.mediawiki.dumper.writers.DumpWriter;
+
 public class XmlDumpWriter0_3 implements DumpWriter {
        protected OutputStream stream;
        protected XmlWriter writer;
diff --git a/src/org/mediawiki/importer/XmlWriter.java 
b/src/org/mediawiki/dumper/writers/xml/XmlWriter.java
similarity index 98%
rename from src/org/mediawiki/importer/XmlWriter.java
rename to src/org/mediawiki/dumper/writers/xml/XmlWriter.java
index 27a94f3..4cf0447 100644
--- a/src/org/mediawiki/importer/XmlWriter.java
+++ b/src/org/mediawiki/dumper/writers/xml/XmlWriter.java
@@ -1,4 +1,4 @@
-package org.mediawiki.importer;
+package org.mediawiki.dumper.writers.xml;
 
 import java.io.BufferedWriter;
 import java.io.IOException;

-- 
To view, visit https://gerrit.wikimedia.org/r/403477
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1d7a7d02623b64471721338bf33b82075010e524
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/tools/mwdumper
Gerrit-Branch: master
Gerrit-Owner: Awight <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to