Scheduler.js
Summary
Personalization Client
var CardTask = require("CardTask").CardTask;
var PortalPersonalizer = require("PortalPersonalizer").PortalPersonalizer;
function Scheduler(jobs) {
this.jobs = jobs;
this.taskmap = [];
}
exports.Scheduler = Scheduler;
Scheduler.prototype.handleSingle = function(readername) {
this.term.off();
this.card = new Card(readername);
try {
var msg = scheduler.handleCard(this.card);
print("Personalization complete: " + msg);
this.term.green();
}
catch(e) {
GPSystem.trace(e);
print("Personalization failed with " + e.message);
this.term.red();
GPSystem.wait(200);
this.term.off();
GPSystem.wait(200);
this.term.red();
}
delete this.card;
}
Scheduler.prototype.isIgnoredReader = function(readername) {
if ((_scsh3.reader == null) || (_scsh3.reader.length == 0)) {
return false;
}
var str = "!" + readername;
var list = _scsh3.reader.split(";");
return list.indexOf(str) >= 0;
}
Scheduler.prototype.cardInserted = function(readername) {
print("Inserted " + readername);
if (this.isIgnoredReader(readername)) {
print("Skipped reader");
return;
}
if (this.mode == 2) {
var t = this.taskmap[readername];
if (typeof(t) != "undefined") {
print("Reader " + readername + " already running. Ignored");
}
t = new CardTask(this, readername);
this.taskmap[readername] = t;
t.start();
} else if (this.mode == 1) {
if (this.card) {
print("Personalization in progress...");
return;
}
this.handleSingle(readername);
}
}
Scheduler.prototype.cardRemoved = function(readername) {
print("Removed " + readername);
if (this.isIgnoredReader(readername)) {
print("Skipped reader");
return;
}
if (this.mode == 2) {
var t = this.taskmap[readername];
if (typeof(t) != "undefined") {
t.stop();
delete this.taskmap[readername];
}
}
}
Scheduler.prototype.cardNotification = function(readername) {
if (this.isIgnoredReader(readername)) {
print("Skipped reader");
return;
}
if (this.mode == 2) {
var t = this.taskmap[readername];
if (typeof(t) != "undefined") {
t.notify();
}
} else {
print(this.card.remoteMessage + "(" + this.card.remoteMessageId + ")");
}
}
Scheduler.prototype.handleCard = function(card) {
var msg = "Done";
if (this.initializer) {
var msg = this.initializer.handleCard(card);
}
if (this.personalizer) {
var msg = this.personalizer.handleCard(card);
}
print(msg);
return msg;
}
Scheduler.prototype.selectJob = function() {
var list = [];
for (var i = 0; i < this.jobs.length; i++) {
list.push(this.jobs[i].Name);
}
var cust = Dialog.prompt("Select job", "", list);
if (cust == null) {
throw new Error("User abort");
}
var i = list.indexOf(cust);
this.job = this.jobs[i];
if (typeof(this.job.PortalPersonalizer) != "undefined") {
this.personalizer = new PortalPersonalizer(this.job.PortalPersonalizer);
this.personalizer.configure();
}
}
Scheduler.prototype.selectMode = function() {
var modelist = [ "Single-Shot", "Single-Card-Insert", "Multi-Card-Insert" ];
var sel = Dialog.prompt("Mode", modelist[0], modelist);
if (sel == null) throw new Error("User abort");
this.mode = modelist.indexOf(sel);
if (this.mode != 2) {
this.term = new AccessTerminal();
this.term.green();
}
if (this.mode == 0) {
scheduler.handleSingle(_scsh3.reader);
} else {
Card.setCardEventListener(this);
print("Personalization system ready. Please insert card.");
}
}
Documentation generated by
JSDoc on Sat Feb 24 15:17:19 2024