Guest User

Untitled

a guest
Feb 18th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. import org.apache.commons.io.IOUtils
  2. import org.apache.nifi.controller.ControllerService
  3. import org.apache.nifi.processor.io.StreamCallback
  4. import java.nio.charset.*
  5. import groovy.sql.OutParameter
  6. import groovy.sql.Sql
  7. import oracle.jdbc.OracleTypes
  8. import java.sql.ResultSet
  9.  
  10.  
  11.  
  12.  
  13. //DB Setting Start
  14. //Harcoded connection string
  15. //def sql = Sql.newInstance('jdbc:oracle:thin:@//ecuxxx.xxx.xxx.net:1526/dbSchema', 'UserID', 'UserPass$', 'oracle.jdbc.OracleDriver')
  16.  
  17.  
  18. //Get the conncation string from NIFI conncation pool
  19. def lookup = context.controllerServiceLookup
  20. def dbServiceName = ConncationPool.value
  21. def dbcpServiceId = lookup.getControllerServiceIdentifiers(ControllerService).find {
  22. cs -> lookup.getControllerServiceName(cs) == dbServiceName
  23. }
  24.  
  25.  
  26. def conn = lookup.getControllerService(dbcpServiceId).getConnection();
  27. sql = Sql.newInstance(conn);
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34. ////Get the session values from Nifi flow Start
  35. def flowFile = session.get()
  36. if(!flowFile) return
  37. in_track_id = flowFile.getAttribute('body_track_id')
  38. in_username = flowFile.getAttribute('body_username')
  39. in_course_no = flowFile.getAttribute('body_course_number')
  40. ////Get the session values from Nifi flow END
  41.  
  42.  
  43. // special OutParameter for cursor type
  44. OutParameter CURSOR_PARAMETER = new OutParameter() {
  45. public int getType() {
  46. return OracleTypes.CURSOR;
  47. }
  48. };
  49. def data = []
  50. // Stored proc having 3 input and 3 out put, one out put having CURSOR datatype
  51. String sqlString ="""{call <StoredPrcoName>(?, ?, ?, ?, ?, ?)}""";
  52. // rs contains the result set of cursor and data values start Shakeel
  53. def status_desc
  54. def status_code
  55. def status_data
  56. //def parametersList = ['20585', 'A3843UP', '00009934', CURSOR_PARAMETER, Sql.NUMERIC ,Sql.VARCHAR]; // testing purpose
  57. def parametersList = [in_track_id, in_username, in_course_no, CURSOR_PARAMETER, Sql.NUMERIC ,Sql.VARCHAR];
  58.  
  59.  
  60. sql.call(sqlString, parametersList) {out_details, out_status_code,out_status_desc ->
  61. status_desc = out_status_desc
  62. status_code = out_status_code
  63. out_details.eachRow {
  64. data << it.toRowResult()
  65. status_data = data
  66. }
  67. };
  68. // rs contains the result set of cursor and data values end
  69.  
  70.  
  71. //Set the session values start
  72. def attrMap = ['status_desc':status_desc, 'status_code':String.valueOf(status_code),'status_data':String.valueOf(status_data),'Conn':String.valueOf(conn)]
  73. flowFile = session.putAllAttributes(flowFile, attrMap)
  74. session.transfer(flowFile, REL_SUCCESS)
Add Comment
Please, Sign In to add comment