FUSIONFactory.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. using System;
  2. using System.Collections.Generic;
  3. namespace Wayne.ForecourtControl.Fusion
  4. {
  5. public static class FUSIONFactory
  6. {
  7. public static Dictionary<int, IForecourtControl> fusionForecourtControlList = new Dictionary<int, IForecourtControl>();
  8. // Methods
  9. public static IForecourtControl CreateForecourtControl(int deviceId, IForecourtConfiguration configuration, IPumpAuthorizationIdGenerator authorizationIdGenerator)
  10. {
  11. var fusionForecourtControl = CreateFUSIONForecourtControlLocal(deviceId, ForecourtEntityTypes.All, null, configuration, authorizationIdGenerator);
  12. return fusionForecourtControl;
  13. }
  14. // Methods
  15. public static IForecourtControl CreateForecourtControl(int deviceId, IPumpAuthorizationIdGenerator authorizationIdGenerator)
  16. {
  17. return CreateFUSIONForecourtControlLocal(deviceId, ForecourtEntityTypes.All, null, null, authorizationIdGenerator);
  18. }
  19. public static IForecourtControl CreateForecourtControl(int deviceId, ForecourtEntityTypes managedEntityTypes, IPumpAuthorizationIdGenerator authorizationIdGenerator)
  20. {
  21. IForecourtControl fusionForecourtControl = CreateFUSIONForecourtControlLocal(deviceId, managedEntityTypes, null, null, authorizationIdGenerator);
  22. return fusionForecourtControl;
  23. }
  24. public static IForecourtControl CreateForecourtControl(int deviceId, ForecourtEntityTypes managedEntityTypes, int[] managedPumpIds, IPumpAuthorizationIdGenerator authorizationIdGenerator)
  25. {
  26. IForecourtControl fusionForecourtControl = CreateFUSIONForecourtControlLocal(deviceId, managedEntityTypes, managedPumpIds, null, authorizationIdGenerator);
  27. return fusionForecourtControl;
  28. }
  29. public static bool SetForecourtConfiguration(int deviceId, IForecourtConfiguration config, IPumpAuthorizationIdGenerator authorizationIdGenerator)
  30. {
  31. IForecourtControl fusionForecourtControl = null;
  32. fusionForecourtControl = CreateForecourtControl(deviceId, authorizationIdGenerator);
  33. if ((FUSIONForecourtControl)fusionForecourtControl == null)
  34. return false;
  35. ((FUSIONForecourtControl)fusionForecourtControl).ForecourtConfiguration = config;
  36. return true;
  37. }
  38. private static FUSIONForecourtControl CreateFUSIONForecourtControlLocal(int deviceId, ForecourtEntityTypes managedEntityTypes, int[] managedPumpIds, IForecourtConfiguration config, IPumpAuthorizationIdGenerator authorizationIdGenerator)
  39. {
  40. FUSIONForecourtControl fusionForecourtControl = null;
  41. byte[] validationInfo = null;
  42. if (!fusionForecourtControlList.ContainsKey(deviceId))
  43. {
  44. try
  45. {
  46. string softsealAssembly = ConfigurationParams.getSINPPath("bin\\") + "fusionSoftseal.dll";
  47. System.Reflection.Assembly assembly = null;
  48. Trace.WriteLine(string.Format("softsealAssembly: '{0}'", softsealAssembly));
  49. if (System.IO.File.Exists(softsealAssembly))
  50. assembly = System.Reflection.Assembly.LoadFrom(softsealAssembly);
  51. if (assembly == null)
  52. {
  53. softsealAssembly = ConfigurationParams.getSINPPath("") + "fusionSoftseal.dll";
  54. Trace.WriteLine(string.Format("NOT FOUND ... try softsealAssembly: '{0}'", softsealAssembly));
  55. if (System.IO.File.Exists(softsealAssembly))
  56. assembly = System.Reflection.Assembly.LoadFrom(softsealAssembly);
  57. }
  58. if (assembly != null)
  59. {
  60. Trace.WriteLine(string.Format("FOUND softsealAssembly: '{0}'", softsealAssembly));
  61. Type fusionSoftsealType = assembly.GetType("Wayne.Softseal.FusionSoftseal");
  62. Object fusionSoftsealObject = Activator.CreateInstance(fusionSoftsealType);
  63. object retVal;
  64. System.Reflection.MethodInfo mtdValidate = fusionSoftsealType.GetMethod("Validate");
  65. retVal = mtdValidate.Invoke(fusionSoftsealObject, null);
  66. validationInfo = (byte[]) retVal;
  67. }
  68. else
  69. Trace.WriteLine(string.Format("NOT FOUND ! softsealAssembly: '{0}'", softsealAssembly));
  70. fusionForecourtControl = new FUSIONForecourtControl(deviceId, managedEntityTypes, managedPumpIds, config, authorizationIdGenerator);
  71. FUSIONFactory.fusionForecourtControlList.Add(deviceId, fusionForecourtControl);
  72. Trace.WriteLine(string.Format("FUSIONForecourtControl created"));
  73. fusionForecourtControl.manager.ifsfManager.LogOnAddValidationInfo(validationInfo);
  74. }
  75. catch (Exception ex)
  76. {
  77. Trace.WriteLine(string.Format("Errore: {0}", ex.Message));
  78. }
  79. }
  80. else
  81. fusionForecourtControl = fusionForecourtControlList[deviceId] as FUSIONForecourtControl;
  82. return fusionForecourtControl;
  83. }
  84. public static string getFUSIONFwRelease(int deviceId, string sConnectionString)
  85. {
  86. string sFwRelease = "";
  87. // fwRelease string is composed by: version.release.hotfix
  88. var fusionForecourtControl = CreateForecourtControl(deviceId, NoPumpAuthorizationIdGenerator.Instance);
  89. if (((FUSIONForecourtControl)fusionForecourtControl).manager.Connect(sConnectionString))
  90. {
  91. ((FUSIONForecourtControl)fusionForecourtControl).manager.versionInfoWakeUpEvent.Reset();
  92. ((FUSIONForecourtControl)fusionForecourtControl).manager.ifsfManager.VersionInfo(null, null, null);
  93. ((FUSIONForecourtControl)fusionForecourtControl).manager.ifsfManager.GetCountrySettings(null, null, null);
  94. ((FUSIONForecourtControl)fusionForecourtControl).manager.versionInfoWakeUpEvent.WaitOne();
  95. sFwRelease = ((FUSIONForecourtControl)fusionForecourtControl).manager.getFwRelease();
  96. }
  97. return sFwRelease;
  98. }
  99. public static bool LogOnValidationInfo(int deviceId, byte[] validationInfo)
  100. {
  101. IForecourtControl fusionForecourtControl = null;
  102. fusionForecourtControl = CreateForecourtControl(deviceId, NoPumpAuthorizationIdGenerator.Instance);
  103. if ((FUSIONForecourtControl)fusionForecourtControl == null)
  104. return false;
  105. ((FUSIONForecourtControl)fusionForecourtControl).manager.ifsfManager.LogOnAddValidationInfo(validationInfo);
  106. return true;
  107. }
  108. public static void Remove(FUSIONForecourtControl fusionForecourtControl)
  109. {
  110. if (fusionForecourtControlList.ContainsKey(fusionForecourtControl.Id) && fusionForecourtControlList[fusionForecourtControl.Id] == fusionForecourtControl)
  111. {
  112. fusionForecourtControlList.Remove(fusionForecourtControl.Id);
  113. }
  114. }
  115. }
  116. }