/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.documentsui.archives; import android.net.Uri; public class ArchiveId { private final static char DELIMITER = '#'; public final Uri mArchiveUri; public final int mAccessMode; public final String mPath; public ArchiveId(Uri archiveUri, int accessMode, String path) { assert(archiveUri.toString().indexOf(DELIMITER) == -1); assert(!path.isEmpty()); mArchiveUri = archiveUri; mAccessMode = accessMode; mPath = path; } static public ArchiveId fromDocumentId(String documentId) { final int delimiterPosition = documentId.indexOf(DELIMITER); assert(delimiterPosition != -1); final int secondDelimiterPosition = documentId.indexOf(DELIMITER, delimiterPosition + 1); assert(secondDelimiterPosition != -1); final String archiveUriPart = documentId.substring(0, delimiterPosition); final String accessModePart = documentId.substring(delimiterPosition + 1, secondDelimiterPosition); final String pathPart = documentId.substring(secondDelimiterPosition + 1); return new ArchiveId(Uri.parse(archiveUriPart), Integer.parseInt(accessModePart), pathPart); } public String toDocumentId() { return mArchiveUri.toString() + DELIMITER + mAccessMode + DELIMITER + mPath; } };