/SSRS 2005 FTP Delivery Extension/Secure.FTPDeliveryExtension/DeliveryExtension/SubscriptionData.cs

# · C# · 346 lines · 279 code · 34 blank · 33 comment · 1 complexity · 88a459a0998608281346dbaa46378b0f MD5 · raw file

  1. /*
  2. * Copyright (c) 2008-2009, Genox Software Ltd.
  3. * All rights reserved.
  4. *
  5. * Author : Toby Riley - 2009
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions are met:
  9. * * Redistributions of source code must retain the above copyright
  10. * notice, this list of conditions and the following disclaimer.
  11. * * Redistributions in binary form must reproduce the above copyright
  12. * notice, this list of conditions and the following disclaimer in the
  13. * documentation and/or other materials provided with the distribution.
  14. * * Neither the name of Genox Software Ltd. nor the
  15. * names of its contributors may be used to endorse or promote products
  16. * derived from this software without specific prior written permission.
  17. *
  18. * THIS SOFTWARE IS PROVIDED BY Genox Software Ltd. ``AS IS'' AND ANY
  19. * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  20. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  21. * DISCLAIMED. IN NO EVENT SHALL Genox Software Ltd. BE LIABLE FOR ANY
  22. * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  23. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  24. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  25. * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  26. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  27. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  28. */
  29. using System;
  30. using System.Collections;
  31. using System.Collections.Generic;
  32. using System.Text;
  33. using Microsoft.ReportingServices.Interfaces;
  34. namespace Secure.FTPDeliveryExtension
  35. {
  36. internal class SubscriptionData
  37. {
  38. // Fields
  39. private string _CSVTextDelimiter = string.Empty;
  40. private string _CSVTextQualifier = string.Empty;
  41. private string _FileNameFormat = string.Empty;
  42. private string _ftpFolder = string.Empty;
  43. private string _ftpPassword = string.Empty;
  44. private string _ftpPort = string.Empty;
  45. private string _ftpUrl = string.Empty;
  46. private string _ftpUsername = string.Empty;
  47. private string _IsDeliveryEncrypted = string.Empty;
  48. private string _PGPPublicKeyUID = string.Empty;
  49. // Methods
  50. private Setting CreateSetting(string name, string val)
  51. {
  52. Setting setting = new Setting();
  53. setting.Name = name;
  54. setting.Value = val;
  55. return setting;
  56. }
  57. public void FromSettings(Setting[] settings)
  58. {
  59. foreach (Setting setting in settings)
  60. {
  61. switch (setting.Name)
  62. {
  63. case "FTPUrl":
  64. FTPUrl = setting.Value;
  65. break;
  66. case "FTPFolder":
  67. FTPFolder = setting.Value;
  68. break;
  69. case "FTP Username":
  70. FTPUsername = setting.Value;
  71. break;
  72. case "FTP Password":
  73. FTPPassword = setting.Value;
  74. break;
  75. case "FTPPort":
  76. FTPPort = setting.Value;
  77. break;
  78. case "IsDeliveryEncrypted":
  79. IsDeliveryEncrypted = setting.Value;
  80. break;
  81. case "PGPPublicKeyUID":
  82. PGPPublicKeyUID = setting.Value;
  83. break;
  84. case "FileNameFormat":
  85. FileNameFormat = setting.Value;
  86. break;
  87. case "CSVTextDelimiter: ":
  88. CSVTextDelimiter = setting.Value;
  89. break;
  90. case "CSVTextQualifier: ":
  91. CSVTextQualifier = setting.Value;
  92. break;
  93. }
  94. }
  95. }
  96. public Setting[] ToSettingArray()
  97. {
  98. ArrayList list = new ArrayList();
  99. list.Add(CreateSetting("FTPUrl", FTPUrl));
  100. list.Add(CreateSetting("FTPFolder", FTPFolder));
  101. list.Add(CreateSetting("FTP Username", FTPUsername));
  102. list.Add(CreateSetting("FTP Password", FTPPassword));
  103. list.Add(CreateSetting("FTPPort", FTPPort));
  104. list.Add(CreateSetting("IsDeliveryEncrypted", IsDeliveryEncrypted));
  105. list.Add(CreateSetting("PGPPublicKeyUID", PGPPublicKeyUID));
  106. list.Add(CreateSetting("FileNameFormat", FileNameFormat));
  107. list.Add(CreateSetting("CSVTextQualifier: ", CSVTextQualifier));
  108. list.Add(CreateSetting("CSVTextDelimiter: ", CSVTextDelimiter));
  109. return (list.ToArray(typeof(Setting)) as Setting[]);
  110. }
  111. public Setting[] Validate(Setting[] settings)
  112. {
  113. return settings;
  114. }
  115. // Properties
  116. public string CSVTextDelimiter
  117. {
  118. get
  119. {
  120. return _CSVTextDelimiter;
  121. }
  122. set
  123. {
  124. _CSVTextDelimiter = value;
  125. }
  126. }
  127. public string CSVTextQualifier
  128. {
  129. get
  130. {
  131. return _CSVTextQualifier;
  132. }
  133. set
  134. {
  135. _CSVTextQualifier = value;
  136. }
  137. }
  138. internal static Setting[] ExtensionSettings
  139. {
  140. get
  141. {
  142. Setting[] extensionSettings = new Setting[10];
  143. extensionSettings = new Setting[10];
  144. extensionSettings[0] = new Setting();
  145. extensionSettings[0].Name = "FTP Url";
  146. extensionSettings[0].ReadOnly = false;
  147. extensionSettings[0].Required = true;
  148. extensionSettings[0].Encrypted = false;
  149. extensionSettings[1] = new Setting();
  150. extensionSettings[1].Name = "FTPFolder";
  151. extensionSettings[1].ReadOnly = false;
  152. extensionSettings[1].Required = false;
  153. extensionSettings[1].Encrypted = false;
  154. extensionSettings[2] = new Setting();
  155. extensionSettings[2].Name = "FTP Username";
  156. extensionSettings[2].ReadOnly = false;
  157. extensionSettings[2].Required = true;
  158. extensionSettings[2].Encrypted = false;
  159. extensionSettings[3] = new Setting();
  160. extensionSettings[3].Name = "FTP Password";
  161. extensionSettings[3].ReadOnly = false;
  162. extensionSettings[3].Required = true;
  163. extensionSettings[3].IsPassword = true;
  164. extensionSettings[3].Encrypted = true;
  165. extensionSettings[4] = new Setting();
  166. extensionSettings[4].Name = "FTP Port";
  167. extensionSettings[4].ReadOnly = false;
  168. extensionSettings[4].Required = false;
  169. extensionSettings[4].Encrypted = false;
  170. extensionSettings[5] = new Setting();
  171. extensionSettings[5].Name = "Encrypt Delivery";
  172. extensionSettings[5].ReadOnly = false;
  173. extensionSettings[5].Required = false;
  174. extensionSettings[5].Encrypted = false;
  175. extensionSettings[6] = new Setting();
  176. extensionSettings[6].Name = "PGP Public Key";
  177. extensionSettings[6].ReadOnly = false;
  178. extensionSettings[6].Required = false;
  179. extensionSettings[6].Encrypted = true;
  180. extensionSettings[7] = new Setting();
  181. extensionSettings[7].Name = "File Name Format";
  182. extensionSettings[7].ReadOnly = false;
  183. extensionSettings[7].Required = true;
  184. extensionSettings[7].Encrypted = false;
  185. extensionSettings[8] = new Setting();
  186. extensionSettings[8].Name = "CSV Text Delimiter";
  187. extensionSettings[8].ReadOnly = false;
  188. extensionSettings[8].Required = true;
  189. extensionSettings[8].Encrypted = false;
  190. extensionSettings[9] = new Setting();
  191. extensionSettings[9].Name = "CSV Text Qualifier";
  192. extensionSettings[9].ReadOnly = false;
  193. extensionSettings[9].Required = true;
  194. extensionSettings[9].Encrypted = false;
  195. return extensionSettings;
  196. }
  197. }
  198. public string FileNameFormat
  199. {
  200. get
  201. {
  202. return _FileNameFormat;
  203. }
  204. set
  205. {
  206. _FileNameFormat = value;
  207. }
  208. }
  209. public string FTPFolder
  210. {
  211. get
  212. {
  213. return _ftpFolder;
  214. }
  215. set
  216. {
  217. _ftpFolder = value;
  218. }
  219. }
  220. public string FTPPassword
  221. {
  222. get
  223. {
  224. return _ftpPassword;
  225. }
  226. set
  227. {
  228. _ftpPassword = value;
  229. }
  230. }
  231. public string FTPPort
  232. {
  233. get
  234. {
  235. return _ftpPort;
  236. }
  237. set
  238. {
  239. _ftpPort = value;
  240. }
  241. }
  242. public string FTPUrl
  243. {
  244. get
  245. {
  246. return _ftpUrl;
  247. }
  248. set
  249. {
  250. _ftpUrl = value;
  251. }
  252. }
  253. public string FTPUsername
  254. {
  255. get
  256. {
  257. return _ftpUsername;
  258. }
  259. set
  260. {
  261. _ftpUsername = value;
  262. }
  263. }
  264. public string IsDeliveryEncrypted
  265. {
  266. get
  267. {
  268. return _IsDeliveryEncrypted;
  269. }
  270. set
  271. {
  272. _IsDeliveryEncrypted = value;
  273. }
  274. }
  275. public string PGPPublicKeyUID
  276. {
  277. get
  278. {
  279. return _PGPPublicKeyUID;
  280. }
  281. set
  282. {
  283. _PGPPublicKeyUID = value;
  284. }
  285. }
  286. // Nested Types
  287. internal class Strings
  288. {
  289. // Fields
  290. internal const string CSVTextDelimiter = "CSVTextDelimiter: ";
  291. internal const string CSVTextDelimiterName = "CSV Text Delimiter";
  292. internal const string CSVTextQualifier = "CSVTextQualifier: ";
  293. internal const string CSVTextQualifierName = "CSV Text Qualifier";
  294. internal const string FileNameFormat = "FileNameFormat";
  295. internal const string FileNameFormatName = "File Name Format";
  296. internal const string FTPFolder = "FTPFolder";
  297. internal const string FTPFolderName = "FTP Folder";
  298. internal const string FTPPassword = "FTP Password";
  299. internal const string FTPPasswordName = "FTP Password";
  300. internal const string FTPPort = "FTPPort";
  301. internal const string FTPPortName = "FTP Port";
  302. internal const string FTPUrl = "FTPUrl";
  303. internal const string FTPUrlName = "FTP Url";
  304. internal const string FTPUsername = "FTP Username";
  305. internal const string FTPUsernameName = "FTP Username";
  306. internal const string IsDeliveryEncrypted = "IsDeliveryEncrypted";
  307. internal const string IsDeliveryEncryptedName = "Encrypt Delivery";
  308. internal const string PGPPublicKeyUID = "PGPPublicKeyUID";
  309. internal const string PGPPublicKeyUIDName = "PGP Public Key";
  310. }
  311. }
  312. }