blob: 9286e8f9a625633c1ea96d3af62be68570ba3499 [file] [log] [blame]
/*
* Copyright (C) 2011 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.tradefed.build;
import com.android.tradefed.log.LogUtil.CLog;
import com.android.tradefed.util.NullUtil;
import java.io.File;
import java.util.List;
/**
* A {@link IDeviceBuildInfo} that also contains a {@link IAppBuildInfo}.
*/
public class AppDeviceBuildInfo extends BuildInfo implements IDeviceBuildInfo, IAppBuildInfo {
private IDeviceBuildInfo mDeviceBuild;
private IAppBuildInfo mAppBuildInfo;
/**
* @see DeviceBuildInfo#DeviceBuildInfo(String, String, String)
*/
public AppDeviceBuildInfo(String buildId, String testTarget, String buildName) {
super(buildId, testTarget, buildName);
}
/**
* @return the {@link IDeviceBuildInfo} for the device.
*/
public IDeviceBuildInfo getDeviceBuildInfo() {
return mDeviceBuild;
}
/**
* @return the {@link IAppBuildInfo} for the application.
*/
public IAppBuildInfo getAppBuildInfo() {
return mAppBuildInfo;
}
/**
* {@inheritDoc}
*/
@Override
public String getDeviceBuildId() {
return mDeviceBuild.getDeviceBuildId();
}
/**
* {@inheritDoc}
*/
@Override
public File getDeviceImageFile() {
return mDeviceBuild.getDeviceImageFile();
}
/**
* {@inheritDoc}
*/
@Override
public String getDeviceImageVersion() {
return mDeviceBuild.getDeviceImageVersion();
}
/**
* {@inheritDoc}
*/
@Override
public void setDeviceImageFile(File deviceImageFile, String version) {
mDeviceBuild.setDeviceImageFile(deviceImageFile, version);
}
/**
* {@inheritDoc}
*/
@Override
public File getUserDataImageFile() {
return mDeviceBuild.getUserDataImageFile();
}
/**
* {@inheritDoc}
*/
@Override
public String getUserDataImageVersion() {
return mDeviceBuild.getUserDataImageVersion();
}
/**
* {@inheritDoc}
*/
@Override
public void setUserDataImageFile(File userDataFile, String version) {
mDeviceBuild.setUserDataImageFile(userDataFile, version);
}
/**
* {@inheritDoc}
*/
@Override
public File getTestsDir() {
return mDeviceBuild.getTestsDir();
}
/**
* {@inheritDoc}
*/
@Override
public String getTestsDirVersion() {
return mDeviceBuild.getTestsDirVersion();
}
/**
* {@inheritDoc}
*/
@Override
public void setTestsDir(File testsDir, String version) {
mDeviceBuild.setTestsDir(testsDir, version);
}
/**
* {@inheritDoc}
*/
@Override
public File getBasebandImageFile() {
return mDeviceBuild.getBasebandImageFile();
}
/**
* {@inheritDoc}
*/
@Override
public String getBasebandVersion() {
return mDeviceBuild.getBasebandVersion();
}
/**
* {@inheritDoc}
*/
@Override
public void setBasebandImage(File basebandFile, String version) {
mDeviceBuild.setBasebandImage(basebandFile, version);
}
/**
* {@inheritDoc}
*/
@Override
public File getBootloaderImageFile() {
return mDeviceBuild.getBootloaderImageFile();
}
/**
* {@inheritDoc}
*/
@Override
public String getBootloaderVersion() {
return mDeviceBuild.getBootloaderVersion();
}
/**
* {@inheritDoc}
*/
@Override
public void setBootloaderImageFile(File bootloaderImgFile, String version) {
mDeviceBuild.setBootloaderImageFile(bootloaderImgFile, version);
}
/**
* {@inheritDoc}
*/
@Override
public File getOtaPackageFile() {
return mDeviceBuild.getOtaPackageFile();
}
/**
* {@inheritDoc}
*/
@Override
public String getOtaPackageVersion() {
return mDeviceBuild.getOtaPackageVersion();
}
/**
* {@inheritDoc}
*/
@Override
public void setOtaPackageFile(File otaFile, String version) {
mDeviceBuild.setOtaPackageFile(otaFile, version);
}
/**
* {@inheritDoc}
*/
@Override
public File getMkbootimgFile() {
return mDeviceBuild.getMkbootimgFile();
}
/**
* {@inheritDoc}
*/
@Override
public String getMkbootimgVersion() {
return mDeviceBuild.getMkbootimgVersion();
}
/**
* {@inheritDoc}
*/
@Override
public void setMkbootimgFile(File mkbootimg, String version) {
mDeviceBuild.setMkbootimgFile(mkbootimg, version);
}
/**
* {@inheritDoc}
*/
@Override
public File getRamdiskFile() {
return mDeviceBuild.getRamdiskFile();
}
/**
* {@inheritDoc}
*/
@Override
public String getRamdiskVersion() {
return mDeviceBuild.getRamdiskVersion();
}
/**
* {@inheritDoc}
*/
@Override
public void setRamdiskFile(File ramdisk, String version) {
mDeviceBuild.setRamdiskFile(ramdisk, version);
}
/**
* @param deviceBuild
*/
public void setDeviceBuild(IDeviceBuildInfo deviceBuild) {
mDeviceBuild = deviceBuild;
}
/**
* {@inheritDoc}
*/
@Override
public void addAppPackageFile(File appPackageFile, String version) {
mAppBuildInfo.addAppPackageFile(appPackageFile, version);
}
/**
* {@inheritDoc}
*/
@Override
public List<VersionedFile> getAppPackageFiles() {
return mAppBuildInfo.getAppPackageFiles();
}
/**
* @param appBuild
*/
public void setAppBuild(IAppBuildInfo appBuild) {
mAppBuildInfo = appBuild;
}
/**
* {@inheritDoc}
*/
@Override
public void cleanUp() {
if (mDeviceBuild != null) {
mDeviceBuild.cleanUp();
}
if (mAppBuildInfo != null) {
mAppBuildInfo.cleanUp();
}
}
/**
* {@inheritDoc}
*/
@Override
public File getFile(String name) {
File localRecord = super.getFile(name);
File deviceFileRecord = mDeviceBuild.getFile(name);
File appFileRecord = mAppBuildInfo.getFile(name);
if (NullUtil.countNonNulls(localRecord, deviceFileRecord, appFileRecord) > 1) {
CLog.e("Found duplicate records while fetching file with name \"%s\"", name);
return null;
} else if (localRecord != null) {
return localRecord;
} else if (deviceFileRecord != null) {
return deviceFileRecord;
} else {
return appFileRecord;
}
}
/**
* {@inheritDoc}
*/
@Override
public String getVersion(String name) {
String localFileVersion = super.getVersion(name);
String deviceFileVersion = mDeviceBuild.getVersion(name);
String appFileVersion = mAppBuildInfo.getVersion(name);
if (NullUtil.countNonNulls(localFileVersion, deviceFileVersion, appFileVersion) > 1) {
CLog.e("Found duplicate records while fetching file version for \"%s\"", name);
return null;
} else if (localFileVersion != null) {
return localFileVersion;
} else if (deviceFileVersion != null) {
return deviceFileVersion;
} else {
return appFileVersion;
}
}
/**
* {@inheritDoc}
*/
@Override
public IBuildInfo clone() {
AppDeviceBuildInfo copy = new AppDeviceBuildInfo(getBuildId(), getTestTag(),
getBuildTargetName());
copy.addAllBuildAttributes(this);
IDeviceBuildInfo deviceBuildClone = (IDeviceBuildInfo) mDeviceBuild.clone();
copy.setDeviceBuild(deviceBuildClone);
IAppBuildInfo appBuildClone = (IAppBuildInfo) mAppBuildInfo.clone();
copy.setAppBuild(appBuildClone);
return copy;
}
}