1aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy/*
2aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy * Copyright (C) 2008 The Android Open Source Project
3aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy *
4aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy * Licensed under the Apache License, Version 2.0 (the "License");
5aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy * you may not use this file except in compliance with the License.
6aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy * You may obtain a copy of the License at
7aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy *
8aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy *      http://www.apache.org/licenses/LICENSE-2.0
9aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy *
10aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy * Unless required by applicable law or agreed to in writing, software
11aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy * distributed under the License is distributed on an "AS IS" BASIS,
12aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy * See the License for the specific language governing permissions and
14aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy * limitations under the License.
15aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy */
16aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy
17aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddypackage android.util;
18aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy
19aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddyimport java.io.DataInputStream;
20aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddyimport java.io.DataOutputStream;
21aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddyimport java.io.IOException;
22aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy
23aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy/**
24aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy * Utility methods for Backup/Restore
25aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy * @hide
26aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy */
27aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddypublic class BackupUtils {
28aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy
29aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy    public static final int NULL = 0;
30aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy    public static final int NOT_NULL = 1;
31aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy
32aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy    /**
33aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy     * Thrown when there is a backup version mismatch
34aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy     * between the data received and what the system can handle
35aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy     */
36aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy    public static class BadVersionException extends Exception {
37aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy        public BadVersionException(String message) {
38aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy            super(message);
39aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy        }
40aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy    }
41aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy
42aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy    public static String readString(DataInputStream in) throws IOException {
43aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy        return (in.readByte() == NOT_NULL) ? in.readUTF() : null;
44aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy    }
45aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy
46aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy    public static void writeString(DataOutputStream out, String val) throws IOException {
47aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy        if (val != null) {
48aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy            out.writeByte(NOT_NULL);
49aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy            out.writeUTF(val);
50aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy        } else {
51aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy            out.writeByte(NULL);
52aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy        }
53aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy    }
54aeb4c0601330f5f30fe0026a714ff59f0fe90abfRitesh Reddy}