aboutsummaryrefslogtreecommitdiffstats
path: root/sdk_common/src/com/android/ide/common/resources/SingleResourceFile.java
diff options
context:
space:
mode:
Diffstat (limited to 'sdk_common/src/com/android/ide/common/resources/SingleResourceFile.java')
-rw-r--r--sdk_common/src/com/android/ide/common/resources/SingleResourceFile.java171
1 files changed, 0 insertions, 171 deletions
diff --git a/sdk_common/src/com/android/ide/common/resources/SingleResourceFile.java b/sdk_common/src/com/android/ide/common/resources/SingleResourceFile.java
deleted file mode 100644
index 8e394d3..0000000
--- a/sdk_common/src/com/android/ide/common/resources/SingleResourceFile.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * 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 static com.android.SdkConstants.DOT_XML;
-
-import com.android.ide.common.rendering.api.DensityBasedResourceValue;
-import com.android.ide.common.rendering.api.ResourceValue;
-import com.android.ide.common.resources.configuration.DensityQualifier;
-import com.android.io.IAbstractFile;
-import com.android.resources.FolderTypeRelationship;
-import com.android.resources.ResourceType;
-import com.android.utils.SdkUtils;
-
-import java.util.Collection;
-import java.util.List;
-
-import javax.xml.parsers.SAXParserFactory;
-
-/**
- * Represents a resource file describing a single resource.
- * <p/>
- * This is typically an XML file inside res/anim, res/layout, or res/menu or an image file
- * under res/drawable.
- */
-public class SingleResourceFile extends ResourceFile {
-
- private final static SAXParserFactory sParserFactory = SAXParserFactory.newInstance();
- static {
- sParserFactory.setNamespaceAware(true);
- }
-
- private final String mResourceName;
- private final ResourceType mType;
- private ResourceValue mValue;
-
- public SingleResourceFile(IAbstractFile file, ResourceFolder folder) {
- super(file, folder);
-
- // we need to infer the type of the resource from the folder type.
- // This is easy since this is a single Resource file.
- List<ResourceType> types = FolderTypeRelationship.getRelatedResourceTypes(folder.getType());
- mType = types.get(0);
-
- // compute the resource name
- mResourceName = getResourceName(mType);
-
- // test if there's a density qualifier associated with the resource
- DensityQualifier qualifier = folder.getConfiguration().getDensityQualifier();
-
- if (qualifier == null) {
- mValue = new ResourceValue(mType, getResourceName(mType),
- file.getOsLocation(), isFramework());
- } else {
- mValue = new DensityBasedResourceValue(
- mType,
- getResourceName(mType),
- file.getOsLocation(),
- qualifier.getValue(),
- isFramework());
- }
- }
-
- @Override
- protected void load(ScanningContext context) {
- // get a resource item matching the given type and name
- ResourceItem item = getRepository().getResourceItem(mType, mResourceName);
-
- // add this file to the list of files generating this resource item.
- item.add(this);
-
- // Ask for an ID refresh since we're adding an item that will generate an ID
- context.requestFullAapt();
- }
-
- @Override
- protected void update(ScanningContext context) {
- // when this happens, nothing needs to be done since the file only generates
- // a single resources that doesn't actually change (its content is the file path)
-
- // However, we should check for newly introduced errors
- // Parse the file and look for @+id/ entries
- validateAttributes(context);
- }
-
- @Override
- protected void dispose(ScanningContext context) {
- // only remove this file from the existing ResourceItem.
- getFolder().getRepository().removeFile(mType, this);
-
- // Ask for an ID refresh since we're removing an item that previously generated an ID
- context.requestFullAapt();
-
- // don't need to touch the content, it'll get reclaimed as this objects disappear.
- // In the mean time other objects may need to access it.
- }
-
- @Override
- public Collection<ResourceType> getResourceTypes() {
- return FolderTypeRelationship.getRelatedResourceTypes(getFolder().getType());
- }
-
- @Override
- public boolean hasResources(ResourceType type) {
- return FolderTypeRelationship.match(type, getFolder().getType());
- }
-
- /*
- * (non-Javadoc)
- * @see com.android.ide.eclipse.editors.resources.manager.ResourceFile#getValue(com.android.ide.eclipse.common.resources.ResourceType, java.lang.String)
- *
- * This particular implementation does not care about the type or name since a
- * SingleResourceFile represents a file generating only one resource.
- * The value returned is the full absolute path of the file in OS form.
- */
- @Override
- public ResourceValue getValue(ResourceType type, String name) {
- return mValue;
- }
-
- /**
- * Returns the name of the resources.
- */
- private String getResourceName(ResourceType type) {
- // get the name from the filename.
- String name = getFile().getName();
-
- int pos = name.indexOf('.');
- if (pos != -1) {
- name = name.substring(0, pos);
- }
-
- return name;
- }
-
- /**
- * Validates the associated resource file to make sure the attribute references are valid
- *
- * @return true if parsing succeeds and false if it fails
- */
- private boolean validateAttributes(ScanningContext context) {
- // We only need to check if it's a non-framework file (and an XML file; skip .png's)
- if (!isFramework() && SdkUtils.endsWith(getFile().getName(), DOT_XML)) {
- ValidatingResourceParser parser = new ValidatingResourceParser(context, false);
- try {
- IAbstractFile file = getFile();
- return parser.parse(file.getOsLocation(), file.getContents());
- } catch (Exception e) {
- context.needsFullAapt();
- }
-
- return false;
- }
-
- return true;
- }
-}