Exemplo n.º 1
0
private String DoCopyFromServer (BackgroundWorker LocalCopyFromServerListBackgroundWorker,
	String SourceFileName, ref MemoryStream TargetStream, CopyInfoBlock InfoBlock)
	{
	if (TargetStream == null)
		TargetStream = new MemoryStream();
	Int64 Position = 0;
	byte [] ReadBuffer = ReadFileBlockEventCall (SourceFileName, -1, 0, NetworkBlockSize);
	if (ReadBuffer == null)
		{
		InfoBlock.m_Status = "SourceFile \"" + SourceFileName + "\" nicht zugreifbar";
		return "SourceFile \"" + SourceFileName + "\" nicht zugreifbar";
		}
	while (ReadBuffer.Length > 0)
		{
		Position = ProcessReceivedBlock (TargetStream, ReadBuffer, -1, Position, ReadBuffer.Length);
		ReadBuffer = ReadFileBlockEventCall (SourceFileName, -1, Position, NetworkBlockSize);
		}
	Position = ProcessReceivedBlock (TargetStream, null, -1, Position, 0);
	TargetStream.Seek (0, SeekOrigin.Begin);
	InfoBlock.m_Status = "Ok";
	return "Ok";
	}
Exemplo n.º 2
0
private String DoCopyToServer (BackgroundWorker LocalCopyToServerListBackgroundWorker,
	String SourceFileName, String TargetFileName, CopyInfoBlock CopyInfo)
	{
	NetworkBlockSize = CopyInfo.m_TransferBlockSize;
	if (!Basics.IsThisFileAccessable (SourceFileName))
		{
		CopyInfo.m_Status = "File \"" + SourceFileName + "\" nicht Zugreifbar";
		if (LocalCopyToServerListBackgroundWorker != null)
			LocalCopyToServerListBackgroundWorker.ReportProgress (0, CopyInfo);
		return "File \"" + SourceFileName + "\" nicht Zugreifbar";
		}
	Int64 FullLength = (new FileInfo (SourceFileName)).Length;
	Int64 TransferedLength = 0;
	CopyInfo.m_LengthOfActuallFile = FullLength;
	CopyInfo.m_Type = ProgressReportType.FILE_STARTED;
	if ((LocalCopyToServerListBackgroundWorker != null)
		&& (LocalCopyToServerListBackgroundWorker.WorkerReportsProgress == true))
		LocalCopyToServerListBackgroundWorker.ReportProgress (0, CopyInfo);
	if (IsTestRun)
		{
		Basics.ReportInformationToEventViewer ("CommonBasics.DoCopyToServer",
			"Es wurde das Kopieren des Files \r\n\"" + SourceFileName + "\" auf\r\n\""
			+ TargetFileName + "\" begonnen");
		}
	int LoopCounter = 10;
	while (TransferedLength < FullLength)
		{
		if (!Basics.IsThisFileAccessable (SourceFileName))
			{
			if (LoopCounter-- < 0)
				{
				Basics.ReportErrorToEventViewer ("CommonBasics.DoCopyToServer",
					"Der File  \"" + SourceFileName + "\" war nicht zugreibar");
				CopyInfo.m_Status = "LockFehler";
				return "LockFehler";
				}
			Thread.Sleep (500);
			continue;
			}
		int ActuallBlockLength = (int) (((FullLength - TransferedLength) < NetworkBlockSize)
							? (FullLength - TransferedLength) : NetworkBlockSize);
		byte [] FileBuffer = new byte [ActuallBlockLength];
		BinaryReader BinaryFileReader = new BinaryReader (System.IO.File.OpenRead (SourceFileName));
		BinaryFileReader.BaseStream.Seek (TransferedLength, System.IO.SeekOrigin.Begin);
		BinaryFileReader.Read (FileBuffer, 0, ActuallBlockLength);
		BinaryFileReader.Close ();
		TransferedLength = SendFileBlockEventCall (TargetFileName, FileBuffer,
					FullLength, TransferedLength, ActuallBlockLength);
		if (TransferedLength == 0)
			{
			Basics.ReportErrorToEventViewer ("CommonBasics.DoCopyToServer",
				"Beim Transfer des Files\r\n\"" + SourceFileName + "\"\r\nauf den TargetFile\r\n\""
				+ TargetFileName + "\"\r\nkam als Transferlänge 0 oder -1 zurück");
			return "Transferfehler";
			}
		CopyInfo.m_Type = ProgressReportType.BLOCK_ENDE;
		CopyInfo.m_LengthInThisFileUpToNow = TransferedLength;
		if ((LocalCopyToServerListBackgroundWorker != null)
			&& (LocalCopyToServerListBackgroundWorker.WorkerReportsProgress == true))
			LocalCopyToServerListBackgroundWorker.ReportProgress (0, CopyInfo);
		//delete FileBuffer;
		}
	Int64 FinalLengthOfTarget = SendFileBlockEventCall (TargetFileName, null, FullLength, TransferedLength, 0);
	CopyInfo.m_Type = ProgressReportType.FILE_ENDED;
	CopyInfo.m_OverallLengthUpToNow = CopyInfo.m_OverallLengthUpToNow + FullLength;
	if (IsTestRun)
		{
		Basics.ReportInformationToEventViewer ("CommonBasics.DoCopyToServer",
			"Es wurde das Kopieren des Files \r\n\"" + SourceFileName + "\" auf\r\n\""
			+ TargetFileName + "\" beendet");
		}
	CopyInfo.m_ActiveFileIndex++;
	if (FinalLengthOfTarget != FullLength)
		{
		CopyInfo.m_Status = "Längenfehler";
		if ((LocalCopyToServerListBackgroundWorker != null)
			&& (LocalCopyToServerListBackgroundWorker.WorkerReportsProgress == true))
			LocalCopyToServerListBackgroundWorker.ReportProgress (0, CopyInfo);
		return "Längenfehler";
		}
	CopyInfo.m_Status = "Ok";
	if ((LocalCopyToServerListBackgroundWorker != null)
		&& (LocalCopyToServerListBackgroundWorker.WorkerReportsProgress == true))
		LocalCopyToServerListBackgroundWorker.ReportProgress (0, CopyInfo);
	return "Ok";
	}
Exemplo n.º 3
0
private String DoCopyFromServer (BackgroundWorker LocalCopyFromServerListBackgroundWorker,
	String SourceFileName, String TargetFileName, CopyInfoBlock InfoBlock)
	{

	Int64 Position = 0;
	byte[] ReadBuffer = ReadFileBlockEventCall (SourceFileName, -1, 0, NetworkBlockSize);
	if ((ReadBuffer == null)
		|| (ReadBuffer.Length == 0))
		{
		InfoBlock.m_Status = "SourceFile \"" + SourceFileName + "\" nicht zugreifbar";
		return "SourceFile \"" + SourceFileName + "\" nicht zugreifbar";
		}
	while (ReadBuffer.Length > 0)
		{
		Position = ProcessReceivedBlock (TargetFileName, ReadBuffer, -1, Position, ReadBuffer.Length);
		ReadBuffer = ReadFileBlockEventCall (SourceFileName, -1, Position, NetworkBlockSize);
		}
	Position = ProcessReceivedBlock (TargetFileName, null, -1, Position, 0);
	if (!File.Exists (TargetFileName))
		{
		InfoBlock.m_Status = "TargetFile \"" + TargetFileName + "\" nicht zugreifbar";
		return "File \"" + TargetFileName + "\" nicht zugreifbar";
		}
	InfoBlock.m_Status = "Ok";
	if (InfoBlock.m_SourceLastWriteTime > DateTime.MinValue)
		{
		FileInfo FInfo = new FileInfo (TargetFileName);
		FInfo.LastWriteTime = InfoBlock.m_SourceLastWriteTime;
		}
	return "Ok";
	}
Exemplo n.º 4
0
private void FillSourceLastWriteTime (CopyInfoBlock CopyInfo)
	{
	DateTime LastWriteTime = GetLastWriteTimeForServerFile (CopyInfo.m_From);
	if (LastWriteTime != DateTime.MinValue)
		CopyInfo.m_SourceLastWriteTime = LastWriteTime;
	return;
//	DataSet SourceFileSituation = null;
	}
Exemplo n.º 5
0
		public void StartProcessTheCopyToServerQueue ()
			{
			CommonDataBase.CommonBasics DoFileCopyToServerBasics = new CommonBasics ();

			String NextCopyOrderToProcess = ProcessCopyQueue (null, null);

			if (!String.IsNullOrEmpty (NextCopyOrderToProcess))
				{
				DoFileCopyToServerBasics.SendFileBlockEventCall +=
					new SendFileBlockEvent (m_DoFileCopyToServerBasics_SendFileBlockEventCall);
				DoFileCopyToServerBasics.CopyToServerListFinishedCall +=
					new CopyToServerListFinished (m_DoFileCopyToServerBasics_SendFileListFinishedCall);
				}
			else
				{
				return;
				}

			while (!String.IsNullOrEmpty (NextCopyOrderToProcess))
				{
				XDocument Order = XDocument.Load (NextCopyOrderToProcess);
				DataCollection<CopyInfoBlock> CopyList = new DataCollection<CopyInfoBlock>();
				String From = String.Empty;
				String To = String.Empty;
				DateTime SourceLastWriteTime = DateTime.MinValue;
				foreach (XElement HeadEntry in Order.Document.Nodes ())
					{
					if (HeadEntry.Name != CommonDataBase.CommonBasics.XML_AUTO_COPY_LIST)
						continue;
					foreach (XElement Entry in HeadEntry.Nodes ())
						{
						if (Entry.Name != CommonDataBase.CommonBasics.XML_AUTO_FILE)
							continue;

						foreach (XElement FileEntry in Entry.Nodes ())
							{
							if (FileEntry.Name == CommonDataBase.CommonBasics.XML_AUTO_FROM)
								From = FileEntry.Value;
							if (FileEntry.Name == CommonDataBase.CommonBasics.XML_AUTO_TO)
								To = FileEntry.Value;
							if (FileEntry.Name == CommonDataBase.CommonBasics.XML_AUTO_SOURCE_LAST_MODIFIED)
								SourceLastWriteTime = DateTime.Parse (FileEntry.Value);
							}
						}
					}
				CopyInfoBlock InfoBlock = new CopyInfoBlock (From, To, SourceLastWriteTime);
				InfoBlock.m_CleanupInformation = NextCopyOrderToProcess;
				CopyList.Add (InfoBlock);
				DoFileCopyToServerBasics.CopyToServer (CopyList, true);
				if (CopyList [0].m_Status != "Ok")
					{
					MessageBox.Show ("!!Der Übertragungsvorgang Zum Server von\r\n\""
					                 + InfoBlock.m_From + "\"\r\nauf \"" + InfoBlock.m_To
									 + "\"\r\nist fehlgeschlagen!!\r\nDer Status war\r\n\""
					                 + CopyList [0].m_Status + "\"\r\nBitte Fehler beheben und ggf. wiederholen");

					}
				else
					{
					FileInfo FInfo = new FileInfo (From);
					FInfo.LastWriteTime = DateTime.Now.AddSeconds (-30);
					}
				ProcessCopyQueue (null, NextCopyOrderToProcess);
				Basics.DoEvents ();
				NextCopyOrderToProcess = ProcessCopyQueue (null, null);
				}
			}
Exemplo n.º 6
0
		public void SetTransferStatus(CopyInfoBlock InfoBlock)
			{
			foreach (DataTransferPresentationData Entry in TransferList)
				{
				if (Entry.CopyOrderFileName == InfoBlock.m_CleanupInformation)
					{
					Entry.ErrorMessage = InfoBlock.m_Status;
					if (InfoBlock.m_Status == "Ok")
						{
						Entry.Status = true;
						}
					else
						{
						Entry.ShowOnError = Visibility.Visible;
						}
					}
				}
			if (CopyToServerListProgressCall != null)
				CopyToServerListProgressCall(new CopyInfoBlock (ProgressReportType.UNUSED));
			}
Exemplo n.º 7
0
		void m_CacheSynchronizationWorker_DoWork (object sender, DoWorkEventArgs e)
			{
			// Wait until UpLoad has been finished
			m_DownLoadFilesEvent = new ManualResetEvent (false);

			TableSyncParameter Param = (TableSyncParameter) e.Argument;
			NameValueCollection TableNames = Param.TablesToProcess;


			//CommonStatusMessage = "Directories werden überprüft";
			BackgroundWorker LocalCacheSynchronizationWorker = sender as BackgroundWorker;
			CommonDataBase.CommonBasics m_CacheSynchronizationBasics = new CommonBasics ();
			m_CacheSynchronizationBasics.ReadFileBlockEventCall += new ReadFileBlockEvent
				(m_CacheSynchronizationBasics_ReadFileBlockEventCall);
			m_CacheSynchronizationBasics.CopyFromServerListFinishedCall += new CopyFromServerListFinished
				(m_CacheSynchronizationBasics_ReadFileListFinishedCall);
			m_CacheSynchronizationBasics.GetRemoteFileDataEventCall += new GetRemoteFileDataEvent
				(m_CacheSynchronizationBasics_GetRemoteFileDataEventCall);
			m_CacheSynchronizationBasics.DoSpecialNamingCall += new DoSpecialNamingEvent
				(m_Basics_DoSpecialNamingCall);
			m_CacheSynchronizationBasics.CopyFromServerListFinishedCall += new CopyFromServerListFinished (m_CacheSynchronizationBasics_CopyFromServerListFinishedCall);
			int MatchIndex = 0;
			foreach (String TableName in TableNames.Keys)
				{
				DataCollection<CopyInfoBlock> CopyBlock = new DataCollection<CopyInfoBlock>();
				String TargetDirectory = Path.Combine (Path.Combine (CommonDataBase.DataBase.GetLocalWPMediaRoot (),
					"Source"), TableName);
				String SourceDirectory = Path.Combine (Path.Combine (CommonDataBase.DataBase.GetRemoteWPMediaRoot (),
					"Source"), TableName);
				if (TableNames [TableName] != "Gallerie")
					{
					if ((Param.CopyOnlyWhenElementNameMatchOneEntryPerTable != null)
						&& (Param.CopyOnlyWhenElementNameMatchOneEntryPerTable [MatchIndex].Count > 0))
						{
						DataCollection<CopyInfoBlock> HelpCopyBlock = new DataCollection<CopyInfoBlock>();
						m_CacheSynchronizationBasics.SynchronizeNetworkDirectory (SourceDirectory,
								TargetDirectory, new String [] { ".sca", ".xml", ".auto", ".ppt",
														".png", ".jpg", ".bmp", ".tiff", ".jpeg", ".db" },
								TableName, TableNames [TableName].Replace (FORCE_DOWNLOAD_INDICATOR, ""),
								HelpCopyBlock, 30);
						foreach (CopyInfoBlock HelpEntry in HelpCopyBlock)
							{
							String Extension = Path.GetExtension (HelpEntry.m_From);
							String MatchString = String.Empty;
							if (String.Compare (Extension, ".stb", true) == 0)
								{
								MatchString = Path.GetFileNameWithoutExtension (HelpEntry.m_From);
								}
							else
								{
								MatchString = Path.GetFileName (Path.GetDirectoryName (HelpEntry.m_From));

								}
							if (Param.CopyOnlyWhenElementNameMatchOneEntryPerTable [MatchIndex].Contains (MatchString) == true)
								{
								CopyBlock.Add (HelpEntry);
								}
							}
						}
					else
						{
						m_CacheSynchronizationBasics.SynchronizeNetworkDirectory (SourceDirectory,
								TargetDirectory, new String [] { ".sca", ".xml", ".auto", ".ppt",
															".png", ".jpg", ".bmp", ".tiff", ".jpeg", ".db" },
								TableName,
								TableNames [TableName].Replace (
								FORCE_DOWNLOAD_INDICATOR, ""),
								CopyBlock, 30);
						}
					}
				if (CopyBlock.Count > 0)
					{
					CopyInfoBlock RunInfoBlock = new CopyInfoBlock (String.Empty, String.Empty, DateTime.MinValue);
					RunInfoBlock.m_Status = "Für \"" + TableName
						+ "\" sind " + CopyBlock.Count.ToString () + " Updates erforderlich";
					LocalCacheSynchronizationWorker.ReportProgress (0, RunInfoBlock);
					m_CacheSynchronizationBasics.RunCopyFromServerListSynchron (LocalCacheSynchronizationWorker, CopyBlock);
					foreach (CopyInfoBlock Block in CopyBlock)
						{
						if (Block.m_Status != "Ok")
							{
							Basics.ReportErrorToEventViewer ("WPMediaDataBase.m_CacheSynchronizationWorker_DoWork",
								"Der File\r\n\"" + Block.m_To + "\"\r\nkonnte nicht übertragen werden");
							}
						}
					}
				CopyInfoBlock InfoBlock = new CopyInfoBlock (String.Empty, String.Empty, DateTime.MinValue);
				InfoBlock.m_Status = "Processed " + TableName;
				LocalCacheSynchronizationWorker.ReportProgress (101, InfoBlock);
				MatchIndex++;
				}
			}