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));
}
}
Vorgefundene Kodierung: UTF-8 | 0
|