📄 .#user.java.1.9
字号:
/****************************************************************************
* Package : com.ecSolutions.ecAppServer.appSession
* File : User.java
* Create Date : 2007-7-20
* Author : Steven Chen
*
* Copyright(C) 2006 ecSolutions(shanghai) Co.,Limited.All Rights Reserved.
*
***************************************************************************/
package com.ecSolutions.ecAppServer.appSession;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.ecSolutions.ecAppServer.util.StringUtil;
import org.apache.log4j.Logger;
import com.ecSolutions.ecAppServer.util.DbUtil;
public class User {
private String messageSize;
private String messageType;
private String machineName;
private String userId;
private String password;
public int port = 0;
private static final String MENU_FITASMUN = "FITASMUN";
private static Logger log = Logger.getLogger("User");
private String date="";
public User(String request) {
this.messageSize = request.substring(0, 4);
this.messageType = request.substring(4, 8);
this.machineName = request.substring(8, 24);
this.userId = request.substring(24, 34);
this.password = request.substring(34, 44);
}
public String getMachineName() {
return machineName;
}
public void setMachineName(String machineName) {
this.machineName = machineName;
}
public String getMessageSize() {
return messageSize;
}
public void setMessageSize(String messageSize) {
this.messageSize = messageSize;
}
public String getMessageType() {
return messageType;
}
public void setMessageType(String messageType) {
this.messageType = messageType;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String userLogin() throws UserLoginFailException {
String strMenu = null;
DbUtil du = new DbUtil("oracle", "direct");
Connection conn = du.getConn();
if (conn == null) {
log.error("Connection is NULL !!!");
return null;
}
String sql = "select PASSWRD,MENU from TAUSRMAS where FLUSRID = ?";
PreparedStatement pstmt = null;
ResultSet rs = null;
String passwd = "", menu = "";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userId);
rs = pstmt.executeQuery();
if (rs.next()) {
passwd = rs.getString("PASSWRD");
menu = rs.getString("MENU");
if (menu != null && menu.trim().equals("")) {
menu = MENU_FITASMUN;
}
} else {
// throw User Login Fail Exception with Code "EA01622";
}
} catch (SQLException e) {
log.error("user login query exception:" + e.toString());
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
}
rs = null;
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
}
pstmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
}
conn = null;
}
}
if (passwd.trim().equals(password.trim())) {
strMenu = menu;
} else {
// throw User Login Fail Exception with Code "EA01622";
log.info("login user: " + userId + "with password: " + password
+ " login failure, user password is invalid.");
throw new UserLoginFailException("EA01622");
}
return strMenu;
}
public String createUserSession() throws UserLoginFailException {
int sessionId = 0;
int pid = 3000;
boolean hasRecord = false;
DbUtil du = new DbUtil("oracle", "direct");
Connection conn = du.getConn();
if (conn == null) {
log.error("Connection is NULL !!!");
return null;
}
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select PID from T56M0XXX where SESSID = ?";
String updateSql = "UPDATE T56M0XXX set pid = ?,sessid=?, lochost=?, comport=? where SESSID=?";
String insertSql = "INSERT INTO T56M0XXX(SESSID,PID,LOCHOST,COMPORT) values(?,?,?,?)";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 9999);
rs = pstmt.executeQuery();
if (rs.next()) {
pid = rs.getInt(1);
pid++;
if (pid > 4000) {
pid = 3000;
}
sessionId = pid;
port = 2000 + sessionId;
hasRecord = true;
} else {
sessionId = pid;
port = 2000 + sessionId;
hasRecord = false;
}
if (hasRecord) {
pstmt = conn.prepareStatement(updateSql);
pstmt.setInt(1, pid);
pstmt.setInt(2, sessionId);
pstmt.setString(3, machineName);
pstmt.setString(4, String.valueOf(port));
pstmt.setInt(5, 9999);
pstmt.execute();
} else {
pstmt = conn.prepareStatement(insertSql);
pstmt.setInt(1, sessionId);
pstmt.setInt(2, pid);
pstmt.setString(3, machineName);
pstmt.setString(4, String.valueOf(port));
pstmt.execute();
}
} catch (SQLException ex) {
ex.printStackTrace();
log.error(ex.toString());
// add another ERROR CODE future
throw new UserLoginFailException("TAM0074");
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
}
rs = null;
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
}
pstmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
}
conn = null;
}
}
return String.valueOf(sessionId);
}
public static void insertPid(User ul, Connection connection, int pid,
int sessionId) throws SQLException {
PreparedStatement preparedStatement = connection
.prepareStatement("INSERT INTO TAUSRMAS(SESSID,PID,LOCHOST,COMPORT) values(?,?,?,?);");
preparedStatement.setInt(1, sessionId);
preparedStatement.setInt(2, pid);
preparedStatement.setString(3, ul.getMachineName());
preparedStatement.setString(4, "5000");
preparedStatement.execute();
preparedStatement.close();
}
public static void updatePid(int pid, Connection connection)
throws SQLException {
PreparedStatement preparedStatement = connection
.prepareStatement("UPDATE TAUSRMAS set pid = ? where pid = ?");
preparedStatement.setLong(1, pid);
preparedStatement.setLong(2, pid);
preparedStatement.execute();
preparedStatement.close();
}
public void createUserWorkArea(String sessionID) {
preProcessDirectory(sessionID);
try {
createOnlineFile(sessionID);
createLADMAPFile(sessionID);
} catch (IOException e) {
log.error("Create User Working Area ERROR!.......");
e.printStackTrace();
}
}
private static boolean preProcessDirectory(String sessionId) {
if (!new File("TTY").isDirectory())
new File("TTY").mkdirs();
if (!new File("TTY/" + sessionId).isDirectory())
new File("TTY/" + sessionId).mkdirs();
return true;
}
private static void createOnlineFile(String sessionId) throws IOException {
String source = "Y";
byte buf[] = source.getBytes();
FileOutputStream f = new FileOutputStream("TTY/" + sessionId
+ "/ONLINE.DAT");
f.write(buf);
f.close();
}
private void createLADMAPFile(String sessionId) throws IOException {
T00M0 tm = readTMFile();
tm.setT00CURRDAT(date);
LDAMAP ldp = setLDAMAP(tm);
FileOutputStream f = new FileOutputStream("TTY/" + sessionId
+ "/LDAMAP.DAT");
String ldvalue = getLDAMP(ldp);
byte buf[] = ldvalue.getBytes();
f.write(buf);
f.close();
}
private static String getLDAMP(LDAMAP ldp) {
StringBuffer ldpsb = new StringBuffer();
ldpsb
.append(StringUtil.stringFitToLength(ldp.getProcessDateCC(), 2))
.append(StringUtil.stringFitToLength(ldp.getProcessDateYY(), 2))
.append(StringUtil.stringFitToLength(ldp.getProcessDateMM(), 2))
.append(StringUtil.stringFitToLength(ldp.getProcessDateDD(), 2))
.append(StringUtil.stringFitToLength(ldp.getUserId(), 10))
.append(StringUtil.stringFitToLength(ldp.getLcyCode(), 3))
.append(
StringUtil
.stringFitToLength(ldp.getWorkstationId(), 10))
.append(StringUtil.stringFitToLength(ldp.getJobNumber(), 6))
// not set
.append(
StringUtil.stringFitToLength(ldp.getDecimalNotation(),
1))
.append(StringUtil.stringFitToLength(ldp.getQdateSep(), 1))
.append(StringUtil.stringFitToLength(ldp.getQdataFmt(), 3))
.append(StringUtil.stringFitToLength(ldp.getOutputMonth(), 3))
.append(StringUtil.stringFitToLength(ldp.getBankName(), 35))
.append(StringUtil.stringFitToLength(ldp.getCorpCcy(), 3))
.append(StringUtil.stringFitToLength(ldp.getSwiftAdd(), 11))
.append(StringUtil.stringFitToLength(ldp.getHoBchCode(), 4))
.append(StringUtil.stringFitToLength(ldp.getHoIrrCcy(), 15))
.append(StringUtil.stringFitToLength(ldp.getHoFxAdjGl(), 20))
.append(StringUtil.stringFitToLength(ldp.getBankId(), 1))
// not set
.append(StringUtil.stringFitToLength(ldp.getBranchId(), 1))
// not set
.append(StringUtil.stringFitToLength(ldp.getExAmtTol(), 3))
.append(StringUtil.stringFitToLength(ldp.getFcyCode(), 3))
// not set
.append(StringUtil.stringFitToLength(ldp.getDeptCode(), 3))
.append(StringUtil.stringFitToLength(ldp.getDayEndFlag(), 1))
.append(
StringUtil.stringFitToLength(ldp.getTempFunctionName(),
8))
// not set
.append(StringUtil.stringFitToLength(ldp.getProductId(), 4))
// not set
.append(StringUtil.stringFitToLength(ldp.getProductName(), 8))
// not set
.append(StringUtil.stringFitToLength(ldp.getFnctionName(), 8))
// not set
.append(StringUtil.stringFitToLength(ldp.getTxBch(), 10))
.append(StringUtil.stringFitToLength(ldp.getOvrUserId(), 10))
.append(
StringUtil.stringFitToLength(ldp.getNextProcessDate(),
8))
.append(
StringUtil.stringFitToLength(ldp.getPrexProcessDate(),
8))
.append(StringUtil.stringFitToLength(ldp.getDayEndFlagInd(), 1))
.append(StringUtil.stringFitToLength(ldp.getWeekEndFlag(), 1))
.append(StringUtil.stringFitToLength(ldp.getBiWeekEndFlag(), 1))
.append(StringUtil.stringFitToLength(ldp.getMonthEndFlag(), 1))
.append(
StringUtil.stringFitToLength(ldp.getQuarYearEndFlag(),
1))
.append(
StringUtil.stringFitToLength(ldp.getHalfYearEndFlag(),
1))
.append(StringUtil.stringFitToLength(ldp.getYearEndFlag(), 1))
.append(StringUtil.stringFitToLength(ldp.getSpecialFlag1(), 1))
.append(StringUtil.stringFitToLength(ldp.getSpecialFlag2(), 1))
.append(StringUtil.stringFitToLength(ldp.getSpecialFlag3(), 1))
.append(StringUtil.stringFitToLength(ldp.getDateFmt(), 1))
.append(StringUtil.stringFitToLength(ldp.getProcessBch(), 8))
// not set
.append(StringUtil.stringFitToLength(ldp.getSfStatus(), 1))
// not set
.append(StringUtil.stringFitToLength(ldp.getDummyRunInd(), 1))
.append(StringUtil.stringFitToLength(ldp.getBatchApprFlag(), 1))// not
// set
.append(StringUtil.stringFitToLength(ldp.getFiller(), 1))// notset
.append(StringUtil.stringFitToLength(ldp.getAcudBui(), 1));// not
// set
return ldpsb.toString();
}
private static T00M0 readTMFile() throws IOException {
RandomAccessFile inFile = new RandomAccessFile("/TAMIC23/T2311/TAM23RT/BIN/T00M0.DAT", "r");
//RandomAccessFile inFile = new RandomAccessFile("c:/T00M0.DAT", "r");
FileChannel in = inFile.getChannel();
MappedByteBuffer mappedBuffer = in.map(FileChannel.MapMode.READ_ONLY,
0, inFile.length());
String charBuffer = Charset.forName("ISO-8859-1").decode(mappedBuffer)
.toString();
System.out.println("charBuffer: " + charBuffer);
T00M0 tm = new T00M0(StringUtil.stringFitToLength(charBuffer, 177));
return tm;
}
private LDAMAP setLDAMAP(T00M0 tm) {
LDAMAP ldp = new LDAMAP();
String currentDate = tm.getT00CURRDAT();
ldp.setProcessDateCC(currentDate.substring(0, 2));
ldp.setProcessDateYY(currentDate.substring(2, 4));
ldp.setProcessDateMM(currentDate.substring(4, 6));
ldp.setProcessDateDD(currentDate.substring(6, 8));
ldp.setUserId(setNotNull(userId));
ldp.setWorkstationId(setNotNull(machineName));
ldp.setBankName(setNotNull(tm.getT00BANKNAME()));
ldp.setLcyCode(setNotNull(tm.getT00LCYCODE()));
ldp.setCorpCcy(setNotNull(tm.getT00CORPCCY()));
ldp.setDecimalNotation(".");
ldp.setOutputMonth(setNotNull(tm.getT00MONCHAR()));
ldp.setQdateSep(setNotNull(tm.getT00DATESEP()));
ldp.setHoBchCode(setNotNull(tm.getT00HEADBRH()));
if (tm.getT00DATEFMT().equals("M") || tm.getT00DATEFMT().equals("3")
|| tm.getT00DATEFMT().equals("6")
|| tm.getT00DATEFMT().equals("9")) {
ldp.setQdataFmt("MDY");
} else if (tm.getT00DATEFMT().equals("D")
|| tm.getT00DATEFMT().equals("2")
|| tm.getT00DATEFMT().equals("5")
|| tm.getT00DATEFMT().equals("8")) {
ldp.setQdataFmt("DMY");
} else if (tm.getT00DATEFMT().equals("Y")
|| tm.getT00DATEFMT().equals("1")
|| tm.getT00DATEFMT().equals("4")
|| tm.getT00DATEFMT().equals("7")) {
ldp.setQdataFmt("YMD");
}
ldp.setDateFmt(setNotNull(tm.getT00DATEFMT()));
ldp.setSwiftAdd(setNotNull(tm.getT00SWIFTAD()));
ldp.setHoIrrCcy(setNotNull(tm.getT00IRRECCY()));
ldp.setHoFxAdjGl(setNotNull(tm.getT00FXADJGL()));
ldp.setExAmtTol(setNotNull(tm.getT00AMTTOLE()));
ldp.setDeptCode(setNotNull(tm.getT00DEPTCOD()));
ldp.setDayEndFlag(setNotNull(tm.getT00DAYENDF()));
ldp.setDayEndFlagInd(setNotNull(tm.getT00DAYEFGI()));
ldp.setWeekEndFlag(setNotNull(tm.getT00WEEKEFG()));
ldp.setBiWeekEndFlag(setNotNull(tm.getT00BIWKEFG()));
ldp.setMonthEndFlag(setNotNull(tm.getT00MONTEFG()));
ldp.setQuarYearEndFlag(setNotNull(tm.getT00QYREFGI()));
ldp.setHalfYearEndFlag(setNotNull(tm.getT00HYREFGI()));
ldp.setYearEndFlag(setNotNull(tm.getT00YEAREFG()));
ldp.setSpecialFlag1(setNotNull(tm.getT00SPECFG1()));
ldp.setSpecialFlag2(setNotNull(tm.getT00SPECFG2()));
ldp.setSpecialFlag3(setNotNull(tm.getT00SPECFG3()));
ldp.setNextProcessDate(tm.getT00NEXTDAT().trim());
ldp.setPrexProcessDate(tm.getT00LASTDAT().trim());
ldp.setDummyRunInd(setNotNull(tm.getT00DUMRUNI()));
ldp.setHoFxAdjGl(setNotNull(tm.getT00FXADJGL()));
return ldp;
}
public void setcurrentdate(String dt) {
date=dt;
}
private static String setNotNull(String value) {
return (value == null) ? "" : value;
}
public String getPort() {
return String.valueOf(port);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -