blob: 378602a032c57067ecde98a2812b1ed10db7c67e [file] [log] [blame]
/*
* Copyright (C) 2007 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.ide.common.resources;
import com.android.ide.common.rendering.api.ResourceValue;
import com.android.ide.common.resources.configuration.Configurable;
import com.android.ide.common.resources.configuration.FolderConfiguration;
import com.android.io.IAbstractFile;
import com.android.resources.ResourceType;
import java.util.Collection;
/**
* Represents a Resource file (a file under $Project/res/)
*/
public abstract class ResourceFile implements Configurable {
private final IAbstractFile mFile;
private final ResourceFolder mFolder;
protected ResourceFile(IAbstractFile file, ResourceFolder folder) {
mFile = file;
mFolder = folder;
}
protected abstract void load(ScanningContext context);
protected abstract void update(ScanningContext context);
protected abstract void dispose(ScanningContext context);
@Override
public FolderConfiguration getConfiguration() {
return mFolder.getConfiguration();
}
/**
* Returns the IFile associated with the ResourceFile.
*/
public final IAbstractFile getFile() {
return mFile;
}
/**
* Returns the parent folder as a {@link ResourceFolder}.
*/
public final ResourceFolder getFolder() {
return mFolder;
}
public final ResourceRepository getRepository() {
return mFolder.getRepository();
}
/**
* Returns whether the resource is a framework resource.
*/
public final boolean isFramework() {
return mFolder.getRepository().isFrameworkRepository();
}
/**
* Returns the list of {@link ResourceType} generated by the file. This is never null.
*/
public abstract Collection<ResourceType> getResourceTypes();
/**
* Returns whether the file generated a resource of a specific type.
* @param type The {@link ResourceType}
*/
public abstract boolean hasResources(ResourceType type);
/**
* Returns the value of a resource generated by this file by {@link ResourceType} and name.
* <p/>If no resource match, <code>null</code> is returned.
* @param type the type of the resource.
* @param name the name of the resource.
*/
public abstract ResourceValue getValue(ResourceType type, String name);
@Override
public String toString() {
return mFile.toString();
}
}