content: /*
   *
   *  *    Copyright (C) 2019 Amit Shekhar
   *  *    Copyright (C) 2011 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.amitshekhar.utils;
  
  import android.content.Context;
  import android.util.Pair;
  
  import java.io.File;
  import java.text.MessageFormat;
  import java.util.HashMap;
  
  /**
   * Created by amitshekhar on 06/02/17.
   */
  
  public class DatabaseFileProvider {
  
      private final static String DB_PASSWORD_RESOURCE = "DB_PASSWORD_{0}";
  
      private DatabaseFileProvider() {
          // This class in not publicly instantiable
      }
  
      public static HashMap<String, Pair<File, String>> getDatabaseFiles(Context context) {
          HashMap<String, Pair<File, String>> databaseFiles = new HashMap<>();
          try {
              for (String databaseName : context.databaseList()) {
                  String password = getDbPasswordFromStringResources(context, databaseName);
                  databaseFiles.put(databaseName, new Pair<>(context.getDatabasePath(databaseName), password));
              }
          } catch (Exception e) {
              e.printStackTrace();
          }
          return databaseFiles;
      }
  
      private static String getDbPasswordFromStringResources(Context context, String name) {
          String nameWithoutExt = name;
          if (nameWithoutExt.endsWith(".db")) {
              nameWithoutExt = nameWithoutExt.substring(0, nameWithoutExt.lastIndexOf('.'));
          }
          String resourceName = MessageFormat.format(DB_PASSWORD_RESOURCE, nameWithoutExt.toUpperCase());
          String password = "";
  
          int resourceId = context.getResources().getIdentifier(resourceName, "string", context.getPackageName());
  
          if (resourceId != 0) {
              password = context.getString(resourceId);
          }
  
          return password;
      }
  }
  