package com.radiusnetworks.ibeacon.client;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import com.radiusnetworks.ibeacon.IBeacon;
public class RangingTracker {
private Map<IBeacon,RangedIBeacon> rangedIBeacons = new HashMap<IBeacon,RangedIBeacon>();
public void addIBeacon(IBeacon iBeacon) {
if (rangedIBeacons.containsKey(iBeacon)) {
rangedIBeacons.get(iBeacon).addRangeMeasurement(iBeacon.getRssi());
}
else {
rangedIBeacons.put(iBeacon, new RangedIBeacon(iBeacon));
}
}
public synchronized Collection<IBeacon> getIBeacons() {
ArrayList<IBeacon> iBeacons = new ArrayList<IBeacon>();
Iterator<RangedIBeacon> iterator = rangedIBeacons.values().iterator();
while (iterator.hasNext()) {
RangedIBeacon rangedIBeacon = iterator.next();
if (!rangedIBeacon.allMeasurementsExpired()) {
iBeacons.add(rangedIBeacon);
}
}
return iBeacons;
}
}