public void processVideos() throws NoVideoAvailableException {

        List<Advertisement> video = new ArrayList<>();
        for (Object video1 : storage.list()) {
            Advertisement adv = (Advertisement) video1;
            video.add(adv);
        }
        Collections.sort(video, (Comparator.comparingInt(Advertisement::getDuration)));
        Collections.sort(video, ((o1, o2) -> (int) (o1.getAmountPerOneDisplaying() - o2.getAmountPerOneDisplaying())));
        Collections.reverse(video);
        int freetime = timeSeconds;

        for (Advertisement vid : video) {
            if (vid.getDuration() <= freetime && vid.getAmountPerOneDisplaying() > 0) {
                System.out.println(vid.getName() + " is displaying... " + vid.getAmountPerOneDisplaying() + ", " + vid.getAmountPerOneDisplaying() * 1000 / vid.getDuration());
                vid.revalidate();
                freetime = freetime - vid.getDuration();
            }
        }
        if(!video.isEmpty()) StatisticManager.getInstance().register(new VideoSelectedEventDataRow(video, video.size(), freetime));
        if (storage.list().isEmpty()) {
            throw new NoVideoAvailableException();
        }

    }