程式1
admin
admin123
jnp://localhost:1099
#程式2
/*==============================================================*/
/* Table: DOCUMENT */
/*==============================================================*/
CREATE TABLE IF NOT EXISTS DOCUMENT
(
DOCNO VARCHAR(10) NOT NULL,
DOCKIND VARCHAR(50) NOT NULL,
DOCDATE DATETIME,
DOCTITLE VARCHAR(100),
DOCCONTENT VARCHAR(255),
USERID VARCHAR(10),
DOCSTATUS CHAR(1),
PRIMARY KEY (DOCNO)
);
/*==============================================================*/
/* Table: DOCUMENT_DETAIL */
/*==============================================================*/
CREATE TABLE IF NOT EXISTS DOCUMENT_DETAIL
(
DOCNO VARCHAR(10) NOT NULL,
DOCSEQ SMALLINT,
DOCDATE DATETIME,
DOCCONTENT VARCHAR(255),
USERID VARCHAR(10),
ISCOMPLETE CHAR(1),
PRIMARY KEY (DOCNO)
);
-----end-----
#程式3
INSERT INTO useraccount (userid, passwd, rolename ) VALUES (
'senshaw', 'senshaw', '員工' );
INSERT INTO useraccount (userid, passwd, rolename ) VALUES (
'nana', 'nana', '經理' );
#程式4
jboss.mq:service=DestinationManager
jboss.mq:service=SecurityManager
jboss.mq:service=DestinationManager
jboss.mq:service=SecurityManager
#程式5
/**
* 新公文存檔
* @param e ActionEvent
*/
void btDocNewSaveActionPerformed(ActionEvent e) {
//以上略... //---------(1)
ArrayList user_list = this.getSendUser(dockind, userid); //---------(2)
try {
QueueConnection queueConn = sl.getQueueConection();
for (int i = 0; i < user_list.size(); i++) {
String send_userid = (String) user_list.get(i);
//決定docseq
sql.setLength(0);
sql.append("select max(docseq) as docseq from document_detail where docno = '" + docno + "' ");
HashData hd_seq = dao.executeQuery(sql.toString());
String max_seq = hd_seq.getString(1, "docseq");
int docseq = 1;
if (max_seq == null || max_seq.equals("")) {
docseq = 1;
}
else {
try {
docseq = Integer.parseInt(max_seq) + 1;
}
catch (NumberFormatException ex) {
log.error(ex);
docseq = 1;
}
}
log.debug("docseq=" + docseq);
//insert document_detail
//---------(3)
sql.setLength(0);
sql.append("insert into document_detail (docno, docseq, docdate, doccontent, userid, iscomplete) values ('" + docno + "'," + docseq + ",'" + docdate + "','','" + send_userid + "','N' ) ");
log.debug("sql=" + sql);
dao.executeUpdate(sql.toString());
//傳送Message
//---------(4)
QueueSession qcSession = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = sl.getQueue("queue/" + send_userid + "Queue");
log.debug("send queue name=" + "queue/" + send_userid + "Queue");
QueueSender sender = qcSession.createSender(queue);
sender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
MapMessage msg = qcSession.createMapMessage();
msg.setString("docno", docno);
msg.setInt("docseq", docseq);
msg.setString("dockind", dockind);
msg.setString("docdate", docdate);
msg.setString("doctitle", doctitle);
msg.setString("doccontent", doccontent);
msg.setString("userid", userid);
msg.setString("docstatus", docstatus);
sender.send(msg);
qcSession.close();
}
queueConn.close();
}
catch (Exception ex) {
log.error(ex);
}
loginFrame.forms_map.get(dockind);
}
#程式6
/**
* 取得公文類別+帳號之下一遞送對象
*/
private ArrayList getSendUser(String dockind, String userid) {
DAOBean dao = loginFrame.dao;
ArrayList role_list = null;
//取得對應角色
StringBuffer sql = new StringBuffer(); //---------(5)
sql.append("select rolename from useraccount where userid = '" + userid + "' ");
log.debug("sql=" + sql);
HashData hd_rolename = dao.executeQuery(sql.toString());
String rolename = hd_rolename.getString(1, "rolename");
try {
rolename = new String(rolename.getBytes("ISO-8859-1"), "BIG5");
}
catch (UnsupportedEncodingException ex) {
log.error(ex);
}
ArrayList list = (ArrayList) loginFrame.forms_map.get(dockind); //---------(6)
boolean is_found = false;
for (int i = 0; i < list.size(); i++) {
ArrayList list2 = (ArrayList) list.get(i);
for (int j = 0; j < list2.size(); j++) {
String rolename2 = (String) list2.get(j);
if (rolename.equals(rolename2)) { //found
is_found = true;
if (i + 1 + 1 <= list.size()) {
role_list = (ArrayList) list.get(i + 1);
}
}
if (is_found) {
break;
}
}
if (is_found) {
break;
}
}
ArrayList user_list = new ArrayList(); //---------(7)
for (int i = 0; i < role_list.size(); i++) {
rolename = (String) role_list.get(i);
try {
rolename = new String(rolename.getBytes("BIG5"), "ISO-8859-1");
}
catch (UnsupportedEncodingException ex) {
log.error(ex);
}
sql.setLength(0);
sql.append("select userid from useraccount where rolename = '" + rolename + "' ");
log.debug("sql=" + sql);
HashData hd_user = dao.executeQuery(sql.toString());
for (int row = 1; row <= hd_user.getRowcount(); row++) {
userid = hd_user.getString(row, "userid");
log.debug("userid=" + userid);
user_list.add(userid);
}
}
return user_list;
}
#程式7
/**
* 初始查詢
*/
public void doQuery(String userid) {
data.clear();
StringBuffer sql = new StringBuffer("select distinct a.docdate, a.dockind, a.doctitle from document a, document_detail b where a.docno = b.docno and b.userid = '" + userid + "' and b.iscomplete = 'P' order by a.docdate desc ");
log.debug("sql=" + sql);
HashData hd = dao.executeQuery(sql.toString());
for (int row = 1; row <= hd.getRowcount(); row++) {
String docdate = hd.getString(row, "docdate");
docdate = docdate.substring(0, docdate.indexOf("."));
docdate = docdate.replace('-', '/');
String dockind = hd.getString(row, "dockind"); ;
try {
dockind = new String(dockind.getBytes("ISO-8859-1"), "BIG5");
}
catch (UnsupportedEncodingException ex) {
log.error(ex);
}
String doctitle = hd.getString(row, "doctitle");
try {
doctitle = new String(doctitle.getBytes("ISO-8859-1"), "BIG5");
}
catch (UnsupportedEncodingException ex) {
log.error(ex);
}
HashMap map = new HashMap();
map.put("docdate", docdate);
map.put("dockind", dockind);
map.put("doctitle", doctitle);
data.add(map);
}
this.fireTableChanged(null);
}
#程式8
queueRcvConn = sl.getQueueConection();
qeRcvSession = queueRcvConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = sl.getQueue("queue/" + loginFrame.userid + "Queue");
log.debug("receive queue name=" + "queue/" + loginFrame.userid + "Queue");
QueueReceiver receiver = qeRcvSession.createReceiver(queue);
receiver.setMessageListener(dModel);
queueRcvConn.start();
/**
* 接收訊息
* @param msg Message
*/
public void onMessage(Message msg) {
if (! (msg instanceof MapMessage)) {
try {
msg.acknowledge();
}
catch (JMSException ex) {
log.error(ex);
}
}
MapMessage mm = (MapMessage) msg; //---------(1)
try {
String docno = mm.getString("docno");
int docseq = mm.getInt("docseq");
String dockind = mm.getString("dockind");
String docdate = mm.getString("docdate");
String doctitle = mm.getString("doctitle");
String doccontent = mm.getString("doccontent");
String userid = mm.getString("userid");
String docstatus = mm.getString("docstatus");
HashMap map = new HashMap();
map.put("docdate", docdate);
map.put("dockind", dockind);
map.put("doctitle", doctitle);
map.put("docno", docno);
data.add(0, map);
this.fireTableChanged(null);
StringBuffer sql = new StringBuffer();
//update document_detail
sql.setLength(0); //---------(2)
sql.append("update document_detail set iscomplete ='P' where docno ='" + docno + "' and docseq=" + docseq + " ");
log.debug("sql=" + sql);
dao.executeUpdate(sql.toString());
}
catch (JMSException ex) {
log.error(ex);
}
}