private void recordResources(File resDir) throws IOException, SAXException, ParserConfigurationException { File[] resourceFolders = resDir.listFiles(); if (resourceFolders != null) { for (File folder : resourceFolders) { ResourceFolderType folderType = ResourceFolderType.getFolderType(folder.getName()); if (folderType != null) { recordResources(folderType, folder); } } } }
private String lintFiles(File targetDir, List<File> files) throws Exception { files.sort((file1, file2) -> { ResourceFolderType folder1 = ResourceFolderType.getFolderType( file1.getParentFile().getName()); ResourceFolderType folder2 = ResourceFolderType.getFolderType( file2.getParentFile().getName()); if (folder1 != null && folder2 != null && folder1 != folder2) { return folder1.compareTo(folder2); } return file1.compareTo(file2); }); addManifestFileIfNecessary(new File(targetDir, ANDROID_MANIFEST_XML)); return checkLint(files); }
/** * Returns the enum by name. * @param name The enum string value. * @return the enum or null if not found. */ public static ResourceFolderType getTypeByName(String name) { for (ResourceFolderType rType : values()) { if (rType.mName.equals(name)) { return rType; } } return null; }
/** * Returns the {@link ResourceFolderType} from the folder name * @param folderName The name of the folder. This must be a valid folder name in the format * <code>resType[-resqualifiers[-resqualifiers[...]]</code> * @return the <code>ResourceFolderType</code> representing the type of the folder, or * <code>null</code> if no matching type was found. */ public static ResourceFolderType getFolderType(String folderName) { // split the name of the folder in segments. String[] folderSegments = folderName.split(AndroidConstants.RES_QUALIFIER_SEP); // get the enum for the resource type. return getTypeByName(folderSegments[0]); } }
private static boolean isInDrawable(@NonNull File inputXmlFile) { ResourceFolderType folderType = ResourceFolderType.getFolderType(inputXmlFile.getParentFile().getName()); return folderType == ResourceFolderType.DRAWABLE; }
/** * Returns the enum by name. * @param name The enum string value. * @return the enum or null if not found. */ public static ResourceFolderType getTypeByName(String name) { assert name.indexOf('-') == -1 : name; // use #getFolderType instead for (ResourceFolderType rType : values()) { if (rType.mName.equals(name)) { return rType; } } return null; }
/** * Returns the {@link ResourceFolderType} from the folder name * @param folderName The name of the folder. This must be a valid folder name in the format * <code>resType[-resqualifiers[-resqualifiers[...]]</code> * @return the <code>ResourceFolderType</code> representing the type of the folder, or * <code>null</code> if no matching type was found. */ public static ResourceFolderType getFolderType(String folderName) { int index = folderName.indexOf(ResourceConstants.RES_QUALIFIER_SEP); if (index != -1) { folderName = folderName.substring(0, index); } return getTypeByName(folderName); } }
private void recordResources(File resDir) throws IOException, SAXException, ParserConfigurationException { File[] resourceFolders = resDir.listFiles(); if (resourceFolders != null) { for (File folder : resourceFolders) { ResourceFolderType folderType = ResourceFolderType.getFolderType(folder.getName()); if (folderType != null) { recordResources(folderType, folder); } } } }
/** * Makes the maps safe by replacing the current list values with unmodifiable lists. */ private static void makeSafe() { for (ResourceType type : ResourceType.values()) { List<ResourceFolderType> list = mTypeToFolderMap.get(type); if (list != null) { // replace with a unmodifiable list wrapper around the current list. mTypeToFolderMap.put(type, Collections.unmodifiableList(list)); } } for (ResourceFolderType folder : ResourceFolderType.values()) { List<ResourceType> list = mFolderToTypeMap.get(folder); if (list != null) { // replace with a unmodifiable list wrapper around the current list. mFolderToTypeMap.put(folder, Collections.unmodifiableList(list)); } } } }
private boolean isInDrawable(@NonNull File inputXmlFile) { ResourceFolderType folderType = ResourceFolderType.getFolderType(inputXmlFile.getParentFile().getName()); return folderType == ResourceFolderType.DRAWABLE; }
/** * Makes the maps safe by replacing the current list values with unmodifiable lists. */ private static void makeSafe() { for (ResourceType type : ResourceType.values()) { List<ResourceFolderType> list = mTypeToFolderMap.get(type); if (list != null) { // replace with a unmodifiable list wrapper around the current list. mTypeToFolderMap.put(type, Collections.unmodifiableList(list)); } } for (ResourceFolderType folder : ResourceFolderType.values()) { List<ResourceType> list = mFolderToTypeMap.get(folder); if (list != null) { // replace with a unmodifiable list wrapper around the current list. mFolderToTypeMap.put(folder, Collections.unmodifiableList(list)); } } } }
mCachedApplicableDensities = Lists.newArrayListWithExpectedSize(10); for (String density : relevantDensities) { String folder = ResourceFolderType.DRAWABLE.getName() + '-' + density; mCachedApplicableDensities.add(folder);
private void recordInactiveXmlResources(@NonNull File resDir) { File[] resourceFolders = resDir.listFiles(); if (resourceFolders != null) { for (File folder : resourceFolders) { ResourceFolderType folderType = ResourceFolderType.getFolderType(folder.getName()); if (folderType != null) { recordInactiveXmlResources(folderType, folder); } } } }
private void checkResFolder(Project project, File res, List<ResourceXmlDetector> checks) { assert res.isDirectory(); File[] resourceDirs = res.listFiles(); if (resourceDirs == null) { return; } // Sort alphabetically such that we can process related folder types at the // same time Arrays.sort(resourceDirs); ResourceFolderType type = null; for (File dir : resourceDirs) { type = ResourceFolderType.getFolderType(dir.getName()); if (type != null) { checkResourceFolder(project, dir, type, checks); } if (mCanceled) { return; } } }
@Override public void beforeCheckFile(Context context) { if (endsWith(context.file.getName(), DOT_XML)) { // Drawable XML files should not be considered for overdraw, except for <bitmap>'s. // The bitmap elements are handled in the scanBitmap() method; it will clear // out anything added by this method. File parent = context.file.getParentFile(); ResourceFolderType type = ResourceFolderType.getFolderType(parent.getName()); if (type == ResourceFolderType.DRAWABLE) { if (mValidDrawables == null) { mValidDrawables = new ArrayList<String>(); } String resource = getDrawableResource(context.file); mValidDrawables.add(resource); } } }
@Override public void beforeCheckFile(@NonNull Context context) { if (endsWith(context.file.getName(), DOT_XML)) { // Drawable XML files should not be considered for overdraw, except for <bitmap>'s. // The bitmap elements are handled in the scanBitmap() method; it will clear // out anything added by this method. File parent = context.file.getParentFile(); ResourceFolderType type = ResourceFolderType.getFolderType(parent.getName()); if (type == ResourceFolderType.DRAWABLE) { if (mValidDrawables == null) { mValidDrawables = new ArrayList<>(); } String resource = getDrawableResource(context.file); mValidDrawables.add(resource); } } }
@Override public void beforeCheckFile(@NonNull Context context) { if (endsWith(context.file.getName(), DOT_XML)) { // Drawable XML files should not be considered for overdraw, except for <bitmap>'s. // The bitmap elements are handled in the scanBitmap() method; it will clear // out anything added by this method. File parent = context.file.getParentFile(); ResourceFolderType type = ResourceFolderType.getFolderType(parent.getName()); if (type == ResourceFolderType.DRAWABLE) { if (mValidDrawables == null) { mValidDrawables = new ArrayList<String>(); } String resource = getDrawableResource(context.file); mValidDrawables.add(resource); } } }
if (folderEnd != -1) { String folderName = path.substring(folderStart, folderEnd); ResourceFolderType folderType = ResourceFolderType.getFolderType(folderName); if (folderType != null) { int nameStart = folderEnd + 1;