package alma.acs.nc; import java.util.logging.Logger; import org.omg.CosNotification.EventType; import org.omg.CosNotifyFilter.ConstraintInfo; import org.omg.CosNotifyFilter.Filter; import org.omg.CosNotifyFilter.FilterAdminOperations; import org.omg.CosNotifyFilter.FilterNotFound; /** * Gets info about NC filters of a selected proxy supplier or other FilterAdmin object. * To be used for debug logging, eventGUI etc. */ public class NcFilterInspector { private final Logger logger; private final String serverObjectName; private final FilterAdminOperations serverObject; /** * @param serverObject The proxy supplier (or possibly other NC-satellite object) * @param serverObjectName A descriptive name for the serverObject. * @param logger Used for internal logging. */ public NcFilterInspector(FilterAdminOperations serverObject, String serverObjectName, Logger logger) { this.serverObject = serverObject; this.serverObjectName = serverObjectName; this.logger = logger; } public String getFilterInfo() { String ret = "NC filter info for '" + serverObjectName + "' "; int[] filterIds = serverObject.get_all_filters(); ret += "(" + filterIds.length + " filters total): "; for (int filterId : filterIds) { ret += "{ filterId=" + filterId +"; "; try { Filter f = serverObject.get_filter(filterId); String grammarName = f.constraint_grammar(); ret += "grammar=" + grammarName +"; "; ret += "constraints: { "; for (ConstraintInfo ci : f.get_all_constraints()) { String cExp = ci.constraint_expression.constraint_expr; ret += "expr=" + cExp + "; "; for (EventType eT : ci.constraint_expression.event_types) { String typeName = eT.type_name; ret += "type=" + typeName + "; "; String domainName = eT.domain_name; ret += "domain=" + domainName + "; "; } } ret += "}; "; } catch (FilterNotFound ex) { ret += "FilterNotFound!"; } ret += "}; "; } return ret; } }