private DownloadEntry createDownloadEntry(IndexItem item) { String fileName = item.getFileName(); File parent = null; String toSavePostfix = null; String toCheckPostfix = null; boolean unzipDir = false; File externalStorageDirectory = OsmandSettings.getOsmandSettings(getApplicationContext()).getExternalStorageDirectory(); if (fileName.endsWith(IndexConstants.POI_INDEX_EXT)) { parent = new File(externalStorageDirectory, ResourceManager.POI_PATH); toSavePostfix = POI_INDEX_EXT; toCheckPostfix = POI_INDEX_EXT; } else if (fileName.endsWith(IndexConstants.POI_INDEX_EXT_ZIP)) { parent = new File(externalStorageDirectory, ResourceManager.POI_PATH); toSavePostfix = POI_INDEX_EXT_ZIP; toCheckPostfix = POI_INDEX_EXT; } else if (fileName.endsWith(IndexConstants.BINARY_MAP_INDEX_EXT)) { parent = new File(externalStorageDirectory, ResourceManager.APP_DIR); toSavePostfix = BINARY_MAP_INDEX_EXT; toCheckPostfix = BINARY_MAP_INDEX_EXT; } else if (fileName.endsWith(IndexConstants.BINARY_MAP_INDEX_EXT_ZIP)) { parent = new File(externalStorageDirectory, ResourceManager.APP_DIR); toSavePostfix = BINARY_MAP_INDEX_EXT_ZIP; toCheckPostfix = BINARY_MAP_INDEX_EXT; } else if (fileName.endsWith(IndexConstants.VOICE_INDEX_EXT_ZIP)) { parent = new File(externalStorageDirectory, ResourceManager.VOICE_PATH); toSavePostfix = VOICE_INDEX_EXT_ZIP; toCheckPostfix = ""; // $NON-NLS-1$ unzipDir = true; } else if (fileName.endsWith(IndexConstants.TTSVOICE_INDEX_EXT_ZIP)) { parent = new File(externalStorageDirectory, ResourceManager.VOICE_PATH); toSavePostfix = TTSVOICE_INDEX_EXT_ZIP; toCheckPostfix = ""; // $NON-NLS-1$ unzipDir = true; } if (parent != null) { parent.mkdirs(); } final DownloadEntry entry; if (parent == null || !parent.exists()) { Toast.makeText( DownloadIndexActivity.this, getString(R.string.sd_dir_not_accessible), Toast.LENGTH_LONG) .show(); entry = null; } else { entry = new DownloadEntry(); int ls = fileName.lastIndexOf('_'); entry.baseName = fileName.substring(0, ls); entry.fileToSave = new File(parent, entry.baseName + toSavePostfix); entry.unzip = unzipDir; SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy"); // $NON-NLS-1$ try { Date d = format.parse(item.getDate()); entry.dateModified = d.getTime(); } catch (ParseException e1) { } try { entry.sizeMB = Double.parseDouble(item.getSize()); } catch (NumberFormatException e1) { } entry.parts = 1; if (item.getParts() != null) { entry.parts = Integer.parseInt(item.getParts()); } entry.fileToUnzip = new File(parent, entry.baseName + toCheckPostfix); } return entry; }