示例#1
0
        private void button1_Click(object sender, EventArgs e)
        {
            GetUser tmp = null;

            login    = textBox1.Text.ToString();
            password = textBox2.Text.ToString();

            IDataBaseAccess db = Fabric.GetDataBaseAccess();


            IObjects req = new GetUser(login, password);

            tmp = (GetUser)db.SEND(ref req);


            //   if (tmp == null) MessageBox.Show("Пара логин / пароль неверна.\nПроверьве правильность указанных данных.");

            if (tmp == null)
            {
                answer = null;
            }
            else
            {
                answer = tmp.Answer;
                this.Close();
            }
        }
示例#2
0
    public IObjects Get(IObjects request)
    {
        FileListRequest req = (FileListRequest)request;

        // получили запрос. там внутри есть пользователь и дерево нужно туда для него засунуть

        // вообще, для файлов установлена группа, которая может его смотреть. смотрим у пользователя какая категория есть.
        // если совпадает - можем ему показать этот файлик
        // если в директории нет файлов, которые может смотреть этот пользователь - и директорию ему не показываем


        //files = new WatchingFileRights();
        //users = new WatchingUsers();
        currentUser = request.User;

        // есть начальная директория. есть пользователь, есть набор прав для него, есть для каждого файла набор групп которым можно его читать
        FileTree answer = new FileTree();

        // сюда запишем дерево файлов
        answer.FileList = MakeTree(Treeroot);

        req.answer = answer;

        return(req);
    }
示例#3
0
        public void LogOff(IUserID user)
        {
            Objects.LogOff req = new LogOff(user);
            IObjects       s   = (IObjects)req;

            db.SEND(ref s);
        }
示例#4
0
    public bool FileAllowedForUser(IUserID user, string file)
    {
        WatchingUsers users = new WatchingUsers();

        string[] filegroups = AllowedUserList(file);                     // тут группы у файла

        string[] usergroups = users.ReturnUserFileRights(user.GetValue); //



        // если в группах файла есть какаянить группа из групп пользователя - вернуть что "можно"

        for (int i = 0; i < filegroups.Length; i++)
        {
            for (int j = 0; j < usergroups.Length; j++)
            {
                if (filegroups[i].Equals(usergroups[j]))
                {
                    return(true);
                }
            }
        }


        return(false);
    }
示例#5
0
        public ServerView()
        {
            InitializeComponent();

            IUserManagement userManagement = Fabric.GetUserManagement();

            current = userManagement.GetProfile();
        }
示例#6
0
        public int UserAdd(IUserID user, string[] newuser)
        {
            CreateNewUser req = new CreateNewUser(newuser);

            req.setUser = user;
            IObjects tmp = req;

            db.SEND(ref tmp);
            return(1);
        }
示例#7
0
        public MainWindow()
        {
            InitializeComponent();

            IUserManagement userManagement = Fabric.GetUserManagement();

            current = userManagement.GetProfile();

            ShowFileList();
        }
示例#8
0
        public void ShowWeather(IUserID user, string map, string weather)
        {
            wpfWeatherDisplay wpfwd = new wpfWeatherDisplay();

            wpfwd.USER    = user;
            wpfwd.MAP     = map;
            wpfwd.WEATHER = weather;
            wpfwd.WC      = wc;
            wpfwd.ShowDialog();
        }
示例#9
0
        public void ShowWeather(IUserID user, string map, string weather)
        {                                                             // отобразить карту и погоду
            WinFormWeatherDisplay wfwd = new WinFormWeatherDisplay(); // окошечко создаем, передаем ему компоненту рассчета погоды и запускаем

            wfwd.WC      = wc;
            wfwd.WEATHER = weather;
            wfwd.MAP     = map;
            wfwd.USER    = user;
            wfwd.ShowDialog();
        }
示例#10
0
        public int ChangeUser(IUserID user, string[] changes)
        {
            ChangeUser req = new ChangeUser(changes);

            req.setUser = user;
            IObjects send = req;

            db.SEND(ref send);

            return(1);
        }
示例#11
0
        public void Delete(IUserID user, string path)
        {
            DeleteFileRequest t = new DeleteFileRequest();

            t.deletefile = path;
            t.SetUser    = user;

            IObjects        send = t;
            IDataBaseAccess db   = Fabric.GetDataBaseAccess();

            db.SEND(ref send);
        }
示例#12
0
        public int DeleteUser(IUserID user, string delete)
        {
            DeleteUser req = new DeleteUser(delete);

            req.setUser = user;

            IObjects send = req;

            db.SEND(ref send);

            return(1);
        }
示例#13
0
        public void CreateNewDirectory(IUserID user, string newDir)
        {
            CreateDirectoryRequest t = new CreateDirectoryRequest();

            t.directory = newDir;
            t.SetUser   = user;

            IObjects        send = t;
            IDataBaseAccess db   = Fabric.GetDataBaseAccess();

            db.SEND(ref send);
        }
示例#14
0
        public void CreateNewFile(IUserID user, string newFile, string[] rights)
        {
            CreateFileRequest t = new CreateFileRequest();

            t.newfile   = newFile;
            t.SetUser   = user;
            t.newrights = rights;

            IObjects        send = t;
            IDataBaseAccess db   = Fabric.GetDataBaseAccess();

            db.SEND(ref send);
        }
示例#15
0
        public UserList WatchUsers(IUserID user)
        {
            WatchUsers req = new WatchUsers();

            req.setUser = user;
            IObjects   s = (IObjects)req;
            WatchUsers t = (WatchUsers)db.SEND(ref s);

            if (t == null)
            {
                return(null);
            }
            return(t.myUserList);
        }
示例#16
0
        public void SaveThisFile(IUserID user, string path, string[] buffer)
        {
            // сохранить файл

            FileSaveRequest t = new FileSaveRequest();

            t.FileBuffer = buffer;
            t.ReqPath    = path;
            t.SetUser    = user;

            IObjects        send = t;
            IDataBaseAccess db   = Fabric.GetDataBaseAccess();

            db.SEND(ref send);
        }
示例#17
0
        public FileTree GetFiles(IUserID user) // дай мне список файлов. я - user
        {
            IDataBaseAccess db = Fabric.GetDataBaseAccess();
            FileListRequest t  = new FileListRequest();

            t.SetUser(user);
            IObjects        send   = t;
            FileListRequest answer = (FileListRequest)db.SEND(ref send);

            if (answer == null)
            {
                return(null);
            }
            return(answer.answer);
        }
示例#18
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (current != null)
            {
                userMANAGER.LogOff(current);
            }

            current = userMANAGER.GetProfile();
            string tmp = "";

            tmp           = current.GetValue.ToString();
            textBox1.Text = tmp;

            UpdateBase();
        }
示例#19
0
        public string[] GetThisFile(IUserID user, string path) // дай мне вот этот файл. путь я взял из предоставленного дерева файлов
        {
            FileGetRequest req = new FileGetRequest();

            req.ReqPath = path;
            req.SetUser = user;
            IDataBaseAccess db = Fabric.GetDataBaseAccess();

            IObjects send = req;

            req = (FileGetRequest)db.SEND(ref send);

            if (req.FileBuffer != null)
            {
                return(req.FileBuffer);
            }
            else
            {
                return(null);
            }
        }
示例#20
0
        private IUserID current;// текущий пользователь


        public Form1()
        {
            InitializeComponent();
            db             = Fabric.GetDataBaseAccess();
            userMANAGER    = Fabric.GetUserManagement();
            userMANAGER.DB = db;

            current = userMANAGER.GetProfile();
            string tmp = "";

            if (current == null)
            {
                tmp = "Error";
            }
            else
            {
                tmp = current.GetValue.ToString();
            }
            textBox1.Text = tmp;

            UpdateBase();
        }
示例#21
0
 public void SetUser(IUserID who)
 {
     user = who;
 }
示例#22
0
 public LogOff(IUserID user)
 {
     deletethis = user;
 }
示例#23
0
 public void SetReqestedUser(IUserID answer)
 {
     RequestedUserID = answer;
 }
示例#24
0
        public List <WeatherCadr> GetWeatherFromCadr(WeatherCadr cadr, int time, IUserID user, string weather)
        {
            frames = 10; // порция кадров

            // нам нужно в память загрузить кадо

            WeatherCalculator wcalc = new WeatherCalculator();

            wcalc.setTime = time;
            // добавим землю
            for (int i = 0; i < cadr.Land.Count; i++)
            {
                Land t   = (Land)cadr.Land[i];
                Land tmp = new Land(t.X, t.Y, t.R, t.V, t.C);
                wcalc.AddLand(tmp);
            }
            // добавим циклоны
            for (int i = 0; i < cadr.Weather.Count; i++)
            {
                Cyclone t   = (Cyclone)cadr.Weather[i];
                Cyclone tmp = new Cyclone(t.X, t.Y, t.R, t.V, t.C);
                wcalc.AddWeather(tmp);
            }



            // добавим траектории циклонов
            FileManagement.FileManager fm = Fabric.GetFileManager();
            string[] weatherBuffer        = fm.GetThisFile(user, weather);// буффер погоды

            string[] lines = weatherBuffer[0].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);
            wcalc.SetRect(Convert.ToDouble(lines[0]), Convert.ToDouble(lines[1]));


            int pos = 0;

            for (int i = 1; i < weatherBuffer.Length; i++)
            {
                string[] lines1 = weatherBuffer[i].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

                if (lines1.Length == 0) // это условие отбросит строчки после пустой(траектории там для циклонов, если это погода)
                {
                    pos = i; break;
                }
            }

            if (pos != 0)
            {
                pos++;

                for (int i = 0; i < weatherBuffer.Length - pos; i++)
                {
                    if (weatherBuffer[i + pos].Length != 0)
                    {
                        List <double[]> add = new List <double[]>();

                        string[] tmp = weatherBuffer[i + pos].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

                        for (int t = 0; t < tmp.Length; t += 2)
                        {
                            add.Add(new double[2] {
                                Convert.ToDouble(tmp[t]), Convert.ToDouble(tmp[t + 1])
                            });
                        }
                        wcalc.AddWeatherPath(i, add);
                    }
                }
            }

            // все заполнили


            List <WeatherCadr> answer = new List <WeatherCadr>();

            for (int i = 0; i < frames; i++)
            {
                answer.Add(wcalc.CalculateTact());// рассчитали такт еще один и положили в ролик
            }

            return(answer);
        }
示例#25
0
        private int frames; // на сколько кадров вперед идет расчет

        // компонента отвечающая за расчет погоды
        public List <WeatherCadr> GetWeatherFromBegin(IUserID user, string map, string weather)
        {
            frames = 50; // порция кадров

            // дай мне графику(набор кадров вперед) для этой карты для этой погоды в это время
            // считается что можно указывать файлик погоды. типа например есть карта россии
            // для нее есть погода в январе, в феврале .... и соответственно файлики называются. загружаем и смотрим

            List <Graphics> workFrames = new List <Graphics>();

            // этот буффер и отдадим

            // загрузим данные
            FileManagement.FileManager fm = Fabric.GetFileManager();


            string[] mapBuffer     = fm.GetThisFile(user, map);     // буффер карты
            string[] weatherBuffer = fm.GetThisFile(user, weather); // буффер погоды
            //
            // прочитаем заполним структуры в  WeatherCalculator
            WeatherCalculator wcalc = new WeatherCalculator();

            wcalc.setTime = 0;

            // прочитаем карту сначала

            string[] lines = mapBuffer[0].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);
            wcalc.SetRect(Convert.ToDouble(lines[0]), Convert.ToDouble(lines[1]));
            // установили размеры карты


            for (int i = 1; i < mapBuffer.Length; i++)
            {
                string[] lines1 = mapBuffer[i].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

                double X     = Convert.ToDouble(lines1[0]);
                double Y     = Convert.ToDouble(lines1[1]);
                double R     = Convert.ToDouble(lines1[2]);
                double VALUE = Convert.ToDouble(lines1[3]);
                double COND  = Convert.ToDouble(lines1[4]);

                Land tmp = new Land(X, Y, R, VALUE, COND);

                wcalc.AddLand(tmp);
            }

            // теперь прочитаем файл погоды.
            // добавим циклоны
            int pos = 0;

            for (int i = 1; i < weatherBuffer.Length; i++)
            {
                string[] lines1 = weatherBuffer[i].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

                if (lines1.Length != 0) // это условие отбросит строчки после пустой(траектории там для циклонов, если это погода)
                {
                    double X     = Convert.ToDouble(lines1[0]);
                    double Y     = Convert.ToDouble(lines1[1]);
                    double R     = Convert.ToDouble(lines1[2]);
                    double VALUE = Convert.ToDouble(lines1[3]);
                    double COND  = Convert.ToDouble(lines1[4]);

                    Cyclone tmp = new Cyclone(X, Y, R, VALUE, COND);

                    wcalc.AddWeather(tmp);
                }
                else
                {
                    pos = i; break;
                }
            }
            // к циклонам добавим траектории пути

            if (pos != 0)
            {
                pos++;

                for (int i = 0; i < weatherBuffer.Length - pos; i++)
                {
                    if (weatherBuffer[i + pos].Length != 0)
                    {
                        List <double[]> add = new List <double[]>();

                        string[] tmp = weatherBuffer[i + pos].Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

                        for (int t = 0; t < tmp.Length; t += 2)
                        {
                            add.Add(new double[2] {
                                Convert.ToDouble(tmp[t]), Convert.ToDouble(tmp[t + 1])
                            });
                        }
                        wcalc.AddWeatherPath(i, add);
                    }
                }
            }

            // все структуры заполнены


            List <WeatherCadr> answer = new List <WeatherCadr>();

            for (int i = 0; i < frames; i++)
            {
                answer.Add(wcalc.CalculateTact());// рассчитали такт еще один и положили в ролик
            }

            return(answer);

            //  return workFrames;
        }