Esempio n. 1
0
        } // update()

        private void _updateAliasesValue( CswNbtMetaDataObjectClass UoMOC, CswNbtObjClassUnitOfMeasure UoMNode, string NewAliases )
        {
            // The new aliases we want to add
            CswCommaDelimitedString NewAliasesCommaDelimited = new CswCommaDelimitedString( NewAliases );
            CswCommaDelimitedString UpdatedAliases = UoMNode.AliasesAsDelimitedString;

            // Create a view of all UoM nodes and their Aliases property
            CswNbtView UoMView = _CswNbtSchemaModTrnsctn.makeView();
            CswNbtViewRelationship ParentRelationship = UoMView.AddViewRelationship( UoMOC, false );

            CswNbtMetaDataObjectClassProp AliasesOCP = UoMOC.getObjectClassProp( CswNbtObjClassUnitOfMeasure.PropertyName.Aliases );
            UoMView.AddViewProperty( ParentRelationship, AliasesOCP );

            CswCommaDelimitedString AliasesToRemove = new CswCommaDelimitedString();
            ICswNbtTree UoMNodesTree = _CswNbtSchemaModTrnsctn.getTreeFromView( UoMView, false );
            for( int i = 0; i < UoMNodesTree.getChildNodeCount(); i++ )
            {
                UoMNodesTree.goToNthChild( i );
                string CurrentNodeName = UoMNodesTree.getNodeNameForCurrentPosition();
                CswPrimaryKey CurrentNodeId = UoMNodesTree.getNodeIdForCurrentPosition();
                if( CurrentNodeId != UoMNode.NodeId )
                {
                    foreach( CswNbtTreeNodeProp TreeNodeProp in UoMNodesTree.getChildNodePropsOfNode() )
                    {
                        CswCommaDelimitedString CurrentUoMNodeAliases = new CswCommaDelimitedString();
                        CurrentUoMNodeAliases.FromString( TreeNodeProp.Gestalt, false, true );

                        foreach( string alias1 in NewAliasesCommaDelimited )
                        {
                            // If alias1 matches the NodeName or any of the Aliases on the Node, we don't want it
                            if( alias1.Equals( CurrentNodeName ) || CurrentUoMNodeAliases.Any( alias2 => alias1.Equals( alias2 ) ) )
                            {
                                AliasesToRemove.Add( alias1 );
                            }
                        }
                    }
                }
                UoMNodesTree.goToParentNode();
            }

            // Make the updated aliases for the node
            foreach( string alias1 in NewAliasesCommaDelimited )
            {
                if( false == AliasesToRemove.Contains( alias1 ) && false == UoMNode.AliasesAsDelimitedString.Contains( alias1 ) )
                {
                    UpdatedAliases.Add( alias1 );
                }
            }

            // Update the property value
            UoMNode.Aliases.Text = CswConvert.ToString( UpdatedAliases );
            UoMNode.postChanges( false );

        }//_updateAliasesValue()
        private void _validateAliasUniqueness()
        {
            // Create a view of all UoM nodes and their Aliases property
            CswNbtView             UoMView            = new CswNbtView(_CswNbtResources);
            CswNbtViewRelationship ParentRelationship = UoMView.AddViewRelationship(ObjectClass, true);

            CswNbtMetaDataObjectClassProp AliasesOCP = ObjectClass.getObjectClassProp(PropertyName.Aliases);

            UoMView.AddViewProperty(ParentRelationship, AliasesOCP);

            ICswNbtTree UoMNodesTree = _CswNbtResources.Trees.getTreeFromView(UoMView, false, false, false);

            for (int i = 0; i < UoMNodesTree.getChildNodeCount(); i++)
            {
                UoMNodesTree.goToNthChild(i);
                string        CurrentNodeName = UoMNodesTree.getNodeNameForCurrentPosition();
                CswPrimaryKey CurrentNodeId   = UoMNodesTree.getNodeIdForCurrentPosition();
                if (CurrentNodeId != NodeId)
                {
                    foreach (CswNbtTreeNodeProp TreeNodeProp in UoMNodesTree.getChildNodePropsOfNode())
                    {
                        CswCommaDelimitedString UoMNodeCommaDelimitedAliases = new CswCommaDelimitedString();
                        UoMNodeCommaDelimitedAliases.FromString(TreeNodeProp.Gestalt, false, true);

                        foreach (string Alias1 in AliasesAsDelimitedString)
                        {
                            // First check to see whether Alias1 matches the CurrentNodeName
                            if (Alias1.Equals(CurrentNodeName))
                            {
                                _aliasUniquenessViolated(UoMNodesTree, "Name", Alias1);
                            }

                            if (UoMNodeCommaDelimitedAliases.Any(Alias2 => Alias1.Equals(Alias2)))
                            {
                                _aliasUniquenessViolated(UoMNodesTree, "Alias", Alias1);
                            }
                        }
                    }
                }
                UoMNodesTree.goToParentNode();
            }
        }