Tampilkan postingan dengan label JAVA Project. Tampilkan semua postingan
Tampilkan postingan dengan label JAVA Project. Tampilkan semua postingan

Membuat IPK Counter GUI dengan Java

Rabu, 14 Maret 2012 0 komentar

Pada postingan sebelumnya, kita telah membahas cara membuat IPK Counter tanpa tampilan antarmuka grafis (GUI), kali ini kita akan membuat ulang program IPK Counter dengan GUI.
1. Masih ingat pola umum program Java basis GUI ? Ini dia:

2. Berikutnya kita akan membuat 8 identifier : 4 identifier untuk String, dan 4 identifier untuk Double :
Membuat identifier
Pada pembuatan program IPK Counter tanpa GUI yang lalu, kita cuma membuat 4 identifier double, tapi kali ini perlu ditambahkan 4 identifier lagi untuk String, karena Input box dimana user akan mengisi data, tidak dapat merekam inputan sebagai numerik (Integer maupun Double), Input box hanya akan merekam String, makanya kita menambahkan 4 identifier String baru untuk merekam inputan dan melakukan konversi ke double.
3. Nah, berikutnya kita buat Input box yang meminta user untuk mengisi data yang diperlukan :

4. Setelah melakukan proses konversi, sekarang kita sudah punya data numerik yang diperlukan untuk menghitung nilai IPK, nah tunggu apa lagi, buat script untuk menghitungnya:

5. Langkah terakhir, kita tinggal menampilkan hasilnya dengan Message box:

6. Nah, program sudah jadi, tinggal dicompile (Ctrl-2 [textpad] atau Ctrl-F11 [eclipse])
IPK Counter - First launch - by Antony Budianto




Program yang kita rancang tadi hanya akan berjalan sekali saat dicompile/di-run, itu dikarenakan kita tidak menggunakan looping, jika ingin menggunakan looping, gunakan fungsi while untuk merangkum semua argumen/intruksi program (lihat postingan mengenai looping).
 :D

Enkripsi MD5 dalam Java

0 komentar

Secara luas dengan hash value 128-bit. MD5 di desain oleh Ronald Rivest pada tahun 1991 untuk menggantikan hash function sebelumnya, MD4. Walaupun pada tahun 1996 ditemukan kecacatan pada metode ini, namun penggunaan metode ini dalam enkripsi data masih umum digunakan. Beberapa aplikasi database (MySQL, PostgreSQL, dll) masih menyediakan metode ini. Bahkan untuk beberapa aplikasi CMS menggunakan metode ini untuk menyimpan password login (contoh: Moodle). Enkripsi MD5 memang irreversible namun penggunaannya adalah dengan membandingkan data yang tersimpan (sudah terenkripsi) dengan hasil enkripsi data yang akan dibandingkan. Sehingga pengujian dapat dilakukan tanpa harus mengembalikan (dekrip) data.

Dalam implementasi di bahasa Java, sudah tersedia library untuk itu sehingga mempermudah dalam menggunakan metode itu:
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SimpleMD5 {

   private static String convertToHex(byte[] data) {
       StringBuffer buf = new StringBuffer();
       for (int i = 0; i < data.length; i++) {
           int halfbyte = (data[i] >>> 4) & 0x0F;
           int two_halfs = 0;
           do {
               if ((0 <= halfbyte) && (halfbyte <= 9))
                   buf.append((char) ('0' + halfbyte));
               else
                   buf.append((char) ('a' + (halfbyte - 10)));

  halfbyte = data[i] & 0x0F;
           } while(two_halfs++ < 1);
       }
       return buf.toString();
   }

   public static String MD5(String text)
   throws NoSuchAlgorithmException, UnsupportedEncodingException  {
       MessageDigest md;
       md = MessageDigest.getInstance("MD5");
       byte[] md5hash = new byte[32];
       md.update(text.getBytes("iso-8859-1"), 0, text.length());
       md5hash = md.digest();
       return convertToHex(md5hash);
   }
}
Contoh penggunaan :
String encrypted = SimpleMD5.MD5(“HMFT”);

Maka akan didapatkan nilai : e747769f238ccfc30717c7c95b3c05d9

Enkripsi SHA-1

0 komentar

Bagi temen2 programmer Java yang ingin menggunakan enkripsi SHA-1, namun tidak tau bagaimana caranya, saya akan membuat metode sendiri untuk membuat enkripsi tersebut.
01package com.wordpress.aliongz.utility;
02 
03import java.io.UnsupportedEncodingException;
04import java.security.MessageDigest;
05import java.security.NoSuchAlgorithmException;
06 
07public class SHA1Utility {
08 
09   private static String convertToHex(byte[] data) {
10      StringBuffer buf = new StringBuffer();
11      for (int i = 0; i < data.length; i++) {
12         int halfbyte = (data[i] >>> 4) & 0x0F;
13         int two_halfs = 0;
14         do {
15            if ((0 <= halfbyte) && (halfbyte <= 9)) {
16               buf.append((char) ('0' + halfbyte));
17            } else {
18               buf.append((char) ('a' + (halfbyte - 10)));
19            }
20            halfbyte = data[i] & 0x0F;
21         } while (two_halfs++ < 1);
22      }
23      return buf.toString();
24   }
25 
26   public static String getSHA1(String text)
27   throws NoSuchAlgorithmException, UnsupportedEncodingException {
28      MessageDigest md;
29      md = MessageDigest.getInstance("SHA-1");
30      byte[] sha1hash = new byte[40];
31      md.update(text.getBytes("iso-8859-1"), 0, text.length());
32      sha1hash = md.digest();
33      return convertToHex(sha1hash);
34   }
35}
Berikut salah satu contoh dalam penggunaannya.
01package com.wordpress.aliongz.main;
02 
03import com.wordpress.aliongz.utility.SHA1Utility;
04 
05public class Coba {
06    public static void main(String[] args) {
07       String s = "aliong";
08       System.out.println("SHA-1 dari " + s + " adalah " + SHA1Utility.getSHA1(s));
09   }
10}

Membuat Aplikasi Reporting sederhana dengan JasperReport dan Java Swing

0 komentar

Beberapa hari terakhir ini, gw ditanyain terus tentang caranya connect java swing ke jasper report. Dan konyolnya, gw juga udah lupa caranya. Maklum, kebanyakan copy-paste jadi begini niy. Ya udh supaya inget dan gag lupa-lupa lagi, gw paste disini aja sourcenya.
Gw coba bikin report gembel sederhana dulu, yg ambil data nama dan alamat dari table “contoh” yang ada di database “test”. Pertama-tama kita bikin dulu table nya didatabase,
1CREATE TABLE `contoh` (
2  `nama` varchar(30) NOT NULL DEFAULT '',
3  `alamat` varchar(100) DEFAULT NULL,
4  PRIMARY KEY (`nama`)
5)
Abis itu kita bikin file jrxml-nya, nanti file jrxml ini akan dicompile on-the-fly oleh compiler jadi .jasper.
01<?xml version="1.0" encoding="UTF-8"?>
02<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Iseng" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
03    <parameter name="nama1" class="java.lang.String"/>
04    <queryString>
05        <![CDATA[SELECT
06     contoh.`nama` AS contoh_nama,
07     contoh.`alamat` AS contoh_alamat
08FROM
09     `contoh` contoh
10where contoh.`nama` like $P{nama1}]]>
11    </queryString>
12    <field name="contoh_nama" class="java.lang.String">
13        <fieldDescription><![CDATA[]]></fieldDescription>
14    </field>
15    <field name="contoh_alamat" class="java.lang.String">
16        <fieldDescription><![CDATA[]]></fieldDescription>
17    </field>
18    <background>
19        <band splitType="Stretch"/>
20    </background>
21    <title>
22        <band height="56" splitType="Stretch">
23            <staticText>
24                <reportElement x="0" y="0" width="555" height="46"/>
25                <textElement textAlignment="Center" verticalAlignment="Middle">
26                    <font size="24"/>
27                </textElement>
28                <text><![CDATA[Testing Report]]></text>
29            </staticText>
30        </band>
31    </title>
32    <pageHeader>
33        <band height="13" splitType="Stretch"/>
34    </pageHeader>
35    <columnHeader>
36        <band height="34" splitType="Stretch">
37            <staticText>
38                <reportElement x="0" y="11" width="100" height="20"/>
39                <textElement textAlignment="Center" verticalAlignment="Middle"/>
40                <text><![CDATA[Nama]]></text>
41            </staticText>
42            <staticText>
43                <reportElement x="132" y="11" width="100" height="20"/>
44                <textElement textAlignment="Center" verticalAlignment="Middle"/>
45                <text><![CDATA[Alamat]]></text>
46            </staticText>
47        </band>
48    </columnHeader>
49    <detail>
50        <band height="27" splitType="Stretch">
51            <textField>
52                <reportElement x="0" y="0" width="100" height="20"/>
53                <textElement textAlignment="Center" verticalAlignment="Middle"/>
54                <textFieldExpression class="java.lang.String"><![CDATA[$F{contoh_nama}]]></textFieldExpression>
55            </textField>
56            <textField>
57                <reportElement x="132" y="0" width="100" height="20"/>
58                <textElement textAlignment="Center" verticalAlignment="Middle"/>
59                <textFieldExpression class="java.lang.String"><![CDATA[$F{contoh_alamat}]]></textFieldExpression>
60            </textField>
61        </band>
62    </detail>
63    <columnFooter>
64        <band height="45" splitType="Stretch"/>
65    </columnFooter>
66    <pageFooter>
67        <band height="54" splitType="Stretch"/>
68    </pageFooter>
69    <summary>
70        <band height="42" splitType="Stretch"/>
71    </summary>
72</jasperReport>
Di situ gw bikin satu report yang akan mencari data di table contoh berdasarkan query nama. Perhatikan line 10, itu adalah variabel yang akan gw gunakan untuk menjadi variabel query report.
Setelah jadi reportnya, sekarang gw lanjut bikin tampilannya. Gw pakek java Swing buat bikin UI. Jadi harap maklum klo rada kacrut sederhana.
01package com.edw.frame;
02 
03import java.awt.Container;
04import java.awt.FlowLayout;
05import java.awt.event.ActionEvent;
06import java.awt.event.ActionListener;
07import java.io.BufferedInputStream;
08import java.io.FileInputStream;
09import java.sql.Connection;
10import java.sql.DriverManager;
11import java.util.HashMap;
12import java.util.Map;
13 
14import javax.swing.JButton;
15import javax.swing.JFrame;
16import javax.swing.JLabel;
17import javax.swing.JTextField;
18import net.sf.jasperreports.engine.JasperCompileManager;
19import net.sf.jasperreports.engine.JasperFillManager;
20import net.sf.jasperreports.engine.JasperPrint;
21import net.sf.jasperreports.engine.JasperReport;
22import net.sf.jasperreports.view.JasperViewer;
23 
24import org.apache.log4j.Logger;
25 
26/**
27 *
28 * @author edw
29 */
30public class FrameMain extends JFrame implements ActionListener {
31 
32    private Logger logger = Logger.getLogger(FrameMain.class);
33    private JTextField txtNama = new JTextField(20);
34    private JButton cmdPrint = new JButton("cetak");
35 
36    public FrameMain() {
37        init();
38    }
39 
40    private void init() {
41        Container conn = getContentPane();
42        conn.setLayout(new FlowLayout());
43        conn.add(new JLabel("Iseng"));
44        conn.add(txtNama);
45        conn.add(cmdPrint);
46        setLocationRelativeTo(null);
47        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
48        cmdPrint.addActionListener(this);
49        pack();
50    }
51 
52    public void actionPerformed(ActionEvent e) {
53        if (e.getSource() == cmdPrint) {
54            try {
55                // parameter
56                String parameterNama = txtNama.getText();
57 
58                //load report location
59                FileInputStream fis = new FileInputStream("src\\com\\edw\\rpt\\Iseng.jrxml");
60                BufferedInputStream bufferedInputStream = new BufferedInputStream(fis);
61 
62                //set parameters
63                Map<String, String> map = new HashMap<String, String>();
64                map.put("nama1", parameterNama);
65 
66                Class.forName("com.mysql.jdbc.Driver");
67                Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "xxxx");
68 
69                //compile report
70                JasperReport jasperReport = (JasperReport) JasperCompileManager.compileReport(bufferedInputStream);
71                JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map, connection);
72 
73                //close connection
74                connection.close();
75 
76                //view report to UI
77                JasperViewer.viewReport(jasperPrint, false);
78 
79            } catch (Exception ex) {
80                logger.error(ex.getMessage(), ex);
81            }
82 
83        }
84    }
85 
86    public static void main(String[] args) {
87        new FrameMain().setVisible(true);
88    }
89}
Coba cek di line 64, itu adalah parameter yang akan dikirim ke report, pastikan nama variabelnya sama dengan nama variabel yang ada di jasper report ( file jrxml ). Sedangkan line 67 adalah Koneksi database gw, silahkan di modifikasi sesuai keinginan.
Nanti klo udh dijalanin, jadinya kayak gini
Form UI
terus klo misalkan text field nya diisi dengan “edwin” dan kemudian menekan tombol “cetak”, maka akan muncul form report dengan data “edwin” yang kita cari.
report jasper
berikut adalah struktur project gw serta library (jar) apa aja yg gw pake.
jasper report jar project structure
harap diingat, lokasi jar yg gw pake ada di dalam folder instalasi Jasper Report, silahkan di search aja.
nah ini adalah isi database gw, coba di cek output dari jasper dan isi databasenya, sinkron apa engga.
isi db
Sekian dan terima kasih.
nb. Oh iya, hasil preview dari jasper report juga bisa di save as ke berbagai macam format, tinggal di save aja.
export jasper into another format

 
Vengeance Andritera © 2011 | Designed by Bingo Cash, in collaboration with Modern Warfare 3, VPS Hosting and Compare Web Hosting