All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openlca.io.olca.ImpactMethodImport Maven / Gradle / Ivy

There is a newer version: 2.2.1
Show newest version
package org.openlca.io.olca;

import org.openlca.core.model.ImpactMethod;
import org.openlca.core.model.NwSet;
import org.openlca.util.Strings;

class ImpactMethodImport {

	private final Config conf;

	private ImpactMethodImport(Config conf) {
		this.conf = conf;
	}

	static void run(Config config) {
		new ImpactMethodImport(config).run();
	}

	private void run() {
		conf.syncAll(ImpactMethod.class, method -> {
			var copy = method.copy();
			copy.source = conf.swap(method.source);

			// swap impact categories
			copy.impactCategories.clear();
			for (var impact : method.impactCategories) {
				var swapped = conf.swap(impact);
				if (swapped != null) {
					copy.impactCategories.add(swapped);
				}
			}

			// swap impact categories in NW-sets
			for (var copied : copy.nwSets) {
				for (var f : copied.factors) {
					f.impactCategory = conf.swap(f.impactCategory);
				}
			}
			for (var nwSet : method.nwSets) {
				for (var copied : copy.nwSets) {
					// we need to set the reference IDs from the source as they are
					// generated new in the clone method.
					if (areEqual(copied, nwSet)) {
						copied.refId = nwSet.refId;
						break;
					}
				}
			}

			return copy;
		});
	}

	private boolean areEqual(NwSet source, NwSet target) {
		return Strings.nullOrEqual(source.name, target.name)
				&& Strings.nullOrEqual(source.description, target.description)
				&& Strings.nullOrEqual(source.weightedScoreUnit, target.weightedScoreUnit);
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy