程式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); } }