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