1c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay/* 2c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * Copyright (C) 2016 The Android Open Source Project 3c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * 4c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * Licensed under the Apache License, Version 2.0 (the "License"); 5c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * you may not use this file except in compliance with the License. 6c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * You may obtain a copy of the License at 7c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * 8c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * http://www.apache.org/licenses/LICENSE-2.0 9c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * 10c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * Unless required by applicable law or agreed to in writing, software 11c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * distributed under the License is distributed on an "AS IS" BASIS, 12c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * See the License for the specific language governing permissions and 14c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * limitations under the License. 15c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay */ 16c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay 17c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKaypackage com.android.documentsui.clipping; 18c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay 19c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKayimport android.net.Uri; 20c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay 21c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKayimport java.io.File; 22c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKayimport java.io.IOException; 23c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay 24c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay/** 25c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * Interface for clip data URI storage. 26c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay */ 27c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKaypublic interface ClipStore { 28c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay 29c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay /** 30c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * Gets a {@link File} instance given a tag. 31c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * 32c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * This method creates a symbolic link in the slot folder to the data file as a reference 33c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * counting method. When someone is done using this symlink, it's responsible to delete it. 34c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * Therefore we can have a neat way to track how many things are still using this slot. 35c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay */ 36c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay File getFile(int tag) throws IOException; 37c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay 38c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay /** 39c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * Returns a Reader. Callers must close the reader when finished. 40c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay */ 41c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay ClipStorageReader createReader(File file) throws IOException; 42c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay 43c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay /** 44c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * Writes the uris to the next available slot, returning the tag for that slot. 45c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * 46c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * @return int the tag used to store the URIs. 47c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay */ 48c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay int persistUris(Iterable<Uri> uris); 49c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay} 50