OngoingSequence.java
/**
* Copyright (c) 2018 European Organisation for Nuclear Research (CERN), All Rights Reserved.
*/
package cern.accsoft.steering.jmad.tools.modeldefs.creating.lang;
import static java.util.Objects.requireNonNull;
import java.util.function.Consumer;
import cern.accsoft.steering.jmad.domain.machine.SequenceDefinitionImpl;
import cern.accsoft.steering.jmad.modeldefs.domain.JMadModelDefinitionImpl;
public class OngoingSequence {
private final String name;
private final JMadModelDefinitionImpl modelDefinition;
private boolean isDefault = false;
public OngoingSequence(String name, JMadModelDefinitionImpl modelDefinition) {
this.name = requireNonNull(name, "name must not be null");
this.modelDefinition = requireNonNull(modelDefinition, "modelDefinition must not be null");
}
public OngoingSequence isDefault() {
this.isDefault = true;
return this;
}
public void isDefinedAs(Consumer<SequenceBlock> block) {
SequenceDefinitionImpl sequenceDefinition = new SequenceDefinitionImpl(name);
SequenceBlock sequenceBlock = new SequenceBlock(sequenceDefinition);
block.accept(sequenceBlock);
modelDefinition.addSequenceDefinition(sequenceDefinition);
if (isDefault) {
AssertUtil.requireNull(modelDefinition.getDefaultSequenceDefinition(),
"default sequence already defined. Cannot define twice.");
modelDefinition.setDefaultSequenceDefinition(sequenceDefinition);
}
}
}