TryCalculateGraphMetrics
(
IGraph graph,
CalculateGraphMetricsContext calculateGraphMetricsContext,
out GraphMetricColumn [] graphMetricColumns
)
{
Debug.Assert(graph != null);
Debug.Assert(calculateGraphMetricsContext != null);
AssertValid();
graphMetricColumns = new GraphMetricColumn[0];
WordMetricUserSettings oWordMetricUserSettings =
calculateGraphMetricsContext.GraphMetricUserSettings
.WordMetricUserSettings;
if (
!calculateGraphMetricsContext.ShouldCalculateGraphMetrics(
GraphMetrics.Words)
||
String.IsNullOrEmpty(oWordMetricUserSettings.TextColumnName)
)
{
return (true);
}
String [] asWordsToSkip = StringUtil.SplitOnCommonDelimiters(
oWordMetricUserSettings.WordsToSkip);
WordCounter oWordCounter = new WordCounter(asWordsToSkip);
WordPairCounter oWordPairCounter = new WordPairCounter(asWordsToSkip);
// The edges or vertices may have unique imported IDs. If so, this
// becomes a collection of the IDs.
HashSet<String> oUniqueImportedIDs =
EdgesOrVerticesHaveImportedIDs(graph,
oWordMetricUserSettings.TextColumnIsOnEdgeWorksheet) ?
new HashSet<String>() : null;
if (oWordMetricUserSettings.CountByGroup)
{
if (oWordMetricUserSettings.TextColumnIsOnEdgeWorksheet)
{
return ( TryCountEdgeTermsByGroup(graph,
oWordMetricUserSettings, oWordCounter, oWordPairCounter,
oUniqueImportedIDs, out graphMetricColumns) );
}
else
{
return ( TryCountVertexTermsByGroup(graph,
oWordMetricUserSettings, oWordCounter, oWordPairCounter,
oUniqueImportedIDs, out graphMetricColumns) );
}
}
else
{
return ( TryCountTermsNoGroups(graph,
oWordMetricUserSettings, oWordCounter, oWordPairCounter,
oUniqueImportedIDs, out graphMetricColumns) );
}
}