Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
JobListModel.cs 1.87 KiB
Newer Older
using System;
using System.Collections.Generic;
using System.IO;
using Castle.Core.Internal;
using VECTO3GUI.Helper;
using VECTO3GUI.ViewModel.Impl;

namespace VECTO3GUI.Model
{

	public class JobListEntry
	{
		public bool IsSelected { get; set; }
		public string JobFilePath { get; set; }
	}

	public class JobListModel
	{
		private const string ConfigFolderName = "Config";
		private const string JobListFileName = "JobList.txt";

		private string _jobListFilePath = Path.Combine(".", ConfigFolderName, JobListFileName);

		public List<JobListEntry> JobList { get; set; }

		public JobListModel()
		{
			SetConfigFolder();
			LoadJobList();
		}

		private void SetConfigFolder()
		{
			if (!Directory.Exists($"./{ConfigFolderName}")) {
				Directory.CreateDirectory($"{ConfigFolderName}");
			}
		}

		private void LoadJobList()
		{
			var jobList = new List<JobListEntry>();
			if (File.Exists(_jobListFilePath))
				jobList = SerializeHelper.DeserializeToObject<List<JobListEntry>>(_jobListFilePath);
			JobList = jobList;
		}


		public void SaveJobList(IList<JobEntry> jobEntries)
		{
			SetJobList(jobEntries);
			SerializeHelper.SerializeToFile(_jobListFilePath, JobList);
		}
		
		private void SetJobList(IList<JobEntry> jobEntries)
		{
				return;

			JobList = new List<JobListEntry>();

			for (int i = 0; i < jobEntries.Count; i++) {
				JobList.Add
				(
					new JobListEntry
					{
						IsSelected = jobEntries[i].Selected,
						JobFilePath = jobEntries[i].JobEntryFilePath
					}
				);
			}
		}

		public IList<JobEntry> GetJobEntries()
		{
			var jobEntries = new List<JobEntry>();

			if (JobList.IsNullOrEmpty())
				return jobEntries;

			for (int i = 0; i < JobList.Count; i++) {
				var jobEntry = SerializeHelper.DeserializeToObject<JobEntry>(JobList[i].JobFilePath);
				if(jobEntry != null)
					jobEntries.Add(jobEntry);
			}

			return jobEntries;
		}
	}
}