/** * Update the data based on the information provided by the data provider. * * @param adaptor The adaptor from which to update the data */ public void update(final DataAdaptor adaptor) { if (_correctorSupplyMap != null) { final List<DataAdaptor> supplyAdaptors = adaptor.childAdaptors("supply"); for (final DataAdaptor supplyAdaptor : supplyAdaptors) { final String supplyID = supplyAdaptor.stringValue("id"); final CorrectorSupply supply = _correctorSupplyMap.get(supplyID); if (supply != null) { if (supplyAdaptor.hasAttribute("enable")) { final boolean enable = supplyAdaptor.booleanValue("enable"); supply.setEnabled(enable); } if (supplyAdaptor.hasAttribute("lowerFieldLimit")) { supply.setLowerFieldLimit(supplyAdaptor.doubleValue("lowerFieldLimit")); } if (supplyAdaptor.hasAttribute("upperFieldLimit")) { supply.setUpperFieldLimit(supplyAdaptor.doubleValue("upperFieldLimit")); } } } } final List<DataAdaptor> bpmAdaptors = adaptor.childAdaptors("bpm"); if (bpmAdaptors != null && bpmAdaptors.size() > 0 && _bpmAgents != null) { // cache all our bpms so we can access them by ID final Map<String, BpmAgent> bpmAgentMap = new HashMap<String, BpmAgent>(_bpmAgents.size()); for (final BpmAgent bpmAgent : _bpmAgents) { bpmAgentMap.put(bpmAgent.getID(), bpmAgent); } for (final DataAdaptor bpmAdaptor : bpmAdaptors) { final String bpmID = bpmAdaptor.stringValue("id"); final BpmAgent bpmAgent = bpmAgentMap.get(bpmID); if (bpmAgent != null) { if (bpmAdaptor.hasAttribute("flattenEnable")) { bpmAgent.setFlattenEnabled(bpmAdaptor.booleanValue("flattenEnable")); } } } } final DataAdaptor flattenerAdaptor = adaptor.childAdaptor(Flattener.DATA_LABEL); if (flattenerAdaptor != null) { getFlattener().update(flattenerAdaptor); } final List<DataAdaptor> orbitSourceAdaptors = adaptor.childAdaptors(OrbitSource.DATA_LABEL); for (DataAdaptor orbitSourceAdaptor : orbitSourceAdaptors) { final String type = orbitSourceAdaptor.stringValue("type"); if (type.equals("snapshot")) { final SnapshotOrbitSource orbitSource = SnapshotOrbitSource.getInstance(orbitSourceAdaptor, _sequence, _bpmAgents); addOrbitSource(orbitSource); } } }
/** Return a list of BPM nodes associated with the list of bpmAgents */ public static List<BPM> getNodes(final List<BpmAgent> bpmAgents) { final int count = bpmAgents.size(); final List<BPM> bpmNodes = new ArrayList<>(count); for (int index = 0; index < count; index++) { final BpmAgent bpmAgent = bpmAgents.get(index); bpmNodes.add(bpmAgent.getNode()); } return bpmNodes; }
/** refresh enabled BPMs */ protected void refreshEnabledBPMs(final boolean postChange) { final List<BpmAgent> bpmAgents = new ArrayList<BpmAgent>(AVAILABLE_BPM_AGENTS.size()); for (final BpmAgent bpmAgent : AVAILABLE_BPM_AGENTS) { if (bpmAgent.isEnabled()) { bpmAgents.add(bpmAgent); } } _bpmAgents = new ArrayList<BpmAgent>(); _bpmAgents.addAll(bpmAgents); if (postChange) { for (final OrbitSource source : _orbitSources) { source.setSequence(_sequence, _bpmAgents); } EVENT_PROXY.enabledBPMsChanged(this, _bpmAgents); } }
/** * 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); } } }