package info.opencards.learnstrats.leitner; import info.opencards.Utils; import info.opencards.core.Item; import info.opencards.core.ItemValuater; import info.opencards.core.LearnMethod; import info.opencards.core.LearnMethodListener; /** * DOCUMENT ME! * * @author Holger Brandl */ public class LearnAllLeitner extends LeitnerLearning { private LearnAllLeitner(ItemValuater itemValuater) { super(itemValuater); } protected boolean processItemFeedBack(Item item, Integer feedback) { return updateLeitnerSystem((LeitnerItem) item, feedback); } public void fireStatusInfo() { int progress = (int) computeProgress(); for (LearnMethodListener procListener : procListeners) { procListener.processStatusInfo(progress + "% " + Utils.getRB().getString("AbstractLearnDialog.percentDone"), progress); } } double computeProgress() { int numReqLearnSteps = 0; int numBoxes = leitnerSystem.numBoxes(); for (int i = 0; i < numBoxes; i++) { int remBoxes = numBoxes - (i + 1); numReqLearnSteps += remBoxes * leitnerSystem.getBox(i).size(); } return 100 - 100 * numReqLearnSteps / (double) ((numBoxes - 1) * leitnerSystem.getAllCards().size()); } /** * Creates a factory which is able to instantiate <code>LeitnerLearning</code>-instances. */ public static LeitnerLearnMethodFactory getFactory() { return new LeitnerLearnMethodFactory() { public LearnMethod createLearner(ItemValuater itemValuater) { return new LearnAllLeitner(itemValuater); } }; } }