コード例 #1
0
 private void handleOldMember(LocalDateTime now, Member member, Member oldMember) {
   oldMember.updateWithDataFrom(member, now);
   // process subsystems for the old member
   Map<SubsystemId, Subsystem> unprocessedOldSubsystems = new HashMap<>();
   for (Subsystem subsystem : oldMember.getAllSubsystems()) {
     unprocessedOldSubsystems.put(subsystem.createKey(), subsystem);
   }
   for (Subsystem subsystem : member.getAllSubsystems()) {
     Subsystem oldSubsystem = unprocessedOldSubsystems.get(subsystem.createKey());
     if (oldSubsystem == null) {
       // brand new item, add it
       subsystem.getStatusInfo().setTimestampsForNew(now);
       subsystem.setMember(oldMember);
       oldMember.getAllSubsystems().add(subsystem);
     } else {
       oldSubsystem.getStatusInfo().setTimestampsForFetched(now);
     }
     unprocessedOldSubsystems.remove(subsystem.createKey());
   }
   // remaining old subsystems - that were not included in member.subsystems -
   // are removed (if not already)
   for (Subsystem oldToRemove : unprocessedOldSubsystems.values()) {
     StatusInfo status = oldToRemove.getStatusInfo();
     if (!status.isRemoved()) {
       status.setTimestampsForRemoved(now);
     }
   }
 }