Skip to contentMethod: create()
      1: package ablaeufe.meta.akteurstypen;
2: 
3: import ablaeufe.meta.visitor.AkteurTypVisitor;
4: import mensch.Produktionsrolle;
5: 
6: import java.util.ArrayList;
7: import java.util.Collection;
8: import java.util.Collections;
9: 
10: /**
11:  * Ein Menschlicher Akteurtyp hat eine beliebig große Menge an Produktionsrollen. Diese Rollen müssen entweder die
12:  * Aktivität betreuen (benoetigteRollen) oder es muss einer der Rollen anwesend sein (benoetigteOderRollen).
13:  *
14:  */
15: public final class MenschlicherAkteurtyp implements Akteurtyp {
16:         
17:         private final Collection<Produktionsrolle> benoetigteRollen;
18: 
19:         private MenschlicherAkteurtyp() {
20:                 this.benoetigteRollen = new ArrayList<>();
21:         }
22: 
23:     /**
24:      * @return ein erstellter {@link MenschlicherAkteurtyp}.
25:      */
26:         public static MenschlicherAkteurtyp create() {
27:             return new MenschlicherAkteurtyp();
28:     }
29: 
30: 
31:         /**
32:          * Getter for an read only Collection of benoetigte Rollen.
33:          *
34:          * @return benoetigteRollen
35:          */
36:         public Collection<Produktionsrolle> getBenoetigteRollen() {
37:                 return Collections.unmodifiableCollection(this.benoetigteRollen);
38:         }
39: 
40:         /**
41:          * Adder für benoetigteRollen.
42:          *
43:          * @param benoetigteRolle
44:          *            hinzuzufügende Rolle.
45:          */
46:         public void addBenoetigteRolle(final Produktionsrolle benoetigteRolle) {
47:                 this.benoetigteRollen.add(benoetigteRolle);
48:         }
49: 
50:     @Override
51:     public <T> T accept(final AkteurTypVisitor<T> visitor) {
52:         return visitor.handle(this);
53:     }
54: }