#region Namespace
using System;
using System.Diagnostics;
using System.Threading;
using Asm.As.Oib.Client.CustomExtensions;
using com.itac.mes.proxy.business;
using com.itac.mes.tools;
using com.itac.oib.client.customextensions;
using Constants = com.itac.mes.tools.Constants;
#endregion
namespace Itac.Oib
{
///
/// Receiver class for the Changeover manager events
///
public class ChangeoverReceiver : IDisposable, IReceiver
{
#region Fields
public OIBEventHandler _eventHandler { get; set; }
private readonly ChangeoverManager _changeoverManager;
#endregion
#region Constructor
public ChangeoverReceiver(ChangeoverManager changeoverManager)
{
_changeoverManager = changeoverManager;
_changeoverManager.LineChangeover += new Asm.As.Oib.Client.CustomExtensions.LineChangeoverEvent(ChangeoverManagerLineChangeover);
}
#endregion
#region IDisposeable
public void Dispose()
{
if (_changeoverManager != null)
_changeoverManager.Dispose();
}
#endregion
#region Start/Stop
public void Start()
{
}
public void Stop()
{
}
#endregion
#region Handling of events
public class LineChangeoverThread : ThreadTemplate
{
public LineChangeoverThread(OIBEventHandler eventHandler, Asm.As.Oib.Client.CustomExtensions.LineChangeoverEventArgs request) : base(eventHandler, request) { }
public void ThreadFunction()
{
var mesNamespaceConformRequest = LineChangeoverEventArgsMapper.get(_request);
getEventHandler().lineChangeoverEvent(mesNamespaceConformRequest);
}
}
public void ChangeoverManagerLineChangeover(object sender, Asm.As.Oib.Client.CustomExtensions.LineChangeoverEventArgs args)
{
try
{
LogHandler.log(Constants.LOGGER, TraceEventType.Information, string.Format("Changeover completed for line '{0}'", args.Line.Name));
// interessante Infos:
// String conveyorModeString = args.Line.StationInLines[0].StationConveyorSystem.ConveyorMode.ToString();
// com.itac.oib.client.customextensions.LineChangeoverEventArgs lineChangeoverEvent = LineChangeoverEventArgsMapper.get(args);
// if (lineChangeoverEvent == null)
// {
// LogHandler.log(Constants.LOGGER, TraceEventType.Error, "LineChangeover not converted");
// return;
// }
var mmt = new LineChangeoverThread(_eventHandler, args);
var thread = new Thread(mmt.ThreadFunction);
thread.Start();
}
catch (Exception e)
{
LogHandler.log(Constants.LOGGER, TraceEventType.Information, string.Format("LineChangeover could not be pushed to java receiver"), e);
}
}
#endregion
internal com.itac.oib.client.customextensions.LineChangeoverEventArgs getCurrentLineProductionData()
{
com.itac.oib.client.customextensions.LineChangeoverEventArgs lineChangeoverEvent = LineChangeoverEventArgsMapper.get(_changeoverManager.GetCurrentLineProductionData());
if (lineChangeoverEvent == null)
{
LogHandler.log(Constants.LOGGER, TraceEventType.Error, "LineChangeover not converted");
return null;
}
return lineChangeoverEvent;
}
}
}