1classdef Joiner < InputSection
2 % An input section that joins siblings tasks
4 % Copyright (c) 2012-2026, Imperial College London
15 function self = Joiner(customerClasses)
16 % SELF = JOINER(CUSTOMERCLASSES)
18 self@InputSection(
'Joiner');
19 self.joinJobClasses = {};
20 initJoinJobClasses(self, customerClasses);
24 methods (Access =
'public')
26 function setRequired(self, customerClass, nJobs)
27 % SETREQUIRED(CUSTOMERCLASS, NJOBS)
29 self.joinRequired{customerClass.index} = nJobs;
32 function setStrategy(self, customerClass, joinStrat)
33 % SETSTRATEGY(CUSTOMERCLASS, JOINSTRAT)
35 self.joinJobClasses{customerClass.index} = customerClass;
36 self.joinStrategy{customerClass.index} = joinStrat;
39 function initJoinJobClasses(self, customerClasses)
40 % INITJOINJOBCLASSES(CUSTOMERCLASSES)
42 for i = 1 : length(customerClasses)
43 self.joinJobClasses{i} = customerClasses{i};
44 self.joinRequired{i} = -1;
45 self.joinStrategy{i} = JoinStrategy.STD;
50 methods(Access =
protected)
51 % Override copyElement method:
52 function clone = copyElement(self)
53 % CLONE = COPYELEMENT()
55 % Make a shallow copy of all properties
56 clone = copyElement@Copyable(self);
57 % Make a deep copy of each
object
58 for i=1:length(self.joinJobClasses)
59 clone.joinJobClasses{i} = self.joinJobClasses{i}.copy;