void add(string col, ITableColumnChange pActivity, IBlockPoint pBlock, IRowValidator pValidator, ColumnChangeEventType pEvent)
        {
            {
                DataRow row = getRow(pEvent, col);
                if (row == null)
                {
                    row = tableRel.Rows.Add(
                        new object[] {
                        pEvent,
                        col,
                        new List <ITableColumnChange>(),
                        new List <IRowValidator>(),
                        new List <IBlockPoint>(),
                    });
                }

                ((List <ITableColumnChange>)row[colACTIVITY]).Add(pActivity);
                ((List <IRowValidator>)row[colVALIDATOR]).Add((pValidator == null) ? new RowValidatorTrue() : pValidator);
                ((List <IBlockPoint>)row[colBLOCK]).Add(pBlock);
            }
            {
                tableRelDistinct.Rows.Add(
                    new object[] {
                    pActivity,
                    pValidator
                });
            }
        }
        public void addRelation(string[] pCols, ITableColumnChange pActivity, IBlockPoint pBlock, IRowValidator pValidator, ColumnChangeEventType pEvent)
        {
            pValidator = (pValidator == null) ? new RowValidatorTrue() : pValidator;

            try
            {
                blockPointMain.block();
                for (int i = 0; i < tableTarget.Rows.Count; ++i)
                {
                    DataRow row = tableTarget.Rows[i];
                    if (pValidator.check(row))
                    {
                        pActivity.initForColumnChanged(row);
                    }
                }
            }
            finally
            {
                blockPointMain.unblock();
            }

            foreach (string col in pCols)
            {
                add(col, pActivity, pBlock, pValidator, pEvent);
            }
        }
 public void addRelation(string[] pCols, ITableColumnChange pActivity, IRowValidator pValidator)
 {
     addRelation(pCols, pActivity, new BlockPoint(), pValidator, defaultEvent);
 }