blob: fe75041eeaca5b406efaa4399aaa6d8a8de0fe83 [file] [log] [blame]
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License
*/
package com.android.server.backup;
import static com.android.server.backup.BackupManagerService.TAG;
import android.app.backup.BackupAgent;
import android.util.Slog;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Description of a file in the restore datastream.
*/
public class FileMetadata {
public String packageName; // name of the owning app
public String installerPackageName; // name of the market-type app that installed the owner
public int type; // e.g. BackupAgent.TYPE_DIRECTORY
public String domain; // e.g. FullBackup.DATABASE_TREE_TOKEN
public String path; // subpath within the semantic domain
public long mode; // e.g. 0666 (actually int)
public long mtime; // last mod time, UTC time_t (actually int)
public long size; // bytes of content
public long version; // App version.
public boolean hasApk; // Whether backup file contains apk.
@Override
public String toString() {
// TODO: Clean this up.
StringBuilder sb = new StringBuilder(128);
sb.append("FileMetadata{");
sb.append(packageName);
sb.append(',');
sb.append(type);
sb.append(',');
sb.append(domain);
sb.append(':');
sb.append(path);
sb.append(',');
sb.append(size);
sb.append('}');
return sb.toString();
}
public void dump() {
StringBuilder b = new StringBuilder(128);
// mode string
b.append((type == BackupAgent.TYPE_DIRECTORY) ? 'd' : '-');
b.append(((mode & 0400) != 0) ? 'r' : '-');
b.append(((mode & 0200) != 0) ? 'w' : '-');
b.append(((mode & 0100) != 0) ? 'x' : '-');
b.append(((mode & 0040) != 0) ? 'r' : '-');
b.append(((mode & 0020) != 0) ? 'w' : '-');
b.append(((mode & 0010) != 0) ? 'x' : '-');
b.append(((mode & 0004) != 0) ? 'r' : '-');
b.append(((mode & 0002) != 0) ? 'w' : '-');
b.append(((mode & 0001) != 0) ? 'x' : '-');
b.append(String.format(" %9d ", size));
Date stamp = new Date(mtime);
b.append(new SimpleDateFormat("MMM dd HH:mm:ss ").format(stamp));
b.append(packageName);
b.append(" :: ");
b.append(domain);
b.append(" :: ");
b.append(path);
Slog.i(TAG, b.toString());
}
}