This commit is contained in:
nicobo 2012-11-10 16:39:11 +01:00
parent f88ebde1f3
commit 7537622270
7 changed files with 29 additions and 21 deletions

Binary file not shown.

View file

@ -40,4 +40,9 @@ public class DataprovenceFileHelper extends DataprovenceHelper {
} }
} }
} }
@Override
public String toString() {
return "DataprovenceFileHelper [filename=" + filename + "]";
}
} }

View file

@ -28,6 +28,8 @@ public class DataprovenceHelper {
public DataprovenceHelper(String rootUrl, String datasetName, public DataprovenceHelper(String rootUrl, String datasetName,
Collection<Filter> filters) { Collection<Filter> filters) {
logger.debug("new DataprovenceHelper({},{},{})", new Object[] {
rootUrl, datasetName, filters });
this.rootUrl = rootUrl; this.rootUrl = rootUrl;
this.datasetName = datasetName; this.datasetName = datasetName;
this.filters = filters; this.filters = filters;
@ -98,7 +100,7 @@ public class DataprovenceHelper {
protected PoiList getContent(InputStream is) throws IOException { protected PoiList getContent(InputStream is) throws IOException {
String json = readStream(is); String json = readStream(is);
logger.debug("json={}", json); // logger.debug("json={}", json);
Gson gson = new Gson(); Gson gson = new Gson();
PoiList all = gson.fromJson(json, PoiList.class); PoiList all = gson.fromJson(json, PoiList.class);
@ -148,4 +150,10 @@ public class DataprovenceHelper {
return Arrays.asList(gl.d); return Arrays.asList(gl.d);
} }
@Override
public String toString() {
return "DataprovenceHelper [rootUrl=" + rootUrl + ", datasetName="
+ datasetName + ", filters=" + filters + "]";
}
} }

View file

@ -59,11 +59,11 @@ public class DataprovenceManager implements PoiListener {
"MonumentsEtStesCulturels" }); "MonumentsEtStesCulturels" });
} }
private TreeSet<Poi> pois; private final TreeSet<Poi> pois = new TreeSet<Poi>();
private final PoiListener listener; private final PoiListener listener;
private int count = 0; // private int count = 0;
// false -> lit les données en local (fichiers *.json) // false -> lit les données en local (fichiers *.json)
// true -> lit les données depuis le net // true -> lit les données depuis le net
@ -103,12 +103,13 @@ public class DataprovenceManager implements PoiListener {
super(); super();
this.listener = listener; this.listener = listener;
this.online = online; this.online = online;
this.pois = new TreeSet<Poi>(); // this.pois = new TreeSet<Poi>();
} }
private Collection<DataprovenceHelper> findHelpers(Collection<String> tags) { private Collection<DataprovenceHelper> findHelpers(Collection<String> tags) {
ArrayList<DataprovenceHelper> helpers = new ArrayList<DataprovenceHelper>(); ArrayList<DataprovenceHelper> helpers = new ArrayList<DataprovenceHelper>();
for (String tag : tags) { for (String tag : tags) {
// logger.debug("DATASETS[{}]", tag);
String[] datasets = DATASETS.get(tag); String[] datasets = DATASETS.get(tag);
for (int d = 0; d < datasets.length; d++) { for (int d = 0; d < datasets.length; d++) {
if (online) { if (online) {
@ -124,33 +125,27 @@ public class DataprovenceManager implements PoiListener {
@Override @Override
public void onPoiReceived(List<Poi> pois) { public void onPoiReceived(List<Poi> pois) {
synchronized (this) { logger.debug("onPoiReceived({})", pois.size());
// synchronized (pois) {
this.pois.addAll(pois); this.pois.addAll(pois);
count--; // }
// quand on a recu toutes les reponses, on notifie le listener listener.onPoiReceived(new ArrayList<Poi>(pois));
// ("externe")
if (count == 0) {
listener.onPoiReceived(new ArrayList<Poi>(this.pois));
}
}
} }
public void findAll(Collection<String> tags) { public void findAll(Collection<String> tags) {
synchronized (this) { // synchronized (pois) {
count = 0; pois.clear();
pois = new TreeSet<Poi>(); // }
}
Set<DataprovenceHelper> helpers = new HashSet<DataprovenceHelper>(); Set<DataprovenceHelper> helpers = new HashSet<DataprovenceHelper>();
helpers.addAll(findHelpers(tags)); helpers.addAll(findHelpers(tags));
// lance une AsyncTask pour chaque helper // lance une AsyncTask pour chaque helper
for (DataprovenceHelper helper : findHelpers(tags)) { for (DataprovenceHelper helper : findHelpers(tags)) {
synchronized (this) { logger.debug("loadData(" + helper + ")");
count++; new LoadDataTask(this).executeOnExecutor(
new LoadDataTask(this).execute(helper); AsyncTask.THREAD_POOL_EXECUTOR, helper);
}
} }
} }