blob: e178c631808b6ae94014cffddbeadffd2d0e6ff0 [file] [log] [blame]
shawnlin65bbe792018-08-20 16:20:43 +08001package com.android.documentsui;
2
3import static com.android.documentsui.base.DocumentInfo.getCursorString;
4
5import android.database.Cursor;
6import android.net.Uri;
7import android.provider.DocumentsContract;
8import android.util.Log;
9
10import com.android.documentsui.base.DocumentInfo;
11import com.android.documentsui.roots.RootCursorWrapper;
12
13import java.util.ArrayList;
14import java.util.List;
15
16public class ModelId {
17 private final static String TAG = "ModelId";
18
19 public static final String build(Uri uri) {
20 String documentId;
21 try {
22 documentId = DocumentsContract.getDocumentId(uri);
23 } catch (IllegalArgumentException e) {
24 Log.e(TAG, "Failed to get document id.", e);
25 return null;
26 }
27 String authority;
28 authority = uri.getAuthority();
29 return ModelId.build(authority, documentId);
30 }
31
32 public static final String build(DocumentInfo docInfo) {
33 if (docInfo == null) {
34 return null;
35 }
36 return ModelId.build(docInfo.authority, docInfo.documentId);
37 }
38
39 public static final String build(Cursor cursor) {
40 if (cursor == null) {
41 return null;
42 }
43 return ModelId.build(getCursorString(cursor, RootCursorWrapper.COLUMN_AUTHORITY),
44 getCursorString(cursor, DocumentsContract.Document.COLUMN_DOCUMENT_ID));
45 }
46
47 public static final ArrayList<String> build(ArrayList<Uri> uris) {
48 if (uris == null || uris.isEmpty()) {
49 return null;
50 }
51 ArrayList<String> ids = new ArrayList<>();
52 String id;
53 for (Uri uri : uris) {
54 id = ModelId.build(uri);
55 if (id != null) {
56 ids.add(id);
57 }
58 }
59 return ids;
60 }
61
62 public static final String build(String authority, String docId) {
63 if (authority == null || authority.isEmpty() || docId == null || docId.isEmpty()) {
64 return null;
65 }
66 return authority + "|" + docId;
67 }
68}