package com.nutiteq.location.cellid;
import com.mgmaps.utils.Tools;
import com.nutiteq.cache.Cache;
import com.nutiteq.core.MappingCore;
import com.nutiteq.io.ResourceDataWaiter;
import com.nutiteq.io.ResourceRequestor;
public abstract class OnlineCellIdService implements CellIdService, ResourceRequestor,
ResourceDataWaiter {
private CellIdResponseWaiter responseWaiter;
private String requestUrl;
public void setResponseWaiter(final CellIdResponseWaiter responseWaiter) {
this.responseWaiter = responseWaiter;
}
public void retrieveLocation(final String cellId, final String lac, final String mcc,
final String mnc) {
requestUrl = createRequestUrl(cellId, lac, mcc, mnc);
MappingCore.getInstance().getTasksRunner().enqueueDownload(this, Cache.CACHE_LEVEL_PERSISTENT);
}
public String resourcePath() {
return requestUrl;
}
public void notifyError() {
responseWaiter.notifyError();
}
public void dataRetrieved(final byte[] data) {
final String response = Tools.byteArrayToString(data);
parseResponse(responseWaiter, response);
}
public int getCachingLevel() {
return Cache.CACHE_LEVEL_NONE;
}
public abstract void parseResponse(final CellIdResponseWaiter responseWaiter,
final String response);
public abstract String createRequestUrl(final String cellId, final String lac, final String mcc,
final String mnc);
}