OngoingRange.java
/**
* Copyright (c) 2018 European Organisation for Nuclear Research (CERN), All Rights Reserved.
*/
package cern.accsoft.steering.jmad.tools.modeldefs.creating.lang;
import java.util.function.Consumer;
import cern.accsoft.steering.jmad.domain.machine.RangeDefinition;
import cern.accsoft.steering.jmad.domain.machine.SequenceDefinitionImpl;
public class OngoingRange {
private final RangeDefinitionBuilder builder;
private final SequenceDefinitionImpl sequenceDefinition;
private boolean isDefault = false;
public OngoingRange(String rangeName, SequenceDefinitionImpl sequenceDefinition) {
this.sequenceDefinition = sequenceDefinition;
this.builder = new RangeDefinitionBuilder(rangeName, sequenceDefinition);
}
public OngoingRange isDefault() {
this.isDefault = true;
return this;
}
public void isDefinedAs(Consumer<RangeBlock> block) {
RangeBlock rangeBlock = new RangeBlock(builder);
block.accept(rangeBlock);
RangeDefinition rangeDefinition = builder.build();
sequenceDefinition.addRangeDefinition(rangeDefinition);
if (isDefault) {
AssertUtil.requireNull(sequenceDefinition.getDefaultRangeDefinition(),
"Default range definition already set for sequence " + sequenceDefinition + ". Cannot set twice.");
sequenceDefinition.setDefaultRangeDefinition(rangeDefinition);
}
}
}