OngoingOptics.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 static java.util.stream.Collectors.toList;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.function.Consumer;
- import cern.accsoft.steering.jmad.domain.file.ModelFile;
- import cern.accsoft.steering.jmad.modeldefs.domain.JMadModelDefinitionImpl;
- import cern.accsoft.steering.jmad.modeldefs.domain.OpticsDefinitionImpl;
- public class OngoingOptics {
- private final JMadModelDefinitionImpl modelDefinition;
- private final String name;
- private boolean isDefault = false;
- private Boolean overlay = null;
- public OngoingOptics(String name, JMadModelDefinitionImpl modelDefinition) {
- this.name = requireNonNull(name, "name must not be null");
- this.modelDefinition = requireNonNull(modelDefinition, "modelDefinition must not be null");
- }
- public OngoingOptics isDefault() {
- this.isDefault = true;
- return this;
- }
- public OngoingOptics isOverlay() {
- this.overlay = true;
- return this;
- }
- public void isDefinedAs(Consumer<FileBlock> fileBlock) {
- List<ModelFileBuilder> builders = new ArrayList<>();
- fileBlock.accept(new FileBlock(builders));
- List<ModelFile> modelFiles = builders.stream().map(ModelFileBuilder::build).collect(toList());
- OpticsDefinitionImpl opticsDefinition = opticsDefinition(modelFiles);
- modelDefinition.addOpticsDefinition(opticsDefinition);
- if (isDefault) {
- AssertUtil.requireNull(modelDefinition.getDefaultOpticsDefinition(),
- "Default optics definition is already set. Cannot set twice!");
- modelDefinition.setDefaultOpticsDefinition(opticsDefinition);
- }
- }
- private OpticsDefinitionImpl opticsDefinition(List<ModelFile> modelFiles) {
- ModelFile[] fileArray = modelFiles.toArray(new ModelFile[modelFiles.size()]);
- if (overlay == null) {
- return new OpticsDefinitionImpl(name, fileArray);
- } else {
- return new OpticsDefinitionImpl(name, overlay, fileArray);
- }
- }
- }