package org.osmdroid.debug.browser; import android.content.Context; import android.database.Cursor; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import org.osmdroid.R; import org.osmdroid.debug.model.MapTileExt; import org.osmdroid.debug.model.SqlTileWriterExt; import org.osmdroid.debug.util.FileDateUtil; import org.osmdroid.debug.util.HumanTime; import org.osmdroid.tileprovider.modules.DatabaseFileArchive; import org.osmdroid.tileprovider.modules.SqlTileWriter; import java.util.Date; /** * basic listview adapter * created on 12/20/2016. * * @author Alex O'Ree * @since 5.6.2 */ public class CacheAdapter extends ArrayAdapter { SqlTileWriterExt cursor; public CacheAdapter(Context context, SqlTileWriterExt cursor) { super(context, R.layout.item_cache); this.cursor = cursor; } @Override public int getCount() { return (int) cursor.getRowCount(null); } @Override public Object getItem(int id) { Cursor select = cursor.select(1, id); if (select.moveToNext()) { MapTileExt tile = new MapTileExt(0, 0, 0); tile.key = select.getLong(select.getColumnIndex(DatabaseFileArchive.COLUMN_KEY)); tile.source = select.getString(select.getColumnIndex(DatabaseFileArchive.COLUMN_PROVIDER)); Long expires = select.getLong(select.getColumnIndex(SqlTileWriter.COLUMN_EXPIRES)); if (expires != null) { tile.setExpires(new Date(expires)); } return tile; } return null; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_cache, parent, false); } MapTileExt p = (MapTileExt) getItem(position); if (p != null) { // Find fields to populate in inflated template TextView source = (TextView) convertView.findViewById(R.id.tvSource); TextView key = (TextView) convertView.findViewById(R.id.tvDbKey); TextView expires = (TextView) convertView.findViewById(R.id.tvExpires); source.setText(p.source); key.setText(p.key + ""); try { long time = p.getExpires().getTime(); //time should be in the future String durationUtilExpires = FileDateUtil.getModifiedDate(time); if (time > System.currentTimeMillis()) { //has not expired yet durationUtilExpires += "\nValid for " + HumanTime.approximately(time - System.currentTimeMillis()); } else { //expired already durationUtilExpires += "\nExpired at " + HumanTime.approximately(System.currentTimeMillis() - time); } expires.setText(durationUtilExpires); } catch (Exception ex) { expires.setText("null!"); } } return convertView; } }