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

nl.tno.bim.nmd.services.BaseNmdDataService Maven / Gradle / Ivy

The newest version!
package nl.tno.bim.nmd.services;

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

import nl.tno.bim.nmd.domain.NlsfbCode;
import nl.tno.bim.nmd.domain.NmdElement;
import nl.tno.bim.nmd.domain.NmdProductCard;

public interface BaseNmdDataService extends NmdDataService {
	
	abstract List getData();
	
	abstract void preLoadData();
	
	@Override
	default List getProductsForNLsfbCodes(Set codes) {
		if (getData().size() == 0) {
			preLoadData();
		}
				
		List res = getElementsForNLsfbCodes(codes).stream()
				.flatMap(el -> el.getProducts().stream()).collect(Collectors.toList());
		
		return res;
	}

	/**
	 * Quick lookup for preloaded elements
	 */
	default List getElementsForNLsfbCodes(Set codes) {
		if (getData().size() == 0) {
			preLoadData();
		}
				
		return getData().stream()
				.filter(el -> codes.stream().anyMatch(code -> 
							code == null ? false : el.getNlsfbCode().isSubCategoryOf(code) 
									|| code.isSubCategoryOf(el.getNlsfbCode()))
						)
				.collect(Collectors.toList());
	}
	
	default List getProductCardsByIds(List ids) {
		if (getData().size() == 0) {
			preLoadData();
		}
		
		return getData().stream().flatMap(el -> el.getProducts().stream())
				.filter(pc -> ids.contains((long)pc.getProductId()))
				.collect(Collectors.toList());
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy