Home | History | Annotate | Download | only in build
      1 /*
      2  * Copyright (C) 2011 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.tradefed.build;
     18 
     19 import com.android.tradefed.log.LogUtil.CLog;
     20 import com.android.tradefed.util.NullUtil;
     21 
     22 import java.io.File;
     23 import java.util.List;
     24 
     25 /**
     26  * A {@link IDeviceBuildInfo} that also contains a {@link IAppBuildInfo}.
     27  */
     28 public class AppDeviceBuildInfo extends BuildInfo implements IDeviceBuildInfo, IAppBuildInfo {
     29 
     30     private static final long serialVersionUID = BuildSerializedVersion.VERSION;
     31     private IDeviceBuildInfo mDeviceBuild;
     32     private IAppBuildInfo mAppBuildInfo;
     33 
     34     /**
     35      * @see DeviceBuildInfo#DeviceBuildInfo(String, String, String)
     36      */
     37     /*public AppDeviceBuildInfo(String buildId, String testTarget, String buildName) {
     38         super(buildId, testTarget, buildName);
     39     }*/
     40 
     41     /**
     42      * @see DeviceBuildInfo#DeviceBuildInfo(String, String)
     43      */
     44     public AppDeviceBuildInfo(String buildId, String buildName) {
     45         super(buildId, buildName);
     46     }
     47 
     48     /**
     49      * @return the {@link IDeviceBuildInfo} for the device.
     50      */
     51     public IDeviceBuildInfo getDeviceBuildInfo() {
     52         return mDeviceBuild;
     53     }
     54 
     55     /**
     56      * @return the {@link IAppBuildInfo} for the application.
     57      */
     58     public IAppBuildInfo getAppBuildInfo() {
     59         return mAppBuildInfo;
     60     }
     61 
     62     /**
     63      * {@inheritDoc}
     64      */
     65     @Override
     66     public String getDeviceBuildId() {
     67         return mDeviceBuild.getDeviceBuildId();
     68     }
     69 
     70     /**
     71      * {@inheritDoc}
     72      */
     73     @Override
     74     public String getDeviceBuildFlavor() {
     75         return mDeviceBuild.getDeviceBuildFlavor();
     76     }
     77     /**
     78      * {@inheritDoc}
     79      */
     80     @Override
     81     public File getDeviceImageFile() {
     82         return mDeviceBuild.getDeviceImageFile();
     83     }
     84 
     85     /**
     86      * {@inheritDoc}
     87      */
     88     @Override
     89     public String getDeviceImageVersion() {
     90         return mDeviceBuild.getDeviceImageVersion();
     91     }
     92 
     93     /**
     94      * {@inheritDoc}
     95      */
     96     @Override
     97     public void setDeviceImageFile(File deviceImageFile, String version) {
     98         mDeviceBuild.setDeviceImageFile(deviceImageFile, version);
     99     }
    100 
    101     /**
    102      * {@inheritDoc}
    103      */
    104     @Override
    105     public File getUserDataImageFile() {
    106         return mDeviceBuild.getUserDataImageFile();
    107     }
    108 
    109     /**
    110      * {@inheritDoc}
    111      */
    112     @Override
    113     public String getUserDataImageVersion() {
    114         return mDeviceBuild.getUserDataImageVersion();
    115     }
    116 
    117     /**
    118      * {@inheritDoc}
    119      */
    120     @Override
    121     public void setUserDataImageFile(File userDataFile, String version) {
    122         mDeviceBuild.setUserDataImageFile(userDataFile, version);
    123     }
    124 
    125     /**
    126      * {@inheritDoc}
    127      */
    128     @Override
    129     public File getTestsDir() {
    130         return mDeviceBuild.getTestsDir();
    131     }
    132 
    133     /**
    134      * {@inheritDoc}
    135      */
    136     @Override
    137     public String getTestsDirVersion() {
    138         return mDeviceBuild.getTestsDirVersion();
    139     }
    140 
    141     /**
    142      * {@inheritDoc}
    143      */
    144     @Override
    145     public void setTestsDir(File testsDir, String version) {
    146         mDeviceBuild.setTestsDir(testsDir, version);
    147     }
    148 
    149     /**
    150      * {@inheritDoc}
    151      */
    152     @Override
    153     public File getBasebandImageFile() {
    154         return mDeviceBuild.getBasebandImageFile();
    155     }
    156 
    157     /**
    158      * {@inheritDoc}
    159      */
    160     @Override
    161     public String getBasebandVersion() {
    162         return mDeviceBuild.getBasebandVersion();
    163     }
    164 
    165     /**
    166      * {@inheritDoc}
    167      */
    168     @Override
    169     public void setBasebandImage(File basebandFile, String version) {
    170         mDeviceBuild.setBasebandImage(basebandFile, version);
    171     }
    172 
    173     /**
    174      * {@inheritDoc}
    175      */
    176     @Override
    177     public File getBootloaderImageFile() {
    178         return mDeviceBuild.getBootloaderImageFile();
    179     }
    180 
    181     /**
    182      * {@inheritDoc}
    183      */
    184     @Override
    185     public String getBootloaderVersion() {
    186         return mDeviceBuild.getBootloaderVersion();
    187     }
    188 
    189     /**
    190      * {@inheritDoc}
    191      */
    192     @Override
    193     public void setBootloaderImageFile(File bootloaderImgFile, String version) {
    194         mDeviceBuild.setBootloaderImageFile(bootloaderImgFile, version);
    195     }
    196 
    197     /**
    198      * {@inheritDoc}
    199      */
    200     @Override
    201     public File getOtaPackageFile() {
    202         return mDeviceBuild.getOtaPackageFile();
    203     }
    204 
    205     /**
    206      * {@inheritDoc}
    207      */
    208     @Override
    209     public String getOtaPackageVersion() {
    210         return mDeviceBuild.getOtaPackageVersion();
    211     }
    212 
    213     /**
    214      * {@inheritDoc}
    215      */
    216     @Override
    217     public void setOtaPackageFile(File otaFile, String version) {
    218         mDeviceBuild.setOtaPackageFile(otaFile, version);
    219     }
    220 
    221     /**
    222      * {@inheritDoc}
    223      */
    224     @Override
    225     public File getMkbootimgFile() {
    226         return mDeviceBuild.getMkbootimgFile();
    227     }
    228 
    229     /**
    230      * {@inheritDoc}
    231      */
    232     @Override
    233     public String getMkbootimgVersion() {
    234         return mDeviceBuild.getMkbootimgVersion();
    235     }
    236 
    237     /**
    238      * {@inheritDoc}
    239      */
    240     @Override
    241     public void setMkbootimgFile(File mkbootimg, String version) {
    242         mDeviceBuild.setMkbootimgFile(mkbootimg, version);
    243     }
    244 
    245     /**
    246      * {@inheritDoc}
    247      */
    248     @Override
    249     public File getRamdiskFile() {
    250         return mDeviceBuild.getRamdiskFile();
    251     }
    252 
    253     /**
    254      * {@inheritDoc}
    255      */
    256     @Override
    257     public String getRamdiskVersion() {
    258         return mDeviceBuild.getRamdiskVersion();
    259     }
    260 
    261     /**
    262      * {@inheritDoc}
    263      */
    264     @Override
    265     public void setRamdiskFile(File ramdisk, String version) {
    266         mDeviceBuild.setRamdiskFile(ramdisk, version);
    267     }
    268 
    269     /**
    270      * @param deviceBuild
    271      */
    272     public void setDeviceBuild(IDeviceBuildInfo deviceBuild) {
    273         mDeviceBuild = deviceBuild;
    274     }
    275 
    276     /**
    277      * {@inheritDoc}
    278      */
    279     @Override
    280     public void addAppPackageFile(File appPackageFile, String version) {
    281         mAppBuildInfo.addAppPackageFile(appPackageFile, version);
    282     }
    283 
    284     /**
    285      * {@inheritDoc}
    286      */
    287     @Override
    288     public List<VersionedFile> getAppPackageFiles() {
    289         return mAppBuildInfo.getAppPackageFiles();
    290     }
    291 
    292     /**
    293      * @param appBuild
    294      */
    295     public void setAppBuild(IAppBuildInfo appBuild) {
    296         mAppBuildInfo = appBuild;
    297     }
    298 
    299     /**
    300      * {@inheritDoc}
    301      */
    302     @Override
    303     public void cleanUp() {
    304         if (mDeviceBuild != null) {
    305             mDeviceBuild.cleanUp();
    306         }
    307         if (mAppBuildInfo != null) {
    308             mAppBuildInfo.cleanUp();
    309         }
    310     }
    311 
    312     /**
    313      * {@inheritDoc}
    314      */
    315     @Override
    316     public File getFile(String name) {
    317         File localRecord = super.getFile(name);
    318         File deviceFileRecord = mDeviceBuild.getFile(name);
    319         File appFileRecord = mAppBuildInfo.getFile(name);
    320 
    321         if (NullUtil.countNonNulls(localRecord, deviceFileRecord, appFileRecord) > 1) {
    322             CLog.e("Found duplicate records while fetching file with name \"%s\"", name);
    323             return null;
    324         } else if (localRecord != null) {
    325             return localRecord;
    326         } else if (deviceFileRecord != null) {
    327             return deviceFileRecord;
    328         } else {
    329             return appFileRecord;
    330         }
    331     }
    332 
    333     /**
    334      * {@inheritDoc}
    335      */
    336     @Override
    337     public String getVersion(String name) {
    338         String localFileVersion = super.getVersion(name);
    339         String deviceFileVersion = mDeviceBuild.getVersion(name);
    340         String appFileVersion = mAppBuildInfo.getVersion(name);
    341 
    342         if (NullUtil.countNonNulls(localFileVersion, deviceFileVersion, appFileVersion) > 1) {
    343             CLog.e("Found duplicate records while fetching file version for \"%s\"", name);
    344             return null;
    345         } else if (localFileVersion != null) {
    346             return localFileVersion;
    347         } else if (deviceFileVersion != null) {
    348             return deviceFileVersion;
    349         } else {
    350             return appFileVersion;
    351         }
    352     }
    353 
    354     /**
    355      * {@inheritDoc}
    356      */
    357     @Override
    358     public IBuildInfo clone() {
    359         AppDeviceBuildInfo copy = new AppDeviceBuildInfo(getBuildId(), getBuildTargetName());
    360         copy.addAllBuildAttributes(this);
    361         IDeviceBuildInfo deviceBuildClone = (IDeviceBuildInfo) mDeviceBuild.clone();
    362         copy.setDeviceBuild(deviceBuildClone);
    363         IAppBuildInfo appBuildClone = (IAppBuildInfo) mAppBuildInfo.clone();
    364         copy.setAppBuild(appBuildClone);
    365         return copy;
    366     }
    367 }
    368