ElementTypeRegistry registry = ElementTypeRegistry.getInstance();
final ElementMetaData[] elementMetaDatas = registry.getAllElementTypes();
for (int i = 0; i < elementMetaDatas.length; i++)
{
final ElementMetaData metaData = elementMetaDatas[i];
if (metaData == null)
{
logger.warn("Null Expression encountered");
continue;
}
missingProperties.clear();
try
{
final Object type = metaData.create();
}
catch (InstantiationException e)
{
logger.warn("Expression class is null");
}
final String typeName = metaData.getName();
logger.debug("Processing " + typeName);
final Locale locale = Locale.getDefault();
final String displayName = metaData.getDisplayName(locale);
if (isValid(displayName, metaData.getName()) == false)
{
logger.warn("ElementType '" + typeName + ": No valid display name");
}
if (metaData.isDeprecated())
{
deprecatedExpressionsCounter += 1;
final String deprecateMessage = metaData.getDeprecationMessage(locale);
if (isValid(deprecateMessage, "Use a Formula instead") == false)
{
logger.warn("ElementType '" + typeName + ": No valid deprecate message");
}
}
final String grouping = metaData.getGrouping(locale);
if (isValid(grouping, "Group") == false)
{
logger.warn("ElementType '" + typeName + ": No valid grouping message");
}
expressionsByGroup.add(grouping, metaData);
final StyleMetaData[] styleMetaDatas = metaData.getStyleDescriptions();
for (int j = 0; j < styleMetaDatas.length; j++)
{
final StyleMetaData propertyMetaData = styleMetaDatas[j];
final String propertyDisplayName = propertyMetaData.getDisplayName(locale);
if (isValid(propertyDisplayName, propertyMetaData.getName()) == false)
{
logger.warn("ElementType '" + typeName + ": Style " + propertyMetaData.getName() + ": No DisplayName");
}
final String propertyGrouping = propertyMetaData.getGrouping(locale);
if (isValid(propertyGrouping, "Group") == false)
{
logger.warn("ElementType '" + typeName + ": Style " + propertyMetaData.getName() + ": Grouping is not valid");
}
if (propertyMetaData.isDeprecated())
{
final String deprecateMessage = propertyMetaData.getDeprecationMessage(locale);
if (isValid(deprecateMessage, "Deprecated") == false)
{
logger.warn(
"ElementType '" + typeName + ": Style " + propertyMetaData.getName() + ": No valid deprecate message");
}
}
}
final AttributeMetaData[] attributeMetaDatas = metaData.getAttributeDescriptions();
for (int j = 0; j < attributeMetaDatas.length; j++)
{
final AttributeMetaData propertyMetaData = attributeMetaDatas[j];
final String propertyDisplayName = propertyMetaData.getDisplayName(locale);
if (isValid(propertyDisplayName, propertyMetaData.getName()) == false)
{
logger.warn("ElementType '" + typeName + ": Attr " + propertyMetaData.getName() + ": No DisplayName");
}
final String propertyGrouping = propertyMetaData.getGrouping(locale);
if (isValid(propertyGrouping, "Group") == false)
{
logger.warn("ElementType '" + typeName + ": Attr " + propertyMetaData.getName() + ": Grouping is not valid");
}
if (propertyMetaData.isDeprecated())
{
final String deprecateMessage = propertyMetaData.getDeprecationMessage(locale);
if (isValid(deprecateMessage, "Deprecated") == false)
{
logger.warn(
"ElementType '" + typeName + ": Attr " + propertyMetaData.getName() + ": No valid deprecate message");
}
}
}
System.err.flush();
try
{
Thread.sleep(25);
}
catch (InterruptedException e)
{
}
for (int x = 0; x < missingProperties.size(); x++)
{
final String property = (String) missingProperties.get(x);
System.out.println(property);
}
if (missingProperties.isEmpty() == false)
{
invalidExpressionsCounter += 1;
missingProperties.clear();
}
System.out.flush();
try
{
Thread.sleep(25);
}
catch (InterruptedException e)
{
}
}
logger.info("Validated " + elementMetaDatas.length + " expressions. Invalid: " +
invalidExpressionsCounter + " Deprecated: " + deprecatedExpressionsCounter);
final Object[] keys = expressionsByGroup.keySet().toArray();
Arrays.sort(keys);
for (int i = 0; i < keys.length; i++)
{
final Object key = keys[i];
logger.info("Group: '" + key + "' Size: " + expressionsByGroup.getValueCount(key));
final Object[] objects = expressionsByGroup.toArray(key);
for (int j = 0; j < objects.length; j++)
{
ElementMetaData metaData = (ElementMetaData) objects[j];
logger.info(" " + metaData.getName());
}
}
}