Press "Enter" to skip to content

As simple as that – no to zaryzykujmy

Ok, trzeba dać krótki wpis, bo mnie wywalą.

A więc zacznę od… opisania dość ważnej klasy w module do oceny ryzyka, przedstawiająca pojedynczą grupę ryzyka (bank ryzyk).

Ot, proste

 public class RiskBank
    {
        public string Title;
        public List risks = new List();
    }

Tytuł takiej grupy może w przyszłości ułatwić zarządzanie. Same ryzyka będą ciągami znaków, które będą mogły być wpisane z palca, pobrane z bazy, zarządzane, co tam sobie nie wymyślę w przyszłości. Zacznę więc od ładowania.

Na razie sobie wymyśliłam, że musimy mieć możliwość ładowania danych. Na razie to ogarnęłam jako prosty interfejs z jedną metodą.

 public interface LoadingProvider
    {
         RiskBank loadRisks(object source);
    }

i zrobiłam przykładowy loader, który zakłada że jeśli plik jest tekstowy to sobie dodaje linijka po linijce, a jeżeli nie to się wywala ^^. No co, muszę mieć później co robić. Śmiećimplementacja interfejsu wygląda tak:

 class TextfileLoader: LoadingProvider
    {
        public RiskBank loadRisks(object source)
        {
            if (source is string)
            {
                Encoding code;
                RiskBank bank = new RiskBank();
                bank.Title = Path.GetFileNameWithoutExtension((string) source);
                string line;
                System.IO.StreamReader file =
                   new System.IO.StreamReader((string)source);
                while ((line = file.ReadLine()) != null)
                {
                    bank.risks.Add(line);
                }
                return bank;
            }
            else return null;
        }

    }

W przyszłości loading providery będą musiały mieć więcej funkcji niż jedna (dodawanie do podanej listy z duplikatami, dodawanie bez duplikatów, ładowanie elementów spełniających jakieś tam kryteria…, się zobaczy). Więc nie, nie pisałam interfejsu tylko po to, by gdzieś jedną funkcję wywołać;).

No i skoro już mamy to co mamy, to wrzuciłam na MainWindow sam podgląd.
W klasie MainWindow jest

public RiskBank list = new RiskBank();
private LoadingProvider loader;

i dalej jakiś onclick do buttona jako

  private void Button_Click(object sender, RoutedEventArgs e)
        {
            loader = new TextfileLoader();
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Multiselect = false;
            if (openFileDialog.ShowDialog() == true) list = loader.loadRisks(openFileDialog.FileName);
            SomeList.ItemsSource = list.risks; // 
        }

Ok, wracam do pozostałych obowiązków;)