Java dataqueue access
- From: "techno" <salmanmakhani@xxxxxxxxx>
- Date: Sun, 16 Jul 2006 04:59:35 GMT
We are having some problem processing data queue using java.
the system.out.println(data) shows as many records in data queue at the
same time.
but the program processes only one that is last one in the list ( LIFO
).
my question is that dq.read(-1) statement should fetch only one record
at time but it is fetching all the record and printing it. program is
not following the sequence it should follow.
Code is pasted below for reference.
Kindly suggest.
Salman
/*
*JAVA PROGRAM for billing server inquiry and paymetns
*Logic : reads from data queue and writes it into a file
*
*Created by : Salman Makhani
*Date : 14022005
*
*/
import java.sql.*;
import com.ibm.as400.access.*;
import java.math.*;
//import com.ibm.math.*;
/*mobile banking; */
import java.io.IOException;
import java.io.PrintStream;
import java.net.*;
/*mobile banking; */
class salman
{
//Bill Server
private static String
URLBSDB1="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=";
private static String URLBSDB2=")(PORT=";
private static String URLBSDB3=")))(CONNECT_DATA=(SERVICE_NAME=";
private static String URLBSDB4=")))";
private static String USERBSDB="bill";
private static String PASSWORDBSDB="bill";
private static String BSDBURL;
private static String BSPENDING, BSSID, BSPORT, BSIP;
String STATUSCODE;
String BILLINGMONTH;
String DUEAMTBEFOREDUEDATE;
String DUEDATE;
String DUEAMTAFTERDUEDATE;
String GST;
String WHT;
String PAIDAMOUNT;
String PENDINGPAYMENTS;
String RESERVE1;
String RESERVE2;
String OUTSTANDINGAMT;
String INSTITUTIONCODE;
String BILLID;
public static void main (String args [])
throws Exception //, SQLException ,
AS400SecurityException,ConnectionDroppedException,ErrorCompletingRequestException
,IllegalObjectTypeException,InterruptedException
{
int ret_code;
System.out.println("Before as400");
Connection conn = null;
AS400 system = new AS400("128.1.1.101");
try {
System.out.println("Before get connection");
BSIP = "10.25.1.41";
BSPORT = "1521";
BSSID = "Bill";
BSDBURL = URLBSDB1+BSIP+URLBSDB2+BSPORT+URLBSDB3+BSSID+URLBSDB4;
//Load the Oracle JDBC driver
DriverManager.registerDriver(new
oracle.jdbc.driver.OracleDriver());
// try{
// conn = DriverManager.getConnection (BSDBURL,USERBSDB,PASSWORDBSDB);
// } catch(Exception e){ System.out.println(e.getMessage()); }
String STATUSCODE;
String BILLINGMONTH;
String DUEAMTBEFOREDUEDATE;
String DUEDATE;
String DUEAMTAFTERDUEDATE;
String GST;
String WHT;
String PAIDAMOUNT;
String PENDINGPAYMENTS;
String RESERVE1;
String RESERVE2;
String OUTSTANDINGAMT;
String INSTITUTIONCODE;
String BILLID;
String STAN;
String TRXAMOUNT;
String MOBILEMESSAGE;
String MOBILENUMBER;
////////////////// 05032004/////////
String TXNCHANNEL;
String IMDCODE;
String ATMID;
String SEQNO;
String TXNDATETIME;
String TXNAMOUNTWITHDECIMAL;
String CUSTOMERACCOUNT;
////////////////// 05032004/////////
INSTITUTIONCODE = "39";
BILLID = "1127005398";
DataQueue dq = new DataQueue(system,
"/QSYS.LIB/MCBSALLIB.LIB/SALMANDQ.DTAQ");
System.out.println(" SALMAN1prod");
for(;;){
try{
byte[] data = null;
DataQueueEntry dqData = null;
boolean nullp = true;
try{
dqData = dq.read(-1);
data = dqData.getData();
int j = data.length;
nullp = false;
}
catch(Exception E){
}
String data1 = " ";
if (nullp == false ) { // if data queue has records
System.out.println("ASD");
AS400Text txtConvertor= new
AS400Text(data.length,system.getCcsid(),system);
data1 = (String) txtConvertor.toObject(data);
System.out.println(data1);
// System.out.println(data1.substring(0,4));
// System.out.println(data1.substring(0,4).equals("STOP"));
System.out.println(data1.substring(0,1).equals("M"));
if ( data1.substring(0,4).equals("STOP") == true )
break;
if ( data1.substring(0,1).equals("M") == true ){
int index0 = data1.indexOf(' ');
int index = data1.indexOf('|' , index0 + 1);
int index1 = data1.indexOf('|' , index + 1);
System.out.println(index0);
MOBILENUMBER = data1.substring(index0 + 1,index);
MOBILEMESSAGE = data1.substring(index + 1 , index1 );
System.out.println(MOBILENUMBER);
System.out.println(MOBILEMESSAGE);
send("10.100", MOBILENUMBER, "SMS", "Normal", MOBILEMESSAGE, true);
} // for mobile banking
if ( data1.substring(0,1).equals("I") == true ){
conn = DriverManager.getConnection (BSDBURL,USERBSDB,PASSWORDBSDB);
CallableStatement pstmt = conn.prepareCall("{call
Bill.BILL_ENQUIRY(?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
/////
int index0 = data1.indexOf(' ');
int index = data1.indexOf(32 , index0 + 1);
int index1 = data1.indexOf(32 , index + 1);
int index2 = data1.indexOf(32 , index1 + 1);
System.out.println(index0);
INSTITUTIONCODE = data1.substring(index + 1 , index1 );
BILLID = data1.substring(index0 + 1,index);
STAN = data1.substring(index1 + 1 ,index2 );
System.out.println(INSTITUTIONCODE);
System.out.println(BILLID);
System.out.println(STAN);
float OutstandingAmount;
pstmt.setString(13, INSTITUTIONCODE);
pstmt.setString(14, BILLID);
pstmt.registerOutParameter(1, Types.VARCHAR);
pstmt.registerOutParameter(2, Types.VARCHAR);
pstmt.registerOutParameter(3, Types.VARCHAR);
pstmt.registerOutParameter(4, Types.VARCHAR);
pstmt.registerOutParameter(5, Types.VARCHAR);
pstmt.registerOutParameter(6, Types.VARCHAR);
pstmt.registerOutParameter(7, Types.VARCHAR);
pstmt.registerOutParameter(8, Types.VARCHAR);
pstmt.registerOutParameter(9, Types.VARCHAR);
pstmt.registerOutParameter(10, Types.VARCHAR);
pstmt.registerOutParameter(11, Types.VARCHAR);
pstmt.registerOutParameter(12, Types.VARCHAR);
pstmt.executeUpdate();
STATUSCODE = pstmt.getString(1);
BILLINGMONTH= pstmt.getString(2);
DUEAMTBEFOREDUEDATE= pstmt.getString(3);
DUEDATE= pstmt.getString(4);
DUEAMTAFTERDUEDATE= pstmt.getString(5);
GST= pstmt.getString(6);
WHT= pstmt.getString(7);
PAIDAMOUNT= pstmt.getString(8);
PENDINGPAYMENTS= pstmt.getString(9);
RESERVE1= pstmt.getString(10);
RESERVE2= pstmt.getString(11);
OUTSTANDINGAMT= pstmt.getString(12);
// System.out.println(OUTSTANDINGAMT);
OutstandingAmount = Float.parseFloat(OUTSTANDINGAMT);
OutstandingAmount = OutstandingAmount * 100;
OUTSTANDINGAMT = Float.toString(OutstandingAmount);
OUTSTANDINGAMT =
OUTSTANDINGAMT.substring(0,OUTSTANDINGAMT.indexOf('.') );
BigDecimal OutstandingInt = new
BigDecimal(Integer.parseInt(OUTSTANDINGAMT));
System.out.println(OutstandingInt);
System.out.println(BILLINGMONTH);
// AS400PackedDecimal OutstandingPD = new AS400PackedDecimal(15,2);
// OutstandingPD = OutstandingInt;
// System.out.println(OutstandingPD.getDefaultValue());
pstmt.close();
conn.close();
Object[] PartialKey = new Object[1];
PartialKey[0] = new BigDecimal(STAN);
KeyedFile myFile = new KeyedFile
(system,"/QSYS.LIB/ASIC142201.LIB/BILLPAS1.FILE/BILLPAS1.MBR");
SequentialFile theFile = new SequentialFile(system,
"/QSYS.LIB/ASIC142201.LIB/BILLPAS1.FILE/BILLPAS1.MBR");
AS400FileRecordDescription r = new
AS400FileRecordDescription(system,"/QSYS.LIB/ASIC142201.LIB/BILLPAS1.FILE");
System.out.println ("HERE");
RecordFormat[] recordFormat = r.retrieveRecordFormat();
System.out.println ("HERE");
myFile.setRecordFormat(recordFormat[0]);
myFile.open(AS400File.READ_WRITE, 0,
AS400File.COMMIT_LOCK_LEVEL_NONE);
Record keyRecord = myFile.read(PartialKey);
if (keyRecord != null)
{
System.out.println(keyRecord);
String FieldName1 = "STTRN$";
String FieldName2 = "STSBDS";
String FieldName3 = "STRSPC";
// System.out.println(OutstandingPD.toBytes(OutstandingInt));
OutstandingInt.setScale(2,java.math.BigDecimal.ROUND_HALF_UP);
// byte Field1[] = OutstandingPD.toBytes(OutstandingInt);
if ( STATUSCODE.equals("000000") == true ){
keyRecord.setField(FieldName2,"YS");//inquiry approved
keyRecord.setField(FieldName1,OutstandingInt);
keyRecord.setField(FieldName3,BILLINGMONTH);
}
else if ( STATUSCODE.equals("104022") == true ){
keyRecord.setField(FieldName2,"13");//inquiry approved
// keyRecord.setField(FieldName1,OutstandingInt);
}
else if ( STATUSCODE.equals("104023") == true ){
keyRecord.setField(FieldName2,"68");//inquiry approved
// keyRecord.setField(FieldName1,OutstandingInt);
}
else{
keyRecord.setField(FieldName2,"NO"); //some problem in inquiry
}
System.out.println(keyRecord);
myFile.update(keyRecord);
}
myFile.close();
} // for bill inquiry
if ( data1.substring(0,1).equals("P") == true ){
conn = DriverManager.getConnection (BSDBURL,USERBSDB,PASSWORDBSDB);
////////////////// 05032004/////////
CallableStatement pstmt = conn.prepareCall("{call
Bill.BILL_PAY_NEW(?,?,?,?,?,?,?,?,?)}");
////////////////// 05032004/////////
/////
int index0 = data1.indexOf(' ');
int index = data1.indexOf(32 , index0 + 1);
int index1 = data1.indexOf(32 , index + 1);
int index2 = data1.indexOf(32 , index1 + 1);
int index3 = data1.indexOf(32 , index2 + 1);
////////////////// 05032004/////////
int index4 = data1.indexOf(32 , index3 + 1);
int index5 = data1.indexOf(32 , index4 + 1);
int index6 = data1.indexOf(32 , index5 + 1);
int index7 = data1.indexOf(32 , index6 + 1);
int index8 = data1.indexOf(32 , index7 + 1);
// int index9 = data1.indexOf(32 , index8 + 1);
////////////////// 05032004/////////
System.out.println(index0);
INSTITUTIONCODE = data1.substring(index + 1 , index1);
BILLID = data1.substring(index0 + 1,index);
STAN = data1.substring(index1 + 1 ,index2 );
TRXAMOUNT = data1.substring(index2 + 1 ,index3);
////////////////// 05032004/////////
TXNAMOUNTWITHDECIMAL = TRXAMOUNT.substring(0, TRXAMOUNT.length() - 2
) + "." + TRXAMOUNT.substring(TRXAMOUNT.length() -2 );
TXNCHANNEL = data1.substring(index3 + 1 ,index4);
IMDCODE = data1.substring(index4 + 1 ,index5);
ATMID = data1.substring(index5 + 1 ,index6);
SEQNO = data1.substring(index6 + 1 ,index7);
TXNDATETIME = data1.substring(index7 + 1 ,index8);
// CUSTOMERACCOUNT = data1.substring(index8 + 1 ,index9);
////////////////// 05032004/////////
System.out.println(INSTITUTIONCODE);
System.out.println(BILLID);
System.out.println(STAN);
System.out.println(TRXAMOUNT);
////////////////// 05032004/////////
System.out.println(TXNAMOUNTWITHDECIMAL);
System.out.println(TXNCHANNEL);
System.out.println(IMDCODE);
System.out.println(ATMID);
System.out.println(SEQNO);
System.out.println(TXNDATETIME);
// System.out.println(CUSTOMERACCOUNT);
////////////////// 05032004/////////
float OutstandingAmount;
pstmt.setString(2, INSTITUTIONCODE);
pstmt.setString(3, BILLID);
pstmt.setString(4, TXNAMOUNTWITHDECIMAL); // changed on 05032005
////////////////// 05032004/////////
pstmt.setString(5, TXNCHANNEL);
pstmt.setString(6, IMDCODE);
pstmt.setString(7, ATMID);
pstmt.setString(8, SEQNO);
pstmt.setString(9, TXNDATETIME);
// pstmt.setString(10, CUSTOMERACCOUNT);
////////////////// 05032004/////////
pstmt.registerOutParameter(1, Types.VARCHAR);
pstmt.executeUpdate();
STATUSCODE = pstmt.getString(1);
System.out.println(STATUSCODE);
pstmt.close();
conn.close();
Object[] PartialKey = new Object[1];
PartialKey[0] = new BigDecimal(STAN);
KeyedFile myFile = new KeyedFile
(system,"/QSYS.LIB/ASIC142201.LIB/BILLPAS2.FILE/BILLPAS2.MBR");
SequentialFile theFile = new SequentialFile(system,
"/QSYS.LIB/ASIC142201.LIB/BILLPAS2.FILE/BILLPAS2.MBR");
AS400FileRecordDescription r = new
AS400FileRecordDescription(system,"/QSYS.LIB/ASIC142201.LIB/BILLPAS2.FILE");
RecordFormat[] recordFormat = r.retrieveRecordFormat();
myFile.setRecordFormat(recordFormat[0]);
myFile.open(AS400File.READ_WRITE, 0,
AS400File.COMMIT_LOCK_LEVEL_NONE);
Record keyRecord = myFile.read(PartialKey);
if (keyRecord != null)
{
System.out.println(keyRecord);
String FieldName1 = "BTTRN$";
String FieldName2 = "BTSBDS";
// System.out.println(OutstandingPD.toBytes(OutstandingInt));
// OutstandingInt.setScale(2,java.math.BigDecimal.ROUND_HALF_UP);
// byte Field1[] = OutstandingPD.toBytes(OutstandingInt);
if ( STATUSCODE.equals("000000") == true ){
keyRecord.setField(FieldName2,"BY"); //bill payment is sucessful
//keyRecord.setField(FieldName1,OutstandingInt);
}
else if ( STATUSCODE.equals("104022") == true ){
keyRecord.setField(FieldName2,"13");//inquiry approved
// keyRecord.setField(FieldName1,OutstandingInt);
}
else if ( STATUSCODE.equals("104023") == true ){
keyRecord.setField(FieldName2,"79");//inquiry approved
// keyRecord.setField(FieldName1,OutstandingInt);
}
else{
keyRecord.setField(FieldName2,"BN");// bill payment is not
successful
}
System.out.println(keyRecord);
myFile.update(keyRecord);
}
myFile.close();
} //for bill payment
if ( data1.substring(0,1).equals("T") == true ){
conn = DriverManager.getConnection (BSDBURL,USERBSDB,PASSWORDBSDB);
CallableStatement pstmt = conn.prepareCall("{call
Bill.SEND_TICKLER}");
System.out.println("Send tickler Called!");
pstmt.executeUpdate();
pstmt.close();
conn.close();
} // for TICKLER SENDING
}//if data queue has records
} //try after for
catch(Exception e ){
System.out.println(e.getMessage());
}
}// infinite for loop
conn.close();
system.disconnectAllServices();
} catch (Exception e)
{/* ret_code = e.getErrorCode(); System.err.println(ret_code +
e.getMessage()); */
System.out.println(e.getMessage());
conn.close();
system.disconnectAllServices();
}
}
///////////////////////
public static String send(String s, String s1, String s2, String
s3, String s4, boolean flag)
{
if(s2.equalsIgnoreCase("sms"))
{
return send(s1, s4);
} else
{
System.out.println("HERE");
setReturnCode("01");
return getReturnCode();
}
}
public static String send(String s, String s1)
{
String s2 = "";
String s3 = "";
String s4 = getPaddedData(15, s);
DatagramPacket datagrampacket;
try
{
s3 = s4 + "|" + s1;
System.out.println("HERE SALMAN");
System.out.println("DIP:" + "128.1.1.41" + " PORT: " +
"11002");
InetAddress inetaddress =
InetAddress.getByName("128.1.1.41");
socket = new DatagramSocket();
datagrampacket = new DatagramPacket(s3.getBytes(),
s3.length(), inetaddress, 11002);
DatagramPacket datagrampacket1 = new
DatagramPacket(s2.getBytes(), s2.length(), inetaddress, 11002);
socket.setSoTimeout(3);
}
catch(IOException ioexception)
{
System.out.println("Sorry! Server not
available..Exception:" + ioexception);
setReturnCode("02");
return getReturnCode();
}
try
{
socket.send(datagrampacket);
System.out.println("HERE sent");
System.out.println("Sending: " + s3);
}
catch(IOException ioexception1)
{
try
{
socket.close();
setReturnCode("03");
return getReturnCode();
}
catch(Exception exception)
{
System.err.println("Socket not Closed : " + exception);
}
setReturnCode("04");
return getReturnCode();
}
setReturnCode("00");
return getReturnCode();
}
public static void setReturnCode(String s)
{
returnCode = s;
}
public static String getReturnCode()
{
return returnCode;
}
public static String getPaddedData(int i, String s)
{
String s1 = s.trim();
if(s1.length() < i)
{
for(int j = 0; j < i - s.trim().length(); j++)
s1 = s1 + " ";
return s1;
} else
{
return s1.substring(0, i);
}
}
private static final String SERVERFOLDER =
System.getProperty("user.dir") + "/";
private static final int TIMEOUT = 3;
private static final int mobileSize = 15;
private static String DIP;
private static int PORT;
private static String returnCode;
private static DatagramSocket socket;
/////////////////////////////////
}
.
- Prev by Date: Re: IBM 6400 Printer Best Configuration
- Next by Date: Re: Calling TERASPACE C program from CL with parameter
- Previous by thread: Re: IBM 6400 Printer Best Configuration
- Next by thread: Re: Calling TERASPACE C program from CL with parameter
- Index(es):