Lampiran Listing Program

Modul 1 : BacaTanggalBerlaku.Java package control; public class BacaTanggalBerlaku extends Thread { private Kategori kategori = new Kategori(); public void run(){ while(true){ checkTanggalBerlaku(); try{ Thread.sleep(60000); }catch (Exception e) { } } } public void checkTanggalBerlaku() { String [] array_kategori = kategori.getIDKategori(); for (int i = 0; i < array_kategori.length; i++) { kategori.cekTanggalBerlaku(array_kategori[i]); } } }

Modul 2 : Cetak.Java package control; import java.io.File; import java.util.HashMap; import javax.swing.JOptionPane; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.view.JasperViewer; public class Cetak { DatabaseConnection database = new DatabaseConnection(); public void cetakFile(String file) { try { String file_name = "printout/"+file+".jasper";

L7

HashMap param = new HashMap(); File _file = new File(file_name); database.openConnection(); JasperReport jasperReport = (JasperReport) JRLoader.loadObject(_file.getPath()); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, database.conn); JasperViewer.viewReport(jasperPrint,false); JasperViewer.setDefaultLookAndFeelDecorated(true); } catch (JRException e) { System.out.println(e); JOptionPane.showConfirmDialog(null, "File tidak dapat dicetak", "Information Message "+file,JOptionPane.OK_OPTION,JOptionPane.WARNING_MESSAGE); } } public void cetakReport(String file,String id) { try { String file_name = "printout/"+file+".jasper"; HashMap param = new HashMap(); File _file = new File(file_name); param.put("index", id); database.openConnection(); JasperReport jasperReport = (JasperReport) JRLoader.loadObject(_file.getPath()); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, database.conn); JasperViewer.viewReport(jasperPrint,false); JasperViewer.setDefaultLookAndFeelDecorated(true); } catch (JRException e) { System.out.println(e); JOptionPane.showConfirmDialog(null, "File tidak dapat dicetak", "Information Message "+file,JOptionPane.OK_OPTION,JOptionPane.WARNING_MESSAGE); } } } Modul 3 : DatabaseConnection.Java package control; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;

L8

import javax.swing.JOptionPane; public class DatabaseConnection { Connection conn; public Statement stmnt; public ResultSet rs; public void openConnection(){ try { Class.forName("org.gjt.mm.mysql.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost/telkom","root","root"); stmnt = conn.createStatement(); }catch(Exception e){ JOptionPane.showMessageDialog(null, "Cannot Open Database", "Warning", 0); System.exit(0); } } public void closeConnection(){ try { conn.close(); stmnt.close(); }catch(Exception e){ } } public void executeStatement(String statement) { try{ stmnt.executeUpdate(statement); }catch (Exception e) { JOptionPane.showMessageDialog(null, "Can not Excecute Update \n"+statement,"Error Update",JOptionPane.ERROR_MESSAGE); } } public boolean openConnection(String user, String pass) { try { Class.forName("org.gjt.mm.mysql.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost/telkom",user,pass); return true; }catch(Exception e){ return false; }

L9

} }

Modul 4 : DatabaseSMS.Java package control; import java.text.SimpleDateFormat; import java.util.Date; import view.SMSKeluar; import view.SMSMasuk; public class DatabaseSMS { private static DatabaseConnection databaseConnection = new DatabaseConnection(); private static String jam; private static String status; private static String query; private static String tanggal; public static void saveSMSMasuk(String no_hp, String message) { // TODO Auto-generated method stub try{ jam = getJam(); tanggal = getTanggal(); status = "belum dibaca"; databaseConnection.openConnection(); query = "INSERT INTO sms_terima VALUES(NULL,'"+no_hp+"','"+message+"','"+tanggal+"','"+jam+"','"+status+"')"; databaseConnection.executeStatement(query); databaseConnection.closeConnection(); }catch (Exception e) { // TODO: handle exception } SMSMasuk.setTabelModel(); } private static String getJam() { // TODO Auto-generated method stub Date date1 = new Date(); SimpleDateFormat formated = new SimpleDateFormat("hh:mm:ss"); return formated.format(date1); } private static String getTanggal() {

L10

// TODO Auto-generated method stub Date date1 = new Date(); SimpleDateFormat formated = new SimpleDateFormat("yyyy-MM-dd"); return formated.format(date1); } private int j; private Object [][] data; public int countSMSKeluar() { // TODO Auto-generated method stub int jumlah = 0; query = "SELECT COUNT(*) as jml FROM sms_kirim"; try{ databaseConnection.openConnection(); databaseConnection.rs = databaseConnection.stmnt.executeQuery(query); while(databaseConnection.rs.next()){ jumlah = Integer.parseInt(databaseConnection.rs.getString("jml")); } databaseConnection.closeConnection(); }catch (Exception e) { // TODO: handle exception } return jumlah; } public int countSMSMasuk() { // TODO Auto-generated method stub int jumlah = 0; query = "SELECT COUNT(*) as jml FROM sms_terima"; try{ databaseConnection.openConnection(); databaseConnection.rs = databaseConnection.stmnt.executeQuery(query); while(databaseConnection.rs.next()){ jumlah = Integer.parseInt(databaseConnection.rs.getString("jml")); } databaseConnection.closeConnection(); }catch (Exception e) { // TODO: handle exception } return jumlah; }

L11

public Object[][] get50SMSMasuk(int btsAwal2) { // TODO Auto-generated method stub String select = "SELECT * FROM sms_terima ORDER BY no_terima DESC LIMIT "+btsAwal2+",50"; j = countSMSMasuk(); data = new Object[50][6]; if(j>0){ databaseConnection.openConnection(); int i = 0; try{ databaseConnection.rs = databaseConnection.stmnt.executeQuery(select); while(databaseConnection.rs.next()){ data[i][0]=databaseConnection.rs.getString("no_terima"); data[i][1]=databaseConnection.rs.getString("no_hp"); data[i][2]=databaseConnection.rs.getString("pesan"); data[i][3]=databaseConnection.rs.getString("tanggal"); data[i][4]=databaseConnection.rs.getString("jam"); data[i][5]=databaseConnection.rs.getString("status"); i++; } }catch (Exception e) { // TODO: handle exception } databaseConnection.closeConnection(); }else{ data[0][0] = ""; data[0][1] = ""; data[0][2] = ""; data[0][3] = ""; data[0][4] = ""; data[0][5] = ""; } return data; }

public Object[][] filter(int kategori) { // TODO Auto-generated method stub

L12

String select = "SELECT * FROM sms_terima" ; String apem=""; if(kategori == 1) { apem = "P"; } if(kategori ==2) { apem = "Q"; } j = countSMSMasuk(); data = new Object[50][6]; if(j>0){ databaseConnection.openConnection(); int i = 0; try{ databaseConnection.rs = databaseConnection.stmnt.executeQuery(select); while(databaseConnection.rs.next()){ String temp; temp = databaseConnection.rs.getString("pesan"); temp=temp.substring(0,1); if(temp.equals(apem)==true) { data[i][0]=databaseConnection.rs.getString("no_terima"); data[i][1]=databaseConnection.rs.getString("no_hp"); data[i][2]=databaseConnection.rs.getString("pesan"); data[i][3]=databaseConnection.rs.getString("tanggal"); data[i][4]=databaseConnection.rs.getString("jam"); data[i][5]=databaseConnection.rs.getString("status"); i++;} else { data[i][0] = ""; data[i][1] = ""; data[i][2] =""; data[i][3] = ""; data[i][4] = ""; data[i][5] = "";

L13

} } }catch (Exception e) { // TODO: handle exception } databaseConnection.closeConnection(); }else{ data[0][0] = ""; data[0][1] = ""; data[0][2] = ""; data[0][3] = ""; data[0][4] = ""; data[0][5] = ""; } return data; }

public Object[][] get50SMSKeluar(int btsAwal2) { // TODO Auto-generated method stub String select = "SELECT * FROM sms_kirim ORDER BY no_kirim DESC LIMIT "+btsAwal2+",50"; j = countSMSKeluar(); data = new Object[50][6]; if(j>0){ databaseConnection.openConnection(); int i = 0; try{ databaseConnection.rs = databaseConnection.stmnt.executeQuery(select); while(databaseConnection.rs.next()){ data[i][0]=databaseConnection.rs.getString("no_kirim"); data[i][1]=databaseConnection.rs.getString("no_hp"); data[i][2]=databaseConnection.rs.getString("pesan"); data[i][3]=databaseConnection.rs.getString("tanggal"); data[i][4]=databaseConnection.rs.getString("jam"); data[i][5]=databaseConnection.rs.getString("status"); i++; }

L14

}catch (Exception e) { // TODO: handle exception } databaseConnection.closeConnection(); }else{ data[0][0] = ""; data[0][1] = ""; data[0][2] = ""; data[0][3] = ""; data[0][4] = ""; data[0][5] = ""; } return data; } public int belumDibaca() { // TODO Auto-generated method stub query = "SELECT COUNT(*) as jml FROM sms_terima WHERE status = 'belum dibaca'"; int jum = 0; try{ databaseConnection.openConnection(); databaseConnection.rs = databaseConnection.stmnt.executeQuery(query); while(databaseConnection.rs.next()){ jum = Integer.parseInt(databaseConnection.rs.getString("jml")); } databaseConnection.closeConnection(); }catch (Exception e) { // TODO: handle exception } return jum; } public String [] getSMSBelumDibaca() { // TODO Auto-generated method stub query = "SELECT * FROM sms_terima WHERE status='belum dibaca' LIMIT 0,1"; String [] data_sms = new String [6]; databaseConnection.openConnection(); try{ databaseConnection.rs = databaseConnection.stmnt.executeQuery(query); while(databaseConnection.rs.next()){

L15

data_sms[0] = databaseConnection.rs.getString("no_terima"); data_sms[1] = databaseConnection.rs.getString("no_hp"); data_sms[2] = databaseConnection.rs.getString("pesan"); data_sms[3] = databaseConnection.rs.getString("tanggal"); data_sms[4] = databaseConnection.rs.getString("jam"); data_sms[5] = databaseConnection.rs.getString("status"); } }catch (Exception e) { // TODO: handle exception } databaseConnection.closeConnection(); return data_sms; } public void updateSMSMasuk(String no_terima) { // TODO Auto-generated method stub try{ query = "UPDATE sms_terima SET status = 'sudah dibaca' WHERE no_terima = '"+no_terima+"'"; databaseConnection.openConnection(); databaseConnection.executeStatement(query); databaseConnection.closeConnection(); }catch (Exception e) { // TODO: handle exception } SMSMasuk.setTabelModel(); } public int belumDikirim() { // TODO Auto-generated method stub query = "SELECT COUNT(*) as jml FROM sms_kirim WHERE status = 'belum dikirim'"; int jum = 0; try{ databaseConnection.openConnection(); databaseConnection.rs = databaseConnection.stmnt.executeQuery(query); while(databaseConnection.rs.next()){ jum = Integer.parseInt(databaseConnection.rs.getString("jml")); } databaseConnection.closeConnection(); }catch (Exception e) { // TODO: handle exception }

L16

return jum; } public String[] getSMSBelumDikirim() { // TODO Auto-generated method stub query = "SELECT * FROM sms_kirim WHERE status='belum dikirim' ORDER BY no_kirim DESC LIMIT 0,1"; String [] data_sms = new String [6]; try{ databaseConnection.openConnection(); databaseConnection.rs = databaseConnection.stmnt.executeQuery(query); while(databaseConnection.rs.next()){ data_sms[0] = databaseConnection.rs.getString("no_kirim"); data_sms[1] = databaseConnection.rs.getString("no_hp"); data_sms[2] = databaseConnection.rs.getString("pesan"); data_sms[3] = databaseConnection.rs.getString("tanggal"); data_sms[4] = databaseConnection.rs.getString("jam"); data_sms[5] = databaseConnection.rs.getString("status"); } databaseConnection.closeConnection(); }catch (Exception e) { // TODO: handle exception } return data_sms; }

public void updateSMSKeluar(String no_kirim) { // TODO Auto-generated method stub try{ query = "UPDATE sms_kirim SET status = 'sudah dikirim' WHERE no_kirim = '"+no_kirim+"'"; databaseConnection.openConnection(); databaseConnection.executeStatement(query); databaseConnection.closeConnection(); }catch (Exception e) { // TODO: handle exception } SMSKeluar.setTabelModel(); } public void saveSMSKeluar(String no_hp, String message) {

L17

// TODO Auto-generated method stub try{ jam = getJam(); tanggal = getTanggal(); databaseConnection.openConnection(); status = "belum dikirim"; query = "INSERT INTO sms_kirim VALUES(NULL,'"+no_hp+"','"+message+"','"+tanggal+"','"+jam+"','"+status+"')"; databaseConnection.executeStatement(query); databaseConnection.closeConnection(); }catch (Exception e) { // TODO: handle exception SMSEngine.displayMessage(""+e); } SMSKeluar.setTabelModel(); } public void saveAllSMSKeluar(String id_kategori, String message) { // TODO Auto-generated method stub String [] no_hp = getNoHP(id_kategori); for (int i = 0; i < no_hp.length; i++) { saveSMSKeluar(no_hp[i], message); } } private String[] getNoHP(String id_kategori) { // TODO Auto-generated method stub int jumlah = countData("SELECT COUNT(*) as jml FROM jawab a INNER JOIN sms_terima b on a.no_terima = b.no_terima WHERE a.id_kategori='"+id_kategori+"'"); String [] no_hp = new String[jumlah]; query = "SELECT DISTINCT b.no_hp FROM jawab a INNER JOIN sms_terima b on a.no_terima = b.no_terima WHERE a.id_kategori='"+id_kategori+"'"; try{ databaseConnection.openConnection(); databaseConnection.rs = databaseConnection.stmnt.executeQuery(query); int j = 0; while (databaseConnection.rs.next()) { no_hp[j] = databaseConnection.rs.getString("no_hp"); j++; } databaseConnection.closeConnection(); }catch (Exception e) { // TODO: handle exception }

L18

return no_hp; } public int countData(String query) { // TODO Auto-generated method stub int i = 0; databaseConnection.openConnection(); try{ databaseConnection.rs = databaseConnection.stmnt.executeQuery(query); while(databaseConnection.rs.next()){ i = Integer.parseInt(databaseConnection.rs.getString("jml")); } }catch (Exception e) { // TODO: handle exception System.out.println(e); } databaseConnection.closeConnection(); return i; } } Modul 5 : DataTable.Java package control; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; public class DataTable { TableModel dataModel = null; private String []names; private Object [][]data; @SuppressWarnings({ "unused", "serial" }) public TableModel setTableModel(Object [][] data_1,String [] names_1 ){ data = data_1; names = names_1; return dataModel = new AbstractTableModel() { private static final long serialVersionUID = 1L; public int getColumnCount() { return names.length; } public int getRowCount() { return data.length;} public Object getValueAt(int row, int col) {return data[row][col];} public String getColumnName(int column) {return names[column];} @SuppressWarnings("unchecked") public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}

L19

public boolean isCellEditable(int row, int col) {return false;} public void setValueAt(Object aValue, int row, int column) { data[row][column] = aValue; } }; } } Modul 6 : Jawab.Java package control; public class Jawab { DatabaseConnection database = new DatabaseConnection(); private String query; public void simpanJawab(String no_terima, String id_kategori, String id_jawab, String id_pelanggan) { query = "INSERT INTO jawab VALUES('"+no_terima+"','"+id_kategori+"','"+id_jawab+"','"+id_pelanggan+"')"; database.openConnection(); database.executeStatement(query); database.closeConnection(); } }

Modul 7 : Jawaban.Java package control; import javax.swing.JOptionPane; public class Jawaban { private String query; private DatabaseConnection database = new DatabaseConnection(); private Object[][] data_jawaban; public void simpanJawaban(String id_kategori,String jawaban,String keterangan, String answer){ if(id_kategori.equals("")||keterangan.equals("")||jawaban.equals("")){ JOptionPane.showMessageDialog(null, "Isi field dengan lengkap", "Error Message", JOptionPane.ERROR_MESSAGE); }else{ if(answer.equals("Ya")){ query ="UPDATE jawaban SET answer='Tidak' WHERE id_kategori='"+id_kategori+"'";

L20

database.openConnection(); database.executeStatement(query); database.closeConnection(); } query = "REPLACE INTO jawaban VALUES('"+id_kategori+"','"+jawaban+"','"+keterangan+"','"+answer+"')"; database.openConnection(); database.executeStatement(query); database.closeConnection(); } } public void hapusJawaban(String id_kategori, String s_jawaban) { query = "DELETE FROM jawaban WHERE id_kategori='"+id_kategori+"' && id_jawab ='"+s_jawaban+"'"; database.openConnection(); database.executeStatement(query); database.closeConnection(); } public int countData(String query) { int i = 0; database.openConnection(); try{ database.rs = database.stmnt.executeQuery(query); while(database.rs.next()){ i = Integer.parseInt(database.rs.getString("jml")); } }catch (Exception e) { System.out.println(e); } database.closeConnection(); return i; } public String [] getKeterangan(String id_kategori, String id_jawab) { String [] isi = new String [2]; query = "SELECT keterangan,answer FROM jawaban WHERE id_kategori='"+id_kategori+"' && id_jawab='"+id_jawab+"'"; database.openConnection(); try{ database.rs = database.stmnt.executeQuery(query); while(database.rs.next()){ isi[0] = database.rs.getString("keterangan"); isi[1] = database.rs.getString("answer"); }

L21

}catch (Exception e) { System.out.println(e); } database.closeConnection(); return isi; } public Object[][] getDataJawaban() { data_jawaban = new Object[countData("SELECT COUNT(*) as jml FROM jawaban")][3]; database.openConnection(); query = "SELECT * FROM jawaban ORDER BY id_kategori"; int i = 0; try{ database.rs = database.stmnt.executeQuery(query); while(database.rs.next()){ data_jawaban[i][0] = database.rs.getString("id_kategori"); data_jawaban[i][1] = database.rs.getString("id_jawab"); data_jawaban[i][2] = database.rs.getString("keterangan"); i++; } }catch (Exception e) { System.out.println(e); } database.closeConnection(); return data_jawaban; } public String [][] getDataJawaban(String id_kategori) { String [][] banyak_jawaban = new String [countData("SELECT COUNT(*) as jml FROM jawaban WHERE id_kategori='"+id_kategori+"'")][2]; database.openConnection(); query = "SELECT id_jawab,keterangan FROM jawaban WHERE id_kategori='"+id_kategori+"'"; int i = 0; try{ database.rs = database.stmnt.executeQuery(query); while(database.rs.next()){ banyak_jawaban[i][0] = database.rs.getString("id_jawab"); banyak_jawaban[i][1] = database.rs.getString("keterangan"); i++; } }catch (Exception e) { System.out.println(e); } database.closeConnection();

L22

return banyak_jawaban; } public String getJawaban(String id_kategori) { String jawaban = ""; database.openConnection(); query = "SELECT id_jawab FROM jawaban WHERE id_kategori='"+id_kategori+"' && answer='Ya'"; int i = 0; try{ database.rs = database.stmnt.executeQuery(query); while(database.rs.next()){ jawaban = database.rs.getString("id_jawab"); i++; } }catch (Exception e) { System.out.println(e); } database.closeConnection(); return jawaban; } }

Modul 8 : Kategori.Java package control; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.JOptionPane; import view.TabelKategori; public class Kategori { private DatabaseConnection database = new DatabaseConnection(); private String query; private Object[][] data_kategori; private boolean kabisat = false; private int [] bulan_non_kabisat = {31,28,31,30,31,30,31,31,30,31,30,31}; private int [] bulan_kabisat = {31,29,31,30,31,30,31,31,30,31,30,31}; private String warning; public void simpanKategori(String id_kategori, String keterangan, String tgl_mulai, String tgl_akhir) { if(!cekTanggal(tgl_mulai)||!cekTanggal(tgl_akhir)){

L23

JOptionPane.showMessageDialog(null, warning, "Error",JOptionPane.ERROR_MESSAGE); }else{ if(id_kategori.equals("")||keterangan.equals("")){ JOptionPane.showMessageDialog(null, "Isi field dengan lengkap", "Error Message", JOptionPane.ERROR_MESSAGE); }else{ if(!cekTanggalMulaiDanAkhir(tgl_mulai,tgl_akhir)){ JOptionPane.showMessageDialog(null, "Tanggal Akhir tidak lebih kecil dari tanggal mulai", "Error Message", JOptionPane.ERROR_MESSAGE); }else{ tgl_mulai = formatTanggal(tgl_mulai); tgl_akhir = formatTanggal(tgl_akhir); query = "REPLACE INTO kategori VALUES('"+id_kategori+"','"+keterangan+"','"+tgl_mulai+"','"+tgl_akhir+"',0)"; database.openConnection(); database.executeStatement(query); database.closeConnection(); } } } } private String formatTanggal(String tanggal) { String [] tgl = tanggal.split("-"); return tgl[2]+"-"+tgl[1]+"-"+tgl[0]; } private boolean cekTanggalMulaiDanAkhir(String tgl_mulai, String tgl_akhir) { String [] tglMulai = tgl_mulai.split("-"); String [] tglAkhir = tgl_akhir.split("-"); if(Integer.parseInt(tglAkhir[2])>=Integer.parseInt(tglMulai[2])){ if(Integer.parseInt(tglAkhir[2])==Integer.parseInt(tglMulai[2])){ if(Integer.parseInt(tglAkhir[1])>=Integer.parseInt(tglMulai[1])){ if(Integer.parseInt(tglAkhir[1])==Integer.parseInt(tglMulai[1])){ if(Integer.parseInt(tglAkhir[0])>=Integer.parseInt(tglMulai[0])){ return true; }else{ return false; } }else{ return true; } }else{

L24

return false; } }else{ return true; } }else{ return false; } } private boolean cekTanggal(String tanggal) { String [] tgl = tanggal.split("-"); if(tgl.length==3){ if(tgl[0].length()>0&&tgl[0].length()0&&Integer.parseI nt(tgl[1])0&&Integer.parseInt(tgl[0])0&&Integer.parseInt(tgl[0])0){ data_lama = data_pemenang; data_pemenang = new Object[jml_pemenang+1][3]; int l = 0; for(int k = 0; k < jml_pemenang; k++){ System.out.println(data_lama[k][1]+""+data_calon_pemenang[random][1]); if(data_lama[k][1]==data_calon_pemenang[random][1]){ l++; } } if(l>0){ j = j -1; data_pemenang = data_lama; }else{ int n = 0; for(int m = 0; m < data_lama.length; m++){ data_pemenang[m][0] = data_lama[m][0]; data_pemenang[m][1] = data_lama[m][1]; data_pemenang[m][2] = data_lama[m][2]; n++; } data_pemenang[n][0] = n+1; data_pemenang[n][1] = data_calon_pemenang[random][1]; data_pemenang[n][2] = data_calon_pemenang[random][2]; } } } return data_pemenang; } public int countData(String query) { int i = 0; database.openConnection(); try{ database.rs = database.stmnt.executeQuery(query); while(database.rs.next()){ i = Integer.parseInt(database.rs.getString("jml")); } }catch (Exception e) { System.out.println(e);

L37

} database.closeConnection(); return i; } public Object[][] getDataPemenang() { Object [][] data_pemenang = new Object[countData("SELECT COUNT(*) as jml FROM pemenang")][5]; query = "SELECT * FROM pemenang ORDER BY id_kategori,keterangan"; int i = 0; database.openConnection(); try{ database.rs = database.stmnt.executeQuery(query); while(database.rs.next()){ data_pemenang[i][0] = database.rs.getString("id_kategori"); data_pemenang[i][1] = database.rs.getString("id_pelanggan"); data_pemenang[i][2] = database.rs.getString("tanggal"); data_pemenang[i][3] = database.rs.getString("no_hp"); data_pemenang[i][4] = database.rs.getString("keterangan"); i++; } }catch (Exception e) { System.out.println(e); } database.closeConnection(); return data_pemenang; } public void deletePemenang(String id_kategori) { query = "DELETE FROM pemenang WHERE id_kategori='"+id_kategori+"'"; database.openConnection(); database.executeStatement(query); database.closeConnection(); } }

Modul 11 : SMSEngine.Java package control; import java.io.*; import java.util.*; import java.util.regex.Pattern;

L38

import javax.comm.*; import view.SMSMasuk; import view.ServerSMS; public class SMSEngine implements SerialPortEventListener { private static StringBuffer pesanPDUKirim; private static int panjangNotlpTujuan; private static int panjangPesanKirim; private static String PduPesan; private static char [] asciiToGsmMap; private static int panjangKarakter; private static StringBuffer stringBuffer; private static char[] karakter; DatabaseSMS databaseSMS = new DatabaseSMS(); BacaSMSKeluar keluar = new BacaSMSKeluar(); BacaSMSMasuk masuk = new BacaSMSMasuk(); SMSRequest smsRequest = new SMSRequest(); public boolean isSleep = false; private String[] data_belum_dikirim; private String[] sms_belum_dibaca; private static CommPortIdentifier portId; private static String[] portName; public SerialPort port; private InputStream input; private OutputStream output; private String respons_cnmi; private String cnmi = "";; private String[] ncnmi; private String[] s_cnmi; private String scnmi = ""; private int n; private byte[] bacaBuffer = new byte[100000]; private int bufferOffset; private StringTokenizer st; private String respons; private String[] hasil; private int Index; private int PDU; private String dapatNotlp; private String pesan; private String infoSmsc; private int nilaiSmsc; private int nomorSmsc; private String panjangNotlp;

L39

private int nilaiPanjangNotlp; private int nilaiNotlp; private String Notlp; private String panjangPesan; private int nilaiPanjangPesan; private String pesanPDU; public static boolean status = false; private static char [] gsmToAsciiMap; @SuppressWarnings("unchecked") public void startConnection(String port_name, Integer bit_per_second, Integer databits, int parity, int stop_bits, int flow) { Enumeration daftarPort = CommPortIdentifier.getPortIdentifiers(); while (daftarPort.hasMoreElements()){ portId = (CommPortIdentifier) daftarPort.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { if(portId.getName().equals(port_name)){ try { port = (SerialPort) portId.open("SMS",1234); displayMessage("Server berhasil membuka Port : " + port_name); ServerSMS.b_disconnect.setEnabled(true); } catch (PortInUseException piue) { displayMessage("Port : " + port_name + " Sedang digunakan"); displayMessage("Penyambungan ke Terminal Gagal "); displayMessage("Terjadi kesalahan pada : " + piue); } } } } try{ input = port.getInputStream(); output = port.getOutputStream(); } catch(IOException ioe){ displayMessage("Ada kesalahan I/O Start Server pada : "+ioe); } try{ port.setSerialPortParams(bit_per_second,databits,stop_bits,parity); port.setFlowControlMode(flow); port.notifyOnBreakInterrupt(true); port.notifyOnDataAvailable(true); port.notifyOnParityError(true); port.notifyOnBreakInterrupt(true); port.notifyOnOverrunError(true); port.notifyOnOutputEmpty(true);

L40

displayMessage("Sedang dalam pengaturan terminal"); kirimAT("AT" + "\15", 1250); kirimAT("AT+CMGF=0" + "\15", 1250); kirimAT("AT+CSCS=GSM" + "\15", 1250); kirimAT("AT+CPMS="+String.valueOf(Character.toChars(34))+"ME"+String.value Of(Character.toChars(34))+ "\15",1250); kirimAT("AT+CNMI=?" + "\15", 1250); ServerSMS.b_connect.setEnabled(false); }catch (UnsupportedCommOperationException ucoe) { displayMessage("Pengaturan Data Serial Port Gagal"); displayMessage("Kesalahan terjadi pada : " + ucoe); } try { port.addEventListener(this); }catch (TooManyListenersException tmle) { displayMessage("Terjadi kesalahan pada : " + tmle); } } static { final int lastindex = 255; gsmToAsciiMap = new char[lastindex + 1]; asciiToGsmMap = new char[lastindex + 1]; int i; for (i = 0; i = 8; bblen -= 8; } } if ( (bblen > 0)) { encmsg.append(rubahKeHexa(bb)); } return encmsg.toString(); } private static String balikKarakter(String karakter) { panjangKarakter = karakter.length(); stringBuffer = new StringBuffer(panjangKarakter); for (int i = 0; (i + 1) < panjangKarakter; i = i + 2) { stringBuffer.append(karakter.charAt(i + 1)); stringBuffer.append(karakter.charAt(i)); } return new String(stringBuffer); } private static String rubahKeHexa(int a) { char[] hexa = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; karakter = new char[2]; a = a & 255; karakter[0] = hexa[a / 16]; karakter[1] = hexa[a % 16]; return new String(karakter); } public void checkTabelTerima() { int belum_dibaca = databaseSMS.belumDibaca(); if(belum_dibaca>0){ try{ isSleep = true; sms_belum_dibaca = databaseSMS.getSMSBelumDibaca();

L46

smsRequest.checkFormat(sms_belum_dibaca); isSleep = false; }catch (Exception e) { System.out.println(e); isSleep = false; } } } @SuppressWarnings("deprecation") public void tutupPort() { try{ port.close(); }catch(Exception e){ } ServerSMS.b_connect.setEnabled(true); ServerSMS.b_set_cnmi.setEnabled(false); ServerSMS.b_disconnect.setEnabled(false); displayMessage("Port tertutup"); status = false; keluar.stop(); masuk.stop(); } @SuppressWarnings("unchecked") public static String[] cariPort() { int i = 0; Enumeration daftarPort = CommPortIdentifier.getPortIdentifiers(); while (daftarPort.hasMoreElements()) { portId = (CommPortIdentifier) daftarPort.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { i++; } } portName = new String[i]; int j = 0; daftarPort = CommPortIdentifier.getPortIdentifiers(); while (daftarPort.hasMoreElements()) { portId = (CommPortIdentifier) daftarPort.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { portName[j] = portId.getName(); j++; } } return portName;

L47

} public void serialEvent(SerialPortEvent arg0) { try { while ( (n = input.available()) > 0) { n = input.read(bacaBuffer, bufferOffset, n); bufferOffset += n; if ( (bacaBuffer[bufferOffset - 1] == 10) && (bacaBuffer[bufferOffset - 2] == 13)) { String buffer = new String(bacaBuffer, 0, bufferOffset - 2); terimaAT(buffer); bufferOffset = 0; }} } catch (IOException e) { displayMessage("Ada kesalahan Serial Event pada : "+e); } } private void terimaAT(String buffer) { st = new StringTokenizer(buffer, "\r\n"); while (st.hasMoreTokens()) { respons = st.nextToken(); displayMessage(respons); try { if (respons.startsWith("RING")) { kirimAT("ATH0" + "\15", 100); }else if (respons.startsWith("+CMTI:")) { String s_cpms = respons.trim().substring(8,respons.indexOf(",")-1); if(s_cpms.equals("MT")){ s_cpms = "\"SM\""; }else{ s_cpms= "\""+s_cpms+"\""; } kirimAT("AT+CPMS="+s_cpms+"\15",1250); Pattern pattern = Pattern.compile(","); hasil = pattern.split(respons.trim()); Index = Integer.parseInt(hasil[1].trim()); kirimAT("AT+CMGR=" + Index + "\15", 1250); }else if (respons.startsWith("+CMGR:")) { PDU = 1; }else if (respons.startsWith("+CMGL")) { Pattern pattern = Pattern.compile(":"); hasil = pattern.split(respons.trim()); pattern = Pattern.compile(","); hasil = pattern.split(hasil[1].trim()); Index = Integer.parseInt(hasil[0].trim());

L48

PDU = 1; }else if(respons.startsWith("+CNMI:")){ respons = respons.trim(); respons_cnmi = respons; ServerSMS.b_set_cnmi.setEnabled(true); status = true; displayMessage("Pengaturan belum selesai,\nClick Set CNMI untuk setting terminal"); } else if (PDU == 1) { prosesTerimaSms(Index, respons.trim()); PDU = 0; }else { } } catch (Exception e) { displayMessage("Ada kesalahan terima AT pada : "+e); } } } private void prosesTerimaSms(int index, String Pdu) { isSleep = true; try { PduTerimaSms(Pdu); } catch (Exception e) { displayMessage("Ada kesalahan Proses Terima SMS pada "+e); } if (dapatNotlp.endsWith("F")) { dapatNotlp = dapatNotlp.substring(0, dapatNotlp.length() - 1); } DatabaseSMS.saveSMSMasuk(dapatNotlp,pesan); SMSMasuk.setTabelModel(); displayMessage("Pesan Dari Nomor : " + dapatNotlp); displayMessage("Isi Pesan : " + pesan); kirimAT("AT+CMGD=" + Index + "\15", 1250); isSleep = false; } private void PduTerimaSms(String smspdu) { int i = 0; try { infoSmsc = smspdu.substring(i, 2); nilaiSmsc = Integer.parseInt(infoSmsc, 16); i = i + 4; nomorSmsc = i + (nilaiSmsc * 2) - 2;

L49

i = nomorSmsc + 2; panjangNotlp = smspdu.substring(i, i + 2); nilaiPanjangNotlp = Integer.parseInt(panjangNotlp, 16); i = i + 4; nilaiNotlp = i + nilaiPanjangNotlp + nilaiPanjangNotlp % 2; Notlp = smspdu.substring(i, nilaiNotlp); dapatNotlp = balikKarakter(Notlp); i = nilaiNotlp; i = i + 18; panjangPesan = smspdu.substring(i, i + 2); nilaiPanjangPesan = Integer.parseInt(panjangPesan, 16); i = i + 2; pesanPDU = smspdu.substring(i, smspdu.length()); displayMessage(pesanPDU); pesan = delapanKeTujuhBit(pesanPDU, nilaiPanjangPesan).substring(0, nilaiPanjangPesan); } catch (Exception e) { displayMessage("Ada kesalahan Pdu Terima SMS pada "+e); } } private String delapanKeTujuhBit(String pesan, int msglen) { int i, o, r = 0, rlen = 0, olen = 0, charcnt = 0; StringBuffer msg = new StringBuffer(160); int pesanlen = pesan.length(); String ostr; char c;

for (i = 0; ( (i + 1) < pesanlen) && (charcnt < msglen); i = i + 2) { ostr = pesan.substring(i, i + 2); o = Integer.parseInt(ostr, 16); olen = 8; o >= 7; olen -= 7; r = o; rlen = olen; c = gsmToAsciiMap[c]; msg.append(c); charcnt++;

L50

if (rlen >= 7) { c = (char) (r & 127); r >>>= 7; rlen -= 7; msg.append(c); charcnt++; } }

if ( (rlen > 0) && (charcnt < msglen)) { msg.append( (char) r);

} return msg.toString(); } } Modul 12 : SMSRequest.Java package control; public class SMSRequest { private String no_terima; private String no_hp; private String pesan; private DatabaseSMS databaseSMS = new DatabaseSMS(); private Kategori kategori = new Kategori(); private Jawab jawab = new Jawab(); private Jawaban jawaban = new Jawaban(); private Pelanggan pelanggan = new Pelanggan(); public void checkFormat(String[] data_sms) { no_terima = data_sms[0]; no_hp = data_sms[1]; pesan = data_sms[2].toUpperCase(); String [] format = pesan.split(" "); if(format.length==3){ if(pelanggan.countData("SELECT COUNT(*) as jml FROM pelanggan WHERE id_pelanggan='"+format[1]+"'")>0){ if(kategori.getStatus(format[0])){ if(kategori.countData("SELECT COUNT(*) as jml FROM kategori WHERE id_kategori='"+format[0].trim()+"'")>0){ if(jawaban.countData("SELECT COUNT(*) as jml FROM jawaban WHERE id_kategori='"+format[0].trim()+"' && id_jawab='"+format[2].trim()+"'")>0){ jawab.simpanJawab(no_terima,format[0].trim(),format[2].trim(),format[1]);

L51

databaseSMS.saveSMSKeluar(no_hp, "Terima kasih atas partisipasi anda telah mengikuti "+kategori.getKeterangan(format[0])); }else{ databaseSMS.saveSMSKeluar(no_hp, "Pilihan anda salah tidak ada jawaban "+format[2]); } }else{ databaseSMS.saveSMSKeluar(no_hp, "Format "+format[0]+" tidak ada"); } }else{ databaseSMS.saveSMSKeluar(no_hp, "Maaf "+format[0]+" sudah ditutup"); } }else{ databaseSMS.saveSMSKeluar(no_hp, "Maaf, Nomor pelanggan yang anda masukkan tidak terdaftar"); } }else{ databaseSMS.saveSMSKeluar(no_hp, "Format SMS anda salah"); } databaseSMS.updateSMSMasuk(no_terima); } }

Modul 13 : TelkomVision.Java package control; import javax.swing.*; import view.TelkomVisionMain; public class TelkomVision { public static void main(String[] args) { try{ UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndF eel"); }catch (Exception e) { JOptionPane.showMessageDialog(null, "Cannot set Look And Feel","Error Look And Feel",JOptionPane.INFORMATION_MESSAGE); } TelkomVisionMain program = new TelkomVisionMain();

L52

program.setVisible(true); program.setSize(800,600); program.setLocation(0,0); } }

Modul 14 : BroadcastSMS.Java package view; import java.awt.*; import java.awt.event.*; import javax.swing.*; import control.DatabaseSMS; import control.Kategori; public class BroadcastSMS extends JPanel implements ActionListener { private static final long serialVersionUID = -3730380764020156842L; String [] array_untuk = {"Personal"}; JLabel l_untuk = new JLabel("Untuk"); JLabel l_no_tujuan = new JLabel("No Tujuan"); JComboBox c_untuk = new JComboBox(array_untuk); JTextField t_no_tujuan = new JTextField(); JTextArea t_pesan = new JTextArea(); JScrollPane sp = new JScrollPane(t_pesan); JButton b_kirim = new JButton("Kirim"); JButton b_batal = new JButton("Batal"); DatabaseSMS databaseSMS = new DatabaseSMS(); Kategori kategori = new Kategori(); private Object[][] data_kategori; BroadcastSMS(){ setName("Broadcast SMS"); setLayout(null); this.setBackground(new Color(156,156,206)); add(l_untuk); add(l_no_tujuan); add(c_untuk); add(t_no_tujuan); add(sp); add(b_batal); add(b_kirim);

L53

data_kategori = kategori.getDataKategori(); for (int i = 0; i < data_kategori.length; i++) { c_untuk.addItem(data_kategori[i][0]); } t_pesan.setLineWrap(true); l_untuk.setBounds(10,10,90,20); l_no_tujuan.setBounds(10,33,90,20); c_untuk.setBounds(100,10,120,20); t_no_tujuan.setBounds(100,33,120,20); sp.setBounds(10,70,210,150); b_batal.setBounds(10,250,90,20); b_kirim.setBounds(100,250,90,20); b_kirim.setEnabled(false); b_batal.setEnabled(false); c_untuk.addActionListener(this); b_kirim.addActionListener(this); b_batal.addActionListener(this); t_pesan.addKeyListener(new KeyListener(){ String s_pesan; public void keyReleased(KeyEvent e){ s_pesan = t_pesan.getText(); if(s_pesan.length()>0){ b_kirim.setEnabled(true); b_batal.setEnabled(true); }else{ b_kirim.setEnabled(false); b_batal.setEnabled(false); } } public void keyPressed(KeyEvent e){ s_pesan = t_pesan.getText(); if(s_pesan.length()>=160){ if(e.getKeyChar()==KeyEvent.VK_BACK_SPACE){ }else{ t_pesan.setText(s_pesan.substring(0,159)); }

L54

} } public void keyTyped(KeyEvent e){ } }); for(int i = 0; i < this.getComponents().length; i++){ this.getComponent(i).setFont(new Font("Tw Cen MT",0,12)); } } public void actionPerformed(ActionEvent arg0) { if(arg0.getSource()==c_untuk){ if(c_untuk.getSelectedIndex()==0){ t_no_tujuan.setEnabled(true); }else{ t_no_tujuan.setEnabled(false); } } if(arg0.getSource()==b_kirim){ if(c_untuk.getSelectedIndex()==0){ String s_no_tujuan = t_no_tujuan.getText(); if(!s_no_tujuan.equals("")){ if(s_no_tujuan.startsWith("0")){ s_no_tujuan = "62"+s_no_tujuan.substring(1,s_no_tujuan.length()); } databaseSMS.saveSMSKeluar(s_no_tujuan,t_pesan.getText()); }else{ JOptionPane.showMessageDialog(null, "Masukkan No tujuan","Message Error",JOptionPane.ERROR_MESSAGE); } }else{ databaseSMS.saveAllSMSKeluar(c_untuk.getSelectedItem().toString(),t_pesan.getT ext()); } refresh(); } if(arg0.getSource()==b_batal){ refresh(); } }

L55

private void refresh() { t_pesan.setText(""); t_no_tujuan.setText(""); b_batal.setEnabled(false); b_kirim.setEnabled(false); SMSKeluar.setTabelModel(); } }

Modul 15 : HtmlPane.Java package view; import java.awt.*; import java.io.*; import java.net.MalformedURLException; import java.net.URL; import javax.swing.*; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; import javax.swing.text.Document; class HtmlPane extends JScrollPane implements HyperlinkListener { private static final long serialVersionUID = -3760372141397832056L; JEditorPane html; public HtmlPane(String filename) { try { File f = new File (filename); String s = f.getAbsolutePath(); s = "file:"+s; html = new JEditorPane(s); html.setEditable(false); html.addHyperlinkListener(this); JViewport vp = getViewport(); vp.add(html); } catch (MalformedURLException e) { System.out.println("Malformed URL: " + e); } catch (IOException e) { System.out.println("IOException: " + e); } }

L56

public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { linkActivated(e.getURL()); } } protected void linkActivated(URL u) { Cursor c = html.getCursor(); Cursor waitCursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR); html.setCursor(waitCursor); SwingUtilities.invokeLater(new PageLoader(u, c)); } class PageLoader implements Runnable { PageLoader(URL u, Cursor c) { url = u; cursor = c; } public void run() { if (url == null) { html.setCursor(cursor); Container parent = html.getParent(); parent.repaint(); } else { Document doc = html.getDocument(); try { html.setPage(url); } catch (IOException ioe) { html.setDocument(doc); getToolkit().beep(); } finally { url = null; SwingUtilities.invokeLater(this); } } } URL url; Cursor cursor;

L57

} }

Modul 16 : KategoriJInternalFrame package view; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class KategoriJInternalFrame extends JInternalFrame { private static final long serialVersionUID = -4136604997182425092L; public static MasterKategori masterKategori = new MasterKategori(); private TabelKategori tabelKategori = new TabelKategori(); private MasterJawaban jawaban = new MasterJawaban(); private TabelJawaban tabelJawaban = new TabelJawaban(); private Container konten; public KategoriJInternalFrame() { setTitle("Kategori SMS"); setClosable(true); konten = getContentPane(); konten.setLayout(null); konten.add(masterKategori); konten.add(tabelKategori); konten.add(jawaban); konten.add(tabelJawaban); masterKategori.setBounds(10, 10, 300, 150); tabelKategori.setBounds(320,10,350,150); jawaban.setBounds(10, 160, 300, 150); tabelJawaban.setBounds(320, 160, 350, 150); konten.setBackground(new Color(156,156,206)); this.addComponentListener(new ComponentListener(){ public void componentHidden(ComponentEvent arg0) { } public void componentMoved(ComponentEvent arg0) { } public void componentResized(ComponentEvent arg0) { } public void componentShown(ComponentEvent arg0) {}

L58

}); } }

Modul 17 : LaporanJInternalFrame package view; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class LaporanJInternalFrame extends JInternalFrame { private static final long serialVersionUID = 8898027751278373942L; private Container konten; private JPanel panel = new JPanel(); private Reports reports = new Reports(); private JLabel l_warning = new JLabel("Laporan dalam keadaan Standby",new ImageIcon("image/wait.gif"),0); public LaporanJInternalFrame() { setClosable(true); setMaximizable(true); setBackground(new Color(156, 156, 206)); setTitle("SMS Result"); konten = getContentPane(); konten.setLayout(new BorderLayout()); konten.add(panel, BorderLayout.CENTER); panel.setLayout(new BorderLayout()); panel.add(reports,BorderLayout.CENTER); l_warning.setHorizontalAlignment(SwingConstants.CENTER); l_warning.setFont(new Font("Tw Cen MT",1,30)); this.addComponentListener(new ComponentListener(){ public void componentHidden(ComponentEvent arg0) { } public void componentMoved(ComponentEvent arg0) {} public void componentResized(ComponentEvent arg0) { } public void componentShown(ComponentEvent arg0) {} }); this.addInternalFrameListener(new InternalFrameListener(){ public void internalFrameActivated(InternalFrameEvent arg0) { panel.removeAll();

L59

panel.add(reports,BorderLayout.CENTER); } public void internalFrameClosed(InternalFrameEvent arg0) {} public void internalFrameClosing(InternalFrameEvent arg0) {} public void internalFrameDeactivated(InternalFrameEvent arg0) { panel.removeAll(); panel.add(l_warning,BorderLayout.CENTER); } public void internalFrameDeiconified(InternalFrameEvent arg0) {} public void internalFrameIconified(InternalFrameEvent arg0) {} public void internalFrameOpened(InternalFrameEvent arg0) {} }); } }

Modul 18 : LogJInternalFrame package view; import java.awt.*; import java.awt.event.*; import javax.swing.*; import control.DatabaseConnection; public class LogJInternalFrame extends JInternalFrame implements ActionListener { private static final long serialVersionUID = 3980509046700545764L; private Container konten; private JLabel l_user = new JLabel("Username"); private JLabel l_pass = new JLabel("Password"); private JTextField t_user = new JTextField(); private JPasswordField t_pass = new JPasswordField(); private JButton b_login = new JButton("Login"); private JButton b_cancel = new JButton("Cancel"); private DatabaseConnection database = new DatabaseConnection(); public LogJInternalFrame() { konten = getContentPane(); konten.setLayout(null); setTitle("Log-In"); setClosable(true);

L60

konten.add(l_user); konten.add(l_pass); konten.add(t_user); konten.add(t_pass); konten.add(b_login); konten.add(b_cancel); l_user.setBounds(20, 13, 100, 20); l_pass.setBounds(20, 40, 100, 20); t_user.setBounds(110, 13, 110, 20); t_pass.setBounds(110, 40, 110, 20); b_login.setBounds(25, 70, 90, 30); b_cancel.setBounds(125, 70, 90, 30); for(int i = 0; i < konten.getComponents().length; i++){ konten.getComponent(i).setFont(new Font("Tw Cen MT",0,12)); } konten.setBackground(new Color(156,156,206)); b_cancel.addActionListener(this); b_login.addActionListener(this); } @SuppressWarnings("deprecation") public void actionPerformed(ActionEvent arg0) { if(arg0.getSource()==b_cancel){ t_user.setText(""); t_pass.setText(""); } if(arg0.getSource()==b_login){ String user = t_user.getText(); @SuppressWarnings("unused") String pass = t_pass.getText(); if(database.openConnection(user,pass)){ TelkomVisionMain.login_status = true; TelkomVisionMain.refresh(); dispose(); }else{ JOptionPane.showMessageDialog(null, "Anda tidak mempunyai akses","Warning Message",JOptionPane.PLAIN_MESSAGE); } } } }

Modul 19 : MasterJawaban.Java package view;

L61

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.TitledBorder; import control.Jawaban; import control.Kategori; public class MasterJawaban extends JPanel implements ActionListener { private static final long serialVersionUID = 4300182381135862305L; private JLabel l_kategori = new JLabel("Kategori"); private JLabel l_jawaban = new JLabel("Jawaban"); private JLabel l_keterangan = new JLabel("Keterangan"); private JTextField t_keterangan = new JTextField(); private JComboBox c_kategori = new JComboBox(); private JTextField t_jawaban = new JTextField(); private JCheckBox ch_true = new JCheckBox("Ya"); private JButton b_simpan = new JButton("Simpan"); private JButton b_hapus = new JButton("Hapus"); private JButton b_batal = new JButton("Reset"); private Kategori kategori = new Kategori(); private Jawaban jawaban = new Jawaban(); private Object[][] data_kategori; protected String keterangan; public MasterJawaban() { setBorder(new TitledBorder("Jawaban")); setLayout(null); add(l_kategori); add(l_jawaban); add(l_keterangan); add(c_kategori); add(t_jawaban); add(ch_true); add(t_keterangan); add(b_simpan); add(b_hapus); add(b_batal); l_kategori.setBounds(10, 20, 90, 20); l_jawaban.setBounds(10, 42, 90, 20); l_keterangan.setBounds(10, 64, 90, 20);

L62

c_kategori.setBounds(100, 20, 100, 20); t_jawaban.setBounds(100, 42, 100, 20); ch_true.setBounds(200, 42, 40, 20); t_keterangan.setBounds(100, 64, 140, 20); b_simpan.setBounds(10, 100, 80, 20); b_hapus.setBounds(90, 100, 80, 20); b_batal.setBounds(170, 100, 80, 20); b_simpan.addActionListener(this); b_hapus.addActionListener(this); b_batal.addActionListener(this); setBackground(new Color(156,156,206)); ch_true.setBackground(new Color(156,156,206)); for(int i = 0; i < this.getComponents().length; i++){ this.getComponent(i).setFont(new Font("Tw Cen MT",0,12)); } refresh(); t_jawaban.addFocusListener(new FocusListener(){ public void focusGained(FocusEvent arg0) { } public void focusLost(FocusEvent arg0) { String id_kategori = c_kategori.getSelectedItem().toString(); String id_jawab = t_jawaban.getText(); if(jawaban.countData("SELECT COUNT(*) as jml FROM jawaban WHERE id_kategori='"+id_kategori+"' && id_jawab='"+id_jawab+"'")>0){ keterangan = jawaban.getKeterangan(id_kategori,id_jawab)[0]; if(jawaban.getKeterangan(id_kategori,id_jawab)[1].equals("Ya")){ ch_true.setSelected(true); }else{ ch_true.setSelected(false); } t_keterangan.setText(keterangan); b_hapus.setEnabled(true); } } }); }

L63

private void refresh() { c_kategori.removeAllItems(); data_kategori = kategori.getDataKategori(); for(int i = 0; i < data_kategori.length; i++){ c_kategori.addItem(data_kategori[i][0]); } t_jawaban.setText(""); t_keterangan.setText(""); b_hapus.setEnabled(false); TabelJawaban.setTabelModel(); } public void actionPerformed(ActionEvent arg0) { if(arg0.getSource()==b_batal){ refresh(); } if(arg0.getSource()==b_simpan){ String id_kategori = c_kategori.getSelectedItem().toString(); String s_jawaban = t_jawaban.getText(); String keterangan = t_keterangan.getText(); String answer = "Tidak"; if(ch_true.isSelected()){ answer = "Ya"; } jawaban.simpanJawaban(id_kategori, s_jawaban, keterangan, answer); refresh(); } if(arg0.getSource()==b_hapus){ String id_kategori = c_kategori.getSelectedItem().toString(); String s_jawaban = t_jawaban.getText(); int answer = JOptionPane.showConfirmDialog(null, "Yakin ingin dihapus","Confirm Message",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(answer==JOptionPane.YES_OPTION){ jawaban.hapusJawaban(id_kategori, s_jawaban); } refresh(); } } } Modul 20 : MasterKategori.Java

package view;

L64

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.TitledBorder; import control.Kategori; public class MasterKategori extends JPanel implements ActionListener { private static final long serialVersionUID = -4193944611280985651L; private JLabel l_kategori = new JLabel("Kategori"); private JLabel l_keterangan = new JLabel("Keterangan"); private JLabel l_sd = new JLabel(" s/d "); private JLabel l_berlaku = new JLabel("Berlaku"); private JTextField t_keterangan = new JTextField(); private JTextField t_kategori = new JTextField(); private JTextField t_mulai = new JTextField(); private JTextField t_akhir = new JTextField(); private JButton b_simpan = new JButton("Simpan"); private JButton b_hapus = new JButton("Hapus"); private JButton b_batal = new JButton("Reset"); private Kategori kategori = new Kategori(); protected String[] data_kategori; public MasterKategori() { setBorder(new TitledBorder("Kategori")); setLayout(null); add(l_kategori); add(l_keterangan); add(l_berlaku); add(t_kategori); add(t_keterangan); add(t_mulai); add(l_sd); add(t_akhir); add(b_simpan); add(b_hapus); add(b_batal); l_kategori.setBounds(10, 20, 90, 20); l_keterangan.setBounds(10, 42, 90, 20); l_berlaku.setBounds(10, 64, 90, 20); t_kategori.setBounds(100, 20, 100, 20);

L65

t_keterangan.setBounds(100, 42, 100, 20); t_mulai.setBounds(100, 64, 80, 20); l_sd.setBounds(180, 64, 30, 20); t_akhir.setBounds(210, 64, 80, 20); b_simpan.setBounds(10, 100, 80, 20); b_hapus.setBounds(90, 100, 80, 20); b_batal.setBounds(170, 100, 80, 20); b_simpan.addActionListener(this); b_hapus.addActionListener(this); b_batal.addActionListener(this); setBackground(new Color(156,156,206)); for(int i = 0; i < this.getComponents().length; i++){ this.getComponent(i).setFont(new Font("Tw Cen MT",0,12)); } refresh(); t_kategori.addFocusListener(new FocusListener(){ public void focusGained(FocusEvent arg0) { } public void focusLost(FocusEvent arg0) { String id_kategori = t_kategori.getText(); if(kategori.countData("SELECT COUNT(*) as jml FROM kategori WHERE id_kategori='"+id_kategori+"'")>0){ data_kategori = kategori.getKategori(id_kategori); t_keterangan.setText(data_kategori[0]); t_mulai.setText(formatTanggal(data_kategori[1])); t_akhir.setText(formatTanggal(data_kategori[2])); b_hapus.setEnabled(true); } } }); } protected String formatTanggal(String tanggal) { try{ String [] tgl = tanggal.split("-"); return tgl[2]+"-"+tgl[1]+"-"+tgl[0]; }catch (Exception e) { return ""; }

L66

} public void actionPerformed(ActionEvent arg0) { if(arg0.getSource()==b_simpan){ String id_kategori = t_kategori.getText(); String keterangan = t_keterangan.getText(); String tgl_mulai = t_mulai.getText(); String tgl_akhir = t_akhir.getText(); kategori.simpanKategori(id_kategori,keterangan,tgl_mulai,tgl_akhir); refresh(); } if(arg0.getSource()==b_hapus){ String id_kategori = t_kategori.getText(); int answer = JOptionPane.showConfirmDialog(null, "Yakin ingin dihapus","Confirm Message",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(answer==JOptionPane.YES_OPTION){ kategori.hapusKategori(id_kategori); } refresh(); } if(arg0.getSource()==b_batal){ refresh(); } } public void refresh() { t_kategori.setText(""); t_keterangan.setText(""); t_mulai.setText(""); t_akhir.setText(""); b_hapus.setEnabled(false); TabelKategori.setTabelModel(); } } Modul 21 : PelangganJInternalFrame package view; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.TitledBorder; import javax.swing.table.TableModel;

L67

import control.DataTable; import control.Pelanggan; public class PelangganJInternalFrame extends JInternalFrame implements ActionListener { private static final long serialVersionUID = -3022776151686261940L; private Container konten; private JPanel panel = new JPanel(); private JLabel l_id_pelanggan = new JLabel("ID Pelanggan"); private JLabel l_nama_pelanggan = new JLabel("Nama Pelanggan"); private JTextField t_id_pelanggan = new JTextField(); private JTextField t_nama_pelanggan = new JTextField(); private JButton b_simpan = new JButton("Simpan"); private JButton b_hapus = new JButton("Hapus"); private JButton b_reset = new JButton("Reset"); private JTable table = new JTable(); private JScrollPane scrollPane = new JScrollPane(table); private static String [] names = {"ID Pelanggan","Nama Pelanggan"}; private static Object[][] data; private static DataTable dataTable = new DataTable(); private static TableModel dataModel; private Pelanggan pelanggan = new Pelanggan(); public PelangganJInternalFrame() { setTitle("Master Pelanggan"); setClosable(true); konten = getContentPane(); konten.setLayout(null); konten.add(panel); panel.setBounds(10 , 10, 300, 150); panel.setLayout(null); panel.add(l_id_pelanggan); panel.add(l_nama_pelanggan); panel.add(t_id_pelanggan); panel.add(t_nama_pelanggan); panel.add(b_simpan); panel.add(b_hapus); panel.add(b_reset); panel.setBorder(new TitledBorder("Pelanggan")); l_id_pelanggan.setBounds(10, 20, 100, 20); l_nama_pelanggan.setBounds(10, 42, 100, 20); t_id_pelanggan.setBounds(110, 20, 120, 20); t_nama_pelanggan.setBounds(110, 42, 120, 20); b_simpan.setBounds(10, 90, 80, 20); b_hapus.setBounds(90, 90, 80, 20); b_reset.setBounds(170, 90, 80, 20); konten.add(scrollPane); scrollPane.setBounds(330, 20, 300, 300);

L68

for(int i = 0; i < konten.getComponents().length; i++){ konten.getComponent(i).setFont(new Font("Tw Cen MT",0,12)); } for(int j = 0; j < konten.getComponents().length; j++){ panel.getComponent(j).setFont(new Font("Tw Cen MT",0,12)); } table.setFont(new Font("Tw Cen MT",0,12)); b_simpan.setFont(new Font("Tw Cen MT",0,12)); b_hapus.setFont(new Font("Tw Cen MT",0,12)); b_reset.setFont(new Font("Tw Cen MT",0,12)); b_simpan.addActionListener(this); b_hapus.addActionListener(this); b_reset.addActionListener(this); konten.setBackground(new Color(156,156,206)); panel.setBackground(new Color(156,156,206)); t_id_pelanggan.addFocusListener(new FocusListener(){ public void focusGained(FocusEvent arg0) { refresh(); } public void focusLost(FocusEvent arg0) { String id_pelanggan = t_id_pelanggan.getText(); if(pelanggan.countData("SELECT COUNT(*) as jml FROM pelanggan WHERE id_pelanggan='"+id_pelanggan+"'")>0){ t_nama_pelanggan.setText(pelanggan.getPelanggan(id_pelanggan)); b_hapus.setEnabled(true); } } }); this.addComponentListener(new ComponentListener(){ public void componentHidden(ComponentEvent arg0) { TelkomVisionMain.kurangiWindow(); } public void componentMoved(ComponentEvent arg0) { } public void componentResized(ComponentEvent arg0) { }

L69

public void componentShown(ComponentEvent arg0) { } }); refresh(); } private void refresh() { b_hapus.setEnabled(false); t_id_pelanggan.setText(""); t_nama_pelanggan.setText(""); setTabelModel(); } public void setTabelModel() { int rows = pelanggan.countData("SELECT COUNT(*) as jml FROM pelanggan"); data = new Object [rows][names.length]; if(rows>0){ data = pelanggan.getDataPelanggan(); }else{ data = new Object [1][names.length]; data[0][0]=""; data[0][1]=""; } dataModel = dataTable .setTableModel(data,names); table.setModel(dataModel); } public void actionPerformed(ActionEvent arg0) { if(arg0.getSource()==b_simpan){ String id_pelanggan = t_id_pelanggan.getText(); String nama_pelanggan = t_nama_pelanggan.getText(); pelanggan.simpanDataPelanggan(id_pelanggan,nama_pelanggan); refresh(); } if(arg0.getSource()==b_hapus){ String id_pelanggan = t_id_pelanggan.getText(); pelanggan.hapusPelanggan(id_pelanggan); refresh(); } if(arg0.getSource()==b_reset){ refresh(); } } }

L70

Modul 22 : RandomPemenangJInternalFrame package view; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.TitledBorder; import javax.swing.table.TableModel; import control.Cetak; import control.DataTable; import control.Kategori; import control.Pemenang; public class RandomPemenangJInternalFrame extends JInternalFrame implements ActionListener { private static final long serialVersionUID = -2169576232323632434L; private Container konten; private JPanel panel = new JPanel(); private JLabel l_kategori = new JLabel("Kategori"); private JLabel l_jumlah = new JLabel("Jumlah Pemenang"); private JLabel l_kategori_1 = new JLabel("Kategori"); private JComboBox c_kategori = new JComboBox(); private JComboBox c_kategori_1 = new JComboBox(); private JTextField t_jumlah = new JTextField(); private JButton b_random = new JButton("Random"); private JButton b_simpan = new JButton("Simpan"); private JButton b_reset = new JButton("Reset"); private JButton b_hapus = new JButton("Hapus"); private JButton b_cetak = new JButton("Cetak"); private JTable table = new JTable(); private JScrollPane scrollPane = new JScrollPane(table); private static String [] names = {"No","ID Pelanggan","No HP"}; private static String [] names_pemenang = {"Kategori","ID Pelanggan","Tanggal","No HP","Keterangan"}; private static Object[][] data; private static DataTable dataTable = new DataTable(); private static DataTable dataTable_1 = new DataTable(); private JTable table_pemenang = new JTable(); private JScrollPane scroll = new JScrollPane(table_pemenang); private static TableModel dataModel; private Kategori kategori = new Kategori(); private Pemenang pemenang = new Pemenang(); private String[] id_kategori; private int jumlah; private Object[][] data_1;

L71

private TableModel dataModel_1; private Cetak cetak = new Cetak(); public RandomPemenangJInternalFrame() { setTitle("Random Pemenang"); setClosable(true); konten = getContentPane(); konten.setLayout(null); konten.add(panel); panel.setLayout(null); panel.add(l_kategori); panel.add(l_jumlah); panel.add(c_kategori); panel.add(t_jumlah); panel.add(b_random); panel.add(b_simpan); panel.add(b_reset); panel.setBorder(new TitledBorder("Random Pemenang")); panel.setBounds(10, 10, 300, 140); l_kategori.setBounds(10, 20, 100, 20); l_jumlah.setBounds(10, 42, 100, 20); c_kategori.setBounds(110, 20, 100, 20); t_jumlah.setBounds(110, 42, 100, 20); b_random.setBounds(10, 90, 80, 20); b_simpan.setBounds(90, 90, 80, 20); b_reset.setBounds(170, 90, 80, 20); konten.add(scrollPane); konten.add(scroll); konten.add(l_kategori_1); konten.add(c_kategori_1); konten.add(b_hapus); konten.add(b_cetak); scrollPane.setBounds(10, 170, 300, 150); scroll.setBounds(320, 20, 430, 270); l_kategori_1.setBounds(330, 300, 100, 20); c_kategori_1.setBounds(420, 300, 100, 20); b_hapus.setBounds(530, 300, 80, 20); b_cetak.setBounds(620, 300, 80, 20); b_random.addActionListener(this); b_reset.addActionListener(this); b_simpan.addActionListener(this); b_hapus.addActionListener(this); b_cetak.addActionListener(this); c_kategori.addFocusListener(new FocusListener(){ public void focusGained(FocusEvent arg0) {

L72

} public void focusLost(FocusEvent arg0) { if(c_kategori.getSelectedIndex()==0){ refresh(); }else{ data = new Object[0][3]; b_simpan.setEnabled(false); setTableModel(); } } }); for(int i = 0; i < konten.getComponents().length; i++){ konten.getComponent(i).setFont(new Font("Tw Cen MT",0,12)); } for(int j = 0; j < panel.getComponents().length; j++){ panel.getComponent(j).setFont(new Font("Tw Cen MT",0,12)); } table.setFont(new Font("Tw Cen MT",0,12)); table_pemenang.setFont(new Font("Tw Cen MT",0,12)); konten.setBackground(new Color(156,156,206)); panel.setBackground(new Color(156,156,206)); this.addComponentListener(new ComponentListener(){ public void componentHidden(ComponentEvent arg0) { } public void componentMoved(ComponentEvent arg0) { } public void componentResized(ComponentEvent arg0) {} public void componentShown(ComponentEvent arg0) {} }); refresh(); } private void refresh() { data = new Object[0][3]; setTableModel(); data_1 = pemenang.getDataPemenang(); dataModel_1 = dataTable_1.setTableModel(data_1,names_pemenang); table_pemenang.setModel(dataModel_1); c_kategori.removeAllItems(); c_kategori_1.removeAllItems(); c_kategori.addItem("Pilih"); c_kategori_1.addItem("Pilih");

L73

int j = kategori.countData("SELECT COUNT(*) as jml FROM kategori WHERE status='0'"); if(j>0){ id_kategori = kategori.getIDKategoriDitutup(); } for(int i = 0; i < j ; i++){ c_kategori.addItem(id_kategori[i]); c_kategori_1.addItem(id_kategori[i]); } c_kategori.setSelectedIndex(0); c_kategori_1.setSelectedIndex(0); t_jumlah.setText(""); b_simpan.setEnabled(false); } private void setTableModel() { dataModel = dataTable.setTableModel(data,names); table.setModel(dataModel); } public void actionPerformed(ActionEvent arg0) { if(arg0.getSource()==b_random){ if(c_kategori.getSelectedIndex()==0||t_jumlah.getText().equals("")||!isDigit(t_jumlah .getText())){ JOptionPane.showMessageDialog(null, "Masukkan Kategori dan jumlah pemenang"); }else{ data = pemenang.randomPemenang(c_kategori.getSelectedItem().toString(), t_jumlah.getText()); try{ jumlah = data.length; }catch (Exception e) { jumlah = 0; } if(jumlah>0){ b_simpan.setEnabled(true); setTableModel(); } } } if(arg0.getSource()==b_reset){ refresh(); } if(arg0.getSource()==b_simpan){ if(jumlah>0){ pemenang.simpanPemenang(c_kategori.getSelectedItem().toString(),data);

L74

}else{ JOptionPane.showMessageDialog(null, "Data kosong"); } refresh(); } if(arg0.getSource()==b_hapus){ pemenang.deletePemenang(c_kategori_1.getSelectedItem().toString()); refresh(); } if(arg0.getSource()==b_cetak){ if(c_kategori_1.getSelectedIndex()==0){ cetak.cetakFile("pemenang"); }else{ cetak.cetakReport("pemenang_kategori",c_kategori_1.getSelectedItem().toString()); } } } private boolean isDigit(String text) { for(int i =0; i0){ data = databaseSMS.get50SMSKeluar(btsAwal); }else{ data = new Object [0][names.length]; } dataModel = dataTable.setTableModel(data,names); table.setModel(dataModel); } public void addLayoutComponent(String name, Component comp) {} public void removeLayoutComponent(Component comp) {} public Dimension preferredLayoutSize(Container parent) {return origin; } public Dimension minimumLayoutSize(Container parent) {return origin;

L82

} public void layoutContainer(Container parent) { Rectangle b = parent.getBounds(); js.setBounds(10,10,b.width-20,b.height*60/100); b_cetak.setBounds(b.width-330,b.height*60/100+50,100,20); b_prev.setBounds(b.width-220,b.height*60/100+50,100,20); b_next.setBounds(b.width-110,b.height*60/100+50,100,20); } public void actionPerformed(ActionEvent e) { if(e.getSource()==b_prev){ if(btsAwal>=50){ btsAwal = btsAwal - 50; setTabelModel(); } if(btsAwal==0){ b_prev.setEnabled(false); } } if(e.getSource()==b_next){ btsAwal = btsAwal + 50; b_prev.setEnabled(true); setTabelModel(); } if(e.getSource()==b_cetak){ cetak.cetakFile("sms_keluar"); } } }

Modul 26 : SMSMasuk package view; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.BevelBorder; import javax.swing.table.TableModel; import control.Cetak; import control.DataTable; import control.DatabaseSMS;

L83

public class SMSMasuk extends JPanel implements LayoutManager, ActionListener { static int atest = 0; private static final long serialVersionUID = -2132831880798643413L; private Dimension origin = new Dimension(0, 0); JLabel l_brp_dr = new JLabel(); JScrollPane js = new JScrollPane(); static JTable table = new JTable(); static TableModel dataModel = null; static String [] names = {"No Terima","No Handphone","Pesan","Tanggal","Jam","Status"}; String query; int j=0; static JButton b_next = new JButton("Sebelumnya"); static JButton b_prev = new JButton("Selanjutnya"); private JButton b_cetak = new JButton("Cetak"); private JButton b_filter = new JButton("Filter Polling"); private JButton b_filterq = new JButton ("Filter Quiz"); private JButton b_nonfilter = new JButton ("Tidak Filter"); private static Object [][] data = null; static int btsAwal = 0; private static DataTable dataTable = new DataTable(); private static DatabaseSMS databaseSMS = new DatabaseSMS(); Cetak cetak = new Cetak();

public SMSMasuk() { setName("SMS Masuk"); this.setBackground(new Color(156,156,206)); setLayout(this); setTabelModel(); js = new JScrollPane(table); js.setBorder(new BevelBorder(BevelBorder.LOWERED)); add(js); add(b_prev); add(b_next); add(b_cetak); add(b_filter); add(b_filterq); add(b_nonfilter);

L84

b_cetak.addActionListener(this); b_prev.addActionListener(this); b_next.addActionListener(this); b_filter.addActionListener(this); b_filterq.addActionListener(this); b_nonfilter.addActionListener(this); for(int i = 0; i < this.getComponents().length; i++){ this.getComponent(i).setFont(new Font("Tw Cen MT",0,11)); } js.setBackground(new Color(156,156,206)); table.setFont(new Font("Tw Cen MT",0,12)); } public static void setTabelModel() { int rows = databaseSMS.countSMSMasuk(); data = new Object [50][names.length]; if(rows>50&&rows>btsAwal+50){ b_next.setEnabled(true); }else{ b_next.setEnabled(false); } if(btsAwal==0){ b_prev.setEnabled(false); } if(rows>0){ data = databaseSMS.get50SMSMasuk(btsAwal); }else{ data = new Object [0][names.length]; } dataModel = dataTable.setTableModel(data,names); table.setModel(dataModel); } public static void setfilter() { int rows = databaseSMS.countSMSMasuk(); data = new Object [50][names.length]; b_next.setEnabled(false); b_prev.setEnabled(false); if(rows>0){ data = databaseSMS.filter(atest); }else{ data = new Object [0][names.length]; } dataModel = dataTable.setTableModel(data,names);

L85

table.setModel(dataModel); } public void addLayoutComponent(String name, Component comp) { } public void removeLayoutComponent(Component comp) { } public Dimension preferredLayoutSize(Container parent) { return origin; } public Dimension minimumLayoutSize(Container parent) { return origin; } public void layoutContainer(Container parent) { // TODO: Add your code here Rectangle b = parent.getBounds(); js.setBounds(10,10,b.width-20,b.height*60/100); b_cetak.setBounds(b.width-330,b.height*60/100+50,100,20); b_prev.setBounds(b.width-220,b.height*60/100+50,100,20); b_next.setBounds(b.width-110,b.height*60/100+50,100,20); b_filter.setBounds(b.width -440,b.height*60/100+50,100,20); b_filterq.setBounds(b.width -440,b.height*60/100+70,100,20); b_nonfilter.setBounds(b.width -440,b.height*60/100+90,100,20); b_nonfilter.setEnabled(false); } public void actionPerformed(ActionEvent e) { if(e.getSource()==b_prev){ if(btsAwal>=50){ btsAwal = btsAwal - 50; setTabelModel(); } if(btsAwal==0){ b_prev.setEnabled(false); } } if(e.getSource()==b_next){ btsAwal = btsAwal + 50; b_prev.setEnabled(true); setTabelModel(); }

L86

if(e.getSource()==b_cetak){ cetak.cetakFile("sms_masuk"); } if(e.getSource()==b_filter){ atest=1; b_filter.setEnabled(false); b_nonfilter.setEnabled(true); b_filterq.setEnabled(true); setfilter(); } if(e.getSource()==b_filterq){ atest=2; b_filter.setEnabled(true); b_nonfilter.setEnabled(true); b_filterq.setEnabled(false); setfilter(); } if(e.getSource()==b_nonfilter){ atest=0; b_filter.setEnabled(true); b_nonfilter.setEnabled(false); b_filterq.setEnabled(true); setTabelModel(); } } } Modul 27 : SystemHelp package view; import java.awt.Container; import java.awt.event.*; import javax.swing.JInternalFrame; public class SystemHelp extends JInternalFrame { private static final long serialVersionUID = 6600539445957103107L; private Container konten= new Container(); public SystemHelp (String title) { super (title); setClosable(true); setMaximizable(false); HtmlPane html = new HtmlPane("Help/help.htm"); konten=getContentPane();

L87

konten.add(html); konten.setVisible(true); this.addComponentListener(new ComponentListener(){ public void componentHidden(ComponentEvent arg0) {} public void componentMoved(ComponentEvent arg0) { } public void componentResized(ComponentEvent arg0) { } public void componentShown(ComponentEvent arg0) {} }); } }

Modul 28 : TabelJawaban package view; import java.awt.*; import javax.swing.*; import javax.swing.border.BevelBorder; import javax.swing.table.TableModel; import control.DataTable; import control.Jawaban; public class TabelJawaban extends JPanel { private static final long serialVersionUID = -8791657448464280388L; private static JTable tabel = new JTable(); private JScrollPane scrollPane = new JScrollPane(tabel); private static String [] names = {"Kategori","Jawaban","Keterangan"}; private static Jawaban jawaban = new Jawaban(); private static Object[][] data; private static DataTable dataTable = new DataTable(); private static TableModel dataModel; public TabelJawaban() { setLayout(null); setBackground(new Color(156,156,206)); scrollPane.setBorder(new BevelBorder(BevelBorder.LOWERED)); scrollPane.setBackground(new Color(156,156,206)); tabel.setFont(new Font("Tw Cen MT",0,12)); add(scrollPane); scrollPane.setBounds(0, 5, 350, 145); setTabelModel(); } public static void setTabelModel() { int rows = jawaban.countData("SELECT COUNT(*) as jml FROM jawaban");

L88

data = new Object [rows][names.length]; if(rows>0){ data = jawaban.getDataJawaban(); }else{ data = new Object [1][names.length]; data[0][0]=""; data[0][1]=""; data[0][2]=""; } dataModel = dataTable .setTableModel(data,names); tabel.setModel(dataModel); } } Modul 29 : TabelKategori package view; import java.awt.*; import javax.swing.*; import javax.swing.border.BevelBorder; import javax.swing.table.TableModel; import control.DataTable; import control.Kategori; public class TabelKategori extends JPanel { private static final long serialVersionUID = -8225986361086722220L; private static JTable tabel = new JTable(); private JScrollPane scrollPane = new JScrollPane(tabel); private static String [] names = {"Kategori","Keterangan","Status"}; private static Kategori kategori = new Kategori(); private static Object[][] data; private static DataTable dataTable = new DataTable(); private static TableModel dataModel; public TabelKategori() { setLayout(null); setBackground(new Color(156,156,206)); scrollPane.setBorder(new BevelBorder(BevelBorder.LOWERED)); scrollPane.setBackground(new Color(156,156,206)); tabel.setFont(new Font("Tw Cen MT",0,12)); add(scrollPane); scrollPane.setBounds(0, 5, 350, 145); setTabelModel(); }

L89

public static void setTabelModel() { int rows = kategori.countData("SELECT COUNT(*) as jml FROM kategori"); data = new Object [rows][names.length]; if(rows>0){ data = kategori.getDataKategori(); }else{ data = new Object [1][names.length]; data[0][0]=""; data[0][1]=""; data[0][2]=""; } dataModel = dataTable .setTableModel(data,names); tabel.setModel(dataModel); } } Modul 30 : TelkomVisionMain package view; import java.awt.*; import java.awt.event.*; import javax.swing.*; import control.BacaTanggalBerlaku; import control.Cetak; import control.SMSEngine; public class TelkomVisionMain extends JFrame implements ActionListener { private static final long serialVersionUID = 4377533899534576385L; private Container konten; private JDesktopPane desktop = new JDesktopPane(); private JMenuBar menuBar = new JMenuBar(); private static JButton login = new JButton(new ImageIcon("image/log_off.png")); private static JButton exit = new JButton(new ImageIcon("image/exit.png")); private static JButton pelanggan = new JButton(new ImageIcon("image/pelanggan.png")); private static JButton kategori = new JButton(new ImageIcon("image/kategori.png")); private static JButton server = new JButton(new ImageIcon("image/sms.png")); private static JButton laporan = new JButton(new ImageIcon("image/laporan.png")); private static JButton pemenang = new JButton(new ImageIcon("image/pemenang.png")); private JButton help = new JButton(new ImageIcon("image/help.png")); private static SystemHelp systemHelp = new SystemHelp("Help");

L90

public static JLabel Logo = new JLabel(new ImageIcon("image/LogoHeader.png")); private static ServerJInternalFrame serverJInternalFrame = new ServerJInternalFrame(); public static KategoriJInternalFrame kategoriJInternalFrame = new KategoriJInternalFrame(); public static Cetak cetak = new Cetak(); private static LogJInternalFrame logJinternalFrame = new LogJInternalFrame(); private static PelangganJInternalFrame pelangganJInternalFrame = new PelangganJInternalFrame(); private static RandomPemenangJInternalFrame randomPemenangJInternalFrame = new RandomPemenangJInternalFrame(); private BacaTanggalBerlaku bacaTanggalBerlaku = new BacaTanggalBerlaku(); private static int windows = 0; public static boolean login_status = false; public TelkomVisionMain() { setTitle("Polling And Quiz Generator"); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); setIconImage(getToolkit().getImage("image/LogoImg.png")); setJMenuBar(menuBar); menuBar.setLocation(0,0); menuBar.add(exit); menuBar.add(login); menuBar.add(pelanggan); menuBar.add(kategori); menuBar.add(server); menuBar.add(laporan); menuBar.add(pemenang); menuBar.add(help); exit.setToolTipText(" Exit "); pelanggan.setToolTipText(" Pelanggan "); kategori.setToolTipText(" Kategori "); server.setToolTipText(" SMS Server "); laporan.setToolTipText(" Laporan "); help.setToolTipText(" Help "); pemenang.setToolTipText(" Random Pemenang "); login.addActionListener(this); exit.addActionListener(this); pelanggan.addActionListener(this); kategori.addActionListener(this); server.addActionListener(this); laporan.addActionListener(this);

L91

pemenang.addActionListener(this); help.addActionListener(this); this.addWindowListener ( new WindowAdapter() { public void windowClosing(WindowEvent e) { int close = JOptionPane.showConfirmDialog(null,"Yakin ingin keluar ?","Confirm Message",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(close==0){ System.exit(0); } } } ); konten = getContentPane(); konten.setLayout(new BorderLayout()); konten.add(Logo ,BorderLayout.NORTH); konten.add(desktop ,BorderLayout.CENTER); desktop.setLayout(null); desktop.setOpaque(false); bacaTanggalBerlaku.start(); refresh(); } public static void refresh() { if(login_status==false){ if(serverJInternalFrame.isDisplayable()||SMSEngine.status==true){ JOptionPane.showMessageDialog(null, "Tutup Jendela SMS Server dahulu"); login_status = true; }else{ login.setIcon(new ImageIcon("image/log_off.png")); pelanggan.setEnabled(false); kategori.setEnabled(false); server.setEnabled(false); laporan.setEnabled(false); pemenang.setEnabled(false); login.setToolTipText(" Login "); systemHelp.dispose(); kategoriJInternalFrame.dispose(); pelangganJInternalFrame.dispose(); randomPemenangJInternalFrame.dispose(); }

L92

}else{ login.setIcon(new ImageIcon("image/log_on.png")); pelanggan.setEnabled(true); kategori.setEnabled(true); server.setEnabled(true); laporan.setEnabled(true); pemenang.setEnabled(true); login.setToolTipText(" Logout "); } } public void actionPerformed(ActionEvent arg0) { if(arg0.getSource()==exit){ int answer = JOptionPane.showConfirmDialog(null, "Yakin ingin keluar","Confirm Message",JOptionPane.YES_NO_OPTION); if(answer==JOptionPane.YES_OPTION){ System.exit(0); } } if(arg0.getSource()==pemenang){ if(!randomPemenangJInternalFrame.isDisplayable()){ randomPemenangJInternalFrame = new RandomPemenangJInternalFrame(); randomPemenangJInternalFrame.setBounds(getWidth()/2395,getHeight()/6-100,780,400); randomPemenangJInternalFrame.setFrameIcon(new ImageIcon("image/LogoImg.png")); desktop.add(randomPemenangJInternalFrame); randomPemenangJInternalFrame.show(); } try{ randomPemenangJInternalFrame.setSelected(true); }catch(java.beans.PropertyVetoException e1){ } } if(arg0.getSource()==pelanggan){ if(!pelangganJInternalFrame.isDisplayable()){ pelangganJInternalFrame = new PelangganJInternalFrame(); pelangganJInternalFrame.setBounds(getWidth()/2350,getHeight()/6-100,700,400); pelangganJInternalFrame.setFrameIcon(new ImageIcon("image/LogoImg.png")); desktop.add(pelangganJInternalFrame); pelangganJInternalFrame.show(); }

L93

try{ pelangganJInternalFrame.setSelected(true); }catch(java.beans.PropertyVetoException e1){ } } if(arg0.getSource()==help){ if(!systemHelp.isDisplayable()){ systemHelp = new SystemHelp("Help"); systemHelp.setBounds(getWidth()/2-350,getHeight()/4150,700,400); systemHelp.setFrameIcon(new ImageIcon("image/LogoImg.png")); desktop.add(systemHelp); systemHelp.show(); } try{ systemHelp.setSelected(true); }catch(java.beans.PropertyVetoException e1){ } } if(arg0.getSource()==server){ if(!serverJInternalFrame.isDisplayable()){ serverJInternalFrame.setBounds(getWidth()/2250,getHeight()/6-100,500,390); serverJInternalFrame.setFrameIcon(new ImageIcon("image/LogoImg.png")); desktop.add(serverJInternalFrame); serverJInternalFrame.show(); } try{ serverJInternalFrame.setSelected(true); }catch(java.beans.PropertyVetoException e1){ } } if(arg0.getSource()==kategori){ if(!kategoriJInternalFrame.isDisplayable()){ kategoriJInternalFrame = new KategoriJInternalFrame(); kategoriJInternalFrame.setBounds(getWidth()/2350,getHeight()/6-100,700,400); kategoriJInternalFrame.setFrameIcon(new ImageIcon("image/LogoImg.png")); desktop.add(kategoriJInternalFrame); kategoriJInternalFrame.show(); } try{

L94

kategoriJInternalFrame.setSelected(true); }catch(java.beans.PropertyVetoException e1){ } } if(arg0.getSource()==laporan){ cetak.cetakFile("sms_result"); } if(arg0.getSource()==login){ if(login_status==false){ if(!logJinternalFrame.isDisplayable()){ logJinternalFrame = new LogJInternalFrame(); logJinternalFrame.setBounds(getWidth()/2150,getHeight()/6-15,250,150); logJinternalFrame.setFrameIcon(new ImageIcon("image/LogoImg.png")); desktop.add(logJinternalFrame); logJinternalFrame.show(); } try{ logJinternalFrame.setSelected(true); }catch(java.beans.PropertyVetoException e1){ } }else{ login_status = false; refresh(); } } } public static void kurangiWindow() { windows--; } }

L95