@SuppressWarnings("unchecked") public List<T> getSelectedTrainings(final List<?> objects) { final List<T> trainings = new ArrayList<>(); for (final Object obj : objects) { if (obj instanceof Integer) { final DateTime von = new DateTime((int) obj, 1, 1, 0, 0); final DateTime bis = new DateTime((int) obj, 12, 31, 23, 59); if (type.isAssignableFrom(ITraining.class)) { trainings.addAll( (Collection<? extends T>) databaseAccess.getTrainingsByAthleteAndDate(athlete, von, bis)); } } if (obj instanceof INavigationParent) { final INavigationParent parent = (INavigationParent) obj; final List<INavigationItem> childs = parent.getChilds(); for (final INavigationItem child : childs) { if (type.isAssignableFrom(child.getClass())) { trainings.add(((T) child)); } } } if (type.isAssignableFrom(obj.getClass())) { trainings.add((T) obj); } } return trainings; }
@Override public INavigationItem getImportedItem(final Date date) { final KalenderWoche kw = new KalenderWoche(date); final Map<Integer, INavigationParent> jahresWerte = map.get(kw.getJahr()); if (jahresWerte != null) { final INavigationParent naviParent = jahresWerte.get(kw.getKw()); for (final INavigationItem item : naviParent.getChilds()) { if (item instanceof ConcreteImported && item.getDate().compareTo(date) == 0) { return item; } } } return null; }
@Override public void removeItem(final INavigationItem item) { final Date date = item.getDate(); final KalenderWoche kw = new KalenderWoche(date); if (map.containsKey(kw.getJahr())) { final Map<Integer, INavigationParent> jahr = map.get(kw.getJahr()); if (jahr.containsKey(kw.getKw())) { final INavigationParent week = jahr.get(kw.getKw()); week.remove(item); if (week.getChilds().isEmpty()) { jahr.remove(kw.getKw()); } if (jahr.values().isEmpty()) { map.remove(kw.getJahr()); } } } }
@Override public void addItem(final INavigationItem item) { final Date date = item.getDate(); final KalenderWoche kw = new KalenderWoche(date); if (!map.containsKey(kw.getJahr())) { map.put( kw.getJahr(), new TreeMap<Integer, INavigationParent>( new Comparator<Integer>() { @Override public int compare(final Integer o1, final Integer o2) { return o2.compareTo(o1); } })); } final Map<Integer, INavigationParent> jahr = map.get(kw.getJahr()); if (!jahr.containsKey(kw.getKw())) { jahr.put(kw.getKw(), new NavigationParent()); } jahr.get(kw.getKw()).add(item); }