April 2010 Posts

Iseng-iseng bikin class sederhana untuk menghasilkan suatu tanggal random yang terletak antara tanggalSebelum (Date) dan tanggalSesudah (Date). Rencananya ini mo gw pakek bwt testing aplikasi. Sorry klo classnya rada berantakan, bikinnya juga buru-buru, sembari nunggu adzan Maghrib.

```package com.edw.random;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
*
* @author edwin
*/
public class RandomDateGenerator extends Thread {

private Date sebelum;
private Date sesudah;
private int repetition;

public Date getSebelum() {
return sebelum;
}

public void setSebelum(Date sebelum) {
this.sebelum = sebelum;
}

public Date getSesudah() {
return sesudah;
}

public void setSesudah(Date sesudah) {
this.sesudah = sesudah;
}

public int getRepetition() {
return repetition;
}

public void setRepetition(int repetition) {
this.repetition = repetition;
}

public RandomDateGenerator() {
}

@Override
public void run() {
try {
for (int i = 0; i < repetition; i++) {
System.out.println(getRandomDateBetween(sebelum, sesudah));
}
} catch (InterruptedException interruptedException) {
interruptedException.printStackTrace();
}
}

private synchronized Date getRandomDateBetween(Date from, Date to) {
Calendar cal = Calendar.getInstance();

cal.setTime(from);
BigDecimal decFrom = new BigDecimal(cal.getTimeInMillis());

cal.setTime(to);
BigDecimal decTo = new BigDecimal(cal.getTimeInMillis());

BigDecimal selisih = decTo.subtract(decFrom);
BigDecimal factor = selisih.multiply(new BigDecimal(Math.random()));

}

public static void main(String[] args) throws Exception {
RandomDateGenerator rdg = new RandomDateGenerator();
rdg.setSebelum(new SimpleDateFormat("dd MM yyyy").parse("17 08 1978"));
rdg.setSesudah(new SimpleDateFormat("dd MM yyyy").parse("17 08 1990"));
rdg.setRepetition(10);
rdg.start();
}
}
```

may the SOURCE be with you.

Wassalam.

Untuk menyimpan suatu java object ke table, dibutuhkan field dengan tipe data BLOB, berikut adalah cara menyimpan java object (dalam hal ini javabean) kedalam database, gw pake JDK 6.0 dan MySQL 5. Misalkan ada javabean dengan nama BeanTest (usahakan selalu implements Serializable), dengan struktur dibawah ini :

```import java.io.Serializable;

public class BeanTest implements Serializable {

private String nama;
private String alamat;

/**
* @return the nama
*/
public String getNama() {
return nama;
}

/**
* @param nama
*            the nama to set
*/
public void setNama(String nama) {
this.nama = nama;
}

/**
* @return the alamat
*/
public String getAlamat() {
return alamat;
}

/**
* @param alamat
*            the alamat to set
*/
public void setAlamat(String alamat) {
this.alamat = alamat;
}

}
```

lalu buat table di database

```create database testest;
use testest;

CREATE TABLE IF NOT EXISTS x (
satu varchar(5) NOT NULL DEFAULT ” ,
dua blob ,
PRIMARY KEY (satu)
);
```

Lalu buatlah class yang akan digunakan untuk berhubungan dengan database, gunakan method setData() untuk memasukkan object ke database, dan getData() untuk mengambil data dari database.

```import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Main {

public static void main(String[] args) {
Main main = new Main();

// simpan data ke database
main.setData();

//tarik isi database
main.getData();
}

private void setData() {
try {

BeanTest bean = new BeanTest();

bean.setNama("edwin");
bean.setAlamat("jakarta");

Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testest", "root", "");
java.sql.PreparedStatement statement = con.prepareStatement("insert into x values (?,?)");

statement.setString(1, "00001");
statement.setBytes(2, toBytes(bean));

statement.executeUpdate();

statement.close();
con.close();
} catch (Exception ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}

private byte[] toBytes(Object object) {
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
try {
java.io.ObjectOutputStream oos = new java.io.ObjectOutputStream(baos);
oos.writeObject(object);
oos.flush();
oos.close();
} catch (Exception ioe) {
ioe.getMessage();
}

return baos.toByteArray();
}

private void getData() {
try {
Class.forName("com.mysql.jdbc.Driver");

Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/testest", "root", "");
Statement statement = con.createStatement();
ResultSet res = statement.executeQuery("select * from x");

while (res.next()) {
Object o = toObject(res.getBytes(2));

if (o instanceof BeanTest) {
BeanTest beanTest = (BeanTest) o;
System.out.println(beanTest.getNama());
System.out.println(beanTest.getAlamat());

}
}
statement.close();
con.close();
} catch (Exception ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}

private Object toObject(byte[] bytes) {
Object object = null;
try {
object = new java.io.ObjectInputStream(