示例#1
0
 public Patterns(ScheduleDataSet schedule)
 {
     this.pattern_info        = schedule.patterns;
     this.pattern_data        = schedule.pattern_data;
     this.pattern_sub_pattern = schedule.pattern_sub_pattern;
     this.pattern_java_server = schedule.pattern_java_server;
 }
示例#2
0
 public Patterns(PatternDescriptionTable pattern_info, PatternDataTable pattern_data, PatternMultiDataTable pattern_sub_pattern, PatternJavaDataTable pattern_java_server)
 {
     this.pattern_info        = pattern_info;
     this.pattern_data        = pattern_data;
     this.pattern_sub_pattern = pattern_sub_pattern;
     this.pattern_java_server = pattern_java_server;
 }
示例#3
0
        public void UpdateBits()
        {
            masks.Clear();
            PatternDescriptionTable pdt = row.Table as PatternDescriptionTable;

            DataRow[] bits = pdt.LoadPatternData(row);
            if (bits != null)
            {
                foreach (DataRow child_row in bits)
                {
                    if (child_row.Table.TableName == PatternMultiDataTable.TableName)
                    {
                        masks.Add(new System.Collections.Specialized.BitVector32(0x1FFF));
                    }
                    if (child_row.Table.TableName == PatternDataTable.TableName)
                    {
                        int mask = Convert.ToInt32(child_row["bits_int"]);
                        if (mask == 0)
                        {
                            // the reading of pattern data should fixup the bits_int value.
                            String x = child_row["mask"].ToString();
                            for (int n = 0; n < 25; n++)
                            {
                                if (x[n] == '1')
                                {
                                    mask |= 1 << n;
                                }
                            }
                            child_row["bits_int"] = mask;
                        }
                        if (eCube)
                        {
                            mask >>= 3;
                            {
                                int tmp = 0;
                                int r, c;
                                for (r = 0; r < 5; r++)
                                {
                                    for (c = 0; c < 5; c++)
                                    {
                                        if ((mask & (1 << (c * 5) + r)) != 0)
                                        {
                                            tmp |= 1 << (((4 - c) * 5) + (4 - r));
                                        }
                                    }
                                }
                                mask = tmp;
                            }
                        }
                        masks.Add(new System.Collections.Specialized.BitVector32(mask));
                    }
                }
            }
        }
示例#4
0
        public void UpdateSubPatterns(Pattern pattern)
        {
            PatternDescriptionTable pdt = pattern.row.Table as PatternDescriptionTable;

            DataRow[] subs = pdt.LoadPatternSubs(pattern.row);
            pattern.sub_patterns.Clear();

            foreach (DataRow sub_row in subs)
            {
                foreach (Pattern sub in this)
                {
                    if (sub.ID.Equals(sub_row["member_pattern_id"]))
                    {
                        pattern.sub_patterns.Add(sub);
                        break;
                    }
                }
            }
        }
示例#5
0
        public bool UpdateRow()
        {
            if (changed || (row != null && row.RowState == DataRowState.Deleted))
            {
                expanded = false;
                if (row != null)
                {
                    if (row.RowState != DataRowState.Deleted)
                    {
                        StringBuilder mask = new StringBuilder();
                        row[XDataTable.Name(row.Table)] = Name;
                        row["count"]         = _repeat_count;
                        row["crazy_hardway"] = _crazy_hardway;
                        row["real_mode"]     = _algorithm;
                        row["mode_mod"]      = ((int)_mode_mod) + (_repeat_no_overlap ? mode_modifications.max_mod : 0);

                        PatternDescriptionTable pdt = row.Table as PatternDescriptionTable;
                        //pdt.CommitChanges();

                        if (XDataTable.DefaultAutoKeyType == typeof(Guid))
                        {
                            ID = new Guid(row["pattern_id"].ToString());
                        }
                        else
                        {
                            ID = row["pattern_id"];
                        }

                        if (_algorithm == PatternDescriptionTable.match_types.Normal)
                        {
                            bool      bits_changed = false;
                            int       block        = 0;
                            DataRow[] rows         = row.GetChildRows("pattern_has_bits");
                            //DataRow[] rows = pattern_data.Select( "pattern_id=" + ID.ToString() );
                            foreach (DataRow delete_row in rows)
                            {
                                // maybe check off each pattern...
                                bits_changed = true;
                                delete_row.Delete();
                            }
                            foreach (System.Collections.Specialized.BitVector32 bits in masks)
                            {
                                DataRow newrow = pattern_list.pattern_data.NewRow();
                                mask.Length          = 0;
                                newrow["block"]      = block++;
                                newrow["bits_int"]   = bits.Data;
                                newrow["pattern_id"] = ID;
                                pattern_list.pattern_data.Rows.Add(newrow);
                                bits_changed = true;
                            }
                            if (pattern_list != null && pattern_list.pattern_data != null && bits_changed)
                            {
                                //pattern_list.pattern_data.CommitChanges();
                            }
                        }
                    }
                    else
                    {
                        PatternDescriptionTable pdt = row.Table as PatternDescriptionTable;
                        pdt.CommitChanges();
                    }
                }

                if (sub_pattern_changed || (row != null && row.RowState == DataRowState.Deleted))
                {
                    expanded = false;
                    if (IsMultiPattern())
                    {
                        UpdateSubPatterns(this);
                    }
                    sub_pattern_changed = false;
                }

                changed = false;
                return(true);
            }
            if (sub_pattern_changed || (row != null && row.RowState == DataRowState.Deleted))
            {
                expanded = false;
                if (IsMultiPattern())
                {
                    UpdateSubPatterns(this);
                }
                sub_pattern_changed = false;
                return(true);
            }
            return(false);
        }