| /* |
| * Copyright (C) 2010 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.util.FileUtil; |
| |
| import java.io.File; |
| import java.io.IOException; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| /** |
| * A {@link IBuildInfo} that represents an Android application and its test package(s). |
| */ |
| public class AppBuildInfo extends BuildInfo implements IAppBuildInfo { |
| |
| private List<VersionedFile> mAppPackageFiles = new ArrayList<VersionedFile>(); |
| |
| /** |
| * Creates a {@link AppBuildInfo}. |
| * |
| * @param buildId the unique build id |
| * @param testTarget the test target name |
| * @param buildName the build name |
| */ |
| public AppBuildInfo(String buildId, String testTarget, String buildName) { |
| super(buildId, testTarget, buildName); |
| } |
| |
| /** |
| * @see {@link BuildInfo#BuildInfo(BuildInfo)} |
| */ |
| public AppBuildInfo(BuildInfo buildToCopy) { |
| super(buildToCopy); |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| @Override |
| public List<VersionedFile> getAppPackageFiles() { |
| List<VersionedFile> listCopy = new ArrayList<VersionedFile>(mAppPackageFiles.size()); |
| listCopy.addAll(mAppPackageFiles); |
| return listCopy; |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| @Override |
| public void addAppPackageFile(File appPackageFile, String version) { |
| mAppPackageFiles.add(new VersionedFile(appPackageFile, version)); |
| } |
| |
| /** |
| * Removes all temporary files |
| */ |
| @Override |
| public void cleanUp() { |
| for (VersionedFile appPackageFile : mAppPackageFiles) { |
| appPackageFile.getFile().delete(); |
| } |
| mAppPackageFiles.clear(); |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| @Override |
| public IBuildInfo clone() { |
| AppBuildInfo copy = new AppBuildInfo(getBuildId(), getTestTag(), getBuildTargetName()); |
| copy.addAllBuildAttributes(this); |
| try { |
| for (VersionedFile origVerFile : mAppPackageFiles) { |
| // Only using createTempFile to create a unique dest filename |
| File origFile = origVerFile.getFile(); |
| File copyFile = FileUtil.createTempFile(FileUtil.getBaseName(origFile.getName()), |
| FileUtil.getExtension(origFile.getName())); |
| copyFile.delete(); |
| FileUtil.hardlinkFile(origFile, copyFile); |
| copy.addAppPackageFile(copyFile, origVerFile.getVersion()); |
| } |
| } catch (IOException e) { |
| throw new RuntimeException(e); |
| } |
| copy.setBuildBranch(getBuildBranch()); |
| copy.setBuildFlavor(getBuildFlavor()); |
| |
| return copy; |
| } |
| } |