javaembed.ecl 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. /*##############################################################################
  2. HPCC SYSTEMS software Copyright (C) 2018 HPCC Systems.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. ############################################################################## */
  13. //class=embedded
  14. //class=3rdparty
  15. import java;
  16. string jcat(string a, string b) := EMBED(java)
  17. public static String jcat(String a, String b)
  18. {
  19. return a + b;
  20. }
  21. ENDEMBED;
  22. integer jadd(integer a, integer b) := EMBED(java)
  23. import com.HPCCSystems.HpccUtils;
  24. class MyClass
  25. {
  26. public static int jadd(int a, int b)
  27. {
  28. HpccUtils.log("In jadd");
  29. return a + b;
  30. }
  31. }
  32. ENDEMBED;
  33. integer jaddL(integer a, integer b) := EMBED(java)
  34. public static long jaddL(int a, int b)
  35. {
  36. return a + b;
  37. }
  38. ENDEMBED;
  39. integer jaddI(integer a, integer b) := EMBED(java)
  40. public static Integer jaddI(int a, int b)
  41. {
  42. return a + b;
  43. }
  44. ENDEMBED;
  45. nrec := record
  46. utf8 ufield;
  47. end;
  48. jret := RECORD
  49. boolean bfield;
  50. integer4 ifield;
  51. integer8 lfield;
  52. real8 dfield;
  53. real4 ffield;
  54. string1 cfield1;
  55. string1 cfield2;
  56. string sfield;
  57. nrec n;
  58. set of boolean bset;
  59. set of data dset;
  60. set of string sset;
  61. LINKCOUNTED DATASET(nrec) sub;
  62. end;
  63. DATASET(jret) passDataset2(LINKCOUNTED DATASET(jret) d) := EMBED(java)
  64. import java.util.*;
  65. public class myClass {
  66. public static class MyRecord {
  67. public static class NestedClass
  68. {
  69. String ufield;
  70. public NestedClass(String s)
  71. {
  72. ufield = s;
  73. }
  74. public NestedClass()
  75. {
  76. }
  77. };
  78. boolean bfield;
  79. int ifield;
  80. long lfield;
  81. double dfield;
  82. float ffield;
  83. String sfield;
  84. char cfield1;
  85. String cfield2;
  86. NestedClass n;
  87. boolean bset[];
  88. byte [] dset[];
  89. String sset[];
  90. NestedClass sub[];
  91. public MyRecord(boolean b, int i, double d)
  92. {
  93. bfield = b;
  94. ifield = i;
  95. lfield = i * 100000000;
  96. dfield = d;
  97. ffield = (float) d;
  98. sfield = "Yoohoo";
  99. cfield1 = 'X';
  100. cfield2 = "Z";
  101. n = new NestedClass("nest");
  102. bset = new boolean [5];
  103. bset[3] = b;
  104. dset = new byte[1][];
  105. dset[0] = new byte[1];
  106. dset[0][0] = 14;
  107. sset = new String[1];
  108. sset[0] = "Hello";
  109. sub = new NestedClass[1];
  110. sub[0] = new NestedClass("subnest");
  111. }
  112. public MyRecord() // This will be called to construct objects being passed in from ECL
  113. {
  114. n = new NestedClass("nest2");
  115. }
  116. };
  117. public static Iterator<MyRecord> passDataset2(MyRecord d[])
  118. {
  119. return Arrays.asList(d).iterator();
  120. }
  121. }
  122. ENDEMBED;
  123. ds := DATASET(
  124. [
  125. {true, 1,2,3,4,'a', 'b', 'cd', u'ef', [true,false], [], ['Hello from ECL'], [{'1'},{'2'},{'3'},{'4'},{'5'}]}
  126. ,{true, 2,4,3,4,'a', 'b', 'cd', u'ef', [true,false], [], [], []}
  127. ,{true, 3,6,3,4,'a', 'b', 'cd', u'ef', [true,false], [], [], []}
  128. ,{true, 8,8,3,4,'a', 'b', 'cd', u'ef', [true,false], [d'AA55'], [], []}
  129. ], jret);
  130. transform(jret) testTransform(jret in, integer lim) := EMBED(java)
  131. public class myClass {
  132. public static class MyRecord {
  133. public static class NestedClass
  134. {
  135. String ufield;
  136. public NestedClass(String s)
  137. {
  138. ufield = s;
  139. }
  140. public NestedClass()
  141. {
  142. }
  143. };
  144. boolean bfield;
  145. int ifield;
  146. long lfield;
  147. double dfield;
  148. float ffield;
  149. String sfield;
  150. char cfield1;
  151. String cfield2;
  152. NestedClass n;
  153. boolean bset[];
  154. byte [] dset[];
  155. String sset[];
  156. NestedClass sub[];
  157. public MyRecord(boolean b, int i, double d)
  158. {
  159. bfield = b;
  160. ifield = i;
  161. lfield = i * 100000000;
  162. dfield = d;
  163. ffield = (float) d;
  164. sfield = "Yoohoo";
  165. cfield1 = 'X';
  166. cfield2 = "Z";
  167. n = new NestedClass("nest");
  168. bset = new boolean [5];
  169. bset[3] = b;
  170. dset = new byte[1][];
  171. dset[0] = new byte[1];
  172. dset[0][0] = 14;
  173. sset = new String[1];
  174. sset[0] = "Hello";
  175. sub = new NestedClass[1];
  176. sub[0] = new NestedClass("subnest");
  177. }
  178. public MyRecord() // This will be called to construct objects being passed in from ECL
  179. {
  180. n = new NestedClass("nest2");
  181. }
  182. };
  183. public static MyRecord testTransform(MyRecord in, int lim)
  184. {
  185. return new MyRecord(in.bfield, lim, in.dfield);
  186. }
  187. }
  188. ENDEMBED;
  189. jcat('Hello, ', 'Java');
  190. jadd(1,2);
  191. jaddl(3,4);
  192. jaddi(5,6);
  193. output(passDataset2(ds));
  194. output(project(ds, testTransform(LEFT, COUNTER)));