package org.emdev.common.fonts; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.concurrent.atomic.AtomicInteger; import org.emdev.common.fonts.data.FontPack; public abstract class AbstractFontProvider implements IFontProvider { private static final AtomicInteger SEQ = new AtomicInteger(); protected final Map<String, FontPack> packs = new TreeMap<String, FontPack>(); public final int id; public final String name; protected AbstractFontProvider(final int id, final String name) { this.id = id; this.name = name; } public void init() { packs.clear(); final List<FontPack> load = load(); for (final FontPack fp : load) { packs.put(fp.name, fp); } } @Override public final int getId() { return id; } @Override public final String getName() { return name; } @Override public int getNewPackId() { return SEQ.getAndIncrement(); } @Override public Iterator<FontPack> iterator() { return packs.values().iterator(); } @Override public FontPack getFontPack(final String name) { return packs.get(name); } protected abstract List<FontPack> load(); protected boolean save() { return true; } @Override public final String toString() { return name; } }