OIQ

Untitled

OIQ
Oct 11th, 2020
88
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4.  
  5. partial class Program {
  6.  
  7.     private static bool ValidateQuery(string query, out string[] queryParameters) {
  8.  
  9.         while (query.Contains("  ")) { query = query.Replace("  ", " "); }
  10.         queryParameters = query.Split(' ');
  11.         if (queryParameters.Length != 3)
  12.             return false;
  13.         queryParameters[0] = queryParameters[0].ToLower();
  14.         queryParameters[2] = queryParameters[2].ToLower();
  15.  
  16.  
  17.         string first = queryParameters[0];
  18.         string second = queryParameters[1];
  19.         string third = queryParameters[2];
  20.  
  21.         int oper = getIndex(first);
  22.         if (oper == -1)
  23.             return false;
  24.  
  25.         if (oper < 3) {
  26.             if (!(second == "==" || second == "<>"))
  27.                 return false;
  28.         }
  29.         else {
  30.             if (!(second == ">=" || second == "<="))
  31.                 return false;
  32.             if (oper == 3 && !(int.TryParse(third, out int number)))
  33.                 return false;
  34.             if (oper == 4 && !Double.TryParse(third, out Double number1))
  35.                 return false;
  36.         }
  37.         return true;
  38.  
  39.     }
  40.  
  41.     private static List<string> ProcessQuery(string[] queryParameters, string pathToDatabase) {
  42.         string[][] data = new string[System.IO.File.ReadAllLines(pathToDatabase).Length][];
  43.         int index = 0;
  44.         try {
  45.             using (StreamReader sr = new StreamReader(pathToDatabase)) {
  46.                 string line;
  47.                 while ((line = sr.ReadLine()) != null)
  48.                     if (!line.Split(';')[0].ToLower().Equals("first_name"))
  49.                         data[index++] = line.Split(';');
  50.             }
  51.         }
  52.         catch (Exception e) {
  53.             Console.WriteLine(e.Message);
  54.         }
  55.         List<string> currentdata = new List<string>();
  56.         int operation = getIndex(queryParameters[0]);
  57.         //Console.WriteLine(queryParameters[0] + queryParameters[1] + queryParameters[2]);
  58.         if (operation < 3) {
  59.             if (queryParameters[1].Equals("==")) {
  60.                 foreach (string[] item in data) {
  61.                     if (item != null && item[operation].ToLower() == queryParameters[2]) {
  62.                         currentdata.Add(join(item));
  63.                     }
  64.                 }
  65.             }
  66.             else {
  67.                 foreach (string[] item in data)
  68.                     if (item != null && item[operation].ToLower() != queryParameters[2]) {
  69.                         currentdata.Add(join(item));
  70.                     }
  71.             }
  72.         }
  73.         else {
  74.             if (queryParameters[1].Equals("<=")) {
  75.                 foreach (string[] item in data) {
  76.                     if (item != null && Double.Parse(item[operation]) <=
  77.                         Double.Parse(queryParameters[2])) {
  78.                         currentdata.Add(join(item));
  79.                     }
  80.                 }
  81.             }
  82.             else {
  83.                 foreach (string[] item in data) {
  84.                     if (item != null && Double.Parse(item[operation]) >= Double.Parse(queryParameters[2])) {
  85.                         currentdata.Add(join(item));
  86.                     }
  87.                 }
  88.             }
  89.         }
  90.  
  91.         return currentdata;
  92.     }
  93.  
  94.     private static int getIndex(string param) {
  95.         string[] parametres = { "first_name", "last_name", "group", "rating", "gpa" };
  96.         int ind = -1;
  97.         for (int i = 0; i < parametres.Length; i++)
  98.             if (param == parametres[i]) {
  99.                 ind = i;
  100.                 return i;
  101.             }
  102.         return -1;
  103.  
  104.     }
  105.     private static string join(string[] a) {
  106.         string data = "";
  107.         for (int i = 0; i < a.Length - 1; i++)
  108.             data += (a[i] + ";");
  109.         data += a[a.Length - 1];
  110.         return data;
  111.     }
  112. }
RAW Paste Data