Пример #1
0
 public Table(string name, List <Column> columns, List <Column> primaryKey)
 {
     Name            = name;
     PrimaryKey      = primaryKey;
     Columns         = columns;
     TableDependency = new FunctionalDependency(columns.Count, ColumnSet(primaryKey));
 }
Пример #2
0
 public Table(string name, List <Column> columns)
 {
     Name            = name;
     Columns         = columns;
     PrimaryKey      = new List <Column>();
     TableDependency = new FunctionalDependency(columns.Count, new BitArray(columns.Count));
 }
Пример #3
0
 public Table(string name, int columnsCount)
 {
     Name    = name;
     Columns = new List <Column>(columnsCount);
     Columns.AddRange(Enumerable.Repeat(new Column("NEW_COLUMN"), columnsCount));
     PrimaryKey      = new List <Column>();
     TableDependency = new FunctionalDependency(columnsCount, new BitArray(columnsCount));
 }
 public DependencyElement
 (
     AttributeCollection attributeCollection,
     FunctionalDependency functionalDependencies,
     bool isLeft
 )
 {
     AttributeCollection    = attributeCollection;
     AttributeCollectionId  = attributeCollection.Id;
     FunctionalDependency   = functionalDependencies;
     FunctionalDependencyId = functionalDependencies.Id;
     IsLeft = isLeft;
 }
Пример #5
0
        private void InitializeCommands()
        {
            AddItemToCanvasCommand = new RelayCommand <Point>((Point p) =>
            {
                switch (SelectedElement.DisplayTitle)
                {
                case "Event":
                    Event addEvent = new Event
                    {
                        Title = "event_" + ++eventCounter,
                        X     = p.X,
                        Y     = p.Y,
                    };
                    Project.FaultTree.Elements.Add(addEvent);
                    SelectedCanvasElement = addEvent;
                    break;

                case "Basic event":
                    BasicEvent addLeafEvent = new BasicEvent
                    {
                        Title = "basic_event_" + ++basicEventCounter,
                        X     = p.X,
                        Y     = p.Y,
                    };
                    Project.FaultTree.Elements.Add(addLeafEvent);
                    SelectedCanvasElement = addLeafEvent;
                    break;

                case "AND gate":
                    AndGate addAndGate = new AndGate
                    {
                        Title = "and_gate_" + ++andGateCounter,
                        X     = p.X,
                        Y     = p.Y,
                    };
                    Project.FaultTree.Elements.Add(addAndGate);
                    SelectedCanvasElement = addAndGate;
                    break;

                case "OR gate":
                    OrGate addOrGate = new OrGate
                    {
                        Title = "or_gate_" + ++orGateCounter,
                        X     = p.X,
                        Y     = p.Y,
                    };
                    Project.FaultTree.Elements.Add(addOrGate);
                    SelectedCanvasElement = addOrGate;
                    break;

                case "Vote gate":
                    VoteGate addVoteGate = new VoteGate
                    {
                        Title = "vote_gate_" + ++voteGateCounter,
                        X     = p.X,
                        Y     = p.Y,
                    };
                    Project.FaultTree.Elements.Add(addVoteGate);
                    SelectedCanvasElement = addVoteGate;
                    break;

                case "Priority AND gate":
                    PriorityAndGate addPriorityAndGate = new PriorityAndGate
                    {
                        Title = "priority_and_gate_" + ++priorityAndGateCounter,
                        X     = p.X,
                        Y     = p.Y,
                    };
                    Project.FaultTree.Elements.Add(addPriorityAndGate);
                    SelectedCanvasElement = addPriorityAndGate;
                    break;

                case "Priority OR gate":
                    PriorityOrGate addPriorityOrGate = new PriorityOrGate
                    {
                        Title = "priority_or_gate_" + ++priorityOrGateCounter,
                        X     = p.X,
                        Y     = p.Y,
                    };
                    Project.FaultTree.Elements.Add(addPriorityOrGate);
                    SelectedCanvasElement = addPriorityOrGate;
                    break;

                case "Warm spare gate":
                    WarmSpareGate addWarmSpareGate = new WarmSpareGate
                    {
                        Title = "warm_spare_gate_" + ++warmSpareGateCounter,
                        X     = p.X,
                        Y     = p.Y,
                    };
                    Project.FaultTree.Elements.Add(addWarmSpareGate);
                    SelectedCanvasElement = addWarmSpareGate;
                    break;

                case "Functional dependency":
                    FunctionalDependency addFunctionalDependency = new FunctionalDependency
                    {
                        Title = "functional_dependency_" + ++functionalDependencyCounter,
                        X     = p.X,
                        Y     = p.Y,
                    };
                    Project.FaultTree.Elements.Add(addFunctionalDependency);
                    SelectedCanvasElement = addFunctionalDependency;
                    break;

                case "Probabilistic dependency":
                    ProbabilisticDependency addProbabilisticDependency = new ProbabilisticDependency
                    {
                        Title = "probabilistic_dependency_" + ++probabilisticDependencyCounter,
                        X     = p.X,
                        Y     = p.Y,
                    };
                    Project.FaultTree.Elements.Add(addProbabilisticDependency);
                    SelectedCanvasElement = addProbabilisticDependency;
                    break;

                case "Sequence enforcer":
                    SequenceEnforcer addSequenceEnforcer = new SequenceEnforcer
                    {
                        Title = "sequence_enforcer_" + ++sequenceEnforcerCounter,
                        X     = p.X,
                        Y     = p.Y,
                    };
                    Project.FaultTree.Elements.Add(addSequenceEnforcer);
                    SelectedCanvasElement = addSequenceEnforcer;
                    break;

                default:
                    break;
                }
            });

            GenerateOutputCommand = new RelayCommand(() =>
            {
                OutputText = Project.FaultTree.GetGalileoString();
            });

            ShowJSONCommand = new RelayCommand(() =>
            {
                OutputText = GetJsonString();
            });

            ListConnectionsCommand = new RelayCommand(() =>
            {
                OutputText = Project.FaultTree.ListConnections();
            });

            DeleteElementCommand = new RelayCommand(() =>
            {
                var tempElement = SelectedCanvasElement;

                if (tempElement.DisplayTitle == "Top level event")
                {
                    return;
                }

                Project.FaultTree.RemoveElement(tempElement);

                if (Project.FaultTree.Elements.Count > 0)
                {
                    SelectedCanvasElement = Project.FaultTree.Elements[0];
                }
                else
                {
                    SelectedCanvasElement = null;
                }
            });

            RemoveConnectionsCommand = new RelayCommand(() =>
            {
                Project.FaultTree.RemoveConnections(SelectedCanvasElement);
            });

            CopyCommand = new RelayCommand(() =>
            {
                dataPackage.SetText(OutputText);
                Clipboard.SetContent(dataPackage);
            });

            ClearCommand = new RelayCommand(() =>
            {
                OutputText = string.Empty;
            });

            ToGalileoCommand = new RelayCommand(async() =>
            {
                await SaveToFileAsync(Project.FaultTree.GetGalileoString());
            });

            ToJsonCommand = new RelayCommand(async() =>
            {
                await SaveToFileAsync(GetJsonString());
            });
        }