Пример #1
0
  private List<Date> generateDatesForFlowers() {

    int desiredFlowersPerMonth = girl.getDesiredFlowersPerMonth();
    List<Date> importantDates = Lists.newArrayList(girl.getImportantAnniversariesDates().values());

    if (desiredFlowersPerMonth <= importantDates.size()) {
      return importantDates;
    }

    Date now = new Date();
    Date monthAfter = new Date(System.currentTimeMillis() + TimeUnit.DAYS.toMillis(30));

    List<Date> flowersDates = Lists.newArrayList();
    final Random random = new Random();
    for (int i = desiredFlowersPerMonth; i-- > 0; ) {
      int dayOfMonth = random.nextInt(30 + 1);
      Date potentialNewDate = new Date(now.getTime() + TimeUnit.DAYS.toMillis(dayOfMonth));

      while (flowersDates.contains(potentialNewDate)) {
        dayOfMonth = random.nextInt(30 + 1);
        potentialNewDate = new Date(now.getTime() + TimeUnit.DAYS.toMillis(dayOfMonth));
      }

      flowersDates.add(potentialNewDate);
    }

    return flowersDates;
  }