+ public Map<String, T> getConfigurationBySolverName() {
+ Map<String, T> result = configurationBySolverName;
+ if (result == null) {
+ T configuration = getConfiguration();
+ if (configuration != null)
+ result = configurationBySolverName = createConfigurationBySolverName(configuration);
+ else
+ result = Collections.emptyMap();
+ }
+ return result;
+ }
+
+ protected Map<String, T> createConfigurationBySolverName(T configuration) {
+ THashMap<String, T> configurationBySolverName = new THashMap<>();
+ browseConfigurationBySolverName(configurationBySolverName, configuration);
+ return configurationBySolverName;
+ }
+
+ private void browseConfigurationBySolverName(
+ THashMap<String, T> configurationBySolverName,
+ T configuration) {
+ if (configuration.solverComponentName != null) {
+ configurationBySolverName.put(configuration.solverComponentName, configuration);
+ } else if (configuration.componentId != 0) {
+ LOGGER.warn("configuration.solverComponentName is null! configuration uid is {} and component id {}", configuration.getUid(), configuration.componentId);
+ }
+ for(T child : configuration.getChildren()) {
+ browseConfigurationBySolverName(configurationBySolverName, child);
+ child.parent = configuration;
+ }
+ }
+