Пример #1
0
  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;
  }