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

org.zkoss.bind.sys.tracker.TrackerNode Maven / Gradle / Ivy

There is a newer version: 10.0.0-jakarta
Show newest version
/* TrackerNode.java

	Purpose:
		
	Description:
		
	History:
		Jun 29, 2011 6:37:03 PM, Created by henrichen

Copyright (C) 2011 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.bind.sys.tracker;

import java.util.Map;
import java.util.Set;

import org.zkoss.bind.sys.Binding;
import org.zkoss.bind.sys.LoadBinding;
import org.zkoss.bind.sys.ReferenceBinding;

/**
 * Tracker Node in a binding dependency graph.
 * @author henrichen
 * @since 6.0.0
 */
public interface TrackerNode {
	/**
	 * Returns all dependent nodes of this node.
	 * @return all precedent nodes of this node.
	 */
	public Set getDependents();
	
	/**
	 * Returns all associated TrackerNodes of the associated field script of this tracker node.
	 * @param script field script to get the dependent 
	 * @return all linked TrackerNodes
	 * @since 8.0.0
	 */
	public Set getDependents(Object script);

	/**
	 * Returns all direct dependent nodes of this node.
	 * @return all direct dependent nodes of this node.
	 */
	public Set getDirectDependents();

	/**
	 * Returns all associate nodes of this node.
	 * @return all associate nodes of this node.
	 */
	public Set getAssociates();

	/**
	 * Returns the associated TrackerNode of the associated field script of this tracker node.
	 * @param script field script to get the dependent 
	 * @return the linked TrackerNode
	 */
	public TrackerNode getDependent(Object script);

	/**
	 * Add a dependent node of the field script.
	 * @param script the field script to link this track node to its dependent nodes.
	 * @param dependent the TrackerNode to be added
	 */
	public void addDependent(Object script, TrackerNode dependent);

	/**
	 * Remove a dependent node of this node per the specified field script.
	 * @param script field script that link to the to be removed dependent tracker node.
	 * @return the removed TrackerNode
	 */
	public TrackerNode removeDependent(Object script);

	/** add associated Binding with this node
	 * @param binding
	 */
	public void addBinding(Binding binding);

	/** Returns all associated Bindings.
	 * 
	 * @return associated Bindings.
	 */
	public Set getBindings();

	/** Returns associated LoadBindings except ReferenceBindings.
	 * @return associated LoadBindings except ReferenceBindings.
	 * @since 6.0.1 
	 */
	public Set getLoadBindings();

	/** Returns associated ReferenceBindings.
	 * @return associated ReferenceBindings.
	 * @since 6.0.1
	 */
	public Set getReferenceBindings();

	/**
	 * Returns associated bean of this TrackerNode.
	 * @return associated bean of this TrackerNode.
	 */
	public Object getBean();

	/**
	 * Sets associated bean of this TrackerNode.
	 * @param bean the associated bean.
	 */
	public void setBean(Object bean);

	/**
	 * Returns associated field script of this TrackerNode.
	 * @return associated field script of this TrackerNode.
	 */
	public Object getFieldScript();

	/** add associated TrackerNode with this node
	 * @param srcnode
	 * @since 6.5.5
	 */
	public void addAssociate(TrackerNode srcnode);

	/**
	 * tie property with tracker node of this node.
	 * @param propName
	 * @param trackerNode
	 * @since 6.5.5
	 */
	public void tieProperty(Object propName, TrackerNode trackerNode);

	/**
	 * get property, tracker node mapping map
	 * @since 6.5.5
	 */
	public Map getPropNameMapping();

	/**
	 * Internal used only
	 * @param trackerNode
	 * @return boolean is the tracker node with specific propName in bracket mapped or not
	 * @since 9.6.0
	 */
	default boolean isPropNameNodeMapped(TrackerNode trackerNode) {
		return false;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy