package org.osmdroid.samplefragments.cache; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.Toast; import org.osmdroid.R; import org.osmdroid.samplefragments.BaseSampleFragment; import org.osmdroid.tileprovider.modules.IFilesystemCache; import org.osmdroid.tileprovider.modules.SqlTileWriter; import org.osmdroid.views.MapView; /** * An example of importing stored on disk cache produced by osmdroid < 5.4 using the older TileWriter * class * @see org.osmdroid.tileprovider.modules.TileWriter * @see SqlTileWriter * Created by alex on 9/25/16. */ public class CacheImport extends BaseSampleFragment implements View.OnClickListener, Runnable { boolean removeFromFileSystem=true; Button btnCache; @Override public String getSampleTitle() { return "Import the file system cache into the newer sql cache"; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.sample_cachemgr, container,false); mMapView = (MapView) root.findViewById(R.id.mapview); btnCache = (Button) root.findViewById(R.id.btnCache); btnCache.setOnClickListener(this); btnCache.setText("Cache Filesystem Import"); return root; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnCache: DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which){ case DialogInterface.BUTTON_POSITIVE: //Yes button clicked break; case DialogInterface.BUTTON_NEGATIVE: //No button clicked removeFromFileSystem=false; break; } new Thread(CacheImport.this).start(); } }; AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage("Would you like to remove the tiles from the file system after importing into the cache database?").setPositiveButton("Yes", dialogClickListener) .setNegativeButton("No", dialogClickListener).show(); break; } } @Override public void run() { final IFilesystemCache tileWriter = mMapView.getTileProvider().getTileWriter(); if (tileWriter instanceof SqlTileWriter){ final int[] b = ((SqlTileWriter) tileWriter).importFromFileCache(removeFromFileSystem); if (getActivity()!=null){ getActivity().runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getActivity(), "Cache Import success/failures/default/failres " + b[0] + "/" + b[1] + "/" + b[2] + "/" + b[3], Toast.LENGTH_LONG).show(); } }); } } } }