package org.imaginer.scol;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.database.Cursor;
import android.net.Uri;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import java.io.FileNotFoundException;
import java.io.IOException;

public class AssetFileProvider extends ContentProvider {
  @Override
  public boolean onCreate()
  {
    return true;
  }

  @Nullable
  @Override
  public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
    return null;
  }

  @Nullable
  @Override
  public String getType(@NonNull Uri uri) {
    return null;
  }

  @Nullable
  @Override
  public Uri insert(@NonNull Uri uri, ContentValues values) {
    return null;
  }

  @Override
  public int delete(@NonNull Uri uri, String selection, String[] selectionArgs) {
    return 0;
  }

  @Override
  public int update(@NonNull Uri uri, ContentValues values, String selection, String[] selectionArgs) {
    return 0;
  }

  @Override
  public AssetFileDescriptor openAssetFile(Uri uri, String mode) throws FileNotFoundException {
    AssetManager am = getContext().getAssets();
    String fileName = uri.getPath().substring(1);
    //String fileName = uri.getLastPathSegment();
    if(fileName.isEmpty())
      throw new FileNotFoundException();

    AssetFileDescriptor fileDescriptor = null;
    try
    {
      fileDescriptor = am.openFd(fileName);
    }
    catch (IOException e)
    {
      e.printStackTrace();
    }
    return fileDescriptor;
  }
}
