1function [simElem, simDoc] = saveClasses(self, simElem, simDoc)
2% [SIMELEM, SIMDOC] = SAVECLASSES(SIMELEM, SIMDOC)
4% Copyright (c) 2012-2026, Imperial College London
10exportClasses = self.getExportableClasses();
12% JMT uses higher priority value = higher priority,
while LINE uses lower value = higher priority
13% We need to invert priorities when writing to JMT
14maxPrio = max(sn.classprio);
16numOfClasses = sn.nclasses;
18 % Skip
classes that should not be exported to JMT
23 userClass = simDoc.createElement(
'userClass');
24 userClass.setAttribute(
'name', sn.classnames(r));
26 userClass.setAttribute(
'type',
'open');
28 userClass.setAttribute(
'type',
'closed');
30 % Set soft deadline from
class deadline (0.0 if no deadline)
31 deadline = sn.classdeadline(r);
33 userClass.setAttribute(
'softDeadline', num2str(deadline));
35 userClass.setAttribute(
'softDeadline',
'0.0');
37 % Invert priority: LINE uses lower=higher, JMT uses higher=higher
38 jmtPrio = maxPrio - sn.classprio(r);
39 userClass.setAttribute(
'priority', int2str(jmtPrio));
40 refStatIndex = sn.refstat(r);
41 refNodeIndex = sn.stationToNode(sn.refstat(r));
42 refStatName = sn.nodenames{refNodeIndex};
43 if ~isempty(sn.proc{refStatIndex}{r})
44 if isfinite(sn.njobs(r)) % if closed
45 userClass.setAttribute('customers', int2str(sn.njobs(r)));
46 userClass.setAttribute('referenceSource', refStatName);
47 elseif isnan(sn.proc{refStatIndex}{r}{1}) % open disabled in source
48 userClass.setAttribute(
'referenceSource',
'ClassSwitch');
50 userClass.setAttribute(
'referenceSource', sn.nodenames{sn.stationToNode(sn.refstat(r))});
53 userClass.setAttribute(
'referenceSource', sn.nodenames{sn.stationToNode(sn.refstat(r))});
55 simElem.appendChild(userClass);