コード例 #1
0
        } // getPercentDone()

        /// <summary>
        /// Run the next iteration of this batch operation
        /// </summary>
        public void runBatchOp(CswNbtObjClassBatchOp BatchNode)
        {
            try
            {
                if (BatchNode != null && BatchNode.OpNameValue == CswEnumNbtBatchOpName.MultiEdit)
                {
                    BatchNode.start();

                    MultiEditBatchData BatchData = new MultiEditBatchData(BatchNode.BatchData.Text);
                    if (BatchData.SourceNodeId != null && BatchData.CopyNodeIds.Count > 0 && BatchData.NodeTypePropIds.Count > 0)
                    {
                        CswNbtNode SourceNode = _CswNbtResources.Nodes[BatchData.SourceNodeId];
                        if (SourceNode != null)
                        {
                            string NodeIdStr = BatchData.CopyNodeIds.First.ToString();

                            CswPrimaryKey CopyToNodePk = new CswPrimaryKey();
                            CopyToNodePk.FromString(NodeIdStr);

                            if (Int32.MinValue != CopyToNodePk.PrimaryKey)
                            {
                                CswNbtNode CopyToNode = _CswNbtResources.Nodes[CopyToNodePk];
                                if (CopyToNode != null &&
                                    _CswNbtResources.Permit.isNodeWritable(CswEnumNbtNodeTypePermission.Edit, CopyToNode.getNodeType(), CopyToNode.NodeId))
                                {
                                    foreach (CswNbtMetaDataNodeTypeProp NodeTypeProp in BatchData.NodeTypePropIds.Select(PropId => _CswNbtResources.MetaData.getNodeTypeProp(CswConvert.ToInt32(PropId))))
                                    {
                                        CopyToNode.Properties[NodeTypeProp].copy(SourceNode.Properties[NodeTypeProp]);
                                    }

                                    CopyToNode.postChanges(false);

                                    //BatchNode.appendToLog( "Copied values for: " + CopyToNode.NodeName + " (" + CopyToNode.NodeId.PrimaryKey.ToString() + ")" );
                                } // if( CopyToNode != null )
                            }     // if( Int32.MinValue != CopyToNodePk.PrimaryKey )

                            // Setup for next iteration
                            BatchData.CopyNodeIds.RemoveAt(0);
                            BatchNode.BatchData.Text    = BatchData.ToString();
                            BatchNode.PercentDone.Value = getPercentDone(BatchNode);
                        } // if( SourceNode != null )
                        else
                        {
                            BatchNode.finish();
                        }
                    }
                    else
                    {
                        BatchNode.finish();
                    }

                    BatchNode.postChanges(false);
                } // if( BatchNode != null && BatchNode.OpNameValue == NbtBatchOpName.MultiEdit )
            }
            catch (Exception ex)
            {
                BatchNode.error(ex);
            }
        } // runBatchOp()
コード例 #2
0
        } // Int32CollectionToJArray

        public Double getPercentDone(CswNbtObjClassBatchOp BatchNode)
        {
            Double ret = 100;

            if (BatchNode != null && BatchNode.OpNameValue == CswEnumNbtBatchOpName.MultiEdit)
            {
                MultiEditBatchData BatchData = new MultiEditBatchData(BatchNode.BatchData.Text);
                if (BatchData.StartingCount > 0)
                {
                    ret = Math.Round((Double)(BatchData.StartingCount - BatchData.CopyNodeIds.Count()) / BatchData.StartingCount * 100, 0);
                }
            }
            return(ret);
        } // getPercentDone()
コード例 #3
0
        /// <summary>
        /// Create a new batch operation to handle a copyNodeProps/multi edit operation
        /// </summary>
        /// <param name="SourceNode"></param>
        /// <param name="CopyNodeIds"></param>
        /// <param name="NodeTypePropIds"></param>
        public CswNbtObjClassBatchOp makeBatchOp(CswNbtNode SourceNode, Collection <CswPrimaryKey> CopyNodeIds, Collection <Int32> NodeTypePropIds)
        {
            CswNbtObjClassBatchOp BatchNode = null;

            if (null != SourceNode)
            {
                MultiEditBatchData BatchData = new MultiEditBatchData(string.Empty);
                BatchData.SourceNodeId    = SourceNode.NodeId;
                BatchData.CopyNodeIds     = pkArrayToJArray(CopyNodeIds);
                BatchData.StartingCount   = CopyNodeIds.Count();
                BatchData.NodeTypePropIds = Int32CollectionToJArray(NodeTypePropIds);

                BatchNode = CswNbtBatchManager.makeNew(_CswNbtResources, _BatchOpName, BatchData.ToString());
            } // if(null != SourceNode)
            return(BatchNode);
        }     // makeBatchOp()