public void stop() { timer_running = false; if (refresher_task != null) refresher_task.cancel(); timer.cancel(); groups.clear(); // provide another refresh tools in case the channel gets reconnected // timer=new Timer(); // refresher_task=new Refresher(); }
@SuppressWarnings(value = "unchecked") private < TypeOfSnapshot extends Snapshot, Refresher extends SnapshotBuilder, TypeOfEvent extends Event, EventEntity> void Process( Refresher refresher, Follower follower, Following following, FollowingEventTypes followingEventTypes, FollowerEvents followerEvents, List<Snapshot> snapshots, int i, Class<EventEntity> eventEntityClass, Class<TypeOfSnapshot> typeOfSnapshotClass, Class<TypeOfEvent> typeOfEventClass, SnapshotDifference snapshotDifference, EventType eventType) { TypeOfSnapshot snapshot = (TypeOfSnapshot) refresher.build(following, follower); if (snapshots.size() < followingEventTypes.getEventTypes().size()) { snapshot.getList().forEach(a -> dbService.save((EventEntity) a, eventEntityClass)); dbService.save(snapshot, typeOfSnapshotClass); snapshots.add(snapshot); dbService.updateFollowerEvents(followerEvents); dbService.updateFollower(follower); dbService.updateFollowing(following); } else { List<Event> differenceEvents = snapshotDifference.difference( snapshots.get(i), snapshot, followerEvents.getEvents(), eventType); differenceEvents.forEach(event -> dbService.save((TypeOfEvent) event, typeOfEventClass)); followerEvents.getEvents().addAll(differenceEvents); dbService.updateFollowerEvents(followerEvents); } }