public class ResourceSet
extends java.lang.Object
DataSet for ResourceMergerItem and ResourceFile.
This is able to detect duplicates from the same source folders (same resource coming from the values folder in same or different files).
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
ATTR_AAPT_NAMESPACE |
static java.lang.String |
ATTR_FROM_DEPENDENCY |
static java.lang.String |
ATTR_GENERATED_SET |
| Constructor and Description |
|---|
ResourceSet(java.lang.String name,
com.android.ide.common.rendering.api.ResourceNamespace namespace,
java.lang.String libraryName,
boolean validateEnabled) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
addItem(I item,
java.lang.String key) |
void |
addSource(java.io.File file)
Adds a new source file
|
void |
addSources(java.util.Collection<java.io.File> files)
Adds a collection of source files.
|
protected boolean |
checkFileForAndroidRes(java.io.File file)
Checks a file to make sure it is a valid file in the android res/asset folders.
|
protected void |
checkItems()
Checks for duplicate items across all source files.
|
protected ResourceFile |
createFileAndItems(java.io.File sourceFolder,
java.io.File file,
com.android.utils.ILogger logger) |
protected ResourceFile |
createFileAndItemsFromXml(java.io.File file,
org.w3c.dom.Node fileNode)
Creates a DataFile and associated DataItems from an XML node from a file created with
DataSet.appendToXml(Node, Document, MergeConsumer, boolean) |
protected com.android.ide.common.resources.DataSet<ResourceMergerItem,ResourceFile> |
createSet(java.lang.String name) |
boolean |
equals(java.lang.Object o) |
java.io.File |
findMatchingSourceFile(java.io.File file)
Returns the longest path matching Source file that contains a given file.
|
java.lang.String |
getConfigName()
Returns the config name.
|
protected F |
getDataFile(java.io.File file) |
com.google.common.collect.ListMultimap<java.lang.String,I> |
getDataMap()
Returns a map of the items.
|
java.lang.String |
getLibraryName() |
com.android.ide.common.rendering.api.ResourceNamespace |
getNamespace() |
java.util.List<java.io.File> |
getSourceFiles()
Returns the list of source files.
|
protected boolean |
getValidateEnabled() |
protected boolean |
handleChangedFile(java.io.File sourceFolder,
java.io.File changedFile,
com.android.utils.ILogger logger) |
protected ResourceFile |
handleNewFile(java.io.File sourceFolder,
java.io.File file,
com.android.utils.ILogger logger) |
protected boolean |
handleRemovedFile(java.io.File removedFile) |
int |
hashCode() |
boolean |
isEmpty()
Returns whether the set is empty of items.
|
boolean |
isFromDependency() |
boolean |
isIgnored(java.io.File file)
Returns whether the given file should be ignored.
|
protected boolean |
isValidSourceFile(java.io.File sourceFolder,
java.io.File file) |
F |
loadFile(java.io.File sourceFolder,
java.io.File dataFile,
com.android.utils.ILogger logger)
Loads a single dataFile from the given source folder (rather than load / parse from all
source folders).
|
void |
loadFromFiles(com.android.utils.ILogger logger)
Loads the DataSet from the files its source folders contain.
|
protected void |
processNewDataFile(java.io.File sourceFolder,
F dataFile,
boolean setTouched) |
protected void |
readSourceFolder(java.io.File sourceFolder,
com.android.utils.ILogger logger)
Reads the content of a data folders and loads the DataItem.
|
void |
setCheckDuplicates(boolean value)
Tells the resource set whether to check for duplicate resource items or not.
|
void |
setDontNormalizeQualifiers(boolean dontNormalizeQualifiers) |
void |
setFromDependency(boolean fromDependency) |
void |
setGeneratedSet(ResourceSet generatedSet) |
void |
setIgnoredPatterns(java.lang.String aaptStylePattern) |
void |
setPreprocessor(ResourcePreprocessor preprocessor) |
void |
setResourcesWhitelist(com.google.common.collect.ImmutableSet<com.android.resources.ResourceFolderType> whitelist) |
void |
setShouldParseResourceIds(boolean shouldParse) |
void |
setTrackSourcePositions(boolean shouldTrack) |
int |
size()
Returns the number of items.
|
java.lang.String |
toString() |
boolean |
updateWith(java.io.File sourceFolder,
java.io.File changedFile,
FileStatus fileStatus,
com.android.utils.ILogger logger)
Update the DataSet with a given file.
|
public static final java.lang.String ATTR_GENERATED_SET
public static final java.lang.String ATTR_FROM_DEPENDENCY
public static final java.lang.String ATTR_AAPT_NAMESPACE
public ResourceSet(@NonNull
java.lang.String name,
@NonNull
com.android.ide.common.rendering.api.ResourceNamespace namespace,
java.lang.String libraryName,
boolean validateEnabled)
public java.lang.String getLibraryName()
public void setGeneratedSet(ResourceSet generatedSet)
public void setPreprocessor(@NonNull
ResourcePreprocessor preprocessor)
public void setShouldParseResourceIds(boolean shouldParse)
public void setDontNormalizeQualifiers(boolean dontNormalizeQualifiers)
public void setTrackSourcePositions(boolean shouldTrack)
public void setCheckDuplicates(boolean value)
Checking for duplicate items has to be turned off when loading resources of the Android framework to avoid bogus errors. See, for example, prebuilts/studio/layoutlib/data/res/values/attrs.xml.
@NonNull protected com.android.ide.common.resources.DataSet<ResourceMergerItem,ResourceFile> createSet(@NonNull java.lang.String name)
protected ResourceFile createFileAndItems(java.io.File sourceFolder, java.io.File file, com.android.utils.ILogger logger) throws MergingException
MergingExceptionprotected ResourceFile createFileAndItemsFromXml(@NonNull java.io.File file, @NonNull org.w3c.dom.Node fileNode) throws MergingException
DataSet.appendToXml(Node, Document, MergeConsumer, boolean)file - the file represented by the DataFilefileNode - the XML node.MergingExceptionpublic void setResourcesWhitelist(@NonNull
com.google.common.collect.ImmutableSet<com.android.resources.ResourceFolderType> whitelist)
protected void readSourceFolder(java.io.File sourceFolder,
com.android.utils.ILogger logger)
throws MergingException
processNewDataFile(java.io.File, DataFile, boolean).sourceFolder - the source folder to load the resources from.MergingException - if something goes wrongprotected boolean isValidSourceFile(@NonNull
java.io.File sourceFolder,
@NonNull
java.io.File file)
@Nullable protected ResourceFile handleNewFile(java.io.File sourceFolder, java.io.File file, com.android.utils.ILogger logger) throws MergingException
MergingExceptionprotected boolean handleRemovedFile(java.io.File removedFile)
protected boolean handleChangedFile(@NonNull
java.io.File sourceFolder,
@NonNull
java.io.File changedFile,
@NonNull
com.android.utils.ILogger logger)
throws MergingException
MergingExceptionpublic boolean isFromDependency()
public void setFromDependency(boolean fromDependency)
@NonNull public com.android.ide.common.rendering.api.ResourceNamespace getNamespace()
public boolean equals(java.lang.Object o)
public int hashCode()
public void addSources(java.util.Collection<java.io.File> files)
files - the source files to add.public void addSource(java.io.File file)
file - the source file.@NonNull public java.util.List<java.io.File> getSourceFiles()
getSourceFiles in interface SourceSetpublic java.lang.String getConfigName()
public java.io.File findMatchingSourceFile(java.io.File file)
findMatchingSourceFile in interface SourceSetfile - the file to search forpublic int size()
DataMappublic boolean isEmpty()
@NonNull public com.google.common.collect.ListMultimap<java.lang.String,I> getDataMap()
DataMappublic void loadFromFiles(com.android.utils.ILogger logger)
throws MergingException
MergingException - if something goes wrong@Nullable
public F loadFile(@NonNull
java.io.File sourceFolder,
@NonNull
java.io.File dataFile,
@NonNull
com.android.utils.ILogger logger)
throws MergingException
Like loadFromFiles, all loaded items are set to TOUCHED.
sourceFolder - the source folderdataFile - the data file within source folderlogger - logs errorsMergingExceptionprotected void checkItems()
throws DuplicateDataException
DuplicateDataException - if a duplicated item is found.public boolean updateWith(java.io.File sourceFolder,
java.io.File changedFile,
FileStatus fileStatus,
com.android.utils.ILogger logger)
throws MergingException
sourceFolder - the sourceFile containing the changedFilechangedFile - The changed filefileStatus - the change stateMergingException - if something goes wrongprotected void processNewDataFile(@NonNull
java.io.File sourceFolder,
@NonNull
F dataFile,
boolean setTouched)
throws MergingException
MergingExceptionprotected void addItem(@NonNull
I item,
@Nullable
java.lang.String key)
throws MergingException
MergingExceptionprotected F getDataFile(@NonNull
java.io.File file)
public java.lang.String toString()
toString in class java.lang.Objectprotected boolean checkFileForAndroidRes(@NonNull
java.io.File file)
file - the file to checkpublic void setIgnoredPatterns(java.lang.String aaptStylePattern)
public boolean isIgnored(@NonNull
java.io.File file)
file - the file to checkprotected boolean getValidateEnabled()