From: <mcu...@us...> - 2008-11-16 06:30:33
|
Revision: 1333 http://orm.svn.sourceforge.net/orm/?rev=1333&view=rev Author: mcurland Date: 2008-11-16 06:30:27 +0000 (Sun, 16 Nov 2008) Log Message: ----------- Preverify FactType state before verbalizing in associated FactTypes list on ObjectType selection. Fixes verbalization crash introduced with [1331] selecting an ObjectType attached to a role on a FactType with no reading. refs #376 Modified Paths: -------------- trunk/ORMModel/ObjectModel/Verbalization.cs trunk/ORMModel/ObjectModel/VerbalizationGenerator.cs trunk/ORMModel/ObjectModel/VerbalizationGenerator.xml trunk/ORMModel/ObjectModel/VerbalizationGenerator.xsd trunk/ORMModel/ObjectModel/VerbalizationGenerator.xslt Modified: trunk/ORMModel/ObjectModel/Verbalization.cs =================================================================== --- trunk/ORMModel/ObjectModel/Verbalization.cs 2008-11-16 02:07:55 UTC (rev 1332) +++ trunk/ORMModel/ObjectModel/Verbalization.cs 2008-11-16 06:30:27 UTC (rev 1333) @@ -1004,6 +1004,10 @@ /// </summary> public static void WriteVerbalizerSentence(TextWriter writer, string body, string closeSentenceWith) { + if (string.IsNullOrEmpty(body)) + { + return; + } Match match = FirstBodyCharacterPatternLower.Match(body); if (match.Success) { Modified: trunk/ORMModel/ObjectModel/VerbalizationGenerator.cs =================================================================== --- trunk/ORMModel/ObjectModel/VerbalizationGenerator.cs 2008-11-16 02:07:55 UTC (rev 1332) +++ trunk/ORMModel/ObjectModel/VerbalizationGenerator.cs 2008-11-16 06:30:27 UTC (rev 1333) @@ -1788,7 +1788,7 @@ for (snippet8ReplaceFilteredIter1 = 0; snippet8ReplaceFilteredIter1 < playedRoleCount; ++snippet8ReplaceFilteredIter1) { RoleBase primaryRole = playedRoles[snippet8ReplaceFilteredIter1]; - if (Array.IndexOf(snippet8ReplaceUniqueFactTypes1, snippet8ReplaceTestUniqueFactType1 = primaryRole.FactType) == -1) + if (primaryRole.FactType.ReadingRequiredError == null && Array.IndexOf(snippet8ReplaceUniqueFactTypes1, snippet8ReplaceTestUniqueFactType1 = primaryRole.FactType) == -1) { snippet8ReplaceUniqueFactTypes1[snippet8ReplaceFilteredIter1] = snippet8ReplaceTestUniqueFactType1; ++snippet8ReplaceFilteredCount1; @@ -1827,7 +1827,7 @@ } basicRoleReplacements[i] = basicReplacement; } - if (Array.IndexOf(snippet8ReplaceUniqueFactTypes1, snippet8ReplaceTestUniqueFactType1 = primaryRole.FactType) == -1) + if (primaryRole.FactType.ReadingRequiredError == null && Array.IndexOf(snippet8ReplaceUniqueFactTypes1, snippet8ReplaceTestUniqueFactType1 = primaryRole.FactType) == -1) { snippet8ReplaceUniqueFactTypes1[RoleIter1] = snippet8ReplaceTestUniqueFactType1; CoreVerbalizationSnippetType listSnippet; Modified: trunk/ORMModel/ObjectModel/VerbalizationGenerator.xml =================================================================== --- trunk/ORMModel/ObjectModel/VerbalizationGenerator.xml 2008-11-16 02:07:55 UTC (rev 1332) +++ trunk/ORMModel/ObjectModel/VerbalizationGenerator.xml 2008-11-16 06:30:27 UTC (rev 1333) @@ -82,7 +82,7 @@ <PortableDataType/> </Snippet> <Snippet ref="SelfReference" conditionalMatch="VerbalizeFactTypesWithBrowserObjectType"> - <IterateRoles match="playedRoles" listStyle="FactTypeList" uniqueFactType="true"> + <IterateRoles match="playedRoles" listStyle="FactTypeList" verifyCanVerbalizeFactType="true" uniqueFactType="true"> <Fact subtypeMetaReading="true" closeSentence="true"/> </IterateRoles> </Snippet> Modified: trunk/ORMModel/ObjectModel/VerbalizationGenerator.xsd =================================================================== --- trunk/ORMModel/ObjectModel/VerbalizationGenerator.xsd 2008-11-16 02:07:55 UTC (rev 1332) +++ trunk/ORMModel/ObjectModel/VerbalizationGenerator.xsd 2008-11-16 06:30:27 UTC (rev 1333) @@ -1047,6 +1047,11 @@ <xs:documentation>Set to true if a visited FactTypes should be tracked. If this is set, then a later role with the same FactType will be ignored.</xs:documentation> </xs:annotation> </xs:attribute> + <xs:attribute name="verifyCanVerbalizeFactType" type="xs:boolean" default="false"> + <xs:annotation> + <xs:documentation>Set to true if the FactType has not already been verified as have sufficient state to support verbalization.</xs:documentation> + </xs:annotation> + </xs:attribute> </xs:complexType> <xs:complexType name="IterateRolesType"> <xs:complexContent> Modified: trunk/ORMModel/ObjectModel/VerbalizationGenerator.xslt =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |