コード例 #1
0
 public override void update()
 {
     CswNbtMetaDataPropertySet DocumentPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.DocumentSet );
     foreach( CswNbtMetaDataObjectClass DocumentOC in DocumentPS.getObjectClasses() )
     {
         CswNbtMetaDataObjectClassProp FileTypeOCP = DocumentOC.getObjectClassProp( CswNbtPropertySetDocument.PropertyName.FileType );
         _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( FileTypeOCP, CswEnumNbtObjectClassPropAttributes.readOnly, true );
     }
 } // update()
コード例 #2
0
        private void _upgradeMaterialSetOCNTPs()
        {
            CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet(CswEnumNbtPropertySetName.MaterialSet);

            foreach (CswNbtMetaDataObjectClass MaterialOC in MaterialPS.getObjectClasses())
            {
                _createGridOCPFromNTP(MaterialOC, CswNbtPropertySetMaterial.PropertyName.Documents);
                _createGridOCPFromNTP(MaterialOC, CswNbtPropertySetMaterial.PropertyName.Synonyms);
            }
        }
コード例 #3
0
            /// <summary>
            /// Secondary constructor for continuing work on a new Material node
            /// </summary>
            public NewMaterial(CswNbtResources CswNbtResources, CswNbtNode Node)
            {
                _NbtResources = CswNbtResources;
                CswNbtMetaDataPropertySet MaterialSet = Node.ObjClass.ObjectClass.getPropertySet();

                if (null == MaterialSet || MaterialSet.Name != CswEnumNbtPropertySetName.MaterialSet)
                {
                    throw new CswDniException(CswEnumErrorType.Warning, "Cannot create a new Material object without a valid Material Type.", "Could not resolve NodeType for NodeTypeId: " + NodeTypeId + ".");
                }
                this.Node = Node;
            }
コード例 #4
0
        protected override void OnDisable()
        {
            //Hide the following Container properties...
            //   Requests
            //   Submitted Requests
            CswNbtMetaDataObjectClass ContainerOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerClass);

            foreach (int NodeTypeId in ContainerOC.getNodeTypeIds().Keys)
            {
                _CswNbtResources.Modules.HideProp(NodeTypeId, CswNbtObjClassContainer.PropertyName.Request);
                _CswNbtResources.Modules.HideProp(NodeTypeId, CswNbtObjClassContainer.PropertyName.SubmittedRequests);
            }

            //Hide the following Inventory Group properties...
            //   Limit Request Delivery Location
            CswNbtMetaDataObjectClass InventoryGroupOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.InventoryGroupClass);

            foreach (int NodeTypeId in InventoryGroupOC.getNodeTypeIds().Keys)
            {
                _CswNbtResources.Modules.HideProp(NodeTypeId, CswNbtObjClassInventoryGroup.PropertyName.LimitRequestDeliveryLocation);
            }

            //Hide the following Location properties...
            //   Request Delivery Location
            CswNbtMetaDataObjectClass LocationOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.LocationClass);

            foreach (int NodeTypeId in LocationOC.getNodeTypeIds().Keys)
            {
                _CswNbtResources.Modules.HideProp(NodeTypeId, CswNbtObjClassLocation.PropertyName.RequestDeliveryLocation);
            }

            //Hide the following Material properties...
            //   Request Button
            CswNbtMetaDataPropertySet MaterialSet = _CswNbtResources.MetaData.getPropertySet(CswEnumNbtPropertySetName.MaterialSet);

            foreach (CswNbtMetaDataObjectClass MaterialOC in MaterialSet.getObjectClasses())
            {
                foreach (int NodeTypeId in MaterialOC.getNodeTypeIds().Keys)
                {
                    _CswNbtResources.Modules.HideProp(NodeTypeId, CswNbtObjClassChemical.PropertyName.Request);
                }
            }

            //Hide all views in the Requests category
            _CswNbtResources.Modules.ToggleViewsInCategory(true, "Requests", CswEnumNbtViewVisibility.Global);

            //Hide the request fulfiller Role/User
            _CswNbtResources.Modules.ToggleRoleNodes(true, "request_fulfiller");
            _CswNbtResources.Modules.ToggleUserNodes(true, "request_fulfiller");
            //TODO - Case 31274 - Add CISPro_Guardian Role/User to this list

            // Case 28930 - Disable Scheduled Rules
            _CswNbtResources.Modules.ToggleScheduledRule(CswEnumNbtScheduleRuleNames.GenRequest, Disabled: true);
        } // OnDisable()
コード例 #5
0
        public override void update()
        {
            CswTableUpdate JctPSOCPUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "29499_jctpsocp_update", "jct_propertyset_ocprop" );
            DataTable JctPSOCPTable = JctPSOCPUpdate.getEmptyTable();

            CswNbtMetaDataPropertySet DocumentPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.DocumentSet );
            foreach( CswNbtMetaDataObjectClass DocOC in DocumentPS.getObjectClasses() )
            {
                _createProps( DocOC, JctPSOCPTable, DocumentPS.PropertySetId );
            }

            JctPSOCPUpdate.update( JctPSOCPTable );
        } // update()
コード例 #6
0
        public override void update()
        {
            CswNbtMetaDataPropertySet RequestItemPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( "RequestItemSet" );
            if( null != RequestItemPS )
            {
                CswTableUpdate PropSetOCPUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "propSetRequestItemProps", "jct_propertyset_ocprop" );
                DataTable PropSetOCPTable = PropSetOCPUpdate.getTable( "where propertysetid = " + RequestItemPS.PropertySetId );
                foreach( DataRow Row in PropSetOCPTable.Rows )
                {
                    Row.Delete();
                }
                PropSetOCPUpdate.update( PropSetOCPTable );

                CswTableUpdate PropSetOCUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "propSetRequestItemProps", "jct_propertyset_objectclass" );
                DataTable PropSetOCTable = PropSetOCUpdate.getTable( "where propertysetid = " + RequestItemPS.PropertySetId );
                foreach( DataRow Row in PropSetOCTable.Rows )
                {
                    Row.Delete();
                }
                PropSetOCUpdate.update( PropSetOCTable );

                CswTableUpdate PropSetUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "propSetRequestItemProps", "property_set" );
                DataTable PropSetTable = PropSetUpdate.getTable( "where propertysetid = " + RequestItemPS.PropertySetId );
                foreach( DataRow Row in PropSetTable.Rows )
                {
                    Row.Delete();
                }
                PropSetUpdate.update( PropSetTable );
            }
            CswNbtMetaDataObjectClass RequestMaterialCreateOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( "RequestMaterialCreateClass" );
            if( null != RequestMaterialCreateOC )
            {
                _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClass( RequestMaterialCreateOC );
            }
            CswNbtMetaDataObjectClass RequestMaterialDispenseOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( "RequestMaterialDispenseClass" );
            if( null != RequestMaterialDispenseOC )
            {
                _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClass( RequestMaterialDispenseOC );
            }
            CswNbtMetaDataObjectClass RequestContainerDispenseOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( "RequestContainerDispenseClass" );
            if( null != RequestContainerDispenseOC )
            {
                _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClass( RequestContainerDispenseOC );
            }
            CswNbtMetaDataObjectClass RequestContainerUpdateOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( "RequestContainerUpdateClass" );
            if( null != RequestContainerUpdateOC )
            {
                _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClass( RequestContainerUpdateOC );
            }
        } // update()
コード例 #7
0
 public override void update()
 {
     CswNbtMetaDataObjectClass VendorOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.VendorClass );
     CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet );
     CswNbtMetaDataObjectClass ManufacturerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ManufacturerClass );
     if( null == ManufacturerOC )
     {
         ManufacturerOC = _CswNbtSchemaModTrnsctn.createObjectClass( CswEnumNbtObjectClass.ManufacturerClass, "box.png", true );
         _CswNbtSchemaModTrnsctn.createModuleObjectClassJunction( CswEnumNbtModuleName.MLM, ManufacturerOC.ObjectClassId );
         _CswNbtSchemaModTrnsctn.createObjectClassProp( ManufacturerOC, new CswNbtWcfMetaDataModel.ObjectClassProp( ManufacturerOC )
         {
             PropName = CswNbtObjClassManufacturer.PropertyName.Material,
             FieldType = CswEnumNbtFieldType.Relationship,
             IsFk = true,
             FkType = CswEnumNbtViewRelatedIdType.PropertySetId.ToString(),
             FkValue = MaterialPS.PropertySetId,
             IsRequired = true
         } );
         CswNbtView ManufacturingSiteView = _CswNbtSchemaModTrnsctn.makeView();
         CswNbtViewRelationship parent = ManufacturingSiteView.AddViewRelationship( VendorOC, true );
         CswNbtMetaDataObjectClassProp VendorTypeOCP = VendorOC.getObjectClassProp( CswNbtObjClassVendor.PropertyName.VendorTypeName );
         ManufacturingSiteView.AddViewPropertyAndFilter( parent,
                                                 MetaDataProp : VendorTypeOCP,
                                                 Value : CswNbtObjClassVendor.VendorTypes.Manufacturing,
                                                 FilterMode : CswEnumNbtFilterMode.Equals );
         ManufacturingSiteView.Visibility = CswEnumNbtViewVisibility.Property;
         ManufacturingSiteView.ViewName = "Manufacturing Site";
         _CswNbtSchemaModTrnsctn.createObjectClassProp( ManufacturerOC, new CswNbtWcfMetaDataModel.ObjectClassProp( ManufacturerOC )
         {
             PropName = CswNbtObjClassManufacturer.PropertyName.ManufacturingSite,
             FieldType = CswEnumNbtFieldType.Relationship,
             IsFk = true,
             FkType = CswEnumNbtViewRelatedIdType.ObjectClassId.ToString(),
             FkValue = VendorOC.ObjectClassId,
             IsRequired = true,
             ViewXml = ManufacturingSiteView.ToString()
         } );
         _CswNbtSchemaModTrnsctn.createObjectClassProp( ManufacturerOC, new CswNbtWcfMetaDataModel.ObjectClassProp( ManufacturerOC )
         {
             PropName = CswNbtObjClassManufacturer.PropertyName.Qualified,
             FieldType = CswEnumNbtFieldType.Logical
         } );
     }
     CswNbtMetaDataNodeType ManufacturerNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( ManufacturerOC )
                                                                                                   {
                                                                                                       NodeTypeName = "Manufacturer",
                                                                                                       Category = "MLM"
                                                                                                   } );
 } // update()
コード例 #8
0
        public override void update()
        {
            // Remove the C3SyncDate Property from the Material Property Set
            CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet );
            foreach( CswNbtMetaDataObjectClass CurrentObjectClass in MaterialPS.getObjectClasses() )
            {
                CswNbtMetaDataObjectClassProp C3SyncDateOCP = CurrentObjectClass.getObjectClassProp( "C3SyncDate" );
                if( null != C3SyncDateOCP )
                {
                    _CswNbtSchemaModTrnsctn.MetaData.DeleteJctPropertySetOcPropRow( C3SyncDateOCP );
                    _CswNbtSchemaModTrnsctn.MetaData.DeleteObjectClassProp( C3SyncDateOCP, true );
                }
            }

        } // update()
コード例 #9
0
 public override void update()
 {
     CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet );
     foreach( CswNbtMetaDataObjectClass objectClass in MaterialPS.getObjectClasses() )
     {
         foreach( CswNbtMetaDataNodeType nodeType in objectClass.getNodeTypes() )
         {
             CswNbtMetaDataNodeTypeProp LegacyMaterialIdNTP = nodeType.getNodeTypeProp( CswNbtPropertySetMaterial.PropertyName.LegacyMaterialId );
             if( null != LegacyMaterialIdNTP )
             {
                 LegacyMaterialIdNTP.removeFromAllLayouts();
             }
         }
     }
 } // update()
コード例 #10
0
ファイル: CswNbtSearch.cs プロジェクト: crfroehlich/legacy
        private CswNbtSearchFilter makeFilter(CswNbtMetaDataPropertySet PropertySet, Int32 ResultCount, bool Removeable, CswEnumNbtSearchPropOrderSourceType Source)
        {
            CswNbtSearchFilter ret = new CswNbtSearchFilter("Filter To",
                                                            CswEnumNbtSearchFilterType.propertyset,
                                                            "PS_" + PropertySet.PropertySetId.ToString(),
                                                            "All " + PropertySet.Name,
                                                            ResultCount,
                                                            PropertySet.IconFileName,
                                                            Removeable,
                                                            Source);

            ret.PropertySetId = PropertySet.PropertySetId;
            ret.UseMoreLink   = false;
            return(ret);
        }
        public override void update()
        {
            if( _CswNbtSchemaModTrnsctn.isMaster() )
            {
                CswNbtMetaDataPropertySet SchedulerSet = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.SchedulerSet );
                foreach( CswNbtMetaDataObjectClass ScheduleOc in SchedulerSet.getObjectClasses() )
                {
                    foreach( CswNbtNode Schedule in ScheduleOc.getNodes( forceReInit : false, includeSystemNodes : false ) )
                    {
                        ICswNbtPropertySetScheduler ISchedule = CswNbtPropSetCaster.AsPropertySetScheduler( Schedule );
                        ISchedule.Enabled.Checked = CswEnumTristate.False;
                        Schedule.postChanges( ForceUpdate: false );
                    }
                }

            }
        } // update()
コード例 #12
0
        public override void update()
        {
            MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet );
            ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );

            //Set FK Type on all material-related props to Material PropertySet
            setPropFK( CswEnumNbtObjectClass.SizeClass, CswNbtObjClassSize.PropertyName.Material, "Size" );
            setPropFK( CswEnumNbtObjectClass.DocumentClass, CswNbtObjClassDocument.PropertyName.Owner, "Material Document" );
            setPropFK( CswEnumNbtObjectClass.InventoryLevelClass, CswNbtObjClassInventoryLevel.PropertyName.Material, "Inventory Level" );
            setPropFK( CswEnumNbtObjectClass.ContainerClass, CswNbtObjClassContainer.PropertyName.Material, "Container" );
            setPropFK( CswEnumNbtObjectClass.MaterialSynonymClass, CswNbtObjClassMaterialSynonym.PropertyName.Material, "Material Synonym" );
            setPropFK( CswEnumNbtObjectClass.RequestContainerDispenseClass, CswNbtPropertySetRequestItem.PropertyName.Material, "Request Container Dispense" );
            setPropFK( CswEnumNbtObjectClass.RequestContainerUpdateClass, CswNbtPropertySetRequestItem.PropertyName.Material, "Request Container Update" );
            setPropFK( CswEnumNbtObjectClass.RequestMaterialCreateClass, CswNbtPropertySetRequestItem.PropertyName.Material, "Request Material Create" );
            setPropFK( CswEnumNbtObjectClass.RequestMaterialCreateClass, CswNbtObjClassRequestMaterialCreate.PropertyName.NewMaterialType, "Request Material Create" );
            setPropFK( CswEnumNbtObjectClass.RequestMaterialDispenseClass, CswNbtPropertySetRequestItem.PropertyName.Material, "Request Material Dispense" );
            //Set FK Type on all chemical-related props to Chemical ObjectClass
            setPropFK( CswEnumNbtObjectClass.DocumentClass, CswNbtObjClassDocument.PropertyName.Owner, "SDS Document", true );
            setPropFK( CswEnumNbtObjectClass.GHSClass, CswNbtObjClassGHS.PropertyName.Material, "GHS", true );
            setPropFK( CswEnumNbtObjectClass.ReceiptLotClass, CswNbtObjClassReceiptLot.PropertyName.Material, "Receipt Lot", true );
            setPropFK( CswEnumNbtObjectClass.ManufacturerEquivalentPartClass, CswNbtObjClassManufacturerEquivalentPart.PropertyName.Material, "Manufacturing Equivalent Part", true );
            setPropFK( CswEnumNbtObjectClass.MaterialComponentClass, CswNbtObjClassMaterialComponent.PropertyName.Constituent, "Material Component", true );
            setPropFK( CswEnumNbtObjectClass.MaterialComponentClass, CswNbtObjClassMaterialComponent.PropertyName.Mixture, "Material Component", true );

            //Update all Material grid prop views to use MaterialSet as root relationship
            foreach( CswNbtMetaDataObjectClass MatOC in MaterialPS.getObjectClasses() )
            {
                foreach( CswNbtMetaDataNodeType MaterialNT in MatOC.getNodeTypes() )
                {
                    if( null != MaterialNT )
                    {
                        _updateSynonymsView( MaterialNT );
                        _updateDocumentsView( MaterialNT );
                        _updateSizesView( MaterialNT );
                        _updateInventoryLevelsView( MaterialNT );
                        _updateContainersView( MaterialNT );
                    }
                }
            }

            //Update ViewSelect views to use proper Material root relationship
            _updateUnapprovedMaterialsView();
            _updateMissingHazardClassesView();

        } // update()
コード例 #13
0
        public override void update()
        {

            CswNbtMetaDataPropertySet materialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet );
            foreach( CswNbtMetaDataObjectClass objectClass in materialPS.getObjectClasses() )
            {
                foreach( CswNbtMetaDataNodeType nodeType in objectClass.getNodeTypes() )
                {
                    CswNbtMetaDataNodeTypeTab documentsTab = nodeType.getNodeTypeTab( "Documents" );
                    CswNbtMetaDataNodeTypeProp documentsNT = nodeType.getNodeTypeProp( "Documents" );
                    if( null != documentsNT && null != documentsTab )
                    {
                        _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Edit, nodeType.NodeTypeId, documentsNT, true, documentsTab.TabId );
                    }
                }
            }

        } // update()
コード例 #14
0
        public override void update()
        {
            List<CswPrimaryKey> MaterialPKs = new List<CswPrimaryKey>();

            //Rename all existing material demo data
            CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet );

            foreach( CswNbtMetaDataObjectClass MatOC in MaterialPS.getObjectClasses() )
            {
                foreach( CswNbtPropertySetMaterial DemoMaterial in MatOC.getNodes( false, false, false ) )
                {
                    if( DemoMaterial.IsDemo )
                    {
                        MaterialPKs.Add( DemoMaterial.NodeId );
                        DemoMaterial.TradeName.Text = DemoMaterial.TradeName.Text.Replace( "Default", "(demo)" );
                        DemoMaterial.ApprovedForReceiving.Checked = CswEnumTristate.True;
                        DemoMaterial.postChanges( false );
                    }
                }
            }

            //Fix existing demo material sizes
            CswNbtMetaDataObjectClass SizeOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.SizeClass );
            foreach( CswNbtObjClassSize DemoSize in SizeOC.getNodes( false, false ) )
            {
                if( DemoSize.IsDemo && MaterialPKs.Contains( DemoSize.Material.RelatedNodeId ) )
                {
                    DemoSize.InitialQuantity.Quantity = 10;
                    CswNbtPropertySetMaterial DemoMaterial = _CswNbtSchemaModTrnsctn.Nodes[DemoSize.Material.RelatedNodeId];
                    if( DemoMaterial.ObjectClass.ObjectClass == CswEnumNbtObjectClass.NonChemicalClass )
                    {
                        CswNbtObjClassUnitOfMeasure CasesUnit = _getUnit( "Unit (Each)", "Cases" );
                        if( null != CasesUnit )
                        {
                            DemoSize.InitialQuantity.UnitId = CasesUnit.NodeId;
                            DemoSize.InitialQuantity.View.Root.ChildRelationships.Clear();
                            DemoSize.InitialQuantity.View.AddViewRelationship( CasesUnit.NodeType, true );
                            DemoSize.InitialQuantity.View.save();
                        }
                    }
                    DemoSize.postChanges( false );
                }
            }
        } // update()
コード例 #15
0
        /// <summary>
        /// The actual update call
        /// </summary>
        public override void update()
        {
            CswNbtMetaDataPropertySet MaterialSet = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet(CswEnumNbtPropertySetName.MaterialSet);

            foreach (CswNbtMetaDataObjectClass MaterialOC in MaterialSet.getObjectClasses())
            {
                CswNbtMetaDataObjectClassProp ExpirationLockedOCP = MaterialOC.getObjectClassProp(CswNbtPropertySetMaterial.PropertyName.ContainerExpirationLocked);
                if (null == ExpirationLockedOCP)
                {
                    ExpirationLockedOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MaterialOC, new CswNbtWcfMetaDataModel.ObjectClassProp
                    {
                        PropName    = CswNbtPropertySetMaterial.PropertyName.ContainerExpirationLocked,
                        FieldType   = CswEnumNbtFieldType.Logical,
                        SetValOnAdd = false,
                        IsRequired  = true
                    });
                    _CswNbtSchemaModTrnsctn.MetaData.SetObjectClassPropDefaultValue(ExpirationLockedOCP, CswEnumTristate.True, CswEnumNbtSubFieldName.Checked);
                }
            }
        }
コード例 #16
0
        private void _recurseTree(ICswNbtTree results, CswNbtAPITree.CswNbtTreeResource Parent)
        {
            for (int i = 0; i < results.getChildNodeCount(); i++)
            {
                results.goToNthChild(i);
                CswNbtNodeKey             NodeKey     = results.getNodeKeyForCurrentPosition();
                string                    Name        = results.getNodeNameForCurrentPosition();
                CswNbtMetaDataNodeType    nt          = _CswNbtResources.MetaData.getNodeType(NodeKey.NodeTypeId);
                CswNbtMetaDataObjectClass oc          = nt.getObjectClass();
                CswNbtMetaDataPropertySet propSet     = oc.getPropertySet();
                string                    PropSetName = string.Empty;
                if (null != propSet)
                {
                    PropSetName = propSet.Name;
                }

                CswNbtAPITree.CswNbtTreeResource SubParent = Parent.Add(Name, NodeKey.NodeId, nt.NodeTypeName, oc.ObjectClassName, PropSetName, string.Empty);
                _recurseTree(results, SubParent);
                results.goToParentNode();
            }
        }
コード例 #17
0
        public override void update()
        {
            // Create OpenUrl DocumentPS property
            CswTableUpdate JctPSOCPUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "31210_jctpsocp_update", "jct_propertyset_ocprop" );
            DataTable JctPSOCPTable = JctPSOCPUpdate.getEmptyTable();

            CswNbtMetaDataPropertySet DocumentPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.DocumentSet );
            foreach( CswNbtMetaDataObjectClass DocOC in DocumentPS.getObjectClasses() )
            {
                CswNbtMetaDataObjectClassProp OpenFileOCP = DocOC.getObjectClassProp( CswNbtPropertySetDocument.PropertyName.OpenFile );
                if( null == OpenFileOCP )
                {
                    OpenFileOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( DocOC, new CswNbtWcfMetaDataModel.ObjectClassProp( DocOC )
                    {
                        PropName = CswNbtPropertySetDocument.PropertyName.OpenFile,
                        FieldType = CswEnumNbtFieldType.Button
                    } );

                    DataRow NewJctPSOCPRow = JctPSOCPTable.NewRow();
                    NewJctPSOCPRow["objectclasspropid"] = OpenFileOCP.PropId;
                    NewJctPSOCPRow["propertysetid"] = CswConvert.ToDbVal( DocumentPS.PropertySetId );
                    JctPSOCPTable.Rows.Add( NewJctPSOCPRow );
                }
            }
            JctPSOCPUpdate.update( JctPSOCPTable );

            // Create ChemWatch property on SDSDocumentOC
            CswNbtMetaDataObjectClass SDSDocumentOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.SDSDocumentClass );
            CswNbtMetaDataObjectClassProp ChemWatchOCP = SDSDocumentOC.getObjectClassProp( CswNbtObjClassSDSDocument.PropertyName.ChemWatch );
            if( null == ChemWatchOCP )
            {
                _CswNbtSchemaModTrnsctn.createObjectClassProp( SDSDocumentOC, new CswNbtWcfMetaDataModel.ObjectClassProp( SDSDocumentOC )
                    {
                        PropName = CswNbtObjClassSDSDocument.PropertyName.ChemWatch,
                        FieldType = CswEnumNbtFieldType.Text,
                        ReadOnly = true
                    } );
            }

        } // update()
コード例 #18
0
 public void GetCollection(CswNbtResourceCollection Return, CswNbtAPIGenericRequest GenericRequest)
 {
     if (hasPermission(GenericRequest, Return))
     {
         try
         {
             CswNbtMetaDataNodeType NodeType = _CswNbtResources.MetaData.getNodeType(GenericRequest.MetaDataName);
             if (null != NodeType)
             {
                 CswNbtView GetNodeTypeView = new CswNbtView(_CswNbtResources);
                 GetNodeTypeView.AddViewRelationship(NodeType, false);
                 ICswNbtTree tree = _CswNbtResources.Trees.getTreeFromView(GetNodeTypeView, true, false, false);
                 for (int i = 0; i < tree.getChildNodeCount(); i++)
                 {
                     tree.goToNthChild(i);
                     CswNbtNodeKey             nodeKey     = tree.getNodeKeyForCurrentPosition();
                     CswPrimaryKey             nodeId      = tree.getNodeIdForCurrentPosition();
                     CswNbtMetaDataObjectClass objectClass = _CswNbtResources.MetaData.getObjectClass(nodeKey.ObjectClassId);
                     CswNbtMetaDataPropertySet propSet     = objectClass.getPropertySet();
                     string propSetStr = string.Empty;
                     if (null != propSet)
                     {
                         propSetStr = propSet.Name;
                     }
                     string nodeName = tree.getNodeNameForCurrentPosition();
                     Return.Add(nodeName, nodeId, NodeType.NodeTypeName, objectClass.ObjectClassName, propSetStr, BuildURI(NodeType.NodeTypeName, nodeKey.NodeId.PrimaryKey));
                     tree.goToParentNode();
                 }
             }
             else
             {
                 Return.Status = HttpStatusCode.NotFound;
             }
         }
         catch (Exception)
         {
             Return.Status = HttpStatusCode.InternalServerError;
         }
     }
 }
コード例 #19
0
        public void RunTree(CswNbtAPITree Return, int ViewIdInt)
        {
            try
            {
                CswNbtViewId ViewId = new CswNbtViewId(ViewIdInt);
                CswNbtView   View   = _CswNbtResources.ViewSelect.restoreView(ViewId);
                if (null != View)
                {
                    ICswNbtTree results = _CswNbtResources.Trees.getTreeFromView(View, true, false, false);
                    for (int i = 0; i < results.getChildNodeCount(); i++)
                    {
                        results.goToNthChild(i);
                        CswNbtNodeKey             NodeKey     = results.getNodeKeyForCurrentPosition();
                        string                    Name        = results.getNodeNameForCurrentPosition();
                        CswNbtMetaDataNodeType    nt          = _CswNbtResources.MetaData.getNodeType(NodeKey.NodeTypeId);
                        CswNbtMetaDataObjectClass oc          = nt.getObjectClass();
                        CswNbtMetaDataPropertySet propSet     = oc.getPropertySet();
                        string                    PropSetName = string.Empty;
                        if (null != propSet)
                        {
                            PropSetName = propSet.Name;
                        }

                        CswNbtAPITree.CswNbtTreeResource Parent = Return.Add(Name, NodeKey.NodeId, nt.NodeTypeName, oc.ObjectClassName, PropSetName, BuildURI(nt.NodeTypeName, NodeKey.NodeId.PrimaryKey));
                        _recurseTree(results, Parent);
                        results.goToParentNode();
                    }

                    Return.Status = HttpStatusCode.OK;
                }
                else
                {
                    Return.Status = HttpStatusCode.NotFound;
                }
            }
            catch (Exception)
            {
                Return.Status = HttpStatusCode.InternalServerError;
            }
        }
コード例 #20
0
        public override void update()
        {

            //Last Modified By and Last Modified On are only on Edit layouts
            CswNbtMetaDataPropertySet DocumentPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.DocumentSet );
            foreach( CswNbtMetaDataObjectClass DocumentOC in DocumentPS.getObjectClasses() )
            {
                foreach( CswNbtMetaDataNodeType DocumentNT in DocumentOC.getNodeTypes() )
                {
                    CswNbtMetaDataNodeTypeTab firstTab = DocumentNT.getFirstNodeTypeTab();

                    CswNbtMetaDataNodeTypeProp LastModifiedOnNTP = DocumentNT.getNodeTypePropByObjectClassProp( CswNbtPropertySetDocument.PropertyName.LastModifiedOn );
                    LastModifiedOnNTP.removeFromAllLayouts();
                    _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Edit, DocumentNT.NodeTypeId, LastModifiedOnNTP, false, firstTab.TabId );

                    CswNbtMetaDataNodeTypeProp LastModifiedByNTP = DocumentNT.getNodeTypePropByObjectClassProp( CswNbtPropertySetDocument.PropertyName.LastModifiedBy );
                    LastModifiedByNTP.removeFromAllLayouts();
                    _CswNbtSchemaModTrnsctn.MetaData.NodeTypeLayout.updatePropLayout( CswEnumNbtLayoutType.Edit, DocumentNT.NodeTypeId, LastModifiedByNTP, false, firstTab.TabId );
                }
            }

        } // update()
コード例 #21
0
        } // _toggleConstituentProps()

        public override void addDefaultViewFilters( CswNbtViewRelationship ParentRelationship )
        {
            // Not IsConstituent
            ICswNbtMetaDataProp IsConstituentProp = null;
            // Exclude Materials that have Obsolete == true
            ICswNbtMetaDataProp ObsoleteProp = null;

            CswNbtMetaDataPropertySet materialPs = _CswNbtResources.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet );
            CswNbtMetaDataObjectClass firstMaterialOc = materialPs.getObjectClasses().FirstOrDefault();

            // Case 30136 - don't add this filter if the ownertype is nodetype
            if( ParentRelationship.getOwnerType() == CswEnumNbtViewRelatedIdType.ObjectClassId )
            {
                CswNbtMetaDataObjectClass ObjClass = ParentRelationship.getObjClassOwner();
                IsConstituentProp = ObjClass.getObjectClassProp( PropertyName.IsConstituent );
            }
            else if( ParentRelationship.getOwnerType() == CswEnumNbtViewRelatedIdType.PropertySetId )
            {
                //Bug - We're adding the Chemical IsConstituent property here, but for NTPs treeloader works by PropName. Not ideal, but works unless the propname changes
                IsConstituentProp = firstMaterialOc.getObjectClassProp( PropertyName.IsConstituent ).getNodeTypeProps().FirstOrDefault();
            }

            if( null != IsConstituentProp )
            {
                CswNbtViewProperty viewProp1 = ParentRelationship.View.AddViewProperty( ParentRelationship, IsConstituentProp );
                viewProp1.ShowInGrid = false;
                ParentRelationship.View.AddViewPropertyFilter( viewProp1, FilterMode : CswEnumNbtFilterMode.NotEquals, Value : CswEnumTristate.True );
            }

            ObsoleteProp = firstMaterialOc.getObjectClassProp( PropertyName.Obsolete );
            if( null != ObsoleteProp )
            {
                CswNbtViewProperty viewProp2 = ParentRelationship.View.AddViewProperty( ParentRelationship, ObsoleteProp );
                viewProp2.ShowInGrid = false;
                ParentRelationship.View.AddViewPropertyFilter( viewProp2, FilterMode : CswEnumNbtFilterMode.NotEquals, Value : CswEnumTristate.True, ShowAtRuntime : true );
            }

            onPropertySetAddDefaultViewFilters( ParentRelationship );
        }
コード例 #22
0
        public void Search(CswNbtResourceCollection Return, CswNbtApiSearchRequest SearchRequest)
        {
            try
            {
                int filter_nt_id = Int32.MinValue;
                if (false == String.IsNullOrEmpty(SearchRequest.NodeType))
                {
                    filter_nt_id = _CswNbtResources.MetaData.getNodeType(SearchRequest.NodeType).NodeTypeId;
                }

                CswNbtWebServiceSearch searchService = new CswNbtWebServiceSearch(_CswNbtResources, null);
                CswNbtSearch           search        = searchService.getSearch(SearchRequest.Query, SearchRequest.SearchType, filter_nt_id, Int32.MinValue, Int32.MinValue);
                ICswNbtTree            results       = search.Results();
                for (int i = 0; i < results.getChildNodeCount(); i++)
                {
                    results.goToNthChild(i);
                    CswNbtNodeKey             NodeKey     = results.getNodeKeyForCurrentPosition();
                    string                    Name        = results.getNodeNameForCurrentPosition();
                    CswNbtMetaDataNodeType    nt          = _CswNbtResources.MetaData.getNodeType(NodeKey.NodeTypeId);
                    CswNbtMetaDataObjectClass oc          = nt.getObjectClass();
                    CswNbtMetaDataPropertySet propSet     = oc.getPropertySet();
                    string                    PropSetName = string.Empty;
                    if (null != propSet)
                    {
                        PropSetName = propSet.Name;
                    }

                    Return.Add(Name, NodeKey.NodeId, nt.NodeTypeName, oc.ObjectClassName, PropSetName, BuildURI(nt.NodeTypeName, NodeKey.NodeId.PrimaryKey));
                    results.goToParentNode();
                }

                Return.Status = HttpStatusCode.OK;
            }
            catch (Exception)
            {
                Return.Status = HttpStatusCode.InternalServerError;
            }
        }
        private void _createPermissionPropertySet()
        {
            CswNbtMetaDataPropertySet PermissionPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet(CswEnumNbtPropertySetName.PermissionSet);

            if (null == PermissionPS)
            {
                PermissionPS = _CswNbtSchemaModTrnsctn.MetaData.makeNewPropertySet(CswEnumNbtPropertySetName.PermissionSet, "check.png");

                CswTableUpdate JctPSOCUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate("29570_jctpsoc_update", "jct_propertyset_objectclass");
                DataTable      JctPSOCTable  = JctPSOCUpdate.getEmptyTable();
                _addObjClassToPropertySetPermission(JctPSOCTable, CswEnumNbtObjectClass.InventoryGroupPermissionClass, PermissionPS.PropertySetId);
                _addObjClassToPropertySetPermission(JctPSOCTable, CswEnumNbtObjectClass.ReportGroupPermissionClass, PermissionPS.PropertySetId);
                _addObjClassToPropertySetPermission(JctPSOCTable, CswEnumNbtObjectClass.MailReportGroupPermissionClass, PermissionPS.PropertySetId);
                JctPSOCUpdate.update(JctPSOCTable);

                CswTableUpdate JctPSOCPUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate("29570_jctpsocp_update", "jct_propertyset_ocprop");
                DataTable      JctPSOCPTable  = JctPSOCPUpdate.getEmptyTable();
                _addObjClassPropsToPropertySetPermission(JctPSOCPTable, CswEnumNbtObjectClass.InventoryGroupPermissionClass, PermissionPS.PropertySetId);
                _addObjClassPropsToPropertySetPermission(JctPSOCPTable, CswEnumNbtObjectClass.ReportGroupPermissionClass, PermissionPS.PropertySetId);
                _addObjClassPropsToPropertySetPermission(JctPSOCPTable, CswEnumNbtObjectClass.MailReportGroupPermissionClass, PermissionPS.PropertySetId);
                JctPSOCPUpdate.update(JctPSOCPTable);
            }
        }
コード例 #24
0
 public void GetResource(CswNbtResource Return, CswNbtAPIGenericRequest GenericRequest)
 {
     if (hasPermission(GenericRequest, Return))
     {
         try
         {
             CswNbtNode Node = _CswNbtResources.Nodes.GetNode(GenericRequest.NodeId);
             if (null != Node && GenericRequest.MetaDataName.ToLower() == Node.getNodeType().NodeTypeName.ToLower())
             {
                 Return.NodeId      = GenericRequest.NodeId;
                 Return.NodeName    = Node.NodeName;
                 Return.NodeType    = Node.getNodeType().NodeTypeName;
                 Return.ObjectClass = Node.ObjClass.ObjectClass.ObjectClassName;
                 CswNbtMetaDataPropertySet propSet = Node.getObjectClass().getPropertySet();
                 if (null != propSet)
                 {
                     Return.PropertySet = propSet.Name;
                 }
                 Return.URI          = BuildURI(Return.NodeType, Node.NodeId.PrimaryKey);
                 Return.PropertyData = GetPropertyData(Node);
             }
             else
             {
                 Return.Status = HttpStatusCode.NotFound;
             }
         }
         catch (Exception)
         {
             Return.Status = HttpStatusCode.InternalServerError;
         }
     }
     else
     {
         Return.Status = HttpStatusCode.Forbidden;
     }
 }
コード例 #25
0
        public override void update()
        {
            CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet );
            foreach( CswNbtMetaDataObjectClass MaterialOC in MaterialPS.getObjectClasses() )
            {
                // Set default value for Obsolete property on Materials to false
                // Remove obsolete from Add layout
                CswNbtMetaDataObjectClassProp ManufacturerSitesOCP = MaterialOC.getObjectClassProp( CswNbtPropertySetMaterial.PropertyName.ManufacturingSites );
                CswNbtView ManufacturersView = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( "ManufacturingSites", CswEnumNbtViewVisibility.Property );

                // Set view on nodetypes
                foreach( CswNbtMetaDataNodeType MaterialNT in MaterialOC.getNodeTypes() )
                {
                    CswNbtMetaDataNodeTypeProp ObsoleteNTP = MaterialNT.getNodeTypeProp( CswNbtPropertySetMaterial.PropertyName.Obsolete );
                    //ObsoleteNTP.getDefaultValue( true ).AsLogical.Checked = CswEnumTristate.False;
                    ObsoleteNTP.DesignNode.AttributeProperty[CswEnumNbtPropertyAttributeName.DefaultValue].AsLogical.Checked = CswEnumTristate.False;
                    ObsoleteNTP.removeFromLayout( CswEnumNbtLayoutType.Add );

                    CswNbtMetaDataNodeTypeProp GridNTP = MaterialNT.getNodeTypePropByObjectClassProp( CswNbtPropertySetMaterial.PropertyName.ManufacturingSites );
                    GridNTP.ViewId.set( ManufacturersView.ViewId.get() );
                }
            }

        } // update()
コード例 #26
0
        public override void update()
        {
            // Add property reference property to Container
            CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswEnumNbtPropertySetName.MaterialSet );
            CswNbtMetaDataObjectClassProp ObsoleteOCP = MaterialPS.getObjectClasses().FirstOrDefault().getObjectClassProp( CswNbtPropertySetMaterial.PropertyName.Obsolete );

            CswNbtMetaDataObjectClass ContainerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ContainerClass );
            CswNbtMetaDataObjectClassProp MaterialOCP = ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.Material );
            CswNbtMetaDataObjectClassProp MaterialObsoleteOCP = ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.MaterialObsolete );
            if( null == MaterialObsoleteOCP )
            {
                MaterialObsoleteOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( ContainerOC, new CswNbtWcfMetaDataModel.ObjectClassProp( ContainerOC )
                {
                    PropName = CswNbtObjClassContainer.PropertyName.MaterialObsolete,
                    FieldType = CswEnumNbtFieldType.PropertyReference,
                    IsFk = true,
                    FkType = CswEnumNbtViewPropIdType.ObjectClassPropId.ToString(),
                    FkValue = MaterialOCP.PropId,
                    ValuePropId = ObsoleteOCP.PropId,
                    ValuePropType = CswEnumNbtViewPropIdType.ObjectClassPropId.ToString()
                } );
            }

        } // update()
コード例 #27
0
        } // getObjectClasses()

        /// <summary>
        /// Get a list of all NodeTypes, optionally limited according to supplied parameters
        /// </summary>
        /// <param name="ObjectClass">(Optional) An Object Class to constrain results.</param>
        /// <param name="ExcludeNodeTypeIds">(Optional) A comma-delimited string of NodeTypeIds to exclude from the return.</param>
        /// <param name="RelationshipTargetNodeTypeId">(Optional [Requires RelationshipObjectClassPropName])
        /// <para>A related NodeTypeId to further constrain the results to nodetypes whose relationship targets the supplied RelationshipTargetNodeTypeId</para>
        /// <para>Use case: get all nodetypes of Size object class whose Material relationships target Chemicals.</para>
        /// </param>
        /// <param name="RelationshipObjectClassPropName">(Optional [Requires RelationshipObjectClassPropName])
        /// <para>The name of the Object Class Prop which defines the relationship to RelationshipTargetNodeTypeId</para>
        /// <param name="FilterToPermission">Restrict nodeTypes to those to which the user has this permission (default is 'View')</param>
        /// <param name="FilterToViewId">(Optional) Limit to nodetypes within this view</param>
        /// <param name="Searchable">If true, only include searchable nodetypes</param>
        /// <returns></returns>
        public JObject getNodeTypes(CswNbtMetaDataPropertySet PropertySet  = null,
                                    CswNbtMetaDataObjectClass ObjectClass  = null,
                                    string ExcludeNodeTypeIds              = "",
                                    Int32 RelationshipTargetNodeTypeId     = Int32.MinValue,
                                    string RelationshipObjectClassPropName = "",
                                    Int32 RelationshipNodeTypePropId       = Int32.MinValue,
                                    string FilterToPermission              = null,
                                    CswNbtView FilterToView = null,
                                    bool Searchable         = false)
        {
            JObject ReturnVal = new JObject();

            if (string.IsNullOrEmpty(FilterToPermission))
            {
                // We default the Permission type to 'View'
                FilterToPermission = CswEnumNbtNodeTypePermission.View;
            }

            CswCommaDelimitedString ExcludedNodeTypes = new CswCommaDelimitedString();
            Collection <Int32>      ExcludedIds       = new Collection <Int32>();

            if (false == string.IsNullOrEmpty(ExcludeNodeTypeIds))
            {
                ExcludedNodeTypes.FromString(ExcludeNodeTypeIds);
                ExcludedIds = ExcludedNodeTypes.ToIntCollection();
            }

            IEnumerable <CswNbtMetaDataNodeType> NodeTypes;

            if (Int32.MinValue != RelationshipNodeTypePropId)
            {
                CswNbtMetaDataNodeTypeProp RelationshipProp = _CswNbtResources.MetaData.getNodeTypeProp(RelationshipNodeTypePropId);
                NodeTypes = _CswNbtResources.MetaData.getNodeTypes().Where(nt => RelationshipProp.FkMatches(nt));
            }
            else if (null != FilterToView)
            {
                NodeTypes = new Collection <CswNbtMetaDataNodeType>();
                Collection <CswNbtViewRelationship> relationships = FilterToView.getAllNbtViewRelationships();
                foreach (CswNbtViewRelationship rel in relationships)
                {
                    if (rel.SecondType == CswEnumNbtViewRelatedIdType.NodeTypeId)
                    {
                        ((Collection <CswNbtMetaDataNodeType>)NodeTypes).Add(_CswNbtResources.MetaData.getNodeType(rel.SecondId));
                    }
                    else if (rel.SecondType == CswEnumNbtViewRelatedIdType.ObjectClassId)
                    {
                        NodeTypes = NodeTypes.Union(_CswNbtResources.MetaData.getObjectClass(rel.SecondId).getNodeTypes());
                    }
                    else if (rel.SecondType == CswEnumNbtViewRelatedIdType.PropertySetId)
                    {
                        NodeTypes = NodeTypes.Union(_CswNbtResources.MetaData.getPropertySet(rel.SecondId).getNodeTypes());
                    }
                }
            }
            else if (null != PropertySet)
            {
                List <CswNbtMetaDataNodeType> NTs = new List <CswNbtMetaDataNodeType>();
                foreach (CswNbtMetaDataObjectClass OC in PropertySet.getObjectClasses())
                {
                    NTs.AddRange(OC.getLatestVersionNodeTypes());
                }
                NodeTypes = NTs;
            }
            else if (null == ObjectClass)
            {
                NodeTypes = _CswNbtResources.MetaData.getNodeTypesLatestVersion();
            }
            else
            {
                NodeTypes = ObjectClass.getLatestVersionNodeTypes();
                ReturnVal["objectClassId"] = ObjectClass.ObjectClassId;
            }

            Int32 NodeTypeCount = 0;

            foreach (CswNbtMetaDataNodeType RetNodeType in NodeTypes
                     .Where(_RetNodeType => (false == Searchable || _RetNodeType.IsSearchResult()))
                     .OrderBy(_RetNodeType => _RetNodeType.NodeTypeName))
            {
                bool AddThisNodeType = false;
                if (false == ExcludedIds.Contains(RetNodeType.NodeTypeId))
                {
                    AddThisNodeType = true;
                    if (Int32.MinValue != RelationshipTargetNodeTypeId &&
                        false == string.IsNullOrEmpty(RelationshipObjectClassPropName))
                    {
                        CswNbtMetaDataNodeTypeProp RelationshipNtp = RetNodeType.getNodeTypePropByObjectClassProp(RelationshipObjectClassPropName);
                        if (null != RelationshipNtp &&
                            RelationshipNtp.getFieldTypeValue() == CswEnumNbtFieldType.Relationship)
                        {
                            CswNbtMetaDataNodeType RelatedNodeType = _CswNbtResources.MetaData.getNodeType(RelationshipTargetNodeTypeId);
                            if (null == RelatedNodeType ||
                                false == RelationshipNtp.FkMatches(RelatedNodeType, true))
                            {
                                AddThisNodeType = false;
                            }
                        }
                    }
                    if (false == _userHasPermission(FilterToPermission, RetNodeType))
                    {
                        AddThisNodeType = false;
                    }
                }

                if (AddThisNodeType)
                {
                    _addNodeTypeAttributes(RetNodeType, ReturnVal);
                    NodeTypeCount += 1;
                }
            }

            ReturnVal["count"] = NodeTypeCount;
            return(ReturnVal);
        } // getNodeTypes()
コード例 #28
0
        public override void update()
        {
            CswNbtMetaDataObjectClass ChemicalOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass );

            CswNbtMetaDataNodeType ConstituentNT = null;
            Collection<CswNbtMetaDataNodeType> ChemicalNTs = new Collection<CswNbtMetaDataNodeType>();
            foreach( CswNbtMetaDataNodeType NodeType in _CswNbtSchemaModTrnsctn.MetaData.getNodeTypes( CswEnumNbtObjectClass.ChemicalClass ) )
            {
                if( NodeType.NodeTypeName == "Constituent" )
                {
                    ConstituentNT = NodeType;
                }
                else
                {
                    ChemicalNTs.Add( NodeType );
                }
            }

            if( null != ConstituentNT && ChemicalNTs.Count > 0 )
            {
                //4. Change Components Consituent property to point to the Constituent NT
                CswNbtMetaDataObjectClass ComponentOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.MaterialComponentClass );

                // Only Constituents for 'Constituent' property
                CswNbtMetaDataObjectClassProp ComponentConstituentOCP = ComponentOC.getObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Constituent );
                {
                    CswNbtView ocConstituentView = _CswNbtSchemaModTrnsctn.makeView();
                    ocConstituentView.ViewName = "Constituent View";
                    CswNbtViewRelationship rel1 = ocConstituentView.AddViewRelationship( ChemicalOC, false );
                    ocConstituentView.AddViewPropertyAndFilter( rel1,
                                                                ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.IsConstituent ),
                                                                FilterMode: CswEnumNbtFilterMode.Equals,
                                                                Value: CswEnumTristate.True.ToString() );
                    _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( ComponentConstituentOCP, CswEnumNbtObjectClassPropAttributes.viewxml, ocConstituentView.ToString() );
                }
                // Exclude Constituents from 'Mixture' property
                CswNbtMetaDataObjectClassProp ComponentMixtureOCP = ComponentOC.getObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Mixture );
                {
                    CswNbtView ocMixtureView = _CswNbtSchemaModTrnsctn.makeView();
                    ocMixtureView.ViewName = "Mixture View";
                    CswNbtViewRelationship rel2 = ocMixtureView.AddViewRelationship( ChemicalOC, false );
                    ocMixtureView.AddViewPropertyAndFilter( rel2,
                                                            ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.IsConstituent ),
                                                            FilterMode: CswEnumNbtFilterMode.NotEquals,
                                                            Value: CswEnumTristate.True.ToString() );
                    _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( ComponentMixtureOCP, CswEnumNbtObjectClassPropAttributes.viewxml, ocMixtureView.ToString() );
                }
                // Fix views on existing nodetypes
                foreach( CswNbtMetaDataNodeType ComponentNT in ComponentOC.getNodeTypes() )
                {
                    // Only Constituents for 'Constituent' property
                    {
                        CswNbtMetaDataNodeTypeProp ComponentConstituentNTP = ComponentNT.getNodeTypePropByObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Constituent );
                        ComponentConstituentNTP.SetFK( CswEnumNbtViewRelatedIdType.NodeTypeId.ToString(), ConstituentNT.NodeTypeId );

                        CswNbtView ntConstituentView = _CswNbtSchemaModTrnsctn.restoreView( ComponentConstituentNTP.ViewId );
                        ntConstituentView.Root.ChildRelationships.Clear();
                        CswNbtViewRelationship rel3 = ntConstituentView.AddViewRelationship( ConstituentNT, false );
                        //ntConstituentView.AddViewPropertyAndFilter( rel3,
                        //                                            ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.IsConstituent ),
                        //                                            FilterMode: CswEnumNbtFilterMode.Equals,
                        //                                            Value: CswEnumTristate.True.ToString() );
                        ntConstituentView.save();
                    }
                    // Exclude Constituents from 'Mixture' property
                    {
                        CswNbtMetaDataNodeTypeProp ComponentMixtureNTP = ComponentNT.getNodeTypePropByObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Mixture );
                        CswNbtView ntMixtureView = _CswNbtSchemaModTrnsctn.restoreView( ComponentMixtureNTP.ViewId );
                        ntMixtureView.Root.ChildRelationships.Clear();
                        CswNbtViewRelationship rel4 = ntMixtureView.AddViewRelationship( ChemicalOC, false );
                        ntMixtureView.AddViewPropertyAndFilter( rel4,
                                                                ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.IsConstituent ),
                                                                FilterMode: CswEnumNbtFilterMode.NotEquals,
                                                                Value: CswEnumTristate.True.ToString() );
                        ntMixtureView.save();
                    }
                } // foreach( CswNbtMetaDataNodeType ComponentNT in ComponentOC.getNodeTypes() )

                //// Fix Chemical Components Grid
                //foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalNTs )
                //{
                //    CswNbtMetaDataNodeTypeProp ComponentsGridNTP = ChemicalNT.getNodeTypeProp( "Components" );
                //    if( null != ComponentsGridNTP )
                //    {
                //        CswNbtMetaDataObjectClassProp ComponentPercentOCP = ComponentOC.getObjectClassProp( CswNbtObjClassMaterialComponent.PropertyName.Percentage );

                //        CswNbtView ComponentsGridView = _CswNbtSchemaModTrnsctn.restoreView( ComponentsGridNTP.ViewId );
                //        ComponentsGridView.Root.ChildRelationships.Clear();
                //        CswNbtViewRelationship ChemRel = ComponentsGridView.AddViewRelationship( ChemicalNT, false );
                //        CswNbtViewRelationship MixRel = ComponentsGridView.AddViewRelationship( ChemRel, CswEnumNbtViewPropOwnerType.Second, ComponentMixtureOCP, false );
                //        ComponentsGridView.AddViewProperty( MixRel, ComponentConstituentOCP, 1 );
                //        ComponentsGridView.AddViewProperty( MixRel, ComponentPercentOCP, 2 );
                //        ComponentsGridView.save();
                //    }
                //} // foreach( CswNbtMetaDataNodeType ChemicalNT in ChemicalNTs )


                // 6. Update any views or props that point to the Chemical ObjClass to point to the Chemical NT. 
                // We don't want Constituent Chemicals to show as the target for things like Requests Material or Size Owner.

                string Sql = @"select ocp.propname, oc.objectclass, t.nodetypename, p.propname, p.nodetypepropid, p.fktype, p.fkvalue
                                 from nodetype_props p
                                 join nodetypes t on p.nodetypeid = t.nodetypeid
                                 join object_class oc on t.objectclassid = oc.objectclassid
                                 left outer join object_class_props ocp on p.objectclasspropid = ocp.objectclasspropid
                                 join field_types f on p.fieldtypeid = f.fieldtypeid
                                where (    ( p.fktype = 'PropertySetId' and p.fkvalue = (select propertysetid from property_set where name = 'MaterialSet' ) )
                                        or ( p.fktype = 'ObjectClassId' and p.fkvalue = (select objectclassid from object_class where objectclass = 'ChemicalClass' ) )
                                        or ( p.fktype = 'NodeTypeId' and p.fkvalue = (select nodetypeid from nodetypes where nodetypename = 'Chemical' ) ) 
                                      )
                                  and f.fieldtype = 'Relationship'
                                  and ( p.objectclasspropid is null 
                                        or not (    ( oc.objectclass = 'GHSClass' and ocp.propname = 'Material' )
                                                 or ( oc.objectclass = 'MaterialComponentClass' and ocp.propname = 'Mixture' ) 
                                                 or ( oc.objectclass = 'MaterialComponentClass' and ocp.propname = 'Constituent' ) 
                                                 or ( oc.objectclass = 'DocumentClass' and ocp.propname = 'Owner' ) 
                                               )
                                      )";
                CswArbitrarySelect Select = _CswNbtSchemaModTrnsctn.makeCswArbitrarySelect( "29680_relationship_select", Sql );
                DataTable Table = Select.getTable();

                /*    
                    MaterialSynonymClass                Material	
                    SizeClass                           Material	
                    ContainerClass                      Material	
                    InventoryLevelClass                 Material	
                    CofAMethodTemplateClass             Material	
                    ManufacturerEquivalentPartClass     Material	
                    ReceiptLotClass                     Material	
                    RequestContainerDispenseClass       Material	
                    RequestContainerUpdateClass         Material	
                    RequestMaterialCreateClass          Material	
                    RequestMaterialDispenseClass        Material	
                */

                foreach( DataRow Row in Table.Rows )
                {

                    CswNbtMetaDataNodeTypeProp Prop = _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeProp( CswConvert.ToInt32( Row["nodetypepropid"] ) );
                    CswNbtView View = _CswNbtSchemaModTrnsctn.restoreView( Prop.ViewId );
                    if( View.Root.ChildRelationships.Count == 0 )
                    {
                        // The 'Default Filter' will filter out constituents for us
                        if( Row["fktype"].ToString() == CswEnumNbtViewRelatedIdType.NodeTypeId.ToString() )
                        {
                            View.AddViewRelationship( _CswNbtSchemaModTrnsctn.MetaData.getNodeType( CswConvert.ToInt32( Row["fkvalue"] ) ), true );
                        }
                        else if( Row["fktype"].ToString() == CswEnumNbtViewRelatedIdType.ObjectClassId.ToString() )
                        {
                            View.AddViewRelationship( _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswConvert.ToInt32( Row["fkvalue"] ) ), true );
                        }
                        else if( Row["fktype"].ToString() == CswEnumNbtViewRelatedIdType.PropertySetId.ToString() )
                        {
                            View.AddViewRelationship( _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( CswConvert.ToInt32( Row["fkvalue"] ) ), true );
                        }
                    }
                    else
                    {
                        foreach( CswNbtViewRelationship viewRel in View.Root.GetAllChildrenOfType( CswEnumNbtViewNodeType.CswNbtViewRelationship ) )
                        {
                            if( CswConvert.ToInt32( Row["fkvalue"] ) == viewRel.SecondId )
                            {
                                if( Row["fktype"].ToString() == CswEnumNbtViewRelatedIdType.NodeTypeId.ToString() )
                                {
                                    CswNbtMetaDataNodeType MaterialNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( viewRel.SecondId );
                                    CswNbtViewProperty viewProp = View.AddViewProperty( viewRel, MaterialNT.getNodeTypePropByObjectClassProp( CswNbtPropertySetMaterial.PropertyName.IsConstituent ) );
                                    viewProp.ShowInGrid = false;
                                    View.AddViewPropertyFilter( viewProp,
                                                                FilterMode: CswEnumNbtFilterMode.NotEquals,
                                                                Value: CswEnumTristate.True.ToString() );
                                }
                                else if( Row["fktype"].ToString() == CswEnumNbtViewRelatedIdType.ObjectClassId.ToString() )
                                {
                                    CswNbtMetaDataObjectClass MaterialOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( viewRel.SecondId );
                                    CswNbtViewProperty viewProp = View.AddViewProperty( viewRel, MaterialOC.getObjectClassProp( CswNbtPropertySetMaterial.PropertyName.IsConstituent ) );
                                    viewProp.ShowInGrid = false;
                                    View.AddViewPropertyFilter( viewProp,
                                                                FilterMode: CswEnumNbtFilterMode.NotEquals,
                                                                Value: CswEnumTristate.True.ToString() );
                                }
                                else if( Row["fktype"].ToString() == CswEnumNbtViewRelatedIdType.PropertySetId.ToString() )
                                {
                                    CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet( viewRel.SecondId );
                                    CswNbtViewProperty viewProp = View.AddViewProperty( viewRel, MaterialPS.getObjectClasses().First().getObjectClassProp( CswNbtPropertySetMaterial.PropertyName.IsConstituent ) );
                                    viewProp.ShowInGrid = false;
                                    View.AddViewPropertyFilter( viewProp,
                                                                FilterMode: CswEnumNbtFilterMode.NotEquals,
                                                                Value: CswEnumTristate.True.ToString() );
                                }
                            }
                        } // foreach( CswNbtViewRelationship viewRel in View.Root.GetAllChildrenOfType( CswEnumNbtViewNodeType.CswNbtViewRelationship ) )
                    }
                    View.save();
                } // foreach( DataRow relRow in relTable.Rows )

            } // if( null != ConstituentNT && ChemicalNTs.Count > 0 )
        } // update()
コード例 #29
0
        public override void update()
        {
            CswNbtMetaDataObjectClass UoMOC      = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.UnitOfMeasureClass);
            CswNbtMetaDataObjectClass MethodOC   = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.MethodClass);
            CswNbtMetaDataPropertySet MaterialPS = _CswNbtSchemaModTrnsctn.MetaData.getPropertySet(CswEnumNbtPropertySetName.MaterialSet);

            CswNbtMetaDataObjectClass MethodCharacteristicOC = _CswNbtSchemaModTrnsctn.createObjectClass(CswEnumNbtObjectClass.MethodCharacteristicClass, "barchart.png", CswEnumAuditLevel.PlainAudit);

            _CswNbtSchemaModTrnsctn.createModuleObjectClassJunction(CswEnumNbtModuleName.MLM, MethodCharacteristicOC.ObjectClassId);

            CswNbtMetaDataObjectClassProp MethodOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp
            {
                PropName         = CswNbtObjClassMethodCharacteristic.PropertyName.Method,
                FieldType        = CswEnumNbtFieldType.Relationship,
                IsCompoundUnique = true,
                FkType           = CswEnumNbtViewRelatedIdType.ObjectClassId.ToString(),
                FkValue          = MethodOC.ObjectClassId,
                IsRequired       = true
            });
            CswNbtMetaDataObjectClassProp CharacteristicOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp
            {
                PropName         = CswNbtObjClassMethodCharacteristic.PropertyName.Characteristic,
                FieldType        = CswEnumNbtFieldType.List,
                IsCompoundUnique = true,
                IsRequired       = true
            });
            CswNbtMetaDataObjectClassProp ConstituentMaterialOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp
            {
                PropName         = CswNbtObjClassMethodCharacteristic.PropertyName.ConstituentMaterial,
                FieldType        = CswEnumNbtFieldType.Relationship,
                IsCompoundUnique = true,
                FkType           = CswEnumNbtViewRelatedIdType.PropertySetId.ToString(),
                FkValue          = MaterialPS.PropertySetId
            });
            CswNbtMetaDataObjectClassProp ResultTypeOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp
            {
                PropName    = CswNbtObjClassMethodCharacteristic.PropertyName.ResultType,
                FieldType   = CswEnumNbtFieldType.List,
                ListOptions = CswNbtObjClassMethodCharacteristic.ResultTypeOption.Quantitative + "," +
                              CswNbtObjClassMethodCharacteristic.ResultTypeOption.Qualitative + "," +
                              CswNbtObjClassMethodCharacteristic.ResultTypeOption.Match,
                IsRequired = true
            });
            CswNbtMetaDataObjectClassProp ResultUnitsOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp
            {
                PropName       = CswNbtObjClassMethodCharacteristic.PropertyName.ResultUnits,
                FieldType      = CswEnumNbtFieldType.Relationship,
                FkType         = CswEnumNbtViewRelatedIdType.ObjectClassId.ToString(),
                FkValue        = UoMOC.ObjectClassId,
                FilterPropId   = ResultTypeOCP.ObjectClassPropId,
                FilterMode     = CswEnumNbtFilterMode.Equals,
                FilterSubfield = CswNbtFieldTypeRuleList.SubFieldName.Value,
                FilterValue    = CswNbtObjClassMethodCharacteristic.ResultTypeOption.Quantitative
            });
            CswNbtMetaDataObjectClassProp ResultOptionsOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp
            {
                PropName       = CswNbtObjClassMethodCharacteristic.PropertyName.ResultOptions,
                FieldType      = CswEnumNbtFieldType.Memo,
                FilterPropId   = ResultTypeOCP.ObjectClassPropId,
                FilterMode     = CswEnumNbtFilterMode.Equals,
                FilterSubfield = CswNbtFieldTypeRuleList.SubFieldName.Value,
                FilterValue    = CswNbtObjClassMethodCharacteristic.ResultTypeOption.Qualitative
            });
            CswNbtMetaDataObjectClassProp ObsoleteOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp
            {
                PropName   = CswNbtObjClassMethodCharacteristic.PropertyName.Obsolete,
                FieldType  = CswEnumNbtFieldType.Logical,
                IsRequired = true
            });
            CswNbtMetaDataObjectClassProp PrecisionOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(MethodCharacteristicOC, new CswNbtWcfMetaDataModel.ObjectClassProp
            {
                PropName        = CswNbtObjClassMethodCharacteristic.PropertyName.Precision,
                FieldType       = CswEnumNbtFieldType.Number,
                NumberMinValue  = 0,
                NumberPrecision = 0,
                FilterPropId    = ResultTypeOCP.ObjectClassPropId,
                FilterMode      = CswEnumNbtFilterMode.Equals,
                FilterSubfield  = CswNbtFieldTypeRuleList.SubFieldName.Value,
                FilterValue     = CswNbtObjClassMethodCharacteristic.ResultTypeOption.Quantitative
            });
        } // update()
コード例 #30
0
        public override CswNbtViewEditorData HandleAction()
        {
            CswNbtViewEditorData Return = new CswNbtViewEditorData();

            if (Request.Action == "Click")
            {
                CswNbtViewNode foundNode = Request.CurrentView.FindViewNodeByArbitraryId(Request.ArbitraryId);
                if (null != foundNode)
                {
                    CswNbtView TempView = _CswNbtResources.ViewSelect.restoreView(CurrentView.ToString());
                    if (foundNode is CswNbtViewPropertyFilter)
                    {
                        Return.Step6.FilterNode = (CswNbtViewPropertyFilter)foundNode;
                    }
                    else if (foundNode is CswNbtViewRelationship)
                    {
                        CswNbtViewRelationship asRelationship = (CswNbtViewRelationship)foundNode;

                        if (asRelationship.SecondType == CswEnumNbtViewRelatedIdType.NodeTypeId)
                        {
                            CswNbtMetaDataNodeType NodeType = _CswNbtResources.MetaData.getNodeType(asRelationship.SecondId);
                            foreach (CswNbtViewProperty prop in _getProps(NodeType, TempView, new HashSet <string>(), asRelationship))
                            {
                                if (((CswEnumNbtViewRenderingMode.Tree == Request.CurrentView.ViewMode || CswEnumNbtViewRenderingMode.List == Request.CurrentView.ViewMode) && CswEnumNbtFieldType.Button != prop.FieldType) ||
                                    CswEnumNbtViewRenderingMode.Grid == Request.CurrentView.ViewMode || CswEnumNbtViewRenderingMode.Table == Request.CurrentView.ViewMode)
                                {
                                    Return.Step6.Properties.Add(prop);
                                }
                            }
                        }
                        else if (asRelationship.SecondType == CswEnumNbtViewRelatedIdType.ObjectClassId)
                        {
                            CswNbtMetaDataObjectClass ObjClass = _CswNbtResources.MetaData.getObjectClass(asRelationship.SecondId);
                            foreach (CswNbtViewProperty prop in _getProps(ObjClass, TempView, new HashSet <string>(), asRelationship))
                            {
                                if (((CswEnumNbtViewRenderingMode.Tree == Request.CurrentView.ViewMode || CswEnumNbtViewRenderingMode.List == Request.CurrentView.ViewMode) && CswEnumNbtFieldType.Button != prop.FieldType) ||
                                    CswEnumNbtViewRenderingMode.Grid == Request.CurrentView.ViewMode || CswEnumNbtViewRenderingMode.Table == Request.CurrentView.ViewMode)
                                {
                                    Return.Step6.Properties.Add(prop);
                                }
                            }
                        }
                        else
                        {
                            CswNbtMetaDataPropertySet PropSet   = _CswNbtResources.MetaData.getPropertySet(asRelationship.SecondId);
                            HashSet <string>          seenProps = new HashSet <string>();
                            foreach (CswNbtMetaDataObjectClass ObjClass in PropSet.getObjectClasses())
                            {
                                foreach (CswNbtViewProperty prop in _getProps(ObjClass, TempView, seenProps, asRelationship).OrderBy(prop => prop.TextLabel))
                                {
                                    if (((CswEnumNbtViewRenderingMode.Tree == Request.CurrentView.ViewMode || CswEnumNbtViewRenderingMode.List == Request.CurrentView.ViewMode) && CswEnumNbtFieldType.Button != prop.FieldType) ||
                                        CswEnumNbtViewRenderingMode.Grid == Request.CurrentView.ViewMode || CswEnumNbtViewRenderingMode.Table == Request.CurrentView.ViewMode)
                                    {
                                        Return.Step6.Properties.Add(prop);
                                    }
                                }
                            }
                        }

                        Return.Step6.Relationships = getViewChildRelationshipOptions(CurrentView, asRelationship.ArbitraryId);

                        Return.Step6.RelationshipNode = asRelationship;
                    }
                    else if (foundNode is CswNbtViewRoot && CurrentView.Visibility != CswEnumNbtViewVisibility.Property)  //can't add to view root on Prop view
                    {
                        TempView.Root.ChildRelationships.Clear();
                        foreach (CswNbtMetaDataNodeType NodeType in _CswNbtResources.MetaData.getNodeTypes().OrderBy(NT => NT.NodeTypeName))
                        {
                            Return.Step6.Relationships.Add(TempView.AddViewRelationship(NodeType, false));
                        }
                        foreach (CswNbtMetaDataObjectClass ObjClass in _CswNbtResources.MetaData.getObjectClasses().OrderBy(OC => OC.ObjectClass.Value))
                        {
                            Return.Step6.Relationships.Add(TempView.AddViewRelationship(ObjClass, false));
                        }
                        foreach (CswNbtMetaDataPropertySet PropSet in _CswNbtResources.MetaData.getPropertySets().OrderBy(PS => PS.Name))
                        {
                            Return.Step6.Relationships.Add(TempView.AddViewRelationship(PropSet, false));
                        }
                        Return.Step6.RootNode = (CswNbtViewRoot)foundNode;
                    }
                    else if (foundNode is CswNbtViewProperty && CswEnumNbtFieldType.Button != ((CswNbtViewProperty)foundNode).FieldType)
                    {
                        Return.Step6.PropertyNode = (CswNbtViewProperty)foundNode;
                        Request.Relationship      = (CswNbtViewRelationship)foundNode.Parent; //getFilterProps needs Request.Relationship to be populated
                        _getFilterProps(Return);
                    }
                }
            }
            else if (Request.Action == "AddProp")
            {
                ICswNbtMetaDataProp prop = null;
                if (Request.Property.Type == CswEnumNbtViewPropType.NodeTypePropId)
                {
                    prop = _CswNbtResources.MetaData.getNodeTypeProp(Request.Property.NodeTypePropId);
                }
                else
                {
                    prop = _CswNbtResources.MetaData.getObjectClassProp(Request.Property.ObjectClassPropId);
                }
                CswNbtViewRelationship relToAddTo = (CswNbtViewRelationship)CurrentView.FindViewNodeByArbitraryId(Request.Relationship.ArbitraryId);
                CurrentView.AddViewProperty(relToAddTo, prop, CurrentView.getOrderedViewProps(false).Count + 1);
            }
            else if (Request.Action == "AddRelationship")
            {
                CswNbtViewRelationship relToAddTo = (CswNbtViewRelationship)CurrentView.FindViewNodeByArbitraryId(Request.ArbitraryId);
                ICswNbtMetaDataProp    prop       = null;
                if (Request.Relationship.PropType == CswEnumNbtViewPropIdType.NodeTypePropId)
                {
                    prop = _CswNbtResources.MetaData.getNodeTypeProp(Request.Relationship.PropId);
                }
                else
                {
                    prop = _CswNbtResources.MetaData.getObjectClassProp(Request.Relationship.PropId);
                }
                CurrentView.AddViewRelationship(relToAddTo, Request.Relationship.PropOwner, prop, true);
            }
            else if (Request.Action == "AddFilter")
            {
                CswNbtViewProperty propNode = (CswNbtViewProperty)CurrentView.FindViewNodeByArbitraryId(Request.PropArbId);
                if (false == _hasFilter(propNode))
                {
                    CurrentView.AddViewPropertyFilter(propNode,
                                                      Conjunction: (CswEnumNbtFilterConjunction)Request.FilterConjunction,
                                                      SubFieldName: (CswEnumNbtSubFieldName)Request.FilterSubfield,
                                                      FilterMode: (CswEnumNbtFilterMode)Request.FilterMode,
                                                      Value: Request.FilterValue
                                                      );
                }
                Return.Step6.PropertyNode = propNode;
            }
            else if (Request.Action == "RemoveNode")
            {
                CswNbtViewNode nodeToRemove = CurrentView.FindViewNodeByArbitraryId(Request.ArbitraryId);
                CswNbtViewNode parent       = nodeToRemove.Parent;
                parent.RemoveChild(nodeToRemove);

                if (parent.ViewNodeType == CswEnumNbtViewNodeType.CswNbtViewProperty)
                {
                    Return.Step6.PropertyNode = (CswNbtViewProperty)parent;
                }
                else if (parent.ViewNodeType == CswEnumNbtViewNodeType.CswNbtViewRelationship)
                {
                    Return.Step6.RelationshipNode = (CswNbtViewRelationship)parent;
                }
                else if (parent.ViewNodeType == CswEnumNbtViewNodeType.CswNbtViewRoot)
                {
                    Return.Step6.RootNode = (CswNbtViewRoot)parent;
                }
            }
            else if (Request.Action == "UpdateView")
            {
                string grp = string.Empty;
                if (null != Request.Property)
                {
                    CswNbtViewRelationship selectedPropsParent = (CswNbtViewRelationship)CurrentView.FindViewNodeByArbitraryId(Request.Property.ParentArbitraryId);
                    Request.Property.Parent = selectedPropsParent;
                    CswNbtViewProperty rel = (CswNbtViewProperty)CurrentView.FindViewNodeByArbitraryId(Request.Property.ArbitraryId);
                    if (null == rel)
                    {
                        CswNbtViewRelationship parent = (CswNbtViewRelationship)CurrentView.FindViewNodeByArbitraryId(Request.Property.ParentArbitraryId);
                        ICswNbtMetaDataProp    prop   = null;
                        if (Request.Property.Type == CswEnumNbtViewPropType.NodeTypePropId)
                        {
                            prop = _CswNbtResources.MetaData.getNodeTypeProp(Request.Property.NodeTypePropId);
                        }
                        else
                        {
                            prop = _CswNbtResources.MetaData.getObjectClassProp(Request.Property.ObjectClassPropId);
                        }
                        rel = CurrentView.AddViewProperty(parent, prop);
                    }
                    grp = rel.TextLabel;
                }

                CurrentView.GridGroupByCol = grp;
            }

            base.Finalize(Return);
            return(Return);
        }