Logical Attributes Report
The Logical Attribute Report for a type lists mappings that have already been used for that type in addition to those used for alias attributes in the Type and Attribute Management utility.
The creation of logical attributes is a feature of the LogicalIdentifierFactory. When you pass the LogicalIdentifierFactory a logical form in the context of a TypeIdentifier, for example, factory.get("name", "wt.part.WTPart"), it tries to treat the logical form as an attribute of the type. It goes through several steps to try and find a mapping for the logical form:
1. First it looks for the logical form in logicalIdentifier.properties. So if "name" is defined in logicalIdentifier.properties to map to "MBA|foobar", then "MBA|foobar" will get returned.
2. If there wasn't an entry in logicalIdentifier.properties, it looks in the /codebase/LogicalAttributes.xml file. This file has the following format:
....
<Class name="wt.enterprise.RevisionControlled">
<Property>
<LogicalForm>name</LogicalForm>
<ExternalForm>MBA|name</ExternalForm>
</Property>
</Class>
....
The factory looks in this xml file to see if the requested logical form has an entry specified for the type that was passed in by the user. If there isn't an entry for the requested type, it sees if there is an entry for any of the type's supertypes. Multiple inheritance conflicts are resolved by two rules:
a. Parent classes win over parent interfaces
b. Parent interfaces win by alphabetical order (so "java.util.Map" wins over "java.util.Set"). (more configurable solution is possible).
3. If there wasn't a matching entry in LogicalAttributes.xml, then the factory does introspection to try and find a match. This works by getting a list of all AttributeTypeIdentifiers defined for the requested type, and seeing if the logical form matches any of the attribute names in the list.
Report Output
The report output has four columns. The first two columns map an attribute's logical form to the external form that the factor will return. The third column shows where the factory got the external form -- either from logicalIdentifier.properties, LogicalAttributes.xml, or Introspection. The fourth column shows the business field identifier.