Niedzielski has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/278061

Change subject: Add namespace and database column
......................................................................

Add namespace and database column

Change-Id: I7836fc9ce9a0ab12104ad45ade7f714b67b82d06
---
A app/src/main/java/org/wikipedia/database/column/NamespaceColumn.java
A app/src/main/java/org/wikipedia/page/Namespace.java
2 files changed, 105 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/61/278061/1

diff --git 
a/app/src/main/java/org/wikipedia/database/column/NamespaceColumn.java 
b/app/src/main/java/org/wikipedia/database/column/NamespaceColumn.java
new file mode 100644
index 0000000..0711de5
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/database/column/NamespaceColumn.java
@@ -0,0 +1,17 @@
+package org.wikipedia.database.column;
+
+import android.database.Cursor;
+import android.support.annotation.NonNull;
+
+import org.wikipedia.page.Namespace;
+
+public class NamespaceColumn extends Column<Namespace> {
+    public NamespaceColumn(@NonNull String name) {
+        super(name, "integer not null");
+    }
+
+    @NonNull
+    public Namespace val(@NonNull Cursor cursor) {
+        return Namespace.of(getInt(cursor));
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/wikipedia/page/Namespace.java 
b/app/src/main/java/org/wikipedia/page/Namespace.java
new file mode 100644
index 0000000..f62562d
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/page/Namespace.java
@@ -0,0 +1,88 @@
+package org.wikipedia.page;
+
+import android.support.annotation.NonNull;
+
+import org.wikipedia.model.EnumCode;
+import org.wikipedia.model.EnumCodeMap;
+
+// https://en.wikipedia.org/wiki/Wikipedia:Namespace
+// https://www.mediawiki.org/wiki/Extension_default_namespaces
+// 
https://github.com/wikimedia/wikipedia-ios/blob/master/Wikipedia/Code/NSNumber+MWKTitleNamespace.h
+// https://www.mediawiki.org/wiki/Manual:Namespace#Built-in_namespaces
+public enum Namespace implements EnumCode {
+    MEDIA(-2),
+    SPECIAL(-1) {
+        @Override
+        public boolean talk() {
+            return false;
+        }
+    },
+    MAIN(0), // Main or Article
+    TALK(1),
+    USER(2),
+    USER_TALK(3),
+    PROJECT(4),
+    PROJECT_TALK(5),
+    FILE(6),
+    FILE_TALK(7),
+    MEDIAWIKI(8),
+    MEDIAWIKI_TALK(9),
+    TEMPLATE(10),
+    TEMPLATE_TALK(11),
+    HELP(12),
+    HELP_TALK(13),
+    CATEGORY(14),
+    CATEGORY_TALK(15),
+    PORTAL(100),
+    PORTAL_TALK(101),
+    BOOK(108),
+    BOOK_TALK(109),
+    DRAFT(118),
+    DRAFT_TALK(119),
+    EDUCATION_PROGRAM(446),
+    EDUCATION_PROGRAM_TALK(447),
+    TIMED_TEXT(710),
+    TIMED_TEXT_TALK(711),
+    MODULE(828),
+    MODULE_TALK(829),
+    GADGET(2300),
+    GADGET_TALK(2301),
+    GADGET_DEFINITION(2302),
+    GADGET_DEFINITION_TALK(2303),
+    TOPIC(2600);
+
+    private static final int TALK_MASK = 0x1;
+    private static final EnumCodeMap<Namespace> MAP = new 
EnumCodeMap<>(Namespace.class);
+
+    private final int code;
+
+    @NonNull
+    public static Namespace of(int code) {
+        return MAP.get(code);
+    }
+
+    @Override
+    public int code() {
+        return code;
+    }
+
+    public boolean special() {
+        return this == SPECIAL;
+    }
+
+    public boolean main() {
+        return this == MAIN;
+    }
+
+    public boolean file() {
+        return this == FILE;
+    }
+
+    public boolean talk() {
+        return (code & TALK_MASK) == TALK_MASK;
+    }
+
+    Namespace(int code) {
+        this.code = code;
+    }
+}
\ No newline at end of file

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7836fc9ce9a0ab12104ad45ade7f714b67b82d06
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to