private bool ShowConfirmationMessageBox(AircadiaComponent component)
        {
            string type = String.Empty;

            switch (component)
            {
            case Data d:
                type = "Data";
                break;

            case Model m:
                type = "Model";
                break;

            case Workflow w:
                type = "Workflow";
                break;

            case Study s:
                type = "Study";
                break;

            default:
                break;
            }
            return(AskUserOverwriteConfirmation(component, type));
        }
        private HashSet <string> GetAffected(AircadiaComponent component)
        {
            HashSet <string> affected = dependencies.BreadthFirstSearch(GraphString(component));

            affected.Remove(GraphString(component));
            return(affected);
        }
 private void RemoveDependencies(AircadiaComponent component, IEnumerable <AircadiaComponent> dependents = null)
 {
     if (dependents != null)
     {
         foreach (AircadiaComponent dependent in dependents)
         {
             dependencies.RemoveEdge(GraphString(dependent), GraphString(component));
         }
     }
     dependencies.RemoveVertex(GraphString(component));
 }
 private void AddDependencies(AircadiaComponent component, IEnumerable <AircadiaComponent> dependents = null)
 {
     dependencies.AddVertex(GraphString(component));
     if (dependents != null)
     {
         foreach (AircadiaComponent dependent in dependents)
         {
             dependencies.AddEdge(GraphString(dependent), GraphString(component));
         }
     }
 }
 public bool Remove(AircadiaComponent component, bool askUser = true)
 {
     if (component is Data data)
     {
         if (data.IsAuxiliary)
         {
             return(RemoveDataAux(data, askUser));
         }
         else
         {
             return(RemoveData(data, askUser));
         }
     }
     else if (component is Model model)
     {
         if (model.IsAuxiliary)
         {
             return(RemoveModelAux(model, askUser));
         }
         else
         {
             return(RemoveModel(model, askUser));
         }
     }
     else if (component is Workflow workflow)
     {
         if (workflow.IsAuxiliary)
         {
             return(RemoveWorkflowAux(workflow));
         }
         else
         {
             return(RemoveWorkflow(workflow, askUser));
         }
     }
     else if (component is Study study)
     {
         return(RemoveStudy(study, askUser));
     }
     return(false);
 }
 public void Add(AircadiaComponent component, DuplicateMode mode = UserDecides)
 {
     if (component is Data data)
     {
         if (data.IsAuxiliary)
         {
             AddDataAux(data, mode);
         }
         else
         {
             AddData(data, mode);
         }
     }
     else if (component is Model model)
     {
         if (model.IsAuxiliary)
         {
             AddModelAux(model, mode);
         }
         else
         {
             AddModel(model, mode);
         }
     }
     else if (component is Workflow workflow)
     {
         if (workflow.IsAuxiliary)
         {
             AddWorkflowAux(workflow, mode);
         }
         else
         {
             AddWorkflow(workflow, mode);
         }
     }
     else if (component is Study study)
     {
         AddStudy(study, mode);
     }
 }
        private string GraphString(AircadiaComponent component)
        {
            string type = String.Empty;

            if (component is Data)
            {
                type = "Data";
            }
            else if (component is Model)
            {
                type = "Model";
            }
            else if (component is Workflow)
            {
                type = "Workflow";
            }
            else if (component is Study)
            {
                type = "Study";
            }

            return($"{component?.Id ?? String.Empty} {type}");
        }
        public bool Rename(AircadiaComponent component, string name)
        {
            if (!String.IsNullOrWhiteSpace(name))
            {
                if (ValidateName(name))
                {
                    // Check if the name is already there
                    if (component is Data data)
                    {
                        return(RenameData(data, name));
                    }
                    else if (component is Model model)
                    {
                        return(RenameModel(model, name));
                    }
                    else if (component is Workflow workflow)
                    {
                        return(RenameWorkflow(workflow, name));
                    }
                    else if (component is Study study)
                    {
                        return(RenameStudy(study, name));
                    }

                    return(false);
                }
                else
                {
                    throw new ArgumentException($"Invalid new name. The name {name} contains an illegal keyword or symbol");
                }
            }
            else
            {
                throw new ArgumentException($"Invalid new name. The name {name} cannot be blank");
            }
        }
 private bool DefaultConfirmation(AircadiaComponent component, string name) => true;
 private void RemoveDependencies(AircadiaComponent component, AircadiaComponent dependent) => RemoveDependencies(component, new AircadiaComponent[] { dependent });
 private void AddDependencies(AircadiaComponent component, AircadiaComponent dependent) => AddDependencies(component, new AircadiaComponent[] { dependent });
 private void OnRenamedHandler(AircadiaComponent component, string oldName) => ComponentRenamed?.Invoke(null, new ComponentRenamedEventArgs <AircadiaComponent>(component, oldName));
 public IEnumerable <AircadiaComponent> DependenciesOf(AircadiaComponent component) => dependencies.BreadthFirstSearch(GraphString(component)).Select(c => GraphComponent(c));
        private bool ShowConfirmationDelMessageBox(AircadiaComponent component, IEnumerable <string> dependencies)
        {
            string depString = dependencies.Aggregate("", (total, last) => total += last + "\r\n");

            return(AskUserDeleteDependencies(component, depString));
        }