BackupHelper.java revision 4e14a829129feee14ebe453f61a124784c870610
1c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar/*
2c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar * Copyright (C) 2009 The Android Open Source Project
3c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar *
4c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar * Licensed under the Apache License, Version 2.0 (the "License");
5c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar * you may not use this file except in compliance with the License.
6c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar * You may obtain a copy of the License at
7c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar *
8c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar *      http://www.apache.org/licenses/LICENSE-2.0
9c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar *
10c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar * Unless required by applicable law or agreed to in writing, software
11c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar * distributed under the License is distributed on an "AS IS" BASIS,
12c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar * See the License for the specific language governing permissions and
14c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar * limitations under the License.
15c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar */
16c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar
17c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyarpackage android.app.backup;
18c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar
19c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyarimport android.os.ParcelFileDescriptor;
20c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar
21c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar/**
22c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar * A convenient interface to be used with the
23c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar * {@link android.app.backup.BackupAgentHelper} class to implement backup and restore of
24c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar * arbitrary data types.
25c43ce90b803cdfa033dfc94fa4161371ed6f3ec6Sergey Vasilinets * <p>
2634e5031083f735db3a395b0f6aa430880b072d71Yigit Boyar * STOPSHIP: document!
2734e5031083f735db3a395b0f6aa430880b072d71Yigit Boyar */
28c43ce90b803cdfa033dfc94fa4161371ed6f3ec6Sergey Vasilinetspublic interface BackupHelper {
29c43ce90b803cdfa033dfc94fa4161371ed6f3ec6Sergey Vasilinets    /**
30c43ce90b803cdfa033dfc94fa4161371ed6f3ec6Sergey Vasilinets     * Based on <code>oldState</code>, determine which of the files from the
31c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar     * application's data directory need to be backed up, write them to
32e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets     * <code>data</code>, and fill in <code>newState</code> with the state as it
33e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets     * exists now.
34e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets     */
35e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets    public void performBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
36e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets            ParcelFileDescriptor newState);
3789b6198c76e51a505556d7f4e57d3e48e24d5eceYigit Boyar
3889b6198c76e51a505556d7f4e57d3e48e24d5eceYigit Boyar    /**
39e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets     * Called by {@link android.app.backup.BackupAgentHelper BackupAgentHelper}
40e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets     * to restore one entity from the restore dataset.
41e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets     * <p class=note>
4289b6198c76e51a505556d7f4e57d3e48e24d5eceYigit Boyar     * Do not close the <code>data</code> stream.  Do not read more than
4389b6198c76e51a505556d7f4e57d3e48e24d5eceYigit Boyar     * <code>data.size()</code> bytes from <code>data</code>.
44e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets     */
45e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets    public void restoreEntity(BackupDataInputStream data);
46e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets
4789b6198c76e51a505556d7f4e57d3e48e24d5eceYigit Boyar    /**
4889b6198c76e51a505556d7f4e57d3e48e24d5eceYigit Boyar     * Called by {@link android.app.backup.BackupAgentHelper BackupAgentHelper}
4989b6198c76e51a505556d7f4e57d3e48e24d5eceYigit Boyar     * after a restore operation to write the backup state file corresponding to
50c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar     * the data as processed by the helper.
51e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets     */
52e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets    public void writeNewStateDescription(ParcelFileDescriptor fd);
53e69e470336d0b6a1b4a16fe1783af17143d0c426Sergey Vasilinets}
54c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar
55c1b53ee5d095a74b84c21257fb4cd00e33f748baYigit Boyar