package functions;
import com.ibm.as400.access.*;
import java.math.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
//----------------------------------------------------------------------------------------
//Creates docket entries into CMS from TA Web Application (Plea/J&S)
/*
* Created April 2008
* Author: Leslie Andrews
*
*
*/
//----------------------------------------------------------------------------------------
public class NextBWNumber {
private static String ReturnInfo = "";
AS400 system = new AS400("iSeries", "dbaccess", "dbaccess1");
public static String getNextBWNumber(){
return ReturnInfo;
}
public NextBWNumber(String args) {
ReturnInfo = NextWarrant();
}
private String NextWarrant() {
String temp = null;
temp = GetPrefix() + GetNextBWNumber();
System.out.println("used warrant:" + temp);
return temp;
}
private String GetPrefix(){
String tPrefix = null;
//QSYSObjectPathName path = new QSYSObjectPathName("CMLIB", "NXTBWPR", "DTAARA");
QSYSObjectPathName path = new QSYSObjectPathName("Y2K", "NXTBWPR", "DTAARA");
CharacterDataArea dataArea = new CharacterDataArea(system, path.getPath());
try {
tPrefix = dataArea.read();
}
catch (Exception e) {
System.out.println("error reading dataarea getPrefix");
e.printStackTrace();
}
return tPrefix;
}
private String GetNextBWNumber(){
String tNumber = null;
BigDecimal b = null;
int i = 0;
//QSYSObjectPathName path = new QSYSObjectPathName("CMLIB", "NXTBWNO", "DTAARA");
QSYSObjectPathName path = new QSYSObjectPathName("Y2K", "NXTBWNO", "DTAARA");
DecimalDataArea dataArea = new DecimalDataArea(system, path.getPath());
try {
b = dataArea.read();
}
catch (Exception e) {
System.out.println("error reading dataarea getNext BWNumber2");
e.printStackTrace();
}
tNumber = b.toString();
if (tNumber.length() > 2) {
tNumber = tNumber.substring(0, tNumber.length() - 2);
}
else {
tNumber = "0";
}
i = Integer.parseInt(tNumber.trim());
i++;
tNumber = String.valueOf(i) + getYear();
final String filler = "0000000";
StringBuffer buf = new StringBuffer(7);
buf.append(filler.substring(0, filler.length() - tNumber.length()));
buf.append(tNumber);
if (i == 99999) {
SetLastBWNumber("0" + getYear());
IncrementCharacter(GetPrefix());
}
else {
SetLastBWNumber(buf.toString());
}
return buf.toString();
}
private void IncrementCharacter(String CurrentChar){
String characters = "#@%&*";
int index = characters.indexOf(CurrentChar, 0);
index++;
if(index > characters.length()) {
index = 0; // Reset special character
}
QSYSObjectPathName path = new QSYSObjectPathName("Y2K", "NXTBWPR", "DTAARA");
CharacterDataArea dataArea = new CharacterDataArea(system, path.getPath());
try {
dataArea.write(characters.substring(index, index + 1));
}
catch (Exception e) {
System.out.println("error reading dataarea getPrefix");
e.printStackTrace();
}
}
private void SetLastBWNumber(String LastBWNumber){
BigDecimal b = null;
b = BigDecimal.valueOf(Long.valueOf(LastBWNumber).longValue());
//QSYSObjectPathName path = new QSYSObjectPathName("CMLIB", "NXTBWNO", "DTAARA");
QSYSObjectPathName path = new QSYSObjectPathName("Y2K", "NXTBWNO", "DTAARA");
DecimalDataArea dataArea = new DecimalDataArea(system, path.getPath());
try {
dataArea.write(b);
}
catch (Exception e) {
System.out.println("error writing dataarea SetLastBWNumber");
e.printStackTrace();
}
}
private String getYear() {
DateFormat dateFormat = new SimpleDateFormat("yy");
java.util.Date date = new java.util.Date();
return dateFormat.format(date);
}
}