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

org.unlaxer.util.copy.Propagatable Maven / Gradle / Ivy

package org.unlaxer.util.copy;

import java.util.Optional;


public interface Propagatable {
	
//	public T getDefaultValue();
	
	public Optional> getParentNode();
	
//	public List> getChildNodes();
	
	public boolean doPropagateToChild();
	
	public T getThisNodeOrignalValue();
	
	public default T getValue(){
		Optional> parentNodeOptional = getParentNode();
		if(false == parentNodeOptional.isPresent()){
			return getThisNodeOrignalValue();
		}
		Propagatable parent = parentNodeOptional.get();
		boolean doPropagateToChild = parent.doPropagateToChild();
		if(false == doPropagateToChild){
			return getThisNodeOrignalValue(); 
		}
		return merge(parent.getValue());
	}
	
	public T merge(T fromParentValue , T fromThisNodeValue);
	
	public default T merge(T fromParentValue){
		return merge(fromParentValue , getThisNodeOrignalValue());
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy