/*
		2120;01-417;Fredriksson;Jonas;3J;[email protected];Un (C)
		2120;01-417;Fredriksson;Jonas;3;[email protected];Ad
		2120;01-417;Fredriksson;Jonas;3;[email protected];_OkäntB
		2143;01-417;Selander;Martin;3;[email protected];M40
		2143;01-417;Selander;Martin;3;[email protected];C45 (C)
		
		Kolumn 1
			Pistolskyttekortsnummer
		Kolumn 2
			Klubb
		Kolumn 3
			Efternamn
		Kolumn 4
			Förnamn
		Kolumn 5
			Klass. Notera att man kan skriva t.ex. 3D för damklass.
		Kolumn 6
			E-postadress
		Kolumn 7
			Vapenförkortning. Notera att vapenförkortningen måste vara exakt så som programmet presenterar den.
		Kolumn 8
			Patrullnummer (måste inte anges)
		Kolumn 9
			Figur inom patrull (måste inte anges)
		*/
		private string createCompetitorLine(DatabaseDataset.CompetitorsRow competitor)
		{
			DatabaseDataset.ShootersRow shooter =
				competitor.ShootersRow;
			//Allberg.Shooter.WinShooterServerRemoting.Structs.Shooter shooter =
			//    myInterface.GetShooter(competitor.ShooterId);

			StringBuilder toReturn = new StringBuilder();
			if (int.Parse(shooter.Cardnr) >= 0)
				toReturn.Append(shooter.Cardnr + ";");
			else
				toReturn.Append(";");
			toReturn.Append(shooter.ClubId + ";");
			toReturn.Append(shooter.Givenname + ";");
			toReturn.Append(shooter.Surname + ";");
			toReturn.Append(getShooterClassString(competitor.ShooterClass) + ";");
			toReturn.Append(shooter.Email + ";");
			toReturn.Append(competitor.WeaponId + ";");
			if (competitor.PatrolsRow != null)
			{
				DatabaseDataset.PatrolsRow patrol =
					competitor.PatrolsRow;
				toReturn.Append(patrol.PatrolId.ToString() + ";");
				toReturn.Append(competitor.Lane.ToString() + ";");
			}
			else
			{
				toReturn.Append(";");
				toReturn.Append(";");
			}
			toReturn.Append("\r\n");
			
			return toReturn.ToString();
		}
示例#2
0
		Structs.FollowUpReturn[] checkClub(DatabaseDataset.ClubsRow club)
		{
			string filter = "ClubId='" + club.ClubId + "'";
			//filter = "";
			ArrayList toReturn = new ArrayList();
			DatabaseDataset.ShootersRow[] shooters =
				(DatabaseDataset.ShootersRow[])
				//    club.GetShootersRows();
				database.Shooters.Select(filter, "GivenName, Surname");

			foreach (DatabaseDataset.ShootersRow shooter in shooters)
			{
				// This is for safety reasons
				if (shooter.IsArrivedNull())
					shooter.Arrived = false;

				Structs.FollowUpReturn followUp = new Structs.FollowUpReturn();
				followUp.Arrived = shooter.Arrived;
				followUp.CardNr = shooter.Cardnr;
				followUp.ClubName = club.Name;
				followUp.Payed = shooter.Payed;
				followUp.Rounds = getRoundsForShooter(shooter);
				followUp.ResultsExistForRounds = getResultExistForShooter(shooter);
				followUp.ShooterName = shooter.Givenname + ", " + shooter.Surname;
				followUp.ShouldHavePayed = GetShouldHavePayed(shooter);
				toReturn.Add(followUp);
			}

			return (Structs.FollowUpReturn[])toReturn.ToArray(typeof(Structs.FollowUpReturn));
		}
		internal void PatrolAddEmpty(bool notifyGui)
		{
			database = myInterface.databaseClass.Database;

			DateTime compStart = myInterface.GetCompetitions()[0].StartTime;

			int timeBetweenPatrols = database.Competition[0].PatrolTimeBetween;
			int lastStart = 0 - timeBetweenPatrols;
			int patrolId = 0;

			foreach(DatabaseDataset.PatrolsRow row in database.Patrols)
			{
				if (row.StartDateTime > lastStart)
				{
					lastStart = row.StartDateTime;
				}
				if (row.PatrolId > patrolId)
					patrolId = row.PatrolId;
			}

			Structs.Patrol patrol = new Structs.Patrol();
			patrol.PatrolId = patrolId + 1;
			patrol.StartDateTime = compStart.AddMinutes((int)(lastStart + timeBetweenPatrols));
			patrol.CompetitionId = database.Competition[0].CompetitionId;

			myInterface.NewPatrol(patrol, notifyGui);
		}
		internal byte[] ExportResults()
		{
			database = myInterface.databaseClass.Database;

			MemoryStream memStream = new MemoryStream();
			database.WriteXml(memStream);
			return memStream.ToArray();
		}
		internal ResultsReturnTeam[] GetTeamResults(Structs.ResultWeaponsClass wclass, 
			Structs.Competition competition)
		{
			Trace.WriteLine("CResults.GetResults(" + wclass.ToString() +
				") started on thread \"" +
				System.Threading.Thread.CurrentThread.Name + "\" ( " +
				System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

			while (resultsAlreadyRunning)
				System.Threading.Thread.Sleep(50);

			Trace.WriteLine("CResults: GetResults() " + 
				" locking \"GetResultsLock\" on thread \"" +
				Thread.CurrentThread.Name + "\" ( " +
				System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

			lock(GetResultsLock)
			{
				Trace.WriteLine("CResults: GetResults() " + 
					" locked \"GetResultsLock\" on thread \"" +
					Thread.CurrentThread.Name + "\" ( " +
					System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

				try
				{
					resultsAlreadyRunning = true;
					CompetitionType = myInterface.CompetitionCurrent.Type;
					database = myInterface.databaseClass.Database;

					useNorwegianCount = competition.NorwegianCount;

					// Ok, now lets count the real ones
					DSResults results = getAllTeams(wclass);
					results = sortTeams(results);

					ResultsReturnTeam[] toReturn = 
						convertIntoArray(results);

					return toReturn;
				}
				finally
				{
					Trace.WriteLine("CResultsTeam: GetResults() " + 
						" unlocking \"GetResultsLock\" on thread \"" +
						Thread.CurrentThread.Name + "\" ( " +
						System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

					Trace.WriteLine("CResults.GetResults ended.");
					resultsAlreadyRunning = false;
				}
			}
		}
		internal byte[] ExportResults()
		{
			database = myInterface.databaseClass.Database;

			StringBuilder toReturn = new StringBuilder();
			foreach (DatabaseDataset.CompetitorsRow competitor in
				database.Competitors)
			{
				toReturn.Append(createCompetitorLine(competitor));
			}

			Encoding encoding = Encoding.GetEncoding(1252);
			byte[] bytes = encoding.GetBytes(toReturn.ToString());

			return bytes;
		}
		internal byte[] ExportClubs()
		{
			database = myInterface.databaseClass.Database;

			StringBuilder toReturn = new StringBuilder();
			toReturn.Append("Klubbid;Namn;Land;Epost;Bankgiro;Plusgiro;\r\n");
			foreach (DatabaseDataset.ClubsRow club in
				database.Clubs)
			{
				toReturn.Append(createClubsLine(club));
			}

			Encoding encoding = Encoding.GetEncoding(1252);
			byte[] bytes = encoding.GetBytes(toReturn.ToString());

			return bytes;
		}
		private string createWeaponsLine(DatabaseDataset.WeaponsRow weapon)
		{
			StringBuilder toReturn = new StringBuilder();

			toReturn.Append(weapon.WeaponId + ";");
			toReturn.Append(weapon.Manufacturer + ";");
			toReturn.Append(weapon.Model + ";");
			toReturn.Append(weapon.Caliber + ";");
			toReturn.Append("\r\n");

			return toReturn.ToString();
		}
		internal byte[] ExportWeapons()
		{
			database = myInterface.databaseClass.Database;

			StringBuilder toReturn = new StringBuilder();
			toReturn.Append("WeaponId;Tillverkare;Modell;Kaliber;\r\n");
			foreach (DatabaseDataset.WeaponsRow weapon in
				database.Weapons)
			{
				toReturn.Append(createWeaponsLine(weapon));
			}

			Encoding encoding = Encoding.GetEncoding(1252);
			byte[] bytes = encoding.GetBytes(toReturn.ToString());

			return bytes;

		}
示例#10
0
		private int getResultExistForShooter(DatabaseDataset.ShootersRow shooter)
		{
			DatabaseDataset.CompetitorsRow[] competitors =
				(DatabaseDataset.CompetitorsRow[])
				shooter.GetCompetitorsRows();

			int count = 0;
			foreach (DatabaseDataset.CompetitorsRow competitor in
				competitors)
			{
				if (competitor.GetCompetitorResultsRows().Length > 0)
					count++;
			}

			return count;
		}
示例#11
0
		private int getRoundsForShooter(DatabaseDataset.ShootersRow shooter)
		{
			return shooter.GetCompetitorsRows().Length;
		}
示例#12
0
		private void CreateTables(DatabaseDataset database, OleDbConnection conn)
		{
			Trace.WriteLine("CDatabase: Entering createDatabases()");

			Trace.WriteLine("CDatabase: createTables() " + 
				" locking \"DatabaseLocker\" on thread \"" +
				Thread.CurrentThread.Name + "\" ( " +
				Thread.CurrentThread.ManagedThreadId + " )");
			lock(_databaseLocker)
			{
				Trace.WriteLine("CDatabase: createTables() " + 
					" locked \"DatabaseLocker\" on thread \"" +
					Thread.CurrentThread.Name + "\" ( " +
					Thread.CurrentThread.ManagedThreadId + " )");

				CreateTable(database.Tables["DbInfo"], conn);
				CreateTable(database.Tables["Clubs"], conn);
				CreateTable(database.Tables["shooters"], conn);
				CreateTable(database.Tables["Weapons"], conn);
				CreateTable(database.Tables["Competition"], conn);
				CreateTable(database.Tables["Patrols"], conn);
				UpdateTablePatrols();
				CreateTable(database.Tables["Competitors"], conn);
				CreateTable(database.Tables["Stations"], conn);
				CreateTable(database.Tables["CompetitorResults"], conn);
				CreateTable(database.Tables["Teams"], conn);

				Trace.WriteLine("CDatabase: createTables() " + 
					" unlocking \"DatabaseLocker\" on thread \"" +
					Thread.CurrentThread.Name + "\" ( " +
					Thread.CurrentThread.ManagedThreadId + " )");
			}
		}
		internal void PatrolRemoveLast()
		{
			Trace.WriteLine("CPatrolManagement: patrolRemoveLast() started on thread \"" +
				Thread.CurrentThread.Name + "\" ( " +
				System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() +
				" )");

			try
			{
				database = myInterface.databaseClass.Database;

				if (database.Patrols.Count == 0)
					return;

				Trace.WriteLine("CPatrolManagement: PatrolRemoveLast() " + 
					" locking \"PatrolRemoveLastLock\" on thread \"" +
					Thread.CurrentThread.Name + "\" ( " +
					System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

				lock(PatrolRemoveLastLock)
				{
					Trace.WriteLine("CPatrolManagement: PatrolRemoveLast() " + 
						" locked \"PatrolRemoveLastLock\" on thread \"" +
						Thread.CurrentThread.Name + "\" ( " +
						System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

					if (database.Patrols.Count == 0)
						return;

					int pid = getHighestPatrolId();
					if (myInterface.GetCompetitorsCountPatrol(myInterface.GetPatrol(pid)) > 0)
						throw new ApplicationException("CompetitorsExist");

					Structs.Patrol patrol =
						myInterface.GetPatrol(pid);
					myInterface.DelPatrol(patrol, false);

					Trace.WriteLine("CPatrolManagement: PatrolRemoveLast() " + 
						" locked \"PatrolRemoveLastLock\" on thread \"" +
						Thread.CurrentThread.Name + "\" ( " +
						System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");
				}
			}
			catch(System.Data.DeletedRowInaccessibleException)
			{
				Trace.WriteLine("CPatrolManagement: PatrolRemoveLast DeletedRowInaccessibleException. Retrying.");

				PatrolRemoveLast();
			}
			finally
			{
				Trace.WriteLine("CPatrolManagement: PatrolRemoveLast ended.");
			}
		}
		internal void PatrolAddAutomaticCompetitors(bool CleanPatrols, bool preserveCompetitorOrder)
		{
			Trace.WriteLine("CPatrolManagement: PatrolAddAutomaticCompetitors(" +
				CleanPatrols.ToString() + ") started on thread \"" +
				Thread.CurrentThread.Name + "\" ( " +
				System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() +
				" )");

			database = myInterface.databaseClass.Database;

			// First clean patrols if instructed
			if (CleanPatrols)
			{
				cleanPatrols();
				myInterface.updatedPatrol();
			}

			// Check there is any competitors
			if (this.database.Competitors
				.Select("PatrolId is null").Length == 0)
				return;

			this.myInterface.updatedPatrolAddAutomaticCompetitors(
				0, 3*database.Shooters.Count);
			
			// Create list
			DSPatrolManagement dblist = createList();

			// Sort list
			dblist = sortList(dblist);

			// Spread list evenly
			spreadList(dblist, preserveCompetitorOrder);

			// Update interface
			this.myInterface.updatedPatrolAddAutomaticCompetitors(
				3*database.Shooters.Count, 
				3*database.Shooters.Count);

			Trace.WriteLine("CPatrolManagement: PatrolAddAutomaticCompetitors ended.");
		}
示例#15
0
		/*private ResultsReturn[] convertIntoArray(ResultsReturn results)
		{
			ResultsReturn[] returnArray =
				new ResultsReturn[results.Count];
			int i = 0;
			Structs.Competition competition = myInterface.GetCompetitions()[0];
			foreach(DSResults.ResultsRow row in results)
			{
				returnArray[i] = new ResultsReturn(competition.Type, competition.NorwegianCount);
				returnArray[i].ClubId = row.ClubId;
				returnArray[i].CompetitorId = row.CompetitorId;
				returnArray[i].HitsTotal = row.Hits;
				returnArray[i].Medal = row.Medal;
				returnArray[i].PointsTotal = row.Points;
				returnArray[i].ShooterName = row.ShooterName;
				returnArray[i].FigureHitsTotal = row.FigureHits;
				returnArray[i].HitsPerStnString = row.HitsPerStn;
				returnArray[i].FinalShootingPlace = row.FinalShootingPlace;
				returnArray[i].PriceMoney = row.PriceMoney;
				i++;
			}
			return returnArray;
		}*/

		internal Structs.ResultWeaponsClass[] ResultsGetWClasses()
		{
			database = myInterface.databaseClass.Database;

			ArrayList list = new ArrayList();
			for(int i=1;i<=Structs.ResultWeaponsClassMax;i++)
			{
				Structs.ResultWeaponsClass thisClass =
					(Structs.ResultWeaponsClass)i;

				try
				{
					int.Parse(thisClass.ToString());
				}
				catch(Exception)
				{
					// thisClass is a string, which means it is a valid class
					if (myInterface.GetCompetitorResultsExist(thisClass))
						list.Add(thisClass);
				}
			}

			return (Structs.ResultWeaponsClass[])list.ToArray(typeof(Structs.ResultWeaponsClass));
		}
示例#16
0
		internal ResultsReturn[] GetResults(
			Structs.ResultWeaponsClass wclass, 
			Structs.ShootersClass uclass,
			Structs.Competition competition,
			bool finalResults)
		{
			Trace.WriteLine("CResults.GetResults(" + wclass.ToString() 
				+ ", " + uclass.ToString() + 
				") started on thread \"" +
				System.Threading.Thread.CurrentThread.Name + "\" ( " +
				System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

			while (resultsAlreadyRunning)
				System.Threading.Thread.Sleep(50);

			Trace.WriteLine("CResults: GetResults() " + 
				" locking \"GetResultsLock\" on thread \"" +
				Thread.CurrentThread.Name + "\" ( " +
				System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

			lock(GetResultsLock)
			{
				Trace.WriteLine("CResults: GetResults() " + 
					" locked \"GetResultsLock\" on thread \"" +
					Thread.CurrentThread.Name + "\" ( " +
					System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

				try
				{
					resultsAlreadyRunning = true;

					database = myInterface.databaseClass.Database;

					useNorwegianCount = competition.NorwegianCount;

					// First find out about the standard medals
					calculateStandardMedals(wclass, uclass);

					// Ok, now lets count the real ones
					if (competition.OneClass)
					{
						switch (uclass)
						{
							case Structs.ShootersClass.Damklass:
								uclass = Structs.ShootersClass.Damklass;
								break;
							case Structs.ShootersClass.Damklass1:
								uclass = Structs.ShootersClass.Damklass;
								break;
							case Structs.ShootersClass.Damklass2:
								uclass = Structs.ShootersClass.Damklass;
								break;
							case Structs.ShootersClass.Damklass3:
								uclass = Structs.ShootersClass.Damklass;
								break;
							case Structs.ShootersClass.Juniorklass:
								break;
							case Structs.ShootersClass.Klass:
								uclass = Structs.ShootersClass.Klass;
								break;
							case Structs.ShootersClass.Klass1:
								uclass = Structs.ShootersClass.Klass;
								break;
							case Structs.ShootersClass.Klass2:
								uclass = Structs.ShootersClass.Klass;
								break;
							case Structs.ShootersClass.Klass3:
								uclass = Structs.ShootersClass.Klass;
								break;
							case Structs.ShootersClass.VeteranklassYngre:
								break;
							case Structs.ShootersClass.VeteranklassÄldre:
								break;
							case Structs.ShootersClass.Öppen:
								break;
							default:
								throw new NotSupportedException("Structs.ShootersClass." +
									uclass.ToString() + " is not supported");
						}
					}
					List<ResultsReturn> results = getAllCompetitors(wclass, uclass, false);
					results.Sort();
					if (myInterface.CompetitionCurrent.Championship !=
						Structs.CompetitionChampionshipEnum.Club)
					{
						results = markMedals(results);
					}
					else
					{
						// Mark all as not having medals
						foreach (ResultsReturn row in results)
						{
							row.Medal = Structs.Medal.None;
						}
					}

					if (finalResults)
					{
						results = markPriceMoney(results);
					}

					return results.ToArray();
				}
				finally
				{
					Trace.WriteLine("CResults: GetResults() " + 
						" unlocking \"GetResultsLock\" on thread \"" +
						Thread.CurrentThread.Name + "\" ( " +
						System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");

					Trace.WriteLine("CResults.GetResults ended.");
					resultsAlreadyRunning = false;
				}
			}
		}
		private static void addConstraint(string constraintName, DatabaseDataset database, OleDbConnection conn)
		{
			Trace.WriteLine("CDatabase: Entering createDatabaseConstraints()");

			StringBuilder sqlCreate = new StringBuilder("");

			foreach (System.Data.DataRelation rel in database.Relations)
			{
				if (rel.RelationName == constraintName)
				{
					sqlCreate = new StringBuilder("");
					sqlCreate.Append("ALTER TABLE " + rel.ChildTable.TableName + " ADD " +
						"CONSTRAINT " + rel.RelationName + " FOREIGN KEY " +
						"(" + rel.ChildColumns[0].ColumnName + ")" +
						" REFERENCES " + rel.ParentTable +
						" (" + rel.ParentColumns[0].ColumnName +
						")");

					// Execute against database
					Trace.WriteLine("CDatabase: Running SQL to create relation: " + sqlCreate.ToString());
					OleDbCommand SQL = new OleDbCommand(sqlCreate.ToString(), conn);

					SQL.ExecuteNonQuery();
					SQL.Dispose();
				}
			}
		}
		private void UpgradeVersion1_1()
		{

			if (checkTableExist("Teams", dbconn))
			{
				dropTable("Teams", dbconn);
			}
			// Create table Teams
			CDatabase.CreateTable(new DatabaseDataset.TeamsDataTable(), dbconn);

			string sqlCreate;
			OleDbCommand SQL;

			// Create restrictions for table Teams
			DatabaseDataset dbtemp = new DatabaseDataset();
			foreach (System.Data.DataRelation rel in dbtemp.Relations)
			{
				if (rel.RelationName.IndexOf("Teams") > -1)
				{
					sqlCreate = "ALTER TABLE " + rel.ChildTable.TableName + " ADD " +
						"CONSTRAINT " + rel.RelationName + " FOREIGN KEY " +
						"(" + rel.ChildColumns[0].ColumnName + ")" +
						" REFERENCES " + rel.ParentTable +
						" (" + rel.ParentColumns[0].ColumnName +
						")";

					// Execute against database
					Trace.WriteLine("CDatabase: Running SQL to create relation: " + sqlCreate);
					SQL = new OleDbCommand(sqlCreate, dbconn);
					SQL.ExecuteNonQuery();
					SQL.Dispose();
				}
			}

			// Create table DbInfo
			CDatabase.CreateTable(new DatabaseDataset.DbInfoDataTable(), dbconn);

			// Change shooter table to include "arrived" column
			addColumnToTable("shooters", "Arrived", "bit null", dbconn);
			addColumnToTable("shooters", "EmailResult", "bit null", dbconn);
		}
示例#19
0
		private static void CreateDatabaseConstraints(DatabaseDataset database, OleDbConnection conn)
		{
			Trace.WriteLine("CDatabase: Entering createDatabaseConstraints()");

			var sqlCreate = "";

			foreach (DataRelation rel in database.Relations)
			{
				sqlCreate = "ALTER TABLE " + rel.ChildTable.TableName + " ADD " +
					"CONSTRAINT " + rel.RelationName + " FOREIGN KEY " +
					"(" + rel.ChildColumns[0].ColumnName + ")" +
					" REFERENCES " + rel.ParentTable + 
					" (" + rel.ParentColumns[0].ColumnName +
					")";

				// Execute against database
				Trace.WriteLine("CDatabase: Running SQL to create relation: " + sqlCreate);
				var SQL = new OleDbCommand(sqlCreate,conn);

				SQL.ExecuteNonQuery();
			}
		}
		private string createClubsLine(DatabaseDataset.ClubsRow club)
		{
			StringBuilder toReturn = new StringBuilder();

			toReturn.Append(club.ClubId + ";");
			toReturn.Append(club.Name + ";");
			toReturn.Append(club.Country + ";");
			if (!club.IsEmailNull())
				toReturn.Append(club.Email + ";");
			else
				toReturn.Append(";");
			if (!club.IsBankgiroNull())
				toReturn.Append(club.Bankgiro + ";");
			else
				toReturn.Append(";");
			if (!club.IsPlusgiroNull())
				toReturn.Append(club.Plusgiro + ";");
			else
				toReturn.Append(";");
			toReturn.Append("\r\n");

			return toReturn.ToString();
		}
示例#21
0
		private int GetShouldHavePayed(DatabaseDataset.ShootersRow shooter)
		{
			int paying = 0;
			switch (shooter.GetCompetitorsRows().Length)
			{
				case 1:
					paying = myInterface.CompetitionCurrent.ShooterFee1;
					break;
				case 2:
					paying = myInterface.CompetitionCurrent.ShooterFee1 +
						myInterface.CompetitionCurrent.ShooterFee2;
					break;
				case 3:
					paying = myInterface.CompetitionCurrent.ShooterFee1 +
						myInterface.CompetitionCurrent.ShooterFee2 +
						myInterface.CompetitionCurrent.ShooterFee3;
					break;
				case 4:
					paying = myInterface.CompetitionCurrent.ShooterFee1 +
						myInterface.CompetitionCurrent.ShooterFee2 +
						myInterface.CompetitionCurrent.ShooterFee3 +
						myInterface.CompetitionCurrent.ShooterFee4;
					break;
			}
			return paying;
		}
示例#22
0
		internal void OpenDatabase()
		{
			Trace.WriteLine("CDatabase: Entering openDatabase()");

			Trace.WriteLine("CDatabase: openDatabase() " + 
				" locking \"DatabaseLocker\" on thread \"" +
				Thread.CurrentThread.Name + "\" ( " +
				Thread.CurrentThread.ManagedThreadId + " )");
			lock(_databaseLocker)
			{
				Trace.WriteLine("CDatabase: openDatabase() " + 
					" locked \"DatabaseLocker\" on thread \"" +
					Thread.CurrentThread.Name + "\" ( " +
					Thread.CurrentThread.ManagedThreadId + " )");

				Database = new DatabaseDataset();
				CreateDataAdapters();

				// Get data into dataset
				Trace.WriteLine("   Reading DbInfo from file.");
				_daDbInfo.Fill(Database, "DbInfo");

				Trace.WriteLine("   Reading Clubs from file.");
				DAClubs.Fill(Database, "Clubs");

				Trace.WriteLine("   Reading Shooters from file.");
				_daShooters.Fill(Database, "Shooters");

				Trace.WriteLine("   Reading Weapons from file.");
				_daWeapons.Fill(Database, "Weapons");

				Trace.WriteLine("   Reading Competition from file.");
				_daCompetition.Fill(Database, "Competition");

				Trace.WriteLine("   Reading patrols from file.");
				_daPatrols.Fill(Database, "Patrols");

				Trace.WriteLine("   Reading Stations from file.");
				_daStations.Fill(Database, "Stations");
			
				Trace.WriteLine("   Reading Competitors from file.");
				_daCompetitors.Fill(Database, "Competitors");
			
				Trace.WriteLine("   Reading CompetitorResults from file.");
				_daCompetitorResults.Fill(Database, "CompetitorResults");

				Trace.WriteLine("   Reading Teams from file.");
				_daTeams.Fill(Database, "Teams");

				// Tell gui data is updated
				Trace.WriteLine("   Done reading from file. Update GUI.");
				MyInterface.updatedClub();
				MyInterface.updatedShooter(new Structs.Shooter());
				MyInterface.updatedWeapon();
				MyInterface.updatedCompetition();
				MyInterface.updatedPatrol();
				MyInterface.updatedStation();
				MyInterface.updatedCompetitor(new Structs.Competitor());
				MyInterface.updatedCompetitorResult(new Structs.CompetitorResult());
				MyInterface.updatedTeam();

				Trace.WriteLine("CDatabase: openDatabase() " + 
					" unlocking \"DatabaseLocker\" on thread \"" +
					Thread.CurrentThread.Name + "\" ( " +
					Thread.CurrentThread.ManagedThreadId + " )");
			}
		}
示例#23
0
		internal Structs.ShootersClass[] ResultsGetUClasses(
			Structs.ResultWeaponsClass wclass)
		{
			Trace.WriteLine("CResult.ResultsGetUClasses(\"" + 
				wclass.ToString() + "\") " +
				"started on thread \"" +
				System.Threading.Thread.CurrentThread.Name + "\" ( " +
				System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " )");
			DateTime start = DateTime.Now;

			database = myInterface.databaseClass.Database;
			List<int> sClassesIntTable = new List<int>();
			List<Structs.ShootersClass> shooterClasses = new List<Structs.ShootersClass>();

			foreach(DatabaseDataset.CompetitorsRow row in
				database.Competitors)
			{
				Structs.Weapon weapon = myInterface.GetWeapon(row.WeaponId);
				if (myInterface.ConvertWeaponsClassToResultClass(weapon.WClass) == 
					wclass)
				{
					if (row.GetChildRows("CompetitorsCompetitorResults").Length > 0)
					{
						if (!sClassesIntTable.Contains(row.ShooterClass))
						{
							sClassesIntTable.Add(row.ShooterClass);
							Structs.ShootersClass uclass =
								(Structs.ShootersClass)row.ShooterClass;
							shooterClasses.Add(uclass);
						}
					}
				}
			}

			if (myInterface.CompetitionCurrent.OneClass)
			{
				if (shooterClasses.Contains(Structs.ShootersClass.Klass1) ||
					shooterClasses.Contains(Structs.ShootersClass.Klass2) ||
					shooterClasses.Contains(Structs.ShootersClass.Klass3))
				{
					shooterClasses.Add(Structs.ShootersClass.Klass);
					shooterClasses.Remove(Structs.ShootersClass.Klass1);
					shooterClasses.Remove(Structs.ShootersClass.Klass2);
					shooterClasses.Remove(Structs.ShootersClass.Klass3);
				}

				if (shooterClasses.Contains(Structs.ShootersClass.Damklass1) ||
					shooterClasses.Contains(Structs.ShootersClass.Damklass2) ||
					shooterClasses.Contains(Structs.ShootersClass.Damklass3))
				{
					shooterClasses.Add(Structs.ShootersClass.Damklass);
					shooterClasses.Remove(Structs.ShootersClass.Damklass1);
					shooterClasses.Remove(Structs.ShootersClass.Damklass2);
					shooterClasses.Remove(Structs.ShootersClass.Damklass3);
				}
			}

			/*for(int i=0 ; i<=Structs.ShootersClassMax ; i++)
			{
				try
				{
					if (sClassesIntTable.Contains(i))
					{
						int.Parse(((Structs.ShootersClass)i).ToString());
					}
				}
				catch(System.FormatException)
				{
					// Ok, we got a class
					Structs.ShootersClass uclass = 
						(Structs.ShootersClass)i;
					shooterClasses.Add(uclass);
				}
			}*/

			shooterClasses.Sort();

			Trace.WriteLine("CResult.ResultsGetUClasses(\"" + 
				wclass.ToString() + "\") " +
				"ending after " + 
				(DateTime.Now-start).TotalMilliseconds.ToString() + 
				" ms.");

			return shooterClasses.ToArray();
		}
示例#24
0
		internal void CreateDefaultDatabaseContent()
		{
			Trace.WriteLine("CDatabase: Entering createDefaultDatabaseContent()");
			Trace.WriteLine("CDatabase: createDefaultDatabaseContent() " + 
				" locking \"DatabaseLocker\" on thread \"" +
				Thread.CurrentThread.Name + "\" ( " +
				Thread.CurrentThread.ManagedThreadId + " )");

			lock(_databaseLocker)
			{
				Trace.WriteLine("CDatabase: createDefaultDatabaseContent() " + 
					" locked \"DatabaseLocker\" on thread \"" +
					Thread.CurrentThread.Name + "\" ( " +
					Thread.CurrentThread.ManagedThreadId + " )");

				OleDbCommand cmd = null;
				try
				{
					Database = new DatabaseDataset();
					Conn = new OleDbConnection(MyInterface.connectionString);
					Conn.Open();


					CreateTables(Database, Conn);
					CreateDatabaseConstraints(Database, Conn);

					cmd = new OleDbCommand(
						"insert into DbInfo (KeyName, KeyValue) values ('Version', '" + CurrentDbVersion + "')",
						Conn);
					cmd.ExecuteNonQuery();

					GetDefaultContent();

					Conn.Close();
				}
				catch (Exception exc)
				{
					Trace.WriteLine(exc.ToString());
					throw;
				}
				finally
				{
					if (cmd != null)
						cmd.Dispose();
				}
				CreateDataAdapters();
				MyInterface.updatedClub();
				MyInterface.updatedWeapon();

				Trace.WriteLine("CDatabase: createDefaultDatabaseContent() " + 
					" unlocking \"DatabaseLocker\" on thread \"" +
					Thread.CurrentThread.Name + "\" ( " +
					Thread.CurrentThread.ManagedThreadId + " )");
			}
		}