@Nonnull public JobEvent.Builder toBuilder() { return JobEvent.builder().withId(id) .withType(type) .withStartDateTime(startDateTime) .withEndDateTime(endDateTime) .withName(name) .withDescription(description) .withEarnings(earnings) .withHourlyRate(hourlyRate) .withEvents(toJobEvents(jobEventsXml)); }
public JobEventXml (final @Nonnull JobEvent jobEvent) { final JobEvent.Builder builder = jobEvent.toBuilder(); this.id = builder.getId(); this.type = builder.getType(); this.startDateTime = builder.getStartDateTime(); this.endDateTime = builder.getEndDateTime(); this.name = builder.getName(); this.description = builder.getDescription(); this.earnings = builder.getEarnings(); this.hourlyRate = builder.getHourlyRate(); this.jobEventsXml = builder.getEvents().isEmpty() ? null : builder.getEvents().stream().map(event -> new JobEventXml(event)).collect(toList()); }
@Nonnull private static List<JobEvent> createJobEvents (final @Nonnull LocalDate startDate, final @Nonnull LocalDate endDate, final @Nonnull Money rate) { final List<JobEvent> result = new ArrayList<>(); final long days = startDate.until(endDate, ChronoUnit.DAYS); for (int i = 1; i <= days; i++) { final LocalDateTime s = startDate.plusDays(i - 1).atTime(8, 0).plusMinutes(i * 3); final LocalDateTime e = s.plusMinutes(60 + i * 4); final double hours = s.until(e, ChronoUnit.MINUTES) / 60.0; final BigDecimal earnings = rate.getAmount().multiply(new BigDecimal(hours)); result.add(JobEvent.builder().withId(new Id("" + nextId++)) .withName("Event #" + i) .withDescription("Description of Event #" + i) .withType(JobEvent.Type.TIMED) .withEarnings(new Money(earnings, "EUR")) .withStartDateTime(s) .withEndDateTime(e) .withHourlyRate(rate) .create()); } return result; }
return JobEvent.builder().withId(jobEventConfig.getId("uniqueIdentifier")) .withType(type.getMappedType()) .withStartDateTime(jobEventConfig.getDateTime("jobEventStartDate"))
final JobEvent j1 = JobEvent.builder().withId(new Id("1")) .withName("Consultancy") .withDescription("Consultancy description")