package org.smartly.commons.cmdline; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * Manage Pages. */ public final class ConsoleAppPages { // -------------------------------------------------------------------- // c o n s t a n t s // -------------------------------------------------------------------- private static final String DEFAULT_PAGE = "default"; // -------------------------------------------------------------------- // f i e l d s // -------------------------------------------------------------------- private final Map<String, ConsoleAppPage> _pages; // key/value pair (key, instance) // -------------------------------------------------------------------- // c o n s t r u c t o r // -------------------------------------------------------------------- public ConsoleAppPages() { _pages = new HashMap<String, ConsoleAppPage>(); this.init(); } // -------------------------------------------------------------------- // p u b l i c // -------------------------------------------------------------------- @Override public String toString() { if (count() == 1) { return getDefault().toString(); } else { // enum all pages final StringBuilder sb = new StringBuilder(); final Set<String> keys = _pages.keySet(); for (final String key : keys) { if (sb.length() > 0) { sb.append("\n"); } final ConsoleAppPage page = _pages.get(key); sb.append("[").append(key).append("] "); sb.append(page.getName()).append(": ").append(page.getDescription()); } return sb.toString(); } } public int count() { return _pages.size(); } public ConsoleAppPage getDefault() { return _pages.get(DEFAULT_PAGE); } public ConsoleAppPage getPage(final String key) { return _pages.get(key); } // -------------------------------------------------------------------- // p r i v a t e // -------------------------------------------------------------------- private void init() { _pages.put(DEFAULT_PAGE, new ConsoleAppPage()); } }