1 package com.quikj.application.web.talk.plugin; 2 3 import com.quikj.server.framework.*; 4 import com.quikj.server.web.*; 5 import com.quikj.application.web.talk.messaging.*; 6 7 import java.sql.*; 8 9 public class DbUnavailableUserTransfer implements DbOperationInterface 10 { 11 public DbUnavailableUserTransfer(String username, SessionInfo session, EndPointInterface active_called_party, SetupResponseMessage original_setupresp_message, int original_setupresp_status, String original_setupresp_reason, ServiceController parent, AceSQL database) 12 { 13 this.parent = parent; 14 this.database = database; 15 this.username = username; 16 this.session = session; 17 activeCalledParty = active_called_party; 18 originalSetupRespMessage = original_setupresp_message; 19 originalSetupRespStatus = original_setupresp_status; 20 originalSetupRespReason = original_setupresp_reason; 21 } 22 23 public boolean checkForTransfer() 24 { 25 try 26 { 27 Statement statement = UserTable.getTransferInfoQueryStatement(database.getConnection(), username); 28 29 operationId = database.executeSQL(statement, 30 (String []) null, 31 this); 32 33 if (operationId == -1) 34 { 35 lastError = parent.getErrorMessage(); 36 return false; 37 } 38 39 return true; 40 } 41 catch (SQLException ex) 42 { 43 lastError = "Error creating SQL statement : " + ex.getMessage(); 44 return false; 45 } 46 } 47 48 public boolean processResponse(AceSQLMessage message) { 50 if (message.getStatus() == AceSQLMessage.SQL_ERROR) 51 { 52 AceLogger.Instance().log(AceLogger.ERROR, 53 AceLogger.SYSTEM_LOG, 54 parent.getName() 55 + "- DbUnavailableUserTransfer.processResponse() -- Database error result querying user name " 56 + username + "."); 57 58 parent.finishSetupResponse(originalSetupRespMessage, 60 originalSetupRespStatus, 61 originalSetupRespReason, 62 activeCalledParty); 63 64 return true; 65 } 66 67 UserElement user_data = new UserElement(); 68 69 try 70 { 71 ResultSet result = message.getResultSet(); 72 73 if ((result == null) || (result.next() == false)) { 75 parent.finishSetupResponse(originalSetupRespMessage, 77 originalSetupRespStatus, 78 originalSetupRespReason, 79 activeCalledParty); 80 81 return true; 82 } 83 84 UserTable.processTransferInfoQueryResult(user_data, result); 85 } 86 catch (Exception ex) 87 { 88 AceLogger.Instance().log(AceLogger.ERROR, 89 AceLogger.SYSTEM_LOG, 90 parent.getName() 91 + "- DbUnavailableUserTransfer.processResponse() -- Exception processing result : " 92 + ex.getMessage()); 93 94 parent.finishSetupResponse(originalSetupRespMessage, 96 originalSetupRespStatus, 97 originalSetupRespReason, 98 activeCalledParty); 99 100 return true; 101 } 102 103 parent.transferUserUnavailableCall(session, user_data, activeCalledParty, username); 104 105 return true; 106 } 107 108 public void cancel() 109 { 110 database.cancelSQL(operationId, parent); 111 } 112 113 public String getLastError() 114 { 115 return lastError; 116 } 117 118 public EndPointInterface getEndPoint() 119 { 120 return session.getCallingEndPoint(); 121 } 122 123 124 private String username; 125 private SessionInfo session; 126 private EndPointInterface activeCalledParty; 127 private SetupResponseMessage originalSetupRespMessage; 128 private int originalSetupRespStatus; 129 private String originalSetupRespReason; 130 131 private int operationId; 132 133 private String lastError = ""; 134 135 private ServiceController parent; 136 137 private AceSQL database; 138 139 140 } 141 142 | Popular Tags |