BackupHelperDispatcher.java revision efd0fab04b96d7ab0c1d8bf3b79397c8621e31c5
15f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato/* 25f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * Copyright (C) 2009 The Android Open Source Project 35f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * 45f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * Licensed under the Apache License, Version 2.0 (the "License"); 55f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * you may not use this file except in compliance with the License. 65f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * You may obtain a copy of the License at 75f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * 85f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * http://www.apache.org/licenses/LICENSE-2.0 95f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * 105f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * Unless required by applicable law or agreed to in writing, software 115f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * distributed under the License is distributed on an "AS IS" BASIS, 125f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * See the License for the specific language governing permissions and 145f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato * limitations under the License. 155f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato */ 165f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato 175f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onoratopackage android.backup; 185f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato 195f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onoratoimport java.io.IOException; 205f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onoratoimport java.util.HashMap; 215f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato 225f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato/** @hide */ 235f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onoratopublic class RestoreHelperDispatcher { 24efd0fab04b96d7ab0c1d8bf3b79397c8621e31c5Joe Onorato HashMap<String,RestoreHelper> mHelpers = new HashMap<String,RestoreHelper>(); 255f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato 265f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato public void addHelper(String keyPrefix, RestoreHelper helper) { 275f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato mHelpers.put(keyPrefix, helper); 285f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato } 295f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato 305f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato public void dispatch(BackupDataInput input) throws IOException { 315f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato BackupDataInputStream stream = new BackupDataInputStream(input); 325f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato while (input.readNextHeader()) { 335f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato String rawKey = input.getKey(); 345f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato int pos = rawKey.indexOf(':'); 355f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato if (pos > 0) { 365f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato String prefix = rawKey.substring(0, pos); 375f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato RestoreHelper helper = mHelpers.get(prefix); 385f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato if (helper != null) { 395f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato stream.dataSize = input.getDataSize(); 405f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato stream.key = rawKey.substring(pos+1); 41efd0fab04b96d7ab0c1d8bf3b79397c8621e31c5Joe Onorato helper.restoreEntity(stream); 425f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato } 435f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato } 445f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato input.skipEntityData(); // In case they didn't consume the data. 455f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato } 465f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato } 475f15d151b5101fadfe6cba1e8f4aa6367e8c603eJoe Onorato} 48