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