Example #1
0
  @Override
  public List<ProximityDescriptor> computeProximity(Task wi) {
    // TODO must retrieve FULL set of open Tasks somehow
    // (directly from the DB)
    List<Task> relatedTasks = new ArrayList<Task>();
    List<ProximityDescriptor> BinaryProximities = new ArrayList<ProximityDescriptor>();
    int totalEvents = 0;

    for (Task t : relatedTasks) {
      if (!(t.getUUID()
          .equals(wi.getUUID()))) { // TODO: is this the criterion for equals() between Tasks ??
        ProximityDescriptor pairProximity = computeProximity(wi, t);
        totalEvents += countOverlappingEvents(pairProximity.getOverlappingItems());
        BinaryProximities.add(pairProximity);
      }
    }

    double averageEvents = totalEvents / relatedTasks.size();

    for (ProximityDescriptor pd : BinaryProximities) {
      double scalingFactor = pd.getOverlappingItems().size() / averageEvents;
      pd.setScalingFactor(scalingFactor);
      pd.setScaledDistance(roundProximityScore(pd.getPreliminaryDistance() * scalingFactor));
    }

    return BinaryProximities;
  }