コード例 #1
0
 public void onSignaling(String imsi, long time, String loc, String cell) {
   boolean isInside = KbUtils.getInstance().isInside(loc, cell);
   for (MetricsDetector detector : detectors) {
     if (isInside) {
       detector.in(imsi, time);
     } else {
       detector.out(imsi, time);
     }
   }
   if (workers.contains(imsi)) {
     if (tourists.contains(imsi)) {
       tourists.remove(imsi);
       listener.removeTourist(imsi, time);
     }
   } else {
     OrderedTimeWindow.Event<StayTimeDetector.Status> lastEvent = null;
     for (MetricsDetector detector : detectors) {
       OrderedTimeWindow.Event<StayTimeDetector.Status> event = detector.getLastEvent(imsi);
       if (lastEvent == null || (event != null && lastEvent.time < event.time)) {
         lastEvent = event;
       }
     }
     if (lastEvent != null && lastEvent.data == StayTimeDetector.Status.IN) {
       if (!workers.contains(imsi)) {
         if (!tourists.contains(imsi)) {
           tourists.add(imsi);
           listener.addTourist(imsi, time);
         }
       }
     } else {
       if (!workers.contains(imsi)) {
         if (tourists.contains(imsi)) {
           tourists.remove(imsi);
           listener.removeTourist(imsi, time);
         }
       }
     }
   }
 }