1 /* 2 * Copyright (C) 2016 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 android.support.build; 18 19 import org.gradle.api.tasks.SourceSet; 20 21 import java.util.ArrayList; 22 import java.util.Collections; 23 import java.util.List; 24 25 /** 26 * Defines an API specific support library modules. 27 * e.g. Honeycomb implementation of Support-v4. 28 * 29 * These ApiModules are converted into real modules when project is opened in AndroidStudio. 30 * When project is run from the command line, they are converted into source sets. 31 * This allows us to rely on previous compile setup to deploy projects with their dependencies while 32 * supporting development on Android Studio. 33 */ 34 public class ApiModule { 35 public static final int CURRENT = 99; 36 private String mFolderName; 37 private int mApi; 38 private SourceSet mSourceSet; 39 private ApiModule mPrev; 40 private String mParentModuleName; 41 private List<String> mParentModuleDependencies; 42 private List<String> mResourceFolders = new ArrayList<>(); 43 private List<String> mAssetFolders = new ArrayList<>(); 44 private List<String> mJavaResourceFolders = new ArrayList<>(); 45 46 public ApiModule(String folderName, int api) { 47 mFolderName = folderName; 48 mApi = api; 49 } 50 51 public ApiModule resources(String... resourceFolders) { 52 Collections.addAll(mResourceFolders, resourceFolders); 53 return this; 54 } 55 56 public ApiModule assets(String... assetFolders) { 57 Collections.addAll(mAssetFolders, assetFolders); 58 return this; 59 } 60 61 public ApiModule javaResources(String... javaResourceFolders) { 62 Collections.addAll(mJavaResourceFolders, javaResourceFolders); 63 return this; 64 } 65 66 public List<String> getResourceFolders() { 67 return mResourceFolders; 68 } 69 70 public List<String> getAssetFolders() { 71 return mAssetFolders; 72 } 73 74 public List<String> getJavaResourceFolders() { 75 return mJavaResourceFolders; 76 } 77 78 public void setResourceFolders(List<String> resourceFolders) { 79 mResourceFolders = resourceFolders; 80 } 81 82 public String getParentModuleName() { 83 return mParentModuleName; 84 } 85 86 public void setParentModuleName(String parentModuleName) { 87 mParentModuleName = parentModuleName; 88 } 89 90 public String getFolderName() { 91 return mFolderName; 92 } 93 94 public int getApi() { 95 return mApi; 96 } 97 98 public Object getApiForSourceSet() { 99 return mApi == CURRENT ? "current" : mApi; 100 } 101 102 public SourceSet getSourceSet() { 103 return mSourceSet; 104 } 105 106 public void setSourceSet(SourceSet sourceSet) { 107 mSourceSet = sourceSet; 108 } 109 110 public ApiModule getPrev() { 111 return mPrev; 112 } 113 114 public void setPrev(ApiModule prev) { 115 mPrev = prev; 116 } 117 118 public String getModuleName() { 119 return ":" + mParentModuleName + "-" + mFolderName; 120 } 121 122 public List<String> getParentModuleDependencies() { 123 return mParentModuleDependencies; 124 } 125 126 public void setParentModuleDependencies(List<String> parentModuleDependencies) { 127 mParentModuleDependencies = parentModuleDependencies; 128 } 129 } 130