RawResourceLoader.java revision 40c6251719cccc0a84ae99c976d2836b14374ce6
1b63be1295e9d42211bd466585850db5897222aa1Macarsepackage com.xtremelabs.robolectric.res;
2b63be1295e9d42211bd466585850db5897222aa1Macarse
3b63be1295e9d42211bd466585850db5897222aa1Macarseimport java.io.File;
4b63be1295e9d42211bd466585850db5897222aa1Macarseimport java.io.FileInputStream;
5b63be1295e9d42211bd466585850db5897222aa1Macarseimport java.io.FileNotFoundException;
6b63be1295e9d42211bd466585850db5897222aa1Macarseimport java.io.InputStream;
7b63be1295e9d42211bd466585850db5897222aa1Macarse
8b63be1295e9d42211bd466585850db5897222aa1Macarsepublic class RawResourceLoader {
9b63be1295e9d42211bd466585850db5897222aa1Macarse
1040c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    private ResourceExtractor resourceExtractor;
1140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    private File resourceDir;
12b63be1295e9d42211bd466585850db5897222aa1Macarse
1340c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    public RawResourceLoader(ResourceExtractor resourceExtractor, File resourceDir) {
1440c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        this.resourceExtractor = resourceExtractor;
1540c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        this.resourceDir = resourceDir;
1640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    }
17b63be1295e9d42211bd466585850db5897222aa1Macarse
18b63be1295e9d42211bd466585850db5897222aa1Macarse    public InputStream getValue(int resourceId) {
195ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz        String resourceFileName = resourceExtractor.getResourceName(resourceId);
205ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz        String resourceName = resourceFileName.substring("/raw".length());
215ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz
225ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz        File rawResourceDir = new File(resourceDir, "raw");
235ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz
24b63be1295e9d42211bd466585850db5897222aa1Macarse        try {
255ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz            File[] files = rawResourceDir.listFiles();
265ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz            for (int i = 0; i < files.length; i++) {
275ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz                File file = files[i];
285ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz                String name = file.getName();
295ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz                int dotIndex = name.indexOf(".");
305ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz                String fileBaseName = null;
315ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz                if (dotIndex >= 0) {
325ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz                    fileBaseName = name.substring(0, dotIndex);
335ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz                } else {
345ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz                    fileBaseName = name;
355ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz                }
365ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz                if (fileBaseName.equals(resourceName)) {
375ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz                    return new FileInputStream(file);
385ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz                }
395ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz            }
4040c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        } catch (FileNotFoundException e) {
4140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams            return null;
4240c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        }
435ec776796c773be831b2fd1cfd940da663f6c4c3Phil Goodwin & Tyler Schultz        return null;
44b63be1295e9d42211bd466585850db5897222aa1Macarse    }
45b63be1295e9d42211bd466585850db5897222aa1Macarse
46b63be1295e9d42211bd466585850db5897222aa1Macarse}
47