Source file: /~heha/mb-iwp/RTD-RTX-Konverter.zip/RtdImporter (Java-jBEAM)/src/rtdImporter/BasicCea2Producer.java

package rtdImporter;

import org.asam.cea.Cea2Component.Cea2ProducerIF;
import org.asam.cea.Cea2Exceptions.Cea2Exception;
import org.asam.cea.Cea2Items.Cea2ItemIF;
import org.asam.cea.Cea2Items.Cea2NumericItemIF;
import org.asam.cea.Cea2Types.Cea2ConsumerInfoIF;
import org.asam.cea.Cea2Types.Cea2EventKind;

public abstract class BasicCea2Producer extends BasicCea2Component
		implements Cea2ProducerIF
{
	protected Cea2NumericItemIF[] resultDataItems = null;

// set the individual name of a component instance
	// returns the producedItems
	public Cea2ItemIF[] cea2GetProducedItems() {
		return resultDataItems !=  null ? resultDataItems : new Cea2ItemIF[0];
	}

	protected void clearResultItems() {
		if (resultDataItems == null) return;
		for (Cea2NumericItemIF resultItem : resultDataItems) {
			if (resultItem != null) {
				try {
					getCea2Bus().cea2RevokeItem(resultItem, false);
				} catch (Cea2Exception e) {
					e.printStackTrace();
				}
			}
		}
		resultDataItems = null;
	}

	// returns boolean, it checks if there are still results needed for consumers
	public boolean isResultNeeded() {
		if (resultDataItems == null)
			return false;

		for (int i = 0; i < resultDataItems.length; i++) {
			if (resultDataItems[i] == null)
				continue;
			Cea2ConsumerInfoIF[] consumerInfos = resultDataItems[i].cea2GetConsumers();
			if (consumerInfos == null)
				return false;

			for (int j = 0; j < consumerInfos.length; j++) {
				if ((consumerInfos[j] != null) &&
					consumerInfos[j].cea2GetConsumer().cea2IsStillNeeded(resultDataItems[i]))
						return true;
			}
		}
		return false;
	}

	public boolean delete() {
		if (isResultNeeded())
			return false;
		return super.delete();
	}
	
	public void cea2FreeResources() {
		if (resultDataItems != null)
			for (Cea2NumericItemIF resultItem : resultDataItems)
				try {
					getCea2Bus().cea2RevokeItem(resultItem, false);
				} catch (Cea2Exception ex) {
				}
		resultDataItems = new Cea2NumericItemIF[0];
		sendComponentEvent(new Cea2ComponentEvent(Cea2EventKind.ComponentDeleted));
	}
}
Detected encoding: ASCII (7 bit)2