/** * Load the correctors of the specified type, construct the corresponding corrector agents and * populate the corrector agent list. * * @param correctorAgents the list to which the corrector agents should be added * @param nodeType the type of corrector nodes to fetch */ public void loadCorrectors(final List<CorrectorAgent> correctorAgents, final String nodeType) { final Map<String, CorrectorSupply> supplyMap = new HashMap<String, CorrectorSupply>(); final List<Dipole> allCorrectors = _sequence.getAllNodesOfType(nodeType); final List<Dipole> correctors = AcceleratorSeq.filterNodesByStatus(allCorrectors, true); final Iterator<Dipole> correctorIter = correctors.iterator(); while (correctorIter.hasNext()) { final Dipole corrector = correctorIter.next(); final MagnetMainSupply supply = corrector.getMainSupply(); if (supply != null) { final String supplyID = supply.getId(); if (!supplyMap.containsKey(supplyID)) { supplyMap.put(supplyID, new CorrectorSupply(supply)); } final CorrectorSupply supplyAgent = supplyMap.get(supplyID); final CorrectorAgent correctorAgent = new CorrectorAgent(corrector); supplyAgent.addCorrector(correctorAgent); _correctorAgents.add(correctorAgent); } } _correctorSupplyMap = supplyMap; _correctorSupplies = new ArrayList<CorrectorSupply>(supplyMap.values()); Collections.sort( _correctorSupplies, CorrectorSupply.getFirstCorrectorPositionComparator(_sequence)); }
/** * Write data to the data adaptor for storage. * * @param adaptor The adaptor to which the receiver's data is written */ public void write(final DataAdaptor adaptor) { if (_correctorSupplyMap != null) { for (final CorrectorSupply supply : _correctorSupplyMap.values()) { final DataAdaptor supplyAdaptor = adaptor.createChild("supply"); supplyAdaptor.setValue("id", supply.getID()); supplyAdaptor.setValue("enable", supply.isEnabled()); if (supply.isLowerFieldLimitCustom()) { supplyAdaptor.setValue("lowerFieldLimit", supply.getLowerFieldLimit()); } if (supply.isUpperFieldLimitCustom()) { supplyAdaptor.setValue("upperFieldLimit", supply.getUpperFieldLimit()); } } } if (_bpmAgents != null) { for (final BpmAgent bpmAgent : _bpmAgents) { final boolean flattenEnable = bpmAgent.getFlattenEnabled(); if (!flattenEnable) { // only need to store the exceptions final DataAdaptor bpmAdaptor = adaptor.createChild("bpm"); bpmAdaptor.setValue("id", bpmAgent.getID()); bpmAdaptor.setValue("flattenEnable", flattenEnable); } } } if (_flattener != null) { adaptor.writeNode(_flattener); } for (OrbitSource orbitSource : _orbitSources) { if (orbitSource instanceof SnapshotOrbitSource || orbitSource instanceof LiveOrbitSource) { adaptor.writeNode(orbitSource); } } }