SyndRetrievalPage.java

package org.ferris.resiste.console.rome;

import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Priority;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import org.ferris.resiste.console.io.Console;
import org.ferris.resiste.console.lang.StringUtils;
import static org.ferris.resiste.console.rome.SyndRetrievalEvent.VIEW;
import org.ferris.resiste.console.text.i18n.LocalizedString;
import org.ferris.resiste.console.text.i18n.LocalizedStringKey;
import org.slf4j.Logger;

/**
 *
 * @author Michael Remijan mjremijan@yahoo.com @mjremijan
 */
@ApplicationScoped
public class SyndRetrievalPage {

    @Inject
    protected Logger log;

    @Inject
    protected Console console;

    @Inject
    @LocalizedStringKey("SyndRetrievalPage.Heading")
    protected LocalizedString heading;

    @Inject
    @LocalizedStringKey("SyndRetrievalPage.Title")
    protected LocalizedString title;

    @Inject
    @LocalizedStringKey("SyndRetrievalPage.Entry")
    protected LocalizedString entry;

    protected void observeRetrieval(
        @Observes @Priority(VIEW) SyndRetrievalEvent evnt
    ) {
        log.info(String.format("ENTER %s", evnt));

        console.h1(heading);

        evnt.getFeeds().stream().forEach(
            sf -> {
                console.h2(title, StringUtils.firstTrimToNonNull(sf.getLink(), sf.getTitle()).get());
                AtomicInteger ai = new AtomicInteger(1);
                sf.getEntries().stream().forEach(
                    se -> console.p(entry, ai.getAndIncrement(), se.getEntryId())
                );
            }
        );

    }
}