Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- partial class Program {
- private static bool ValidateQuery(string query, out string[] queryParameters) {
- while (query.Contains(" ")) { query = query.Replace(" ", " "); }
- queryParameters = query.Split(' ');
- if (queryParameters.Length != 3)
- return false;
- queryParameters[0] = queryParameters[0].ToLower();
- queryParameters[2] = queryParameters[2].ToLower();
- string first = queryParameters[0];
- string second = queryParameters[1];
- string third = queryParameters[2];
- int oper = getIndex(first);
- if (oper == -1)
- return false;
- if (oper < 3) {
- if (!(second == "==" || second == "<>"))
- return false;
- }
- else {
- if (!(second == ">=" || second == "<="))
- return false;
- if (oper == 3 && !(int.TryParse(third, out int number)))
- return false;
- if (oper == 4 && !Double.TryParse(third, out Double number1))
- return false;
- }
- return true;
- }
- private static List<string> ProcessQuery(string[] queryParameters, string pathToDatabase) {
- string[][] data = new string[System.IO.File.ReadAllLines(pathToDatabase).Length][];
- int index = 0;
- try {
- using (StreamReader sr = new StreamReader(pathToDatabase)) {
- string line;
- while ((line = sr.ReadLine()) != null)
- if (!line.Split(';')[0].ToLower().Equals("first_name"))
- data[index++] = line.Split(';');
- }
- }
- catch (Exception e) {
- Console.WriteLine(e.Message);
- }
- List<string> currentdata = new List<string>();
- int operation = getIndex(queryParameters[0]);
- //Console.WriteLine(queryParameters[0] + queryParameters[1] + queryParameters[2]);
- if (operation < 3) {
- if (queryParameters[1].Equals("==")) {
- foreach (string[] item in data) {
- if (item != null && item[operation].ToLower() == queryParameters[2]) {
- currentdata.Add(join(item));
- }
- }
- }
- else {
- foreach (string[] item in data)
- if (item != null && item[operation].ToLower() != queryParameters[2]) {
- currentdata.Add(join(item));
- }
- }
- }
- else {
- if (queryParameters[1].Equals("<=")) {
- foreach (string[] item in data) {
- if (item != null && Double.Parse(item[operation]) <=
- Double.Parse(queryParameters[2])) {
- currentdata.Add(join(item));
- }
- }
- }
- else {
- foreach (string[] item in data) {
- if (item != null && Double.Parse(item[operation]) >= Double.Parse(queryParameters[2])) {
- currentdata.Add(join(item));
- }
- }
- }
- }
- return currentdata;
- }
- private static int getIndex(string param) {
- string[] parametres = { "first_name", "last_name", "group", "rating", "gpa" };
- int ind = -1;
- for (int i = 0; i < parametres.Length; i++)
- if (param == parametres[i]) {
- ind = i;
- return i;
- }
- return -1;
- }
- private static string join(string[] a) {
- string data = "";
- for (int i = 0; i < a.Length - 1; i++)
- data += (a[i] + ";");
- data += a[a.Length - 1];
- return data;
- }
- }
Advertisement
RAW Paste Data
Copied
Advertisement