package org.microg.networklocation.backends.file;
import android.os.Environment;
import android.util.Log;
import org.microg.networklocation.MainService;
import org.microg.networklocation.data.CellSpec;
import org.microg.networklocation.data.LocationSpec;
import org.microg.networklocation.source.LocationSource;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class NewFileCellLocationSource implements LocationSource<CellSpec> {
private static final String TAG = "nlp.NewFileCellLocationSource";
private static final String NAME = "Local File Database (lacells.db)";
private static final String DESCRIPTION = "Read cell locations from a database located on the (virtual) sdcard";
private static final String COPYRIGHT = "© unknown\nLicense: unknown";
private final CellLocationFile FILE = new CellLocationFile(new File(Environment.getExternalStorageDirectory(), ".nogapps/lacells.db"));
@Override
public String getDescription() {
return DESCRIPTION;
}
@Override
public String getCopyright() {
return COPYRIGHT;
}
@Override
public String getName() {
return NAME;
}
@Override
public boolean isSourceAvailable() {
return FILE.exists();
}
@Override
public Collection<LocationSpec<CellSpec>> retrieveLocation(Collection<CellSpec> specs) {
List<LocationSpec<CellSpec>> locationSpecs = new ArrayList<LocationSpec<CellSpec>>();
FILE.open();
for (CellSpec spec : specs) {
if (MainService.DEBUG) {
Log.i(TAG, "checking " + FILE.getPath() + " for " + spec);
}
LocationSpec<CellSpec> location = FILE.getLocation(spec);
if (location != null) {
locationSpecs.add(location);
}
}
FILE.close();
return locationSpecs;
}
}