1171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan/* 2171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * Copyright (C) 2016 The Android Open Source Project 3171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * 4171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * Licensed under the Apache License, Version 2.0 (the "License"); 5171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * you may not use this file except in compliance with the License. 6171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * You may obtain a copy of the License at 7171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * 8171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * http://www.apache.org/licenses/LICENSE-2.0 9171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * 10171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * Unless required by applicable law or agreed to in writing, software 11171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * distributed under the License is distributed on an "AS IS" BASIS, 12171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * See the License for the specific language governing permissions and 14171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * limitations under the License. 15171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan */ 16171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 17171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tanpackage com.android.documentsui.sorting; 18171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 19171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tanimport android.annotation.IntDef; 20171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tanimport android.os.Parcel; 21171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tanimport android.os.Parcelable; 22171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tanimport android.support.annotation.StringRes; 23171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tanimport android.view.View; 24171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 25171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tanimport java.lang.annotation.Retention; 26171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tanimport java.lang.annotation.RetentionPolicy; 27171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 28171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan/** 29171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * A model class that describes a sort dimension and its sort state. 30171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan */ 31171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tanpublic class SortDimension implements Parcelable { 32171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 33171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan /** 34171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * This enum is defined as flag because it's also used to denote whether a column can be sorted 35171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan * in a certain direction. 36171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan */ 37171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @IntDef(flag = true, value = { 38171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan SORT_DIRECTION_NONE, 39171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan SORT_DIRECTION_ASCENDING, 40171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan SORT_DIRECTION_DESCENDING 41171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan }) 42171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @Retention(RetentionPolicy.SOURCE) 43171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public @interface SortDirection {} 44171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public static final int SORT_DIRECTION_NONE = 0; 45171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public static final int SORT_DIRECTION_ASCENDING = 1; 46171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public static final int SORT_DIRECTION_DESCENDING = 2; 47171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 48171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @IntDef({ 49171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan SORT_CAPABILITY_NONE, 50171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan SORT_CAPABILITY_BOTH_DIRECTION 51171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan }) 52171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @Retention(RetentionPolicy.SOURCE) 53171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @interface SortCapability {} 54171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public static final int SORT_CAPABILITY_NONE = 0; 55171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public static final int SORT_CAPABILITY_BOTH_DIRECTION = 56171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan SORT_DIRECTION_ASCENDING | SORT_DIRECTION_DESCENDING; 57171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 58171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @IntDef({ 59171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan DATA_TYPE_STRING, 60171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan DATA_TYPE_NUMBER 61171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan }) 62171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @Retention(RetentionPolicy.SOURCE) 63171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public @interface DataType {} 64171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public static final int DATA_TYPE_STRING = 0; 65171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public static final int DATA_TYPE_NUMBER = 1; 66171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 67171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan private final int mId; 68171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan private final @StringRes int mLabelId; 69171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan private final @DataType int mDataType; 70171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan private final @SortCapability int mSortCapability; 71171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan private final @SortDirection int mDefaultSortDirection; 72171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 73171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @SortDirection int mSortDirection = SORT_DIRECTION_NONE; 74171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan int mVisibility; 75171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 76171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan private SortDimension(int id, @StringRes int labelId, @DataType int dataType, 77171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @SortCapability int sortCapability, @SortDirection int defaultSortDirection) { 78171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan mId = id; 79171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan mLabelId = labelId; 80171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan mDataType = dataType; 81171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan mSortCapability = sortCapability; 82171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan mDefaultSortDirection = defaultSortDirection; 83171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 84171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 85171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public int getId() { 86171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return mId; 87171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 88171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 89171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public @StringRes int getLabelId() { 90171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return mLabelId; 91171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 92171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 93171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public @DataType int getDataType() { 94171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return mDataType; 95171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 96171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 97171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public @SortCapability int getSortCapability() { 98171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return mSortCapability; 99171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 100171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 101171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public @SortDirection int getDefaultSortDirection() { 102171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return mDefaultSortDirection; 103171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 104171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 105171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public @SortDirection int getNextDirection() { 106171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @SortDimension.SortDirection int alternativeDirection = 107171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan (mDefaultSortDirection == SortDimension.SORT_DIRECTION_ASCENDING) 108171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan ? SortDimension.SORT_DIRECTION_DESCENDING 109171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan : SortDimension.SORT_DIRECTION_ASCENDING; 110171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @SortDimension.SortDirection int direction = 111171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan (mSortDirection == mDefaultSortDirection) 112171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan ? alternativeDirection 113171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan : mDefaultSortDirection; 114171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 115171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return direction; 116171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 117171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 118171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public @SortDirection int getSortDirection() { 119171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return mSortDirection; 120171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 121171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 122171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public int getVisibility() { 123171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return mVisibility; 124171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 125171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 126171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @Override 12700ee050745f8c3558e7ee93d56abeb0a4ad82472Steve McKay public int hashCode() { 12800ee050745f8c3558e7ee93d56abeb0a4ad82472Steve McKay return mId; 12900ee050745f8c3558e7ee93d56abeb0a4ad82472Steve McKay } 13000ee050745f8c3558e7ee93d56abeb0a4ad82472Steve McKay 13100ee050745f8c3558e7ee93d56abeb0a4ad82472Steve McKay @Override 13211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan public boolean equals(Object o) { 13311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan if (o == null || !(o instanceof SortDimension)) { 13411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan return false; 13511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan } 13611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan 13711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan if (this == o) { 13811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan return true; 13911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan } 14011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan 14111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan SortDimension other = (SortDimension) o; 14211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan 14311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan return mId == other.mId 14411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan && mLabelId == other.mLabelId 14511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan && mDataType == other.mDataType 14611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan && mSortCapability == other.mSortCapability 14711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan && mDefaultSortDirection == other.mDefaultSortDirection 14811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan && mSortDirection == other.mSortDirection 14911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan && mVisibility == other.mVisibility; 15011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan } 15111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan 15211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan @Override 15311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan public String toString() { 15411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan return new StringBuilder().append("SortDimension{") 15511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan .append("id=").append(mId) 15611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan .append(", labelId=").append(mLabelId) 15711d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan .append(", dataType=").append(mDataType) 15811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan .append(", sortCapability=").append(mSortCapability) 15911d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan .append(", defaultSortDirection=").append(mDefaultSortDirection) 16011d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan .append(", sortDirection=").append(mSortDirection) 16111d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan .append(", visibility=").append(mVisibility) 16211d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan .append("}") 16311d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan .toString(); 16411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan } 16511d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan 16611d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan @Override 167171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public int describeContents() { 168171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return 0; 169171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 170171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 171171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @Override 172171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public void writeToParcel(Parcel out, int flag) { 173171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan out.writeInt(mId); 174171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan out.writeInt(mLabelId); 175171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan out.writeInt(mDataType); 176171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan out.writeInt(mSortCapability); 177171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan out.writeInt(mDefaultSortDirection); 178171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan out.writeInt(mSortDirection); 179171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan out.writeInt(mVisibility); 180171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 181171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 182171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public static Parcelable.Creator<SortDimension> CREATOR = 183171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan new Parcelable.Creator<SortDimension>() { 184171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 185171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @Override 186171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public SortDimension createFromParcel(Parcel in) { 187171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan int id = in.readInt(); 18811d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan @StringRes int labelId = in.readInt(); 189171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @DataType int dataType = in.readInt(); 190171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan int sortCapability = in.readInt(); 191171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan int defaultSortDirection = in.readInt(); 192171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 193171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan SortDimension column = 19411d23483bf28768c04c25e4056df648fa8301aefGarfield, Tan new SortDimension(id, labelId, dataType, sortCapability, defaultSortDirection); 195171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 196171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan column.mSortDirection = in.readInt(); 197171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan column.mVisibility = in.readInt(); 198171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 199171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return column; 200171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 201171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 202171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan @Override 203171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan public SortDimension[] newArray(int size) { 204171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return new SortDimension[size]; 205171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 206171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan }; 207171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 208171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan static class Builder { 209171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan private int mId; 210171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan private @StringRes int mLabelId; 211171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan private @DataType int mDataType = DATA_TYPE_STRING; 212171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan private @SortCapability int mSortCapability = SORT_CAPABILITY_BOTH_DIRECTION; 213171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan private @SortDirection int mDefaultSortDirection = SORT_DIRECTION_ASCENDING; 214171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan private int mVisibility = View.VISIBLE; 215171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 216171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan Builder withId(int id) { 217171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan mId = id; 218171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return this; 219171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 220171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 221171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan Builder withLabelId(@StringRes int labelId) { 222171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan mLabelId = labelId; 223171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return this; 224171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 225171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 226171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan Builder withDataType(@DataType int dataType) { 227171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan mDataType = dataType; 228171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return this; 229171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 230171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 231171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan Builder withSortCapability(@SortCapability int sortCapability) { 232171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan mSortCapability = sortCapability; 233171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return this; 234171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 235171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 236171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan Builder withVisibility(int visibility) { 237171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan mVisibility = visibility; 238171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return this; 239171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 240171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 241171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan Builder withDefaultSortDirection(@SortDirection int defaultSortDirection) { 242171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan mDefaultSortDirection = defaultSortDirection; 243171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return this; 244171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 245171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 246171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan SortDimension build() { 247171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan if (mLabelId == 0) { 248171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan throw new IllegalStateException("Must set labelId."); 249171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 250171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan 251171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan SortDimension dimension = new SortDimension( 252171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan mId, mLabelId, mDataType, mSortCapability, mDefaultSortDirection); 253171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan dimension.mVisibility = mVisibility; 254171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan return dimension; 255171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 256171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan } 257171e6f53d114c3fe5ee69bc4e2bafb53daa4bda5Garfield, Tan} 258