/bridge/lib/parameters.js

https://github.com/PatientOrderSets/ICEfaces-1.8.2-Enhancements · JavaScript · 103 lines · 57 code · 14 blank · 32 comment · 1 complexity · 53f85291d3f66dd598bf812b43066b44 MD5 · raw file

  1. /*
  2. * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3. *
  4. * "The contents of this file are subject to the Mozilla Public License
  5. * Version 1.1 (the "License"); you may not use this file except in
  6. * compliance with the License. You may obtain a copy of the License at
  7. * http://www.mozilla.org/MPL/
  8. *
  9. * Software distributed under the License is distributed on an "AS IS"
  10. * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
  11. * License for the specific language governing rights and limitations under
  12. * the License.
  13. *
  14. * The Original Code is ICEfaces 1.5 open source software code, released
  15. * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
  16. * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
  17. * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
  18. *
  19. * Contributor(s): _____________________.
  20. *
  21. * Alternatively, the contents of this file may be used under the terms of
  22. * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
  23. * License), in which case the provisions of the LGPL License are
  24. * applicable instead of those above. If you wish to allow use of your
  25. * version of this file only under the terms of the LGPL License and not to
  26. * allow others to use your version of this file under the MPL, indicate
  27. * your decision by deleting the provisions above and replace them with
  28. * the notice and other provisions required by the LGPL License. If you do
  29. * not delete the provisions above, a recipient may use your version of
  30. * this file under either the MPL or the LGPL License."
  31. *
  32. */
  33. [ Ice.Parameter = new Object ].as(function(This) {
  34. This.Query = Object.subclass({
  35. initialize: function() {
  36. this.parameters = [];
  37. },
  38. add: function(name, value) {
  39. this.parameters.push(new This.Association(name, value));
  40. return this;
  41. },
  42. addParameter: function(parameter) {
  43. this.parameters.push(parameter);
  44. return this;
  45. },
  46. addQuery: function(query) {
  47. query.serializeOn(this);
  48. return this;
  49. },
  50. asURIEncodedString: function() {
  51. return this.parameters.inject('', function(result, association, index) {
  52. return result += (index == 0) ? association.asURIEncodedString() : '&' + association.asURIEncodedString();
  53. });
  54. },
  55. asString: function() {
  56. return this.parameters.inject('', function(result, parameter, index) {
  57. return result + '\n| ' + parameter.asString() + ' |';
  58. });
  59. },
  60. sendOn: function(connection) {
  61. connection.send(this);
  62. },
  63. serializeOn: function(query) {
  64. this.parameters.each(function(parameter) {
  65. parameter.serializeOn(query);
  66. });
  67. }
  68. });
  69. This.Query.create = function(execute) {
  70. var query = new This.Query;
  71. execute.apply(this, [ query ]);
  72. return query;
  73. }
  74. This.Association = Object.subclass({
  75. initialize: function(name, value) {
  76. this.name = name;
  77. this.value = value;
  78. },
  79. asURIEncodedString: function() {
  80. return encodeURIComponent(this.name) + '=' + encodeURIComponent(this.value);
  81. },
  82. asString: function() {
  83. return this.name + '=' + this.value;
  84. },
  85. serializeOn: function(query) {
  86. query.add(this.name, this.value);
  87. }
  88. });
  89. });