jenkins-bot has submitted this change and it was merged.
Change subject: Add namespace and database column
......................................................................
Add namespace and database column
Change-Id: I7836fc9ce9a0ab12104ad45ade7f714b67b82d06
---
A app/src/main/java/org/wikipedia/database/column/CodeEnumColumn.java
A app/src/main/java/org/wikipedia/database/column/NamespaceColumn.java
A app/src/main/java/org/wikipedia/model/CodeEnum.java
A app/src/main/java/org/wikipedia/page/Namespace.java
4 files changed, 132 insertions(+), 0 deletions(-)
Approvals:
Mholloway: Looks good to me, but someone else must approve
Dbrant: Looks good to me, approved
jenkins-bot: Verified
diff --git
a/app/src/main/java/org/wikipedia/database/column/CodeEnumColumn.java
b/app/src/main/java/org/wikipedia/database/column/CodeEnumColumn.java
new file mode 100644
index 0000000..d7ede7e
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/database/column/CodeEnumColumn.java
@@ -0,0 +1,19 @@
+package org.wikipedia.database.column;
+
+import android.database.Cursor;
+import android.support.annotation.NonNull;
+
+import org.wikipedia.model.CodeEnum;
+
+public class CodeEnumColumn<T> extends Column<T> {
+ @NonNull private final CodeEnum<T> codeEnum;
+
+ public CodeEnumColumn(@NonNull String tbl, @NonNull String name, @NonNull
CodeEnum<T> codeEnum) {
+ super(tbl, name, "integer not null");
+ this.codeEnum = codeEnum;
+ }
+
+ @Override public T val(@NonNull Cursor cursor) {
+ return codeEnum.enumeration(getInt(cursor));
+ }
+}
\ No newline at end of file
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..5934dcd
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/database/column/NamespaceColumn.java
@@ -0,0 +1,11 @@
+package org.wikipedia.database.column;
+
+import android.support.annotation.NonNull;
+
+import org.wikipedia.page.Namespace;
+
+public class NamespaceColumn extends CodeEnumColumn<Namespace> {
+ public NamespaceColumn(@NonNull String tbl, @NonNull String name) {
+ super(tbl, name, Namespace.CODE_ENUM);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/wikipedia/model/CodeEnum.java
b/app/src/main/java/org/wikipedia/model/CodeEnum.java
new file mode 100644
index 0000000..3e5fa61
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/model/CodeEnum.java
@@ -0,0 +1,7 @@
+package org.wikipedia.model;
+
+import android.support.annotation.NonNull;
+
+public interface CodeEnum<T> {
+ @NonNull T enumeration(int code);
+}
\ 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..7fe41ac
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/page/Namespace.java
@@ -0,0 +1,95 @@
+package org.wikipedia.page;
+
+import android.support.annotation.NonNull;
+
+import org.wikipedia.model.CodeEnum;
+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);
+
+ public static final CodeEnum<Namespace> CODE_ENUM = new
CodeEnum<Namespace>() {
+ @NonNull @Override public Namespace enumeration(int code) {
+ return of(code);
+ }
+ };
+
+ 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: merged
Gerrit-Change-Id: I7836fc9ce9a0ab12104ad45ade7f714b67b82d06
Gerrit-PatchSet: 6
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <[email protected]>
Gerrit-Reviewer: BearND <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Dbrant <[email protected]>
Gerrit-Reviewer: Mholloway <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits