Your Federal Quarterly Tax Payments are due April 15th Get Help Now >>

Tutorial SMS Gateway Java Netbeans by Tauhid_Doanks

VIEWS: 5,039 PAGES: 34

									                             SMS GATEWAY




                              By : BlackOnta


                   http://onta-programing.blogspot.com


                             Desember 2009




1 | http://onta-programing.blogspot.com/
Yang akan di bahas:


Sepintas tentang SMS Gateway
Persiapan
   Yang dibutuhkan
   Persiapan Hadware
   Persiapan Library
   Instalasi Library
   Persiapan Project


Pengembangan
1. Database
2. Project Utama




Error dan Penanganannya


Tanya Jawab


Breaktime




2 | http://onta-programing.blogspot.com/
Pembukaan


Gak usah lama-lama baca pembukaan segala langsung ke halaman
selanjutnya 




3 | http://onta-programing.blogspot.com/
SEPINTAS TENTANG SMS GATEWAY
Cari Aja yah di Google hehe


PERSIAPAN
   Yang dibutuhkan
    Untuk membuat SMS Gateway ini ada beberapa hal yang harus
    dipersiapka, antara lain:
    Hardware:
    1. Komputer (Disaran kan yang High End )
    2. HP sebagai modem. Adapun spesifikasi HP yang bias digunakan
       ada pada bagian akhir tutorial.
    3. Konekstor Hp. Konektor digunakan untuk menghubungkan HP
       dengan Komputer.


    Software:
    1. SUN JDK 1.5 atau yang terbaru Download aja di situsnya SUN.
    2. Netbeans, saya gunakan Netbeans 6.1
    3. Driver Modem/HP
    4. Library-Library. Lebih detail tentang Library, akan dibahas pada sub
       berikutnya.


   Persiapan Hardware
    Persiapkan HP yang akan kita gunakan sebagai Modem (Jenis-jenis
    HP yang bisa digunakan ada pada bagian akhir tutorial). Sambungkan
    HP Ke Komputer, melalui konektor, kemudian Jika Diminta Driver
    Instalkan Drivernya. Slesai.


   Persiapan Library
    Kalau kita ikuti referensi dari Developer SMSLib, maka akan banyak
    banget library yang kita harus persiapkan , tp tenang dengan
    blackonta selalu ada jalan yang mudah untuk membuat seuatu
    program , karena memang setelah beberapa kali membuat program



4 | http://onta-programing.blogspot.com/
    SMS Gateway, ternyata hanya beberapa Library aja yang kita
    perlukan.
    Ok library-library tersebut adalah sebagai berikut:
    1. SMSLib
    2. Java Communications Library
    3. Simple logging facade for Java (slf4j)
    4. MySQL Server
    5. dan untuk databasenya kita membutukkan MySQL Driver (Sudah
       ada di netbeans).




   Instalasi Library
    Ok, selanjutnya kita akan melakukan Konfigurasi Librari-Library diatas.
    Langkah ini    sangat penting          untuk dillakukan dengan benar,
    supaya tidak terjadi kesalahan-kesalahan yang tidak perlu.
    1. Tidak Ada Perlakuan Khusus untuk SMSLib, kita tinggal Extract lalu
       masukan di Project (dibahas pada bagian persiapan Project).
    2. Java Communications Library
       Java Communications Library terdiri dari dua library, yaitu java
       comm, dan RxTx.
          Kita mulai dengan konfigurasi Java Comm, Temen-temen
           bisa         Download       Library      terbaru      ini     di
           http://code.google.com/p/smslib/downloads/list.
           Atau temen-temen bisa menggunakan yang ada dalam source
           code yang disertakan di tutorial ini.
           Download sesuai Sistem Operasi yang temen-temen gunakan,
           karena saya menggunakan Windows maka saya mendownload
           untuk yang windows. Sejanjutnya ikuti langkah2 berikut:
           a. Extract File yang telah didownload. Maka temen-temen akan
                melihat file file sebagai berikut (Tergantung lib yang
                didownload linux or Windows):




5 | http://onta-programing.blogspot.com/
          b. Perhatikan saja file file ini (Sekali lagi saya gunakan library
             java comm. Untuk windows):
                File     comm.jar,        Copykan       file       ini         ke
                 DIR_INSTALASI_JDK/jre/lib/ext/
                File   javax.comm.properties,     Copykan       file     ini   ke
                 DIR_INSTALASI_JDK /jre/lib/
                File    win32com.dll        Copykan      file          ini     ke
                 DIR_INSTALASI_JDK/jre/bin/


          c. Selesai untuk konfigurasi java comm..
         Untuk Mendownload library RxTx temen2 bisa mampir di
          http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip. Kalau sudah
          bisa ikuti langkah2 mudah berikut:
          a. Extract File yang telah didownload. Maka temen-temen akan
             melihat file file sebagai berikut (Tergantung lib yang
             didownload linux or Windows):




6 | http://onta-programing.blogspot.com/
          b. Yang akan kita gunakan hanya dua file yaitu RXTXComm,jar
              dan file yang sesuai dengan Sistem Operasi Kita (Saya Pilih
              Windows).
          c. Copykan file RXTXComm,jar                  ke DIR_INSTALASI_JDK
              /jre/lib/ext/
          d. Copykan          file   rxtxParallel.dll    dan   rxtxSerial.dll   ke
              DIR_INSTALASI_JDK/jre/bin/. (rxtxParallel.dll untuk modem
              parallel, dan rxtxSerial.dll untuk Modem yang Serial)
          e. Selesai.


    3. Simple logging facade for Java (slf4j)
       Untuk Simple logging facade for Java (slf4j) juga tidak ada
       perlakuan khusus hanya tinggal di extract saja, temen2 bisa
       mendownload Library ini di http://www.slf4j.org/download.html,
       namun ada beberapa hal yang harus diperhatikan.
       a. Ketika selesai di extract, Maka kita akam mendapatkan banyak
          file:




       b. Wah buanyak bener ya hehe , tenang, dari file2 yang banyak
          itu kita hanya memerlukan dua file koq, yaitu slf4j-api-1.5.6, dan
          slf4j-simple-1.5.6. Kita tinggal masukan dua library itu ke
          Project (dibahas pada bagian persiapan Project).


    (Library library yang diperlukan sudah ada dalam source code)


   Persiapan Project


7 | http://onta-programing.blogspot.com/
   1. Buat Sebuah Project Baru di Netbeans.
   2. Masukan Library2 yang kita perlukan, caranya, dalam Tree Project
      ada Folder Libray.




   3. Klik Kanan, Kemudian Add Jar/Folder




   4. Tambahkan Library SMSLib, dan Simple logging facade for Java
      (slf4j).
   5. Ingat Cuma Library SMSLib, dan Simple logging facade for Java
      (slf4j). untuk Java Comm, dan RxTx nya gak usah, (Kan udah di
      Copy-in ke Folder JRE).
   6. Untuk Mempermudah saya sudah jadikan satu Library SMSLib, dan
      Simple logging facade for Java (slf4j) yang diperlukan di folder
      core_library.
   7. Tambahkan juga library Mysql Connector, dengan cara Klik Kanan
      Folder Library -> Add Library -> MySQL JDBC Driver.


Fyuh, Akhirnya selesai juga proses persiapan, Are You Ready to Rock?
hehehe


PENGEMBANGAN
1. Database
   Banyak jalan menuju Mekah , Pembuatan database pun bisa
   dilakukan dengan banyak cara. Bisa Langsung dari MySQL Console,



8 | http://onta-programing.blogspot.com/
   Pake PhpMyAdmin, Pake SQLTools, Ataupun Pake Netbeans. Supaya
   gak terlalu banyak tools, saya tunjukan saja pake Netbeans Aja OK.
         Pastikan dalam Kompie kita udah terinstall MySQL Server.
         Pada Bagian Kiri Atas Pilih Bagian Service




         Kemudian Pilih MsSQL (Connector/J driver) Kemudian Klik
          kanan dan pilih Connect Using.




         Maka Akan Muncul Kotak Dialog Ini:




9 | http://onta-programing.blogspot.com/
         Isikan Keterangan yang dimaksud, untuk password isikan
          sesuai dengan password MySQL Temen2
         Jika sudah dilakukan maka akan ada tambahan pada panel
          service. Klik Kanan Kemudian pilih Connect.




         Setelah terkoneksi, Klok Kanan Kembali Kemudian Pilih
          Execute Command




10 | http://onta-programing.blogspot.com/
         Setelah Itu Akan Muncul Sebuah Jendela Editor, Kemudian
          Copy Patekan Kode Berikut (Atau ada dalam source Code):
          CREATE DATABASE sms_center;


          use sms_center;


          CREATE TABLE IF NOT EXISTS `sms_masuk` (
              `id_pesan` int(10) unsigned NOT NULL auto_increment,
              `isi_pesan` varchar(255) NOT NULL,
              `no_pengirim` varchar(15) NOT NULL,
              `pdu_pesan` varchar(255) NOT NULL,
              `encoding` varchar(20) NOT NULL,
              `id_gateway` varchar(20) NOT NULL,
              `tanggal_masuk` date NOT NULL,
              PRIMARY KEY   (`id_pesan`)
          ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=12
          ;


          --
          -- Dumping data for table `sms_masuk`
          --


          INSERT     INTO    `sms_masuk`       (`id_pesan`,   `isi_pesan`,
          `no_pengirim`,     `pdu_pesan`,      `encoding`,    `id_gateway`,
          `tanggal_masuk`) VALUES
          (1,    'Test   pesan   1',   '+0',     'D4F29C0E8297E761372806',
          'ENC7BIT', 'Motorola.COM3', '2009-12-11'),
          (4,    'Test   pesan   2',   '+0',     'D4F29C0E8297E761374806',
          'ENC7BIT', 'Motorola.COM3', '2009-12-11');



         Kemudian Tekan Tombol Run SQL




11 | http://onta-programing.blogspot.com/
         Yup Database Telah Selesai Dibuat dengan nama smscenter
          dan telah dibuat pula table sms_masuk.


Ok Selesai Sudah Persiapan Database, sekarang kita bisa buat Project
Utama.


Minum Dulu Kopinya, Makan Cemilannya, lalu siap membuat Project
Utamannya .


2. Project Utama
   Kembali pada project yang telah kita buat pada persiapan project.
   Sekarang buat buat 4 buah package, berikut package yang saya buat:
   a. ovq.smsgateway.image
      Package ini berfungsi untuk menampung image yang akan kita
      gunakan.


   b. ovq.smsgateway.obj
      Package ini digunakan untuk menampung Class-Class Beans
      (Class yang mempunya method setter dan getter).


   c. ovq.smsgateway.service
      Package ini digunakan untuk menampung Class-Class Service
      SMS.


   d. ovq.smsgateway.ui
      Package ini digunakan untuk menampung Class-Class User
      Interface.


   Setelah dibuat project kita akan terlihat kurang lebih seperti ini:




12 | http://onta-programing.blogspot.com/
   Ok, setelah Package kita buat, masukan image-image yang akan kita
   gunakan (Ada pada Folder Image di source code).


   Setelah itu buat Sebuah Class pada package ovq.smsgateway.obj,
   kemudian beri nama Status. Lalu Ketikan Kode di bawah ini:
   package ovq.smsgateway.obj;

   /**
    *
    * @author taopik ridwan <blackonta@gmail.com>
    */
   public class Status {
       private String manufacture;
       private String model;
       private String serialNo;
       private String simImsi;
       private int signal;
       private int baterai;

        public int getBaterai() {
            return baterai;
        }

        public void setBaterai(int baterai) {
            this.baterai = baterai;
        }

        public String getManufacture() {
            return manufacture;
        }

        public void setManufacture(String manufacture) {



13 | http://onta-programing.blogspot.com/
            this.manufacture = manufacture;
        }

        public String getModel() {
            return model;
        }

        public void setModel(String model) {
            this.model = model;
        }

        public String getSerialNo() {
            return serialNo;
        }

        public void setSerialNo(String serialNo) {
            this.serialNo = serialNo;
        }

        public int getSignal() {
            return signal;
        }

        public void setSignal(int signal) {
            this.signal = signal;
        }

        public String getSimImsi() {
            return simImsi;
        }

        public void setSimImsi(String simImsi) {
            this.simImsi = simImsi;
        }
   }


   Clas ini merupakan Beans untuk status dari HP/Modem yang kita
   gunakan.


   Selanjutnya       buat      sebuah       Class    pada     package
   ovq.smsgateway.service. Kemudian Beri nama MYSQLConnection.
   Dari namanya kita bisa mengetahui bahwa fungsi dari Class ini adala
   untuk membuat koneksi ke database. Kemudian Ketikan Kode berkut:
   package ovq.smsgateway.service;

   import java.sql.Connection;
   import java.sql.DriverManager;

   /**
    *
    * @author taopik ridwan <blackonta@gmail.com>
    */


14 | http://onta-programing.blogspot.com/
   public class MYSQLConnection {
       public static Connection buatKoneksi() throws Exception{
           String url = "jdbc:mysql://localhost/sms_center";
           String user = "root";
           String pass = "*";
           Connection koneksi = null;
           Class.forName("com.mysql.jdbc.Driver").newInstance();
           koneksi = DriverManager.getConnection(url, user, pass);

             return koneksi;
        }
   }


   Untuk username dan passwordnya sesuaikan dengan konfigurasi
   MySQLnya masing2.


   Setelah itu, kita buat sebuah Class yang paling penting dari
   keseluruhan Program ini. Karena semua aktifitas yang berhubungan
   dengan Aktifitas SMS Gateway di kerjakan Oleh Class Ini.


   Buat Class pada package ovq.smsgateway.service, kemudian beri
   nama SMSReadService. Kemudian Ketikan Kode Berikut:


   package ovq.smsgateway.service;

   import   java.sql.Connection;
   import   java.sql.PreparedStatement;
   import   java.sql.SQLException;
   import   javax.swing.JTextArea;
   import   org.smslib.AGateway.GatewayStatuses;
   import   org.smslib.AGateway.Protocols;
   import   org.smslib.ICallNotification;
   import   org.smslib.IGatewayStatusNotification;
   import   org.smslib.IInboundMessageNotification;
   import   org.smslib.InboundMessage;
   import   org.smslib.Message.MessageTypes;
   import   org.smslib.Service;
   import   org.smslib.modem.ModemGateway.IPProtocols;
   import   org.smslib.modem.SerialModemGateway;
   import   ovq.smsgateway.obj.Status;

   /**
    *
    * @author taopik ridwan <blackonta@gmail.com>
    */
   public class SMSReadService {
       //panel status
       private Status status = null;
       private JTextArea textArea;



15 | http://onta-programing.blogspot.com/
        Service service;
        private Connection koneksi;

        public SMSReadService(
               Connection koneksi,
               JTextArea textArea) {
            this.koneksi = koneksi;
            this.textArea = textArea;
        }

        public void setStatus(Status status) {
            this.status = status;
        }

        public void startService() throws Exception {
            PesanMasukHandler pesanMasuk =
                    new PesanMasukHandler();

            PanggilanMasukHandler panggilanMasuk =
                    new PanggilanMasukHandler();

            GatewayStatusHandler statusGateway =
                    new GatewayStatusHandler();

            this.service = new Service();

            SerialModemGateway gateway = new SerialModemGateway (
                    "Motorola.COM3",      //nama GAteway
                    "COM3", //Port yang digunakan
                    57600, //baudrate
                    "Motorola", //merk HP
                    "C380");//Tipe HP

            gateway.setIpProtocol(IPProtocols.BINARY);

            gateway.setProtocol(Protocols.PDU);

            gateway.setInbound(true);

            gateway.setOutbound(true);

            gateway.setSimPin("0000");

            this.service.setInboundMessageNotification(pesanMasuk);
            this.service.setCallNotification(panggilanMasuk);

   this.service.setGatewayStatusNotification(statusGateway);

            this.service.addGateway(gateway);

            this.service.startService();

            if(status != null ) {

   this.status.setManufacture(gateway.getManufacturer());
               this.status.setModel(gateway.getModel());
               this.status.setSerialNo(gateway.getSerialNo());
               this.status.setSimImsi(gateway.getImsi());
               this.status.setSignal(gateway.getSignalLevel());


16 | http://onta-programing.blogspot.com/
                 this.status.setBaterai(gateway.getBatteryLevel());
             }
         }

         class PesanMasukHandler
                 implements IInboundMessageNotification {

             public void process(
                     String idGateway,
                     MessageTypes tipePesan,
                     InboundMessage pesanMasuk) {
                 if(tipePesan == MessageTypes.STATUSREPORT) return;

               try {
                   String sql = "INSERT INTO sms_masuk VALUES
   (NULL,?,?,?,?,?,?)";
                   PreparedStatement           prepare           =
   koneksi.prepareStatement(sql);
                   prepare.setString(1, pesanMasuk.getText());
                   prepare.setString(2,
   "+"+pesanMasuk.getMpRefNo());
                   prepare.setString(3,
   pesanMasuk.getPduUserData());
                   prepare.setString(4,
   pesanMasuk.getEncoding().name());
                   prepare.setString(5,
   pesanMasuk.getGatewayId());
                   prepare.setDate(6,                          new
   java.sql.Date(pesanMasuk.getDate().getTime()));

                     prepare.executeUpdate();
                 } catch (SQLException ex) {
                     System.out.println("Pesan Gagal Disimpan");
                     System.out.println(ex.getMessage());
                 }

                 textArea.append("\nPesan Diterima:\n"+
                         pesanMasuk.getSmscNumber() +"\n"+
                         pesanMasuk.getText());
                 textArea.append("\n-----------------------------");

                 try {
                 SMSReadService.this.service.deleteMessage(pesanMasu
   k);
                 } catch (Exception e){
                 }
             }
         }

         class PanggilanMasukHandler implements ICallNotification {
             public void process(
                     String idGateway,
                     String noHP) {

             }

         }

         class GatewayStatusHandler implements


17 | http://onta-programing.blogspot.com/
                IGatewayStatusNotification {
            public void process(
                    String idGateway,
                    GatewayStatuses statusLama,
                    GatewayStatuses statusBaru) {

            }
        }
   }


   Penjelasan:
   Kita mulai dari Konstruktor Class SMSReadService
   public SMSReadService(
              Connection koneksi,
              JTextArea textArea) {
           this.koneksi = koneksi;
           this.textArea = textArea;
   }


   Konstuktor dari Class SMSReadService membutuhkan dua parameter,
   yaitu Connection, yang nantinya dibutuhkan ketika menyimpan SMS
   kedalam Database, kemudian JTextArea, yang dibutuhkan nanti ketika
   kita menampilkan Log SMS.


   Kemudian Method startService().
   Method ini merfungsi untuk memulai Service, sehingga program kita
   akan mulai memonitor sms yang masuk.
   PesanMasukHandler pesanMasuk =
                   new PesanMasukHandler();

   PesanMasukHandler Class ini adalah Class yang nantinya di jalankan

   ketika ada SMS yang masuk. Jadi jika ada pesan/SMS masuk. Maka
   PesanMasukHandler      akan       dijalankan.   Adapun   isi   dari   Class
   PesanMasukHandler adalah:
   class PesanMasukHandler
      implements IInboundMessageNotification {
      public void process(
         String idGateway,
         MessageTypes tipePesan,
         InboundMessage pesanMasuk) {
         if(tipePesan == MessageTypes.STATUSREPORT) return;

         try {
              String  sql        =     "INSERT     INTO   sms_masuk      VALUES
   (NULL,?,?,?,?,?,?)";



18 | http://onta-programing.blogspot.com/
                PreparedStatement prepare =
                koneksi.prepareStatement(sql);

                prepare.setString(1, pesanMasuk.getText());
                prepare.setString(2, "+"+pesanMasuk.getMpRefNo());
                prepare.setString(3, pesanMasuk.getPduUserData());

                prepare.setString(4
                pesanMasuk.getEncoding().name());

                prepare.setString(5, pesanMasuk.getGatewayId());

                prepare.setDate(6,
                new java.sql.Date(pesanMasuk.getDate().getTime()));

                 prepare.executeUpdate();
            } catch (SQLException ex) {
                 System.out.println("Pesan Gagal Disimpan");
                 System.out.println(ex.getMessage());
            }

            textArea.append("\nPesan Diterima:\n"+
                 pesanMasuk.getSmscNumber() +"\n"+
                 pesanMasuk.getText());
                 textArea.append("\n-----------------------------");
            try {
               SMSReadService.this.service.deleteMessage(pesanMasuk);
               } catch (Exception e){
                  }
              }
        }


   Dalam kode diatas, jika ada pesan masuk maka program akan
   memasukan pesan kedalam database, kemudian menampilkannya
   kedalam JTextArea.


   PanggilanMasukHandler panggilanMasuk =
                   new PanggilanMasukHandler();
   GatewayStatusHandler statusGateway =
                   new GatewayStatusHandler();


   PanggilanMasukHandler Berfungsi sebagai Class yang menangani jika

   terjadi penggilan masuk pada HP/Modem yang kita gunakan.
   Sedangkan GatewayStatusHandler berfungsi sebagai Class yang
   menangani perubahan Status Gateway.


   Dalam      kode   diatas   Class   PanggilanMasukHandler   dan   Class
   GatewayStatusHandler sebagai berikut:



19 | http://onta-programing.blogspot.com/
   class PanggilanMasukHandler implements ICallNotification {
       public void process(String idGateway, String noHP) {

             }
        }

   class GatewayStatusHandler implements
                  IGatewayStatusNotification {
        public void process(
            String idGateway,
            GatewayStatuses statusLama,
            GatewayStatuses statusBaru) {

         }
   }


   Lho, Class diatas kan kosong????, yupz benar, untuk penanganan
   panggulan dan perubahan gateway kita biarkan kosong, jadi ketika
   terjari panggilan atau perubahan status Gateway, tidak akan ada
   reaksi apa2.


   this.service = new Service();

             SerialModemGateway gateway = new SerialModemGateway (
                     "Motorola.COM3",
                     "COM3",
                     57600,
                     "Motorola",
                     "C380");

             gateway.setIpProtocol(IPProtocols.BINARY);

             gateway.setProtocol(Protocols.PDU);

             gateway.setInbound(true);

             gateway.setOutbound(true);

             gateway.setSimPin("0000");


   Line pertama dari kode diatas adalah kita memanggil Class Service
   pada Library SMSLib, kemudian dilanjut dengan menginstansiasi
   Gateway. Ada dua pilihan
      SerialModemGateway     Berfungsi pada HP/Modem dengan tipe
       koneksi Serial
      IPModemGateway Berfungsi pada HP/Modem dengan tipe koneksi IP




20 | http://onta-programing.blogspot.com/
   Namun parameter untuk keduanya adalah sama.
   Penjelasan lebih lanjut mengenai parameternya bias temen2 lihat di
   postingan                    sebelumnya                               http://onta-
   programing.blogspot.com/2009/08/membuat-aplikasi-sms-gateway-
   sederhana.html


   Kemudian Selanjutnya kita mengeset parameter-parameter pada
   gateway.
   gateway.setInbound(true);       true     jika   kita   ingin   agar     gateway
   menerima pesan masuk, dan false untuk sebaliknya.
   gateway.setOutbound(true); true jika kita ingin agar gateway bisa

   mengirim pesan, dan false untuk sebaliknya
   gateway.setSimPin("0000");      jika HP/Modem yang kita gunakan
   menggunakan pin. Ganti 0000 dengan pin HP/Modem.


   this.service.setInboundMessageNotification(pesanMasuk);
   this.service.setCallNotification(panggilanMasuk);
   this.service.setGatewayStatusNotification(statusGateway);


   Mengeset Handler-Handler yang telah di instansiasi pada Service.


   this.service.addGateway(gateway);
   this.service.startService();


   Line pertama menambahkan gateway pada service, line kedua
   memulai service, sehingga program dalam keadaan Stand By untuk
   menerima SMS.


   Kode yang terakhir:
   if (status != null ) {
        this.status.setManufacture(gateway.getManufacturer());
        this.status.setModel(gateway.getModel());
        this.status.setSerialNo(gateway.getSerialNo());
        this.status.setSimImsi(gateway.getImsi());
        this.status.setSignal(gateway.getSignalLevel());
        this.status.setBaterai(gateway.getBatteryLevel());
   }




21 | http://onta-programing.blogspot.com/
   Mengeset properties Status,


   Ok, kalau ada yang masih kurang jelas bisa Tanya jawab di Blog or di
   FB.


   Pembuatan GUI
   Dalam Tutorial Kali Ini Kita Akan membuat sebuah SMS Gateway
   Control Panel sebagai berikut:




22 | http://onta-programing.blogspot.com/
   Pertama Kita Akan Buat Panel Indikator/Panel Status HP/Modem.
   1. Buat Sebuah Panel baru pada package ovq.smsgateway.ui.
   2. Beri Nama Panel tersebut dengan nama PanelIndikator.
   3. Lalu Tambahkan Komponen-komponen sehingga tampak sebagai
      berikut:




   4. Ubah Variable name dari label lebe yang ditandai menjadi
      (Berurutan): signal, baterai, manufacture, model, serialNo, dan imsi.
   5. Mengenai property yang lainnya lihat di Source code

   6. Beralih Ke mode Code                   , kemudian tambahkan kode
      berikut:
      public void setStatus(Status s){
              signal.setText(s.getSignal() +" % ");


23 | http://onta-programing.blogspot.com/
                baterai.setText(s.getBaterai() + " %");
                manufacture.setText("Modem Manufacture: "+
                    s.getManufacture());
                model.setText("Model : "+s.getModel());
                serialNo.setText("Serial No/IMEY: "+
                    s.getSerialNo());
                imsi.setText("SIM IMSI : " + s.getSimImsi());
           }


   7. Done, Selsesai. Error dan penanganannya dibahas pada bagian
      error dan penanganannya.


   Ok, Minum lagi kopinya, makan lagi cemilannya, trus kita lanjutin .
   Selanjutnya kita akan membuat Panel Status Bar.
   1. Buat Sebuah Panel baru pada package ovq.smsgateway.ui.
   2. Beri Nama Panel tersebut dengan nama PanelStatus.
   3. Lalu Tambahkan sebuah JLabel sehingga tampak sebagai berikut




   4. Beralih Ke mode Code                  , tambahkan variable berikut:
      public static final int KONEKSI_ERROR = 0;
      public static final int TERSAMBUNG = 1;
      public static final int TERPUTUS = 3;


   5. kemudian tambahkan kode berikut:
   public void setStatusKoneksi(int status, String s){
           if(status == KONEKSI_ERROR ){
               jLabel1.setIcon(new ImageIcon(getClass()
   .getResource("/ovq/smsgateway/image/error.png")));
               jLabel1.setText(s);
           }else if(status == TERSAMBUNG ){
               jLabel1.setIcon(new            ImageIcon(getClass()
   .getResource("/ovq/smsgateway/image/mobile_phone.png")));
               jLabel1.setText(s);
           }else if(status == TERPUTUS ){
               jLabel1.setIcon(new ImageIcon(getClass()
   .getResource("/ovq/smsgateway/image/mobile_phone_off.png")));
               jLabel1.setText(s);
           }
   }


   6. Done, Selesai. Error dan penanganannya dibahas pada bagian
      error dan penanganannya.


24 | http://onta-programing.blogspot.com/
   Sekarang, kIta buat sebuah dialog untuk melihat pesan yang masuk.
   1. Buat Seuah JDialog pada package ovq.smsgateway.ui, kemudian
      beri nama JDialog tersebut dengan nama DialogPesanMasuk.
   2. Ubah Layout dari JDialog tersebur menjadi BorderLayout dengan
      Cara Klik Kanan Pada dialog, kemudian pilih Set Layout, dan pilih
      BorderLayout.
   3. Tambahkan sebuah JTable pada JDialog, ubah variable namenya
      menjadi tabelPesan..




   4. Beralih Ke mode Code                  ,
   5. tambahkan Kode berikut, sebagai model untul JTable.
      class TabelModel extends AbstractTableModel {
              String[] kolomHeader = {
                      "Id SMS","SMS", "No SMS", "PDU",
                      "Encoding", "Id Gtateway", "Tanggal"};
              Object[][] data;

                public void addData(Object[][] obj){
                    data = obj;
                    fireTableDataChanged();
                }

                public int getRowCount() {
                    return data.length;
                }

                public int getColumnCount() {
                    return kolomHeader.length;



25 | http://onta-programing.blogspot.com/
                }

              public    Object   getValueAt(int    rowIndex,   int
      columnIndex) {
                  return data[rowIndex][columnIndex];
              }

                @Override
                public String getColumnName(int column) {
                    return kolomHeader[column];
                }
           }


   6. Lalu tambahkan variable berikut:
      public void setKoneksi(Connection koneksi){
              this.koneksi = koneksi;
              try {

                  String sql = "SELECT * FROM sms_masuk";
                  PreparedStatement            prepare           =
      koneksi.prepareStatement(sql);

                    ResultSet res = prepare.executeQuery();
                    res.last();
                    int n = res.getRow();

                    Object[][] data = new Object[n][7];
                    int p = 0;

                    res.beforeFirst();

                    while (res.next()) {
                        data[p][0] = res.getInt(1);
                        data[p][1] = res.getString(2);
                        data[p][2] = res.getString(3);
                        data[p][3] = res.getString(4);
                        data[p][4] = res.getString(5);
                        data[p][5] = res.getString(6);
                        data[p][6] = res.getDate(7);
                        p++;
                    }

                    TabelModel model = new TabelModel();
                    model.addData(data);

                    tabelPesan.setModel(model);

                    //modifikasi lebar kolom

      tabelPesan.getColumnModel().getColumn(0).setPreferredWidth(2
      5);

      tabelPesan.getColumnModel().getColumn(1).setPreferredWidth(2
      55);

      tabelPesan.getColumnModel().getColumn(2).setPreferredWidth(5
      5);


26 | http://onta-programing.blogspot.com/
      tabelPesan.getColumnModel().getColumn(3).setPreferredWidth(2
      55);

      tabelPesan.getColumnModel().getColumn(4).setPreferredWidth(5
      5);

      tabelPesan.getColumnModel().getColumn(5).setPreferredWidth(5
      5);

      tabelPesan.getColumnModel().getColumn(6).setPreferredWidth(5
      5);
              } catch (SQLException ex) {
                  ex.printStackTrace();
              }
      }


   7. Selesai, Error dan penanganannya dibahas pada bagian error dan
      penanganannya.


   Masih tersisa kopinya minum lagi deh hehe. Ok, Sekarang kita akan
   membuat GUI Utama.
   1. Buat sebuah JFrame pada package ovq.smsgateway.ui, kemudian
      beri nama JFrame tersebut dengan nama SMSGatewayView.
   2. Kemudian Drag PanelStatus dan PanelIndikator yang telah kita
      buat sebelumnya ke JFrame.
   3. Jika temen2 mendapatkan pesan seperti ini saat men-drag
      PanelStatus dan PanelIndikator,




   4. Maka Lakukan Compile. Caranya Klik Kanan Pada Project,
      kemudian pilih Clean and Build




27 | http://onta-programing.blogspot.com/
   5. Nah Sekarang Coba lagi lakukan langkah 2.




   6. Kemudian     tambahkan     tiga   buah   JButton,   dan   Satu   Buah
      JTextArea, untuk membuat lebih enak dilihat, tambahkan pula
      Sebuah JLabel Sebagai Header. Atur sehingga Frame tampak
      seperti berikut:




28 | http://onta-programing.blogspot.com/
   7. Rubah     Variable   Name     dari    Button   menjadi   buttonStart,
      buttonLihatPesan, buttonKeluar, dan JTextArea menjadi logSMS.
   8. Kemudian Tambahkan Action Performed pada buttonStart:
      try{
               koneksi = MYSQLConnection.buatKoneksi();
           }catch(Exception e){
               panelStatus1.setStatusKoneksi(
                       PanelStatus.KONEKSI_ERROR,
                       "Error saat Koneksi ke database");
               return;
           }

           if(koneksi == null){
               return;
           }

          SMSReadService smsService = new SMSReadService(koneksi,
      logArea);
          smsService.setStatus(status);
          try {
              smsService.startService
              panelIndikator1.setStatus(status);
              panelStatus1.setStatusKoneksi(
                      PanelStatus.TERSAMBUNG,
                      "Service tersedia");
          } catch (Exception ex) {
              panelStatus1.setStatusKoneksi(
                      PanelStatus.TERSAMBUNG,
                      "Erros saat mulai Service");
          }


   9. Kemudian Tambahkan Action Performed pada buttonKeluar:
      System.exit(0);


29 | http://onta-programing.blogspot.com/
   10. Kemudian Tambahkan Action Performed pada buttonLihatPesat:
      if(koneksi == null ){
              JOptionPane.showMessageDialog(this, "Start Service
      terlebih dahulu!!");
              return;
          }
          DialogPesanMasuk dlgPesan = new DialogPesanMasuk(this,
      true);
          dlgPesan.setKoneksi(koneksi);
          dlgPesan.setVisible(true);


   11. Selesai. Error dan penanganannya dibahas pada bagian error dan
      penanganannya.
Sampai tahap ini program kita sudah jadi. Dan kalau tidak ada eeror,
maka kita bisa compile dan run.


Screenshoot




                         Sebelum Service di Start




30 | http://onta-programing.blogspot.com/
                         Setelah Service di Start




     Jika melihat Pesan masuk Namun Service belum dilakukan start




                           Dialog Pesan Masuk



31 | http://onta-programing.blogspot.com/
Error dan Penanganannya
Error yang mungkin terjadi dalam mengikuti turoal ini adalah sebagai
berikut:
1. Kalau diikuti dengan baik insya Allah gak ada Error, hehe
2. Kalau Masih ada Error, silahkan Komentar di Blog or do FB.


Tanya Jawab
Tanya jawabnya di Bolg aja ya ato di FB




                             -----------------------
Huhuy kuta sekarang punya aplikasi SMS Gateway Sendiri, Selamat
Berjuang, and Keep Moving Forward. Tp Sebelum Ditutup Gak salah Kalo
Baca dulu Breaktime nya, hehe




32 | http://onta-programing.blogspot.com/
Breaktime
Berikut ini daftar Pay Per Click Artinya Sekali Klik Dapat Uang,
Caranya gampang tinggal klik disini
http://www.neobux.com/?r=blackonta




Isikan keterangan yang diminta, kemudian Verifikasei keanggotaan
temen2. Kemudian Login dan Klik Ads Surf, trus tingal Klik Deh, tunggu 30
dtk dan walahhhhh anda mendapatkan 0.01 Dolar.


Tp kalau nanti temen2 punya referral, dan referalnya itu ngklik iklan, maka
temen2 juga dapat bagian, gampangkan??? Sok atuh di klik aja linknya
http://www.neobux.com/?r=blackonta


Yang ini juga sama Cuma yang ini versi Indonesia
https://www.idr-clickit.com/register.php/blackonta.html




Okede, Caranya sama, klo diminta no rekening bank, isikan aja angka
sembarang Ok, sok Diklik Juga yang ini https://www.idr-
clickit.com/register.php/blackonta.html




33 | http://onta-programing.blogspot.com/
Daftar HP Yang bisa digunakan
   Billionton: PCMCIA PCGPRSQ-B.
   EagleTec: GSM modems.
   Fargo Maestro 20.
   ITengo: 3000, WM1080A.
   Janus: GSM864Q.
   Nokia: 6070, 6100, 6210, 6310, 6310i, 6230, 6230i, 6681, 8250, 8310, 6610, 6800, 7210,
    6810, 7250i, 6103, 6020, 3220, 6822, 5140, 5140i, 30 (terminal).
   Multitech: Multimodem GPRS (SMSLib for Java can also drive the Multitech Multimodem via
    its IP port).
   Sharp: GX30, GX32.
   Siemens: MC35i, M35, M50, M65, C45, TC35i, C65, M55, TC65t.
   SIMCOM Ltd: SIMCOM_SIM100S.
   Sony Ericsson: K300i, SE K800i, K700i, K750i, SE W850i, W880i, GC89, Z550a, W800, W580i,
    W810, i320, GT48.
   Ubinetics: GDC201.
   Wavecom: M1206B, M1306B, WMOD2 Wismo, Fastrack Supreme 10, WISMOQCDMA CDMA.
   Huawei: E220 (may require the forced setting of SMSC address).
   Motorola: V3, C380.
   Teltonika: ModemUSB.
   Samsung: D520.




34 | http://onta-programing.blogspot.com/

								
To top