package polly.rx.commands; import polly.rx.MSG; import polly.rx.MyPlugin; import polly.rx.core.TrainBillV2; import polly.rx.core.TrainManagerV2; import polly.rx.entities.TrainEntityV3; import de.skuzzle.polly.sdk.Command; import de.skuzzle.polly.sdk.MyPolly; import de.skuzzle.polly.sdk.Parameter; import de.skuzzle.polly.sdk.Signature; import de.skuzzle.polly.sdk.Types; import de.skuzzle.polly.sdk.User; import de.skuzzle.polly.sdk.exceptions.DuplicatedSignatureException; public class MyTrainsCommand extends Command { private TrainManagerV2 trainManager; public MyTrainsCommand(MyPolly polly, TrainManagerV2 trainManager) throws DuplicatedSignatureException { super(polly, "mytrains"); //$NON-NLS-1$ this.createSignature(MSG.myTrainsSig0Desc, MyPlugin.MYTRAINS_PERMISSION, new Parameter(MSG.myTrainsSig0Trainer, Types.USER)); this.createSignature(MSG.myTrainsSig1Desc, MyPlugin.MYTRAINS_PERMISSION, new Parameter(MSG.myTrainsSig1Trainer, Types.USER), new Parameter(MSG.myTrainsSig1Details, Types.BOOLEAN)); this.setHelpText(MSG.myTrainsHelp); this.trainManager = trainManager; } @Override protected boolean executeOnBoth(User executer, String channel, Signature signature) { if (this.match(signature, 0)) { this.printTrains(false, signature.getStringValue(0), executer.getCurrentNickName(), channel); } else if (this.match(signature, 1)) { this.printTrains(signature.getBooleanValue(1), signature.getStringValue(0), executer.getCurrentNickName(), channel); } return false; } private void printTrains(boolean detailed, String trainerNick, String forUser, String channel) { User trainer = this.trainManager.getTrainer(trainerNick); TrainBillV2 b = this.trainManager.getBill(trainer, forUser); if (detailed) { channel = forUser; // print detailed bill in query for (TrainEntityV3 train : b.getTrains()) { this.reply(channel, train.format(this.getMyPolly().formatting())); } this.reply(channel, "========================="); //$NON-NLS-1$ } this.reply(channel, b.toString()); } }