ContactsContract: Adding joined columns to the CommonDataKind class definitions.

The rationale is this. Since all these joined columns are currently on
different classes, we routinely see code like this:

private static final String[] PROJECTION_PHONE = {
   Data._ID, // 0
   Data.CONTACT_ID, // 1
   Phone.TYPE, // 2
   Phone.NUMBER, // 3
   Phone.LABEL, // 4
   Data.DISPLAY_NAME, // 5
};

After this change, the above declaration changes to:

private static final String[] PROJECTION_PHONE = {
   Phone._ID, // 0
   Phone.CONTACT_ID, // 1
   Phone.TYPE, // 2
   Phone.NUMBER, // 3
   Phone.LABEL, // 4
   Phone.DISPLAY_NAME, // 5
};

Change-Id: I2e84bca3277aeef06eec20cee8c2119ef3b90a9f
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index bdddc28..6c658b2 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -677,13 +677,20 @@
     }
 
     /**
+     * Combines all columns returned by {@link Data} table queries.
+     */
+    private interface DataColumnsWithJoins extends BaseColumns, DataColumns, RawContactsColumns,
+            ContactsColumns, ContactOptionsColumns {
+
+    }
+
+    /**
      * Constants for the data table, which contains data points tied to a raw contact.
      * For example, a phone number or email address. Each row in this table contains a type
      * definition and some generic columns. Each data type can define the meaning for each of
      * the generic columns.
      */
-    public static final class Data implements BaseColumns, DataColumns, RawContactsColumns,
-            ContactsColumns {
+    public final static class Data implements DataColumnsWithJoins {
         /**
          * This utility class cannot be instantiated
          */
@@ -951,7 +958,7 @@
         /**
          * Parts of the name.
          */
-        public static final class StructuredName implements BaseCommonColumns {
+        public static final class StructuredName implements DataColumnsWithJoins {
             private StructuredName() {}
 
             /** MIME type used when storing this in data table. */
@@ -1017,7 +1024,7 @@
         /**
          * A nickname.
          */
-        public static final class Nickname implements CommonColumns, BaseCommonColumns {
+        public static final class Nickname implements DataColumnsWithJoins, CommonColumns {
             private Nickname() {}
 
             /** MIME type used when storing this in data table. */
@@ -1038,7 +1045,7 @@
         /**
          * Common data definition for telephone numbers.
          */
-        public static final class Phone implements BaseCommonColumns, CommonColumns {
+        public static final class Phone implements DataColumnsWithJoins, CommonColumns {
             private Phone() {}
 
             /** MIME type used when storing this in data table. */
@@ -1124,7 +1131,7 @@
         /**
          * Common data definition for email addresses.
          */
-        public static final class Email implements BaseCommonColumns, CommonColumns {
+        public static final class Email implements DataColumnsWithJoins, CommonColumns {
             private Email() {}
 
             /** MIME type used when storing this in data table. */
@@ -1173,7 +1180,7 @@
         /**
          * Common data definition for postal addresses.
          */
-        public static final class StructuredPostal implements BaseCommonColumns, CommonColumns {
+        public static final class StructuredPostal implements DataColumnsWithJoins, CommonColumns {
             private StructuredPostal() {
             }
 
@@ -1267,7 +1274,7 @@
         /**
          * Common data definition for IM addresses.
          */
-        public static final class Im implements BaseCommonColumns, CommonColumns {
+        public static final class Im implements DataColumnsWithJoins, CommonColumns {
             private Im() {}
 
             /** MIME type used when storing this in data table. */
@@ -1305,7 +1312,7 @@
         /**
          * Common data definition for organizations.
          */
-        public static final class Organization implements BaseCommonColumns, CommonColumns {
+        public static final class Organization implements DataColumnsWithJoins, CommonColumns {
             private Organization() {}
 
             /** MIME type used when storing this in data table. */
@@ -1354,7 +1361,7 @@
         /**
          * Common data definition for miscellaneous information.
          */
-        public static final class Miscellaneous implements BaseCommonColumns {
+        public static final class Miscellaneous implements DataColumnsWithJoins {
             private Miscellaneous() {}
 
             /** MIME type used when storing this in data table. */
@@ -1376,7 +1383,7 @@
         /**
          * Common data definition for relations.
          */
-        public static final class Relation implements BaseCommonColumns, CommonColumns {
+        public static final class Relation implements DataColumnsWithJoins, CommonColumns {
             private Relation() {}
 
             /** MIME type used when storing this in data table. */
@@ -1407,7 +1414,7 @@
         /**
          * Common data definition for events.
          */
-        public static final class Event implements BaseCommonColumns, CommonColumns {
+        public static final class Event implements DataColumnsWithJoins, CommonColumns {
             private Event() {}
 
             /** MIME type used when storing this in data table. */
@@ -1426,7 +1433,7 @@
         /**
          * Photo of the contact.
          */
-        public static final class Photo implements BaseCommonColumns {
+        public static final class Photo implements DataColumnsWithJoins {
             private Photo() {}
 
             /** MIME type used when storing this in data table. */
@@ -1444,7 +1451,7 @@
         /**
          * Notes about the contact.
          */
-        public static final class Note implements BaseCommonColumns {
+        public static final class Note implements DataColumnsWithJoins {
             private Note() {}
 
             /** MIME type used when storing this in data table. */
@@ -1460,7 +1467,7 @@
         /**
          * Group Membership.
          */
-        public static final class GroupMembership implements BaseCommonColumns {
+        public static final class GroupMembership implements DataColumnsWithJoins {
             private GroupMembership() {}
 
             /** MIME type used when storing this in data table. */
@@ -1485,7 +1492,7 @@
         /**
          * Website related to the contact.
          */
-        public static final class Website implements BaseCommonColumns, CommonColumns {
+        public static final class Website implements DataColumnsWithJoins, CommonColumns {
             private Website() {}
 
             /** MIME type used when storing this in data table. */