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 DeliverTrainCommand extends Command {
private TrainManagerV2 trainManager;
public DeliverTrainCommand(MyPolly polly, TrainManagerV2 trainManager)
throws DuplicatedSignatureException {
super(polly, "deliver"); //$NON-NLS-1$
this.createSignature(MSG.deliverSig0Desc,
MyPlugin.DELIVER_TRAIN_PERMISSION,
new Parameter(MSG.deliverSig0User, Types.USER));
this.createSignature(MSG.deliverSig1Desc,
MyPlugin.DELIVER_TRAIN_PERMISSION,
new Parameter(MSG.deliverSig1User, Types.USER),
new Parameter(MSG.deliverSig1Receiver, Types.USER));
this.setHelpText(MSG.deliverHelp);
this.setRegisteredOnly();
this.trainManager = trainManager;
}
@Override
protected boolean executeOnBoth(User executer, String channel,
Signature signature) {
String deliverTo = ""; //$NON-NLS-1$
String userName = ""; //$NON-NLS-1$
if (this.match(signature, 0)) {
userName = signature.getStringValue(0);
deliverTo = userName;
} else if (this.match(signature, 1)) {
userName = signature.getStringValue(0);
deliverTo = signature.getStringValue(1);
}
TrainBillV2 bill = this.trainManager.getBill(executer, userName);
for (TrainEntityV3 train : bill.getTrains()) {
this.reply(deliverTo, train.format(this.getMyPolly().formatting()));
}
this.reply(deliverTo, "========================="); //$NON-NLS-1$
this.reply(deliverTo, bill.toString());
return false;
}
}