CD#4 Resmi di Rilis
Akhirnya setelah tertunda berbulan-bulan karena banyak halangan yang dialami: mulai dari gak ada waktu, Proteksi CD yang sering gagal sampai label dan lainnya.. hufff akhirnya CD#4 dengan topik Pengembangan Web Blog menggunakan Framework Struts dan Hibernate dirilis resmi hari ini.
Pada CD#4 ini dibahas bagaimana membuat aplikasi web dalam hal ini aplikasi web blog menggunakan web framework yang paling banyak digunakan yaitu Struts dan untuk akses databasenya digunakan framework Hibernate sehingga memudahkan dalam hal akses data ke tabel-tabel yang ada.
Dalam CD#4 ini juga disajikan template project yang termodulasi sehingga pemahaman akan struktur aplikasi menjadi mudah. Beberapa teknologi yang dimplementasi dalam Cd#4 ini antara lain: Struts, Hibernate, DAO Pattern, JSTL, Struts Tiles, dan struts validation.
Dengan menyaksikan Cd#4 ini dijamin anda akan mudah mengadaptasikannya untuk pengembangan aplikasi lainnya.
Untuk pemesanan bisa lewat www.cdtutorialjava.com
3 comments May 22, 2009
Demo Sistem Informasi Akademik di Dili Timor Leste
2 Minggu kemarin tepatnya tanggal 24 April 2009 aku berkesempatan mengunjungi negara baru Timor Leste dalam rangka demo aplikasi Sistem Informasi Akademik di kampus Institute Of Business Dili. Aku baru pertama kali ke Dili walaupun ke Kupang (ibu kota NTT masih satu pulau dengan Dili: pulau Timor) udah sering. Yang menarik di Dili adalah udah gak begitu kelihatan bekas Indonesia. Bahasanya udah pake Tetum dan Portugal walupun kalo kita ngomong bahasa Indonesia masih pada ngeriti..
Kota Dili tidak begitu besar tapi lumayan rapi apalagi di sekitar kantor Perdana menterinya waaaahhh.. keren banget deh.. menghadap ke laut langsung dan pinggir pantainya udah di buatin taman dan track lari. Ntar foto-fotonya aku upload deh.. btw ini link berita terkait http://wta.co.id/relatednews/wta/demo-sistem-informasi-universitas-terintegrasi-di-iob-timor-leste/
Add comment May 19, 2009
Kembali dari tidur panjang Ngeblog
Waaaaaaaaaa.. udah lama bangetzzz gak nulis di blog ini lagi. Sebenarnya pingin banget nulis tapi beberapa bulan terakhir ini kerjaan dan tugas kuliah numpuk blum lagi sering keluar kota akhirnya jadi males juga nulisnya.. mmm mudah-mudahan aku semangat lagi nulis macam-macam hal di blog ini khususnya all about Java. Walaupun kerjaan masih banyak sih.. tapi aku coba untuk mulai nulis lagi dan menikmatinya
Welcome back!!!
1 comment May 7, 2009
Selamat Tahun Baru Pembaca Sekalian
Wah udah masuk tahun 2009 ya
sebelumnya aku ucapin “Selamat Tahun Baru 2009″ buat semua pembaca setia sekalian.. gak papa kan ucapannya telat hehehehe..
Setelah memperhatikan jumlah pengunjung (rata-rata 100an orang/hari) yang membaca tulisan di blog ini.. aku menjadi tertantang dan terbeban juga untuk memperbanyak lagi tulisan seputar Java dan teknologinya..

semoga ditahun 2009 ini diberi banyak waktu untuk menulis dan menulis lagi, sehingga banyak pembaca yang terbantu untuk lebih mudah lagi mempelajari Java. Kritik, saran, dan pertanyaan silahkan kirim lewat email. Saya akan dengan senang hati membalasnya.. tapi maaf kalo balasannya telat ya
akhir kata semoga kita semua makin sukses di tahun 2009 ini..
5 comments January 12, 2009
Pengenalan Swing Framework dan Beans Binding bag.2
Akhirnya tulisan ini bisa dilanjutin lagi.. sory karena baru ada waktu lowong. Pada tulisan sebelumnya kita sudah sampai pada pembuatan class-class DAO yang dibutuhkan aplikasi. Nah sekarang kita buatkan user interfacenya.
Buatlah sebuah class baru dalam hal ini JDialog Form beri nama ProductDialog dengan package productsrecord, dan desainlah tampilannya seperti gambar berikut.
Perhatikan dalam form(JDialog) kita menggunakan tabpane untuk Daftar Kategori dan Daftar Barang. Pada gambar di atas adalah tampilan tab untuk Daftar Kategori dan Gambar berikut adalah tampilan untuk tab daftar barang.
Berilah nama masing-masing component swing tersebut sesusai keinginan anda. Misalnya tabel untuk Category saya beri nama categoryTable dan tabel untuk product saya beri nama productTable. Demikian juga untuk textfield-textfield yang ada. Kecuali untuk tombol nanti kita beri nama kemudian.
Baik selanjutnya kita akan membuat sebuah class tambahan/pembantu yang berfungsi sebagai perantara antara user interface dengan class-class DAO sebelumnya. Buatlah sebua class dengan nama Service dan simpan dengan package productsrecord. Berikut isi dari class Service tersebut:
public class Service { private EntityManager em; private ProductDAO pDao; private CategoryDAO cDao; public Service(EntityManager em){ setEm(em); } private void setEm(EntityManager em) { this.em = em; this.pDao = new ProductDAO(this.em); this.cDao = new CategoryDAO(this.em); } public void refresh(Object ebj){ this.em.getTransaction().begin(); this.em.refresh(ebj); this.em.getTransaction().commit(); } public void save(Product product){ this.em.getTransaction().begin(); pDao.save(product); this.em.getTransaction().commit(); } public void save(Category cat){ this.em.getTransaction().begin(); cDao.save(cat); this.em.getTransaction().commit(); } public void delete(Product product){ this.em.getTransaction().begin(); pDao.delete(product); this.em.getTransaction().commit(); } public void delete(Category cat){ this.em.getTransaction().begin(); cDao.delete(cat); this.em.getTransaction().commit(); } public Product getProduct(long id){ return pDao.getProduct(id); } public Category getCategory(long id){ return cDao.getCategory(id); } public List<Product> getProducts(){ return pDao.getProducts(); } public List<Category> getCategories(){ return cDao.getCategories(); } }
Selanjutnya bukalah class ProductRecordApp dan tambahkan 2 property berikut ini
public class ProdukApp extends SingleFrameApplication { private static Service service; private static EntityManager em; //..... code yang lain }
Kemudian masih di class ProductRecordApp, ubahlah method startup menjadi
@Override protected void startup() { em = Persistence.createEntityManagerFactory("ProductsRecordPU").createEntityManager(); service = new Service(em); show(new ProdukView(this)); }
Berikutnya buatkan method seter untuk menakses property service tersebut
public static Service getService() { return service; }
Ok selanjutnya kita akan melakukan binding data ke form yang sudah kita buat sebelumnya. Buatlah QueryResult seperti gambar dibawah ini
maka akan tercipta list1 pada bagian Other Components. Klik kanan pada list1 dan pilih Properties, maka akan ditampilkan window properties untuk list1. Selanjutnya lakukan langkah-langkah berikut:
Aktifkan centangan pada observable
Pindah ke tab Code, dan ubah Variable Name menjadi categoryList dan Type Parametersnya menjadi <Category>
Masih di tab Code, pada Custome Creation Code tambahkan code berikut
ObservableCollections.observableList(ProductRecordApp.getService().getCategories())
Dan pada Pre-Creation Code tambahkan code berikut
categoryList = new ArrayList&amp;amp;amp;amp;amp;amp;amp;lt;Category&amp;amp;amp;amp;amp;amp;amp;gt;();
Selanjutnya kita akan mem-bind tabel Category ke categoryList yang baru dibuat. Pada form Klik kanan categoryTable dan pilih Bind>elements
Selanjutnya akan ditampilkan Bind Properties Window. Lakukan perubahan sesuai yang ditampilkan pada gambar berikut, kemudian tekan tombol OK
Selanjutnya kita akan melakukan binding juga untuk textfield Nama dan Keterangan pada Category. Klik kanan pada textfield Nama dan pilih Bind>text. Maka akan ditampilkan bind properties window. Lakukan perubahan seperti pada gambar berikut:
Lakukan hal yang sama untuk textfield Keterangan. Yang berbeda hanyalah binding Expressionnya menjadi ${selectedElement.description}
Pindah pada mode Source dan tambahkan method berikut ini
public class ProductDialog extends javax.swing.JDialog { //code program lainnya private boolean isNew; private boolean isNewProduct; private void updateCategories(){ List&amp;amp;amp;amp;amp;lt;Category&amp;amp;amp;amp;amp;gt; data = ProductsRecordApp.getService().getCategories(); for (Object object : data) { ProductsRecordApp.getService().refresh(object); } categoryList.clear(); categoryList.addAll(data); } //code program lainnya
Selanjutnya kembali lagi ke mode Design dan klik kanan pada jButton1 kemudian pilih Set Action.. maka akan ditampilkan Window Set Action dan lakukan perubahan sesuai dengan gambar berikut.
Setelah kita menekan tombol OK maka secara otomatis Netbeans akan menciptakan sebuah action method sesuai dengan nama yang kita berikan. Ubahlah method deleteCategory sesuai kode berikut ini
&amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;p style="text-align: left;"&amp;amp;amp;amp;gt;@Action public void deleteCategory() { if(!isNew){ int[] selected = categoryTable.getSelectedRows(); List&amp;amp;amp;amp;amp;lt;Category&amp;amp;amp;amp;amp;gt; toRemove = new ArrayList&amp;amp;amp;amp;amp;lt;Category&amp;amp;amp;amp;amp;gt;(selected.length); for (int x = 0; x &amp;amp;amp;amp;amp;lt; selected.length; x++) { Category cat = categoryList.get(categoryTable.convertRowIndexToModel(selected[x])); toRemove.add(cat); ProductsRecordApp.getService().delete(cat); } categoryList.removeAll(toRemove); }else{ Category cat = categoryList.get(categoryTable.convertRowIndexToModel(categoryList.size()-1)); categoryList.remove(cat); ProductsRecordApp.getService().delete(cat); } categoryTable.getSelectionModel().clearSelection(); txtCategoryName.setText(""); txtCategoryDesc.setText(""); refreshCategoryButton.setEnabled(true); insertCategoryButton.setEnabled(true); isNew = false; } &amp;amp;amp;amp;lt;p style="text-align: left;"&amp;amp;amp;amp;gt;
Selanjutnya ganti nama masing-masing jButton1 menjadi deleteCategoryButton, dan jButton2 menjadi saveCategoryButton, jButton3 menjadi insertCategoryButton dan jButton4 menjadi refreshCategoryButton.
Selanjutnya kita tambahkan action untuk saveCategoryButton. Klik kanan pada saveCategoryButton, pilih Set Action dan sesuaikan seperti gambar berikut.
Kemudian ubahlah method saveCategory seperti berikut ini
&amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;p style="text-align: left;"&amp;amp;amp;amp;gt;@Action public void saveCategory() { Integer selectedRow = categoryTable.getSelectedRow(); if (selectedRow &amp;amp;amp;amp;amp;gt;= 0) { Category cat = categoryList.get(selectedRow); cat.setName(txtCategoryName.getText()); cat.setDescription(txtCategoryDesc.getText()); ProductsRecordApp.getService().save(cat); updateCategories(); categoryTable.getSelectionModel().clearSelection(); txtCategoryName.setText(""); txtCategoryDesc.setText(""); if(isNew){ if(JOptionPane.showConfirmDialog(this, "Data Tersimpan\nTambah data lagi?","Konfirmation",JOptionPane.YES_NO_OPTION)==0){ insertCategory(); }else{ isNew = false; refreshCategoryButton.setEnabled(true); insertCategoryButton.setEnabled(true); } } } } &amp;amp;amp;amp;lt;p style="text-align: left;"&amp;amp;amp;amp;gt;
Berikutnya kita tambakan Action untuk tombol insertCategoryButton. Klik kanan pada tombol insertCategoryButton, pilih Set Action.. dan ubahlah propertinya seperti pada gambar berikut
Kemudian ubahlah method insertCategory menjadi seperti berikut
&amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;p style="text-align: left;"&amp;amp;amp;amp;gt;@Action public void insertCategory() { isNew = true; Category newCategory = new Category(); newCategory.setName(""); newCategory.setDescription(""); ProductsRecordApp.getService().save(newCategory); updateCategories(); int selectedRow = categoryList.size()-1; categoryTable.getSelectionModel().setSelectionInterval(selectedRow, selectedRow); refreshCategoryButton.setEnabled(false); insertCategoryButton.setEnabled(false); txtCategoryName.requestFocus(); } &amp;amp;amp;amp;lt;p style="text-align: left;"&amp;amp;amp;amp;gt;
Dan yang berikutnya kita akan menambahkan Action untuk tombol refreshCategoryButton. Klik kanan pada tombol tersebut, pilih Set Action dan ubahlah sesuai gambar berikut
Selanjutnya ubahlah method refreshCategory menjadi sebagai berikut
&amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;p style="text-align: left;"&amp;amp;amp;amp;gt;@Action public void refreshCategory() { updateCategories(); categoryTable.getSelectionModel().clearSelection(); txtCategoryName.setText(""); txtCategoryDesc.setText(""); } &amp;amp;amp;amp;lt;p style="text-align: left;"&amp;amp;amp;amp;gt;
Ok sampai disini kita sudah menyelesaikan semua fungsi untuk Category. Agar bisa dijalankan, kita harus membuat menu pada frame utama yang akan memanggil frame ProductDialog. Bukalah class ProductRecordView. Pada mode design, tambahkan menu untuk File seperti pada gambar berikut
Ubahlah text untuk menu tersebut menjadi Products kemudian klik kanan pada menu Products tersebut dan pilih Set Action.. dan ubahlah sesuai gambar berikut ini
Ubahlah method showProductsDialog menjadi sebagai berikut
&amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;p style="text-align: left;"&amp;amp;amp;amp;gt;private JDialog productDialog; @Action public void showProductsDialog() { if (productDialog == null) { JFrame mainFrame = ProductsRecordApp.getApplication().getMainFrame(); productDialog = new ProductDialog(mainFrame, false); productDialog.setLocationRelativeTo(mainFrame); } ProductsRecordApp.getApplication().show(productDialog); } &amp;amp;amp;amp;lt;p style="text-align: left;"&amp;amp;amp;amp;gt;
Ok sekarang aplikasi bisa dicoba untuk dijalankan. Silahkan dicoba untuk tambah, ubah dan hapus Category. Untuk bagian product saya lanjutkan pada tulisan berikutnya.. [to be continue]
NB: Untuk source codenya bisa dichecout dari https:////hendrosteven.googlecode.com/svn/trunk/ProductRecord
7 comments November 30, 2008









