fork(1) download
  1. /* package whatever; // don't place package name! */
  2.  
  3.  
  4. import javafx.concurrent.Task;
  5. import javafx.event.ActionEvent;
  6.  
  7. import java.sql.Connection;
  8. import java.sql.DriverManager;
  9. import java.sql.SQLException;
  10. import java.sql.Statement;
  11. import java.sql.ResultSet;
  12.  
  13.  
  14.  
  15. import static com.Ostermiller.util.StringHelper.escapeSQL;
  16. import static java.lang.Math.abs;
  17.  
  18.  
  19.  
  20. public class ResultsReader extends Task<Integer>
  21. {
  22. // User settings - adjust for best perfromance
  23. private static int NumberOfResultsThreads = 10;
  24. private static int NumberOfResultsContactsToProcessPerThread = 1000;
  25. private static int NumberOfRecordsToInsertAtATime = 100;
  26. private static String TypeMask = "1,2,3,5";
  27. private static String RemoteUser = "myusername";
  28. private static String RemotePass = "mypassword";
  29. private static String MainUser = "MainUser";
  30. private static String MainPass = "MainPassword";
  31.  
  32. // Alllows different systems to use the same RXDialers
  33. private static int ESID = -15;
  34.  
  35.  
  36. private int CurrModValue;
  37. private static String IP[];
  38. /*private String CurrRemoteIPAddress1 = "aa.aa.a.aaa";
  39.   private String CurrRemoteIPAddress2 = "bb.bb.b.bbb";
  40.   private String CurrRemoteIPAddress3 = "cc.cc.c.ccc";
  41.   private String CurrRemoteIPAddress4 = "dd.dd.d.ddd";
  42.   private String CurrRemoteIPAddress5 = "ee.ee.e.eee";
  43.   private String CurrRemoteIPAddress6 = "ff.ff.f.fff";
  44.   private String CurrRemoteIPAddress7 = "gg.gg.g.ggg";*/
  45.  
  46. // Task local reference to the controller class to call back to when complete
  47. private EBMExtractorFXMLController QRVC;
  48.  
  49. public void setQDVC(EBMExtractorFXMLController QRVC)
  50. {
  51. this.QRVC = QRVC;
  52. }
  53.  
  54. public EBMExtractorFXMLController getQDVC()
  55. {
  56. return QRVC;
  57. }
  58.  
  59.  
  60.  
  61. public ResultsReader(int CurrModValue)
  62. {
  63. this.CurrModValue = CurrModValue;
  64. }
  65.  
  66. public void act_StartProcessing()
  67. {
  68. new Thread(this).start();
  69.  
  70. }
  71.  
  72. public void act_StopProcessing()
  73. {
  74. this.cancel();
  75. }
  76.  
  77.  
  78.  
  79. @Override protected Integer call() throws Exception
  80. {
  81. int iterations = 0;
  82.  
  83. int i = 0;
  84. boolean done = false;
  85.  
  86. Statement SelectResultsStmt = null;
  87. Statement UpdateResultsStmt = null;
  88. Statement InsertRemoteResultsStmt = null;
  89. ResultSet SelectResultsRS = null;
  90.  
  91. while(!done) {
  92. try
  93. {
  94. //Connection connMain = DriverManager.getConnection("jdbc:mysql://" + CurrRemoteIPAddress + ":3306/test",RemoteUser,RemotePass);
  95.  
  96. Connection[] MainConnection = new Connection[7];
  97.  
  98. String[] RemoteIPAddress = new String[7];
  99.  
  100. RemoteIPAddress[0] = "aa.aa.a.aaa";
  101. RemoteIPAddress[1] = "bb.bb.b.bbb";
  102. RemoteIPAddress[2] = "cc.cc.c.ccc";
  103. RemoteIPAddress[3] = "dd.dd.d.ddd";
  104. RemoteIPAddress[4] = "ee.ee.e.eee";
  105. RemoteIPAddress[5] = "ff.ff.f.fff";
  106. RemoteIPAddress[6] = "gg.gg.g.ggg";
  107.  
  108. MainConnection[0] = DriverManager.getConnection("jdbc:mysql://" + RemoteIPAddress[0] + ":3306/test",RemoteUser,RemotePass);
  109. MainConnection[1] = DriverManager.getConnection("jdbc:mysql://" + RemoteIPAddress[1] + ":3306/test",RemoteUser,RemotePass);
  110. MainConnection[2] = DriverManager.getConnection("jdbc:mysql://" + RemoteIPAddress[2] + ":3306/test",RemoteUser,RemotePass);
  111. MainConnection[3] = DriverManager.getConnection("jdbc:mysql://" + RemoteIPAddress[3] + ":3306/test",RemoteUser,RemotePass);
  112. MainConnection[4] = DriverManager.getConnection("jdbc:mysql://" + RemoteIPAddress[4] + ":3306/test",RemoteUser,RemotePass);
  113. MainConnection[5] = DriverManager.getConnection("jdbc:mysql://" + RemoteIPAddress[5] + ":3306/test",RemoteUser,RemotePass);
  114. MainConnection[6] = DriverManager.getConnection("jdbc:mysql://" + RemoteIPAddress[6] + ":3306/test",RemoteUser,RemotePass);
  115.  
  116. Connection connRemote = DriverManager.getConnection("jdbc:mysql://xx.xx.x.xxx:3306/test",MainUser,MainPass);
  117.  
  118.  
  119. String QueryString = " SELECT "
  120. + " RXCallDetailId_int, "
  121. + " DTSID_int, "
  122. + " CallDetailsStatusId_ti, "
  123. + " BatchId_bi, "
  124. + " PhoneId_int, "
  125. + " TotalObjectTime_int, "
  126. + " TotalCallTimeLiveTransfer_int, "
  127. + " TotalCallTime_int, "
  128. + " TotalAnswerTime_int, "
  129. + " UserSpecifiedLineNumber_si, "
  130. + " NumberOfHoursToRescheduleRedial_si, "
  131. + " TransferStatusId_ti, "
  132. + " IsHangUpDetected_ti, "
  133. + " IsOptOut_ti, "
  134. + " IsMaxRedialsReached_ti, "
  135. + " IsRescheduled_ti, "
  136. + " CallResult_int, "
  137. + " SixSecondBilling_int, "
  138. + " SystemBilling_int, "
  139. + " RXCDLStartTime_dt, "
  140. + " CallStartTime_dt, "
  141. + " CallEndTime_dt, "
  142. + " CallStartTimeLiveTransfer_dt, "
  143. + " CallEndTimeLiveTransfer_dt, "
  144. + " CallResultTS_dt, "
  145. + " PlayFileStartTime_dt, "
  146. + " PlayFileEndTime_dt, "
  147. + " HangUpDetectedTS_dt, "
  148. + " Created_dt, "
  149. + " DialerName_vch, "
  150. + " CurrTS_vch, "
  151. + " CurrVoice_vch, "
  152. + " CurrTSLiveTransfer_vch, "
  153. + " CurrVoiceLiveTransfer_vch, "
  154. + " CurrCDP_vch, "
  155. + " CurrCDPLiveTransfer_vch, "
  156. + " DialString_vch, "
  157. + " RedialNumber_int, "
  158. + " TimeZone_ti, "
  159. + " MessageDelivered_si, "
  160. + " SingleResponseSurvey_si, "
  161. + " ReplayTotalCallTime_int, "
  162. + " XMLResultStr_vch, "
  163. + " TotalConnectTime_int, "
  164. + " IsOptIn_ti, "
  165. + " FileSeqNumber_int, "
  166. + " UserSpecifiedData_vch, "
  167. + " XMLControlString_vch, "
  168. + " DTS_UUID_vch, "
  169. + " MainMessageLengthSeconds_int "
  170. + " FROM "
  171. + " calldetail.rxcalldetails_test "
  172. + " WHERE "
  173. + " CallDetailsStatusId_ti = " + ESID
  174. + " AND RXCallDetailId_int MOD " + NumberOfResultsThreads + " = " + CurrModValue
  175. + " ORDER BY RXCallDetailId_int ASC "
  176. + " LIMIT " + NumberOfResultsContactsToProcessPerThread ;
  177.  
  178.  
  179. //SelectResultsStmt = connMain.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
  180.  
  181. SelectResultsStmt = MainConnection[i].createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
  182. SelectResultsRS = SelectResultsStmt.executeQuery(QueryString);
  183.  
  184. int CurrentBillingAmount = 0;
  185.  
  186. int CurrentRowCount = 0;
  187. String QueryStringInsertFromRemote = "";
  188.  
  189. // Now do something with the ResultSet ....
  190. while ( SelectResultsRS.next( ) && !Thread.interrupted())
  191. {// While SelectResultsRS
  192. CurrentRowCount++;
  193.  
  194. // Allow thread to be canceled
  195. if (isCancelled())
  196. {
  197. // Do any additional clean up here - maybe update main DB of non-processed?
  198. updateMessage("Cancelled");
  199. break;
  200. }
  201.  
  202. // When a progress is bound (.bind()) to this task - this will update the progress meter
  203. updateProgress(SelectResultsRS.getRow(), NumberOfResultsContactsToProcessPerThread);
  204. updateMessage("Thread " + CurrModValue + " " + SelectResultsRS.getInt("DTSId_int"));
  205.  
  206. // Get Billing amount - need billing method in JAVA
  207. CurrentBillingAmount = 0;
  208.  
  209.  
  210. // System.out.println(SelectResultsRS.getInt("DTSId_int"));
  211.  
  212. QueryStringInsertFromRemote = " INSERT INTO SimpleXResults.ContactResults_test "
  213. + " ( "
  214. + " MasterRXCallDetailId_int, "
  215. + " RXCallDetailId_int, "
  216. + " DTSID_int, "
  217. + " BatchId_bi, "
  218. + " PhoneId_int, "
  219. + " TotalObjectTime_int, "
  220. + " TotalCallTimeLiveTransfer_int, "
  221. + " TotalCallTime_int, "
  222. + " TotalConnectTime_int, "
  223. + " ReplayTotalCallTime_int, "
  224. + " TotalAnswerTime_int, "
  225. + " UserSpecifiedLineNumber_si, "
  226. + " NumberOfHoursToRescheduleRedial_si, "
  227. + " TransferStatusId_ti, "
  228. + " IsHangUpDetected_ti, "
  229. + " IsOptOut_ti, "
  230. + " IsMaxRedialsReached_ti, "
  231. + " IsRescheduled_ti, "
  232. + " CallResult_int, "
  233. + " SixSecondBilling_int, "
  234. + " SystemBilling_int, "
  235. + " RXCDLStartTime_dt, "
  236. + " CallStartTime_dt, "
  237. + " CallEndTime_dt, "
  238. + " CallStartTimeLiveTransfer_dt, "
  239. + " CallEndTimeLiveTransfer_dt, "
  240. + " CallResultTS_dt, "
  241. + " PlayFileStartTime_dt, "
  242. + " PlayFileEndTime_dt, "
  243. + " HangUpDetectedTS_dt, "
  244. + " Created_dt, "
  245. + " DialerName_vch, "
  246. + " DialerIP_vch, "
  247. + " CurrTS_vch, "
  248. + " CurrVoice_vch, "
  249. + " CurrTSLiveTransfer_vch, "
  250. + " CurrVoiceLiveTransfer_vch, "
  251. + " CurrCDP_vch, "
  252. + " CurrCDPLiveTransfer_vch, "
  253. + " ContactString_vch, "
  254. + " RedialNumber_int, "
  255. + " TimeZone_ti, "
  256. + " MessageDelivered_si, "
  257. + " SingleResponseSurvey_si, "
  258. + " XMLResultStr_vch, "
  259. + " IsOptIn_ti, "
  260. + " ActualCost_int, "
  261. + " DTS_UUID_vch, "
  262. + " XMLControlString_vch, "
  263. + " UserSpecifiedData_vch, "
  264. + " FileSeqNumber_int, "
  265. + " MainMessageLengthSeconds_int "
  266. + " ) "
  267. + " VALUES "
  268. + " ( "
  269. + " NULL, "
  270. + " " + SelectResultsRS.getInt("RXCallDetailId_int") + ", " // #ExtractFromDialer.RXCallDetailId_int#,
  271. + " " + SelectResultsRS.getInt("DTSID_int") + ", " //#ExtractFromDialer.DTSID_int#,
  272. + " " + SelectResultsRS.getInt("BatchId_bi") + ", " //#ExtractFromDialer.BatchId_bi#,
  273. + " " + SelectResultsRS.getInt("PhoneId_int") + ", " //#ExtractFromDialer.PhoneId_int#,
  274. + " " + SelectResultsRS.getInt("TotalObjectTime_int") + ", " //#ExtractFromDialer.TotalObjectTime_int#,
  275. + " " + SelectResultsRS.getInt("TotalCallTimeLiveTransfer_int") + ", " //#ExtractFromDialer.TotalCallTimeLiveTransfer_int#,
  276. + " " + SelectResultsRS.getInt("TotalCallTime_int") + ", " //#ExtractFromDialer.TotalCallTime_int#,
  277. + " " + SelectResultsRS.getInt("TotalConnectTime_int") + ", " //#ExtractFromDialer.TotalConnectTime_int#,
  278. + " " + SelectResultsRS.getInt("ReplayTotalCallTime_int") + ", " //#ExtractFromDialer.ReplayTotalCallTime_int#,
  279. + " " + SelectResultsRS.getInt("TotalAnswerTime_int") + ", " //#ExtractFromDialer.TotalAnswerTime_int#,
  280. + " " + SelectResultsRS.getInt("UserSpecifiedLineNumber_si") + ", " //#ExtractFromDialer.UserSpecifiedLineNumber_si#,
  281. + " " + SelectResultsRS.getInt("NumberOfHoursToRescheduleRedial_si") + ", " //#ExtractFromDialer.NumberOfHoursToRescheduleRedial_si#,
  282. + " " + SelectResultsRS.getInt("TransferStatusId_ti") + ", " //#ExtractFromDialer.TransferStatusId_ti#,
  283. + " " + SelectResultsRS.getInt("IsHangUpDetected_ti") + ", " //#ExtractFromDialer.IsHangUpDetected_ti#,
  284. + " " + SelectResultsRS.getInt("IsOptOut_ti") + ", " //#ExtractFromDialer.IsOptOut_ti#,
  285. + " " + SelectResultsRS.getInt("IsMaxRedialsReached_ti") + ", " //#ExtractFromDialer.IsMaxRedialsReached_ti#,
  286. + " " + SelectResultsRS.getInt("IsRescheduled_ti") + ", " //#ExtractFromDialer.IsRescheduled_ti#,
  287. + " " + SelectResultsRS.getInt("CallResult_int") + ", " //#ExtractFromDialer.CallResult_int#,
  288. + " " + SelectResultsRS.getInt("SixSecondBilling_int") + ", " //#ExtractFromDialer.SixSecondBilling_int#,
  289. + " " + SelectResultsRS.getInt("SystemBilling_int") + ", " //#ExtractFromDialer.SystemBilling_int#,
  290. + " '" + SelectResultsRS.getString("RXCDLStartTime_dt") + "', " //'#ExtractFromDialer.RXCDLStartTime_dt#',
  291. + " '" + SelectResultsRS.getString("CallStartTime_dt") + "', " //'#ExtractFromDialer.CallStartTime_dt#',
  292. + " '" + SelectResultsRS.getString("CallEndTime_dt") + "', " //'#ExtractFromDialer.CallEndTime_dt#',
  293. + " '" + SelectResultsRS.getString("CallStartTimeLiveTransfer_dt") + "', " //'#ExtractFromDialer.CallStartTimeLiveTransfer_dt#',
  294. + " '" + SelectResultsRS.getString("CallEndTimeLiveTransfer_dt") + "', " //'#ExtractFromDialer.CallEndTimeLiveTransfer_dt#',
  295. + " '" + SelectResultsRS.getString("CallResultTS_dt") + "', " //'#ExtractFromDialer.CallResultTS_dt#',
  296. + " '" + SelectResultsRS.getString("PlayFileStartTime_dt") + "', " //'#ExtractFromDialer.PlayFileStartTime_dt#',
  297. + " '" + SelectResultsRS.getString("PlayFileEndTime_dt") + "', " //'#ExtractFromDialer.PlayFileEndTime_dt#',
  298. + " '" + SelectResultsRS.getString("HangUpDetectedTS_dt") + "', " //'#ExtractFromDialer.HangUpDetectedTS_dt#',
  299. + " '" + SelectResultsRS.getString("Created_dt") + "', " //'#ExtractFromDialer.Created_dt#',
  300. + " '" + SelectResultsRS.getString("DialerName_vch") + "', " //'#ExtractFromDialer.DialerName_vch#',
  301. + " '" + RemoteIPAddress[i] + "', " //'#inpDialerIPAddr#',
  302. + " '" + SelectResultsRS.getString("CurrTS_vch") + "', " //'#ExtractFromDialer.CurrTS_vch#',
  303. + " '" + SelectResultsRS.getString("CurrVoice_vch") + "', " //'#ExtractFromDialer.CurrVoice_vch#',
  304. + " '" + SelectResultsRS.getString("CurrTSLiveTransfer_vch") + "', " //'#ExtractFromDialer.CurrTSLiveTransfer_vch#',
  305. + " '" + SelectResultsRS.getString("CurrVoiceLiveTransfer_vch") + "', " //'#ExtractFromDialer.CurrVoiceLiveTransfer_vch#',
  306. + " '" + SelectResultsRS.getString("CurrCDP_vch") + "', " //'#ExtractFromDialer.CurrCDP_vch#',
  307. + " '" + SelectResultsRS.getString("CurrCDPLiveTransfer_vch") + "', " //'#ExtractFromDialer.CurrCDPLiveTransfer_vch#',
  308. + " '" + escapeSQL(SelectResultsRS.getString("DialString_vch")) + "', " //'#ExtractFromDialer.DialString_vch#',
  309. + " " + SelectResultsRS.getInt("RedialNumber_int") + ", " //#ExtractFromDialer.RedialNumber_int#,
  310. + " " + SelectResultsRS.getInt("TimeZone_ti") + ", " //#ExtractFromDialer.TimeZone_ti#,
  311. + " " + SelectResultsRS.getInt("MessageDelivered_si") + ", " //#ExtractFromDialer.MessageDelivered_si#,
  312. + " " + SelectResultsRS.getInt("SingleResponseSurvey_si") + ", " //#ExtractFromDialer.SingleResponseSurvey_si#,
  313. + " '" + escapeSQL(SelectResultsRS.getString("XMLResultStr_vch")) + "', " //<CFQUERYPARAM CFSQLTYPE="CF_SQL_VARCHAR" VALUE="#ExtractFromDialer.XMLResultStr_vch#">,
  314. + " " + SelectResultsRS.getInt("IsOptIn_ti") + ", " //#ExtractFromDialer.IsOptIn_ti#,
  315. + " " + CurrentBillingAmount + ", " //#CurrentBillingAmount#,
  316. + " '" + SelectResultsRS.getString("DTS_UUID_vch") + "', " //'#ExtractFromDialer.DTS_UUID_vch#',
  317. + " '" + escapeSQL(SelectResultsRS.getString("XMLControlString_vch")) + "', " // <CFQUERYPARAM CFSQLTYPE="CF_SQL_VARCHAR" VALUE="#ExtractFromDialer.XMLControlString_vch#">,
  318. + " '" + escapeSQL(SelectResultsRS.getString("UserSpecifiedData_vch")) + "', " // <CFQUERYPARAM CFSQLTYPE="CF_SQL_VARCHAR" VALUE="#ExtractFromDialer.UserSpecifiedData_vch#">,
  319. + " " + SelectResultsRS.getInt("FileSeqNumber_int") + ", " // <cfif ExtractFromDialer.FileSeqNumber_int NEQ "">#ExtractFromDialer.FileSeqNumber_int#<cfelse>NULL</cfif>,
  320. + " " + SelectResultsRS.getInt("MainMessageLengthSeconds_int") + " " //#ExtractFromDialer.MainMessageLengthSeconds_int#
  321. + " ) ";
  322.  
  323.  
  324. SelectResultsRS.updateInt( "CallDetailsStatusId_ti", abs(ESID) );
  325.  
  326.  
  327.  
  328. InsertRemoteResultsStmt = connRemote.createStatement();
  329. InsertRemoteResultsStmt.executeUpdate(QueryStringInsertFromRemote);
  330.  
  331. // reset string to empty
  332. QueryStringInsertFromRemote = "";
  333.  
  334. SelectResultsRS.updateRow( );
  335.  
  336.  
  337.  
  338.  
  339.  
  340. }// While SelectResultsRS
  341.  
  342. // Execute Insert on any remainging records
  343. if(QueryStringInsertFromRemote.length() > 0)
  344. {
  345. InsertRemoteResultsStmt = connRemote.createStatement();
  346. InsertRemoteResultsStmt.executeUpdate(QueryStringInsertFromRemote);
  347.  
  348. QueryStringInsertFromRemote = "";
  349.  
  350. SelectResultsRS.updateRow( );
  351. }
  352.  
  353.  
  354.  
  355. if(CurrentRowCount == 0)
  356. {
  357. // Write to log that there was nothing to process
  358. System.out.println("No results found this loop");
  359.  
  360. // Only sleep while listening for cancel task/thread calls
  361. try
  362. {
  363. Thread.sleep(100);
  364. }
  365. catch (InterruptedException interrupted)
  366. {
  367. if (isCancelled())
  368. {
  369. System.out.println("QRC Cancelled");
  370. // break;
  371. }
  372. }
  373.  
  374.  
  375. }
  376.  
  377.  
  378.  
  379.  
  380. done = true;
  381. }
  382.  
  383. catch (SQLException ex)
  384. {
  385. // handle any errors
  386. System.out.println("SQLException: " + ex.getMessage());
  387. System.out.println("SQLState: " + ex.getSQLState());
  388. System.out.println("VendorError: " + ex.getErrorCode());
  389. i++;
  390. }
  391. finally
  392. {
  393. // it is a good idea to release
  394. // resources in a finally{} block
  395. // in reverse-order of their creation
  396. // if they are no-longer needed
  397.  
  398. if (SelectResultsRS != null)
  399. {
  400. try
  401. {
  402. SelectResultsRS.close();
  403. }
  404. catch (SQLException sqlEx)
  405. {
  406.  
  407. } // ignore
  408.  
  409. SelectResultsRS = null;
  410. }
  411.  
  412. if (SelectResultsStmt != null)
  413. {
  414. try
  415. {
  416. SelectResultsStmt.close();
  417. }
  418. catch (SQLException sqlEx)
  419. {
  420.  
  421. } // ignore
  422.  
  423. SelectResultsStmt = null;
  424. }
  425.  
  426. if (UpdateResultsStmt != null)
  427. {
  428. try
  429. {
  430. UpdateResultsStmt.close();
  431. }
  432. catch (SQLException sqlEx)
  433. {
  434.  
  435. } // ignore
  436.  
  437. UpdateResultsStmt = null;
  438. }
  439.  
  440. if (InsertRemoteResultsStmt != null)
  441. {
  442. try
  443. {
  444. InsertRemoteResultsStmt.close();
  445. }
  446. catch (SQLException sqlEx)
  447. {
  448.  
  449. } // ignore
  450.  
  451. InsertRemoteResultsStmt = null;
  452. }
  453.  
  454.  
  455. }
  456.  
  457.  
  458. QRVC.ResultsReaderCallBackonComplete(CurrModValue);
  459.  
  460. return iterations;
  461. }
  462.  
  463. }
  464.  
  465. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:20: error: class ResultsReader is public, should be declared in a file named ResultsReader.java
 public class ResultsReader extends Task<Integer> 
        ^
Main.java:4: error: package javafx.concurrent does not exist
import javafx.concurrent.Task;
                        ^
Main.java:5: error: package javafx.event does not exist
import javafx.event.ActionEvent;
                   ^
Main.java:15: error: package com.Ostermiller.util does not exist
import static com.Ostermiller.util.StringHelper.escapeSQL;
                                  ^
Main.java:15: error: static import only from classes and interfaces
import static com.Ostermiller.util.StringHelper.escapeSQL;
^
Main.java:20: error: cannot find symbol
 public class ResultsReader extends Task<Integer> 
                                    ^
  symbol: class Task
Main.java:47: error: cannot find symbol
        private EBMExtractorFXMLController QRVC;
                ^
  symbol:   class EBMExtractorFXMLController
  location: class ResultsReader
Main.java:49: error: cannot find symbol
        public void setQDVC(EBMExtractorFXMLController QRVC)
                            ^
  symbol:   class EBMExtractorFXMLController
  location: class ResultsReader
Main.java:54: error: cannot find symbol
        public EBMExtractorFXMLController getQDVC()
               ^
  symbol:   class EBMExtractorFXMLController
  location: class ResultsReader
Main.java:68: error: no suitable constructor found for Thread(ResultsReader)
            new Thread(this).start();
            ^
    constructor Thread.Thread(ThreadGroup,Runnable,String,long) is not applicable
      (actual and formal argument lists differ in length)
    constructor Thread.Thread(ThreadGroup,Runnable,String) is not applicable
      (actual and formal argument lists differ in length)
    constructor Thread.Thread(Runnable,String) is not applicable
      (actual and formal argument lists differ in length)
    constructor Thread.Thread(ThreadGroup,String) is not applicable
      (actual and formal argument lists differ in length)
    constructor Thread.Thread(String) is not applicable
      (actual argument ResultsReader cannot be converted to String by method invocation conversion)
    constructor Thread.Thread(ThreadGroup,Runnable) is not applicable
      (actual and formal argument lists differ in length)
    constructor Thread.Thread(Runnable) is not applicable
      (actual argument ResultsReader cannot be converted to Runnable by method invocation conversion)
    constructor Thread.Thread() is not applicable
      (actual and formal argument lists differ in length)
Main.java:74: error: cannot find symbol
            this.cancel();                  
                ^
  symbol: method cancel()
Main.java:195: error: cannot find symbol
                    if (isCancelled()) 
                        ^
  symbol:   method isCancelled()
  location: class ResultsReader
Main.java:198: error: cannot find symbol
                         updateMessage("Cancelled");
                         ^
  symbol:   method updateMessage(String)
  location: class ResultsReader
Main.java:203: error: cannot find symbol
                    updateProgress(SelectResultsRS.getRow(), NumberOfResultsContactsToProcessPerThread);
                    ^
  symbol:   method updateProgress(int,int)
  location: class ResultsReader
Main.java:204: error: cannot find symbol
                    updateMessage("Thread " + CurrModValue + " " + SelectResultsRS.getInt("DTSId_int"));
                    ^
  symbol:   method updateMessage(String)
  location: class ResultsReader
Main.java:308: error: cannot find symbol
                        + " '" + escapeSQL(SelectResultsRS.getString("DialString_vch")) + "', " //'#ExtractFromDialer.DialString_vch#',
                                 ^
  symbol:   method escapeSQL(String)
  location: class ResultsReader
Main.java:313: error: cannot find symbol
                        + " '" + escapeSQL(SelectResultsRS.getString("XMLResultStr_vch")) + "', " //<CFQUERYPARAM CFSQLTYPE="CF_SQL_VARCHAR" VALUE="#ExtractFromDialer.XMLResultStr_vch#">,
                                 ^
  symbol:   method escapeSQL(String)
  location: class ResultsReader
Main.java:317: error: cannot find symbol
                        + " '" + escapeSQL(SelectResultsRS.getString("XMLControlString_vch")) + "', " // <CFQUERYPARAM CFSQLTYPE="CF_SQL_VARCHAR" VALUE="#ExtractFromDialer.XMLControlString_vch#">,
                                 ^
  symbol:   method escapeSQL(String)
  location: class ResultsReader
Main.java:318: error: cannot find symbol
                        + " '" + escapeSQL(SelectResultsRS.getString("UserSpecifiedData_vch")) + "', " // <CFQUERYPARAM CFSQLTYPE="CF_SQL_VARCHAR" VALUE="#ExtractFromDialer.UserSpecifiedData_vch#">,
                                 ^
  symbol:   method escapeSQL(String)
  location: class ResultsReader
Main.java:367: error: cannot find symbol
                        if (isCancelled()) 
                            ^
  symbol:   method isCancelled()
  location: class ResultsReader
Main.java:79: error: method does not override or implement a method from a supertype
         @Override protected Integer call() throws Exception 
         ^
21 errors
stdout
Standard output is empty