PT. Donggi Senoro LNG (DSLNG)

Web Cover DSLNG

DSLNG merupakan proyek LNG pertama di Indonesia yang dikembangkan berdasarkan Undang-Undang RI No. 22 Thaun 2001 tentang “Kegiatan Usaha Hilir”, sehingga memungkinkan pengembangan usaha yang terpisah antara kegiatan hulu (penyediaan bahan baku gas) dan kegiatan hilir (pabrik LNG).

Untuk mendukung proses monitoring performance, Aplysit ditunjuk sebagai konsultan untuk mendampingi pengembangan sistem tersebut. Project kick off telah dilaksanakan pada hari Rabu, 8 Januari 2014 bertempat di kantor DSLNG di Senayan Jakarta.

Posted in Top News | Leave a comment

PT. Pupuk Kaltim (PKT): IT Transfer Knowledge

PT. Pupuk Kalimantan Timur atau disingkat PKT (Site). PT Pupuk Kaltim adalah produsen pupuk urea terbesar di Indonesia, disamping produsen amoniak dan pupuk NPK. Pupuk Kaltim memenuhi kebutuhan pupuk domestik, baik untuk sektor tanaman pangan melalui distribusi pupuk bersubsidi, maupun non subsidi untuk sektor perkebunan dan industri. Dalam aktivitasnya, Pupuk Kaltim sangat menekankan pentingnya menjalankan sebuah industri yang ramah lingkungan dan dapat memberi nilai tambah bagi masyarakat disekitarnya. Pupuk Kaltim merupakan anak perusahaan dari PT Pupuk Indonesia (Persero).

Sebagai bagian dari pelaksanaan good corporate governance, PKT telah menerapkan manajemen risiko yang meliputi identifikasi, analisis, penilaian dan monitoring suatu risiko. Untuk mengingkatkan performa proses manajerial risiko, maka Aplysit Corp. diminta mengembangkan sebuah produk yang disebut dengan SIMERI (Sistem Informasi Manajemen Risiko). Sistem ini telah selesai dikembangkan dan sudah diimplementasikan pada lingkungan kerja PKT.

Pasca deployment sistem, dilakukan transfer knowledge oleh tim developer dari Aplysit terhadap tim IT dari PKT. Kegiatan ini telah berlangsung pada tanggal 05-10 September 2013 bertempat di gedung Aplysit Corp. Pada kegiatan yang berlangsung selama 5 hari tersebut telah dikupas tuntas teknologi (platform dan framewrork), sehingga diharapkan pihak PKT dapat melakukan pemeliharaan maupun pengembangan SIMERI pada waktu yang akan datang.

01

02

03

04

Bagi perusahaan/instansi yang memerlukan penerapakan Sistem Informasi Manajemen Risiko berbasis IT, silahkan menghubungi kami. Aplysit Corp akan membantu mulai dari requirement, business process modeling, implementasi, migration, go live, sampai dengan maintenance.

Posted in Top News | Leave a comment

Workshop Document Security

LEMSANEG (Lembaga Sandi Negara) : Workshop Document Security
Lemsaneg (lemsaneg.go.id) adalah sebuah lembaga negara yang menyelenggarakan dan merupakan pembina tunggal persandian negara dalam menjamin keamanan informasi berklasifikasi milik pemerintah atau negara serta menyajikan hasil pengupasan informasi bersandi guna turut serta menjaga keamanan nasional. Dalam menjalankan fungsi dan perannya, Lemsaneg secara terus menerus mengimplementasikan teknologi IT agar pengelolaan dan pengamanan informasi dapat dilakukan secara maksimal.

Pada tanggal 16-20 September 2013, Lemsaneg mengundang Aplysit Corp dalam memberikan dampingan konsultasi dalam pengamanan document yang diwujudkan dalam sebuah workshop. Dalam workshop tersebut telah dihasilkan suatu prototype aplikasi pengelolaan dokumen yang mengimplementasikan digital signature, timestamp, dan verifikasi.

Dengan dihasilkan prototype tersebut, maka pihak Lemsaneg diharapkan semakin memperlengkapi aplikasi yang lebih canggih dalam pengelolaan informasi nasional.
1

2

3

Posted in Top News | Leave a comment

Projects

List Projects

Posted in Uncategorized | Leave a comment

Membuat Webservice pada Visual Studio 2012 (C# .NET ver4.5)

Untuk memulainya, ikuti langkah-langkah berikut:

1. Jalankan Visual Studio 2012, lalu akan ditampilkan splash seperti gambar berikut, tunggu beberapa saat hingga muncul IDE yang lengkap.

webservice_c#_01

[Gambar 1]

Hasilnya adalah :

webservice_c#_02

[Gambar 2]

2. Buatlah sebuah solution yang baru, yaitu dengan cara: File > New >Project

webservice_c#_03

[Gambar 3]

3. Pada jendela New Project, pilihkan Visual C# > WCF Service Aplication > ganti nama project, location dan nama solution sesuai keinginan anda > klik OK

webservice_c#_04

[Gambar 4]

Maka akan terlihat seperti dibawah ini:

webservice_c#_05

[Gambar 5]

Terlihat bahwa solution terdapat 1 project dibawahnya yaitu project WCF Service Aplication yang sekaligus kita buat tadi. Kemudian jalankan dengan cara mengklik pada no. 2 pada gambar diatas.

Kemudian akan muncul pada browser seperti ini:

webservice_c#_06

[Gambar 6]

Kemudian klik Service1.svc dan akan muncul seperti dibawah.

webservice_c#_07

[Gambar 7]

Pada gambar ada link yang ditandai, ini digunakan sebagai references untuk aplikasi client.

alamat service tersebutlah yang akan diconsume oleh aplikasi lain, yang akan Anda coba pada bagian berikutnya masih pada tutorial ini.

Kemudian Keluar dari run time, dengan cara melakukan klik pada tombol kotak seperti gambar berikut:

webservice_c#_08

[Gambar 8]

4. Kemudian kita buat project client dengan cara:

1) Klik kanan pada solution yang kita buat

2) Pilih menu “Add”

3) Klik menu “New Project”

webservice_c#_09

[Gambar 9]

5. Kemudian akan muncul kotak dialog seperti dibawah.

webservice_c#_10

[Gambar 10]

Kemudian pilih “Windows Form Application” bahasa yang kita ambil adalah C#. kemudian dibagian bawah kita bisa mengganti nama project dan lokasinya. Jika sudah maka kita klik OK. Maka akan tampil seperti dibawah:

webservice_c#_11

[Gambar 11]

Bukalah Windows Explorer dan perhatikan sudah terbentuk sebuah folder yang merupakan lokasi proyek WindowsFormApplication1 seperti gambar berikut:

webservice_c#_12

[Gambar 12]

7.  Kembali ke Solution Explorer, pada WindowsFormApplication1 > Form1.cs > klik maka akan ditampilkan design editor pada bagian kanan. Tempatkan 3 teks box dan 1 button, lalu aturlah sehingga menjadi seperti berikut:

webservice_c#_13

[Gambar 13]

8. Lalu Anda harus “menghubungkan” aplikasi desktop WindowsFormApplication1 dengan web service yang berada pada alamat http://localhost:49593/Service1.svc?wsdl

Caranya, WindowsFormApplication1 > klik kanan > Add Service Reference

webservice_c#_14

[Gambar 14]

Lalu akan ditamplkan jendela Add Service Reference, kemudian klik tombol [Advanced]

webservice_c#_15

[Gambar 15]

Lalu akan ditampilkan jendela Service Reference Setting, kemudian klik tombol [Add Web Reference]

webservice_c#_16

[Gambar 16]

9. Pada jendela Add Web Reference, aturlah parameter yang digunakan seperti gambar berikut:

webservice_c#_17

[Gambar 17]

Kemudian diisikan seperti berikut:

a. Isikan URL dengan http://localhost:49593/Service1.svc?wsdl (1)

b. Klik icon panah (2)

c. Kemudian ditampilkan service dan method yang tersedia (3)

d. Isikan Web reference name: CallService (4), sebenarnya bisa saja menggunakan nama berbeda

e. Tekan tombol Add Reference (5)

webservice_c#_18

[Gambar 18]

Sebagai hasil akhirnya adalah seperti gambar berikut ini:

webservice_c#_19

[Gambar 19]

Lanjutkan ke bagian berikut untuk membuat aplikasi yang akan mengconsume web service tersebut. (dalam hal ini ini Anda akan memuat aplikasi desktop). Lakukan run (klik tombol segitiga hijau), untuk memastikan tidak ada program yang error.

10. Modifikasi file IService1.cs sehingga menjadi seperti source code berikut:

[php]
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
// TODO: Add your service operations here
[OperationContract]
String tambah(String param1, String param2);
}
// Use a data contract as illustrated in the sample below to add composite types to service operations.
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello ";
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}

[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}
[/php]

Yang Anda modifikasi adalah menambahkan perintah berikut:

  1. [OperationContract]
  2. String tambah(String param1, String param2);

11. Modifikasilah file Service1.svc.cs sehingga menjadi seperti source code berikut:

[php]
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}

public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}

public String tambah(String param1, String param2)
{
int val1 = System.Convert.ToInt32(param1);
int val2 = System.Convert.ToInt32(param2);
return String.Format("{0}", val1 + val2);
}
}
[/php]

Yang Anda modifikasi adalah menambahkan perintah berikut:

[php]
public String tambah(String param1, String param2)
{
int val1 = System.Convert.ToInt32(param1);
int val2 = System.Convert.ToInt32(param2);
return String.Format("{0}", val1 + val2);
}
[/php]

12. Modifikasilah file WindowsFormApplication1 >Form1.cs sehingga menjadi seperti source code berikut:

[php]
public partial class Form1 : Form
{
public callservice1.Service1 cap;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
cap = new callservice1.Service1();
String coba = cap.tambah(textBox1.Text, textBox2.Text);
textBox3.Text = coba;
}
}
[/php]

13. Setiap kali melakukan modifikasi pada web service maka Anda harus melakukan refresh proyek Anda caranya:

  1. Pada Solution > klik kanan > Rebuild Solution
  2. Pada WindowsFormApplication1 > Web Reference > CallService >
    Update Web References

webservice_c#_20

[Gambar 20]

webservice_c#_21

[Gambar 21]

Catatan: Pastikan Anda melakukan langkah tersebut setiap kali melakukan modifikasi source code.

14. Jalankan proyek dengan cara klik tombol Run, dan pastikan bahwa service dapat dijalankan, yaitu hingga browser menampilkan gambar berikut:

webservice_c#_22

[Gambar 22]

15. Ujicoba hasilnya, buka Windows Explorer, lalu double klik file WindowsFormApplication1 seperti gambar berikut:

webservice_c#_23

[Gambar 23]

17. Pada aplikasi TesterApp lakukan entri data lalu tekan tombol Tambah seperti gambar berikut:

webservice_c#_24

[Gambar 24]

Posted in .Net Tutorial, Other Tutorial | Leave a comment

Algoritma Dijkstra & Implementasinya

Pencarian rute terpendek termasuk ke dalam materi teori graf. Algoritma yang sangat terkenal untuk menyelesaikan persoalan ini adalah algoritma Dijkstra. Algoritma ini ditemukan oleh seorang ilmuwan komputer berkebangsaan Belanda yang bernama Edsger Dijkstra. berikut ini adalah pseudo code dari algoritma Dijkstra (Jong Jek Siang,2004). Continue reading

Posted in Algoritma Tutorial, Other Tutorial | Leave a comment

Basic RMS BlackBerry

 

RECORD MANAGEMENT STORE

Proyek ini mirip denga proyek BasicLayoutManagement, perbedaannya adalah pada cara menampilkan tombolnya. Proyek kali ini adalah untuk menampilkan menu berupa tombol yang bersifat dinamis, artinya data pada tombol tersebut akan diambil dari basis data lokal yang disimpan dengan menggunakan teknik RMS (Record Management Store)

Yang menarik pada proyek ini adalah bahwa jumlah dan jenis menu akan berubah2 sesuai denan data yang tersimpan, dan ini sangat cocok digunakan untuk menyediakan layanan yang berbeda bagi user berbeda.

Gambar berikut adalah rancangan aplikasi yang akan Anda buat.

Step 1

Buatlah project baru dengan ketentuan berikut:
a. Buat proyek baru, dan beri nama: BasicRMS
b. Buat package baru, dan bari nama: www.aplysit.com
c. Buat class baru, dan beri nama: MainMenu

Step 2

Modifikasi file MainMenu.java sehingga menjadi seperti source code berikut:

[php]/*************************************************************************
* Copyright: APLYSIT CORP. – for a better Indonesia
* Project : Basic RMS
* Address : Gedung Pusat Teknologi
* Lt. 3, RICE PT. INTI
* Bandung 40253, West Java, Indonesia
* Website : www.aplysit.com
* Facebook : Aplysit Bandung
* Facebook : Aplysit Medan
* Author : Ivan Michael Siregar
* Phone : +62 22 61530230
* 081809456734
* Desc : This file to manage database
**************************************************************************/
package www.aplysit.com;

import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.MainScreen;

//public class FontStyle extends UiApplication implements FieldChangeListener {
public class MainMenu extends UiApplication implements FieldChangeListener {

//Deklarasikan variabel
final int buttonWidth = 1000;

public static void main(String[] args)
{
MainMenu theApp = new MainMenu();
theApp.enterEventDispatcher();

}

public MainMenu() {

//Membuat objek screen utama beranama baseScreen
final MainScreen baseScreen = new MainScreen();

//Membuat tombol Lihat Data
ButtonField dataview = new ButtonField("MELIHAT DATA", ButtonField.CONSUME_CLICK);
dataview.setMinimalWidth(buttonWidth);

//Membuat tombol Isi Data
ButtonField datafill = new ButtonField("MENGISI DATA", ButtonField.CONSUME_CLICK);
datafill.setMinimalWidth(buttonWidth);

//Memasukkan seluruh komponen ke atas baseScreen
baseScreen.add(dataview);
baseScreen.add(datafill);

//Menempatkan baseScreen ke dalam layar
pushScreen(baseScreen);

dataview.setChangeListener(new FieldChangeListener() {

public void fieldChanged(Field field, int context) {
Dialog.inform("Data View");
//pushScreen(new DataView());
}
});

datafill.setChangeListener(new FieldChangeListener() {

public void fieldChanged(Field field, int context) {
Dialog.inform("Data Fill");
//pushScreen(new DataFill());
}
});
}

public void fieldChanged(Field field, int context) {
// TODO Auto-generated method stub
}
}
[/php]

Step 3

Jalankan proyek tersebut, maka hasilnya adalah seperti gambar berikut:

 

Hingga saat ini Anda telah berhasil membuat sebuh menu pada satu form, namun hanya sekadar melakukan handle terhadap klik menu tersebut dengan cara menampilkan pesan saja. Lanjutkan ke langkah berikutnya.

Step 4

Buatlah sebuah file baru bernama Global.java lalu modifikasilah sehingga menjadi seperti source code berikut:

[php]/*************************************************************************
* Copyright: APLYSIT CORP. – for a better Indonesia
* Project : Basic RMS
* Address : Gedung Pusat Teknologi
* Lt. 3, RICE PT. INTI
* Bandung 40253, West Java, Indonesia
* Website : www.aplysit.com
* Facebook : Aplysit Bandung
* Facebook : Aplysit Medan
* Author : Ivan Michael Siregar
* Phone : +62 22 61530230
* 081809456734
* Desc : This file to manage data global
**************************************************************************/

package www.aplysit.com;

import java.io.IOException;

import javax.microedition.io.HttpConnection;

import net.rim.device.api.io.transport.ConnectionDescriptor;
import net.rim.device.api.io.transport.ConnectionFactory;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.FontFamily;
import net.rim.device.api.ui.Ui;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.Dialog;

public class Global {

static int buttonWidth = 1000;
static int choiceRenungan;

static int buttonPadding = 5;
static long dbRenungan = 0xdec6a67096f802cL;

private int deviceHeightMain = 100;
private int deviceHeightSub0 = 100; //banner
private int deviceHeightSub1 = 45; //tombol atas KEMBALI KE MENU UTAMA
private int deviceHeightSub2 = 0; //isi
private int deviceHeightSub3 = 20; //footer

public Global() {

}

public void setChoiceRenungan(int chc) {
choiceRenungan = chc;
}

public int getChoiceRenungan() {
return choiceRenungan;
}

void setButtonPadding(int chc) {
buttonPadding = chc;
}

public int getButtonPadding() {
return buttonPadding;
}

public int getButtonWidth() {
return this.buttonWidth;
}

void setButtonWidth(int chc) {
this.buttonWidth = chc;
}

public int getDeviceHeightMain() {
return this.deviceHeightMain;
}

public int getDeviceHeightSub0() {
return this.deviceHeightSub0;
}

public int getDeviceHeightSub1() {
return this.deviceHeightSub1;
}

public int getDeviceHeightSub2() {
return this.deviceHeightSub2;
}

public int getDeviceHeightSub3() {
return this.deviceHeightSub3;
}

public Font getJudulFont() {
//====== { bagian ini untuk menspesifikasikan font yang akan digunakan pada title
FontFamily timesNewRomanFamily = null;
try
{
timesNewRomanFamily = FontFamily.forName("Times New Roman");
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}

Font titleFont = timesNewRomanFamily.getFont(Font.PLAIN, 8, Ui.UNITS_pt);

return titleFont;
//====== } bagian ini untuk menspesifikasikan font yang akan digunakan pada title
}

public Font getButtonFont() {
//====== { bagian ini untuk menspesifikasikan font yang akan digunakan pada button
FontFamily alphaSerifFamily = null;
try
{
alphaSerifFamily = FontFamily.forName("bbalpha serif");
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}

Font buttonFont = alphaSerifFamily.getFont(Font.PLAIN, 6, Ui.UNITS_pt);

return buttonFont;
//====== } bagian ini untuk menspesifikasikan font yang akan digunakan pada button
}

public Font getButtonFontBold() {
//====== { bagian ini untuk menspesifikasikan font yang akan digunakan pada button
FontFamily alphaSerifFamily = null;
try
{
alphaSerifFamily = FontFamily.forName("bbalpha serif");
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}

Font buttonFont = alphaSerifFamily.getFont(Font.BOLD, 7, Ui.UNITS_pt);

return buttonFont;
//====== } bagian ini untuk menspesifikasikan font yang akan digunakan pada button
}

}
[/php]

File Global.java akan menyimpan konfigurasi yang digunakan oleh aplikasi
Apabila Anda menjalankan kembali aplikasi tersebut, maka tidak aka nada perubahan apapun pada tampilan yang dihasilkan.

Step 5

Kemudian buatlah lagi sebuah file baru bernama Db.java yang akan digunakan untuk menangani penyimpanan data.

[php]/*************************************************************************
* Copyright: APLYSIT CORP. – for a better Indonesia
* Project : Basic RMS
* Address : Gedung Pusat Teknologi
* Lt. 3, RICE PT. INTI
* Bandung 40253, West Java, Indonesia
* Website : www.aplysit.com
* Facebook : Aplysit Bandung
* Facebook : Aplysit Medan
* Author : Ivan Michael Siregar
* Phone : +62 22 61530230
* 081809456734
* Desc : This file to manage database
**************************************************************************/

package www.aplysit.com;
import www.aplysit.com.*;

import java.util.Vector;
import net.rim.device.api.system.PersistentObject;
import net.rim.device.api.system.PersistentStore;
import net.rim.device.api.ui.MenuItem;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.util.Persistable;

public class Db {

/*declaring vector*/
private static Vector _dataRenungan;

/*declaring persistent object*/
private static PersistentObject storeRenungan;

//======== declare variables here
String getIdServer;
String getJudul;
String getPengarang;
String getGambar;
String getIsi;
String getFlag;
//String getIndex;

public int[] arrIndexRenungan;

Global global = new Global();

public String getTheItemRenungan(int chc) {
//synchronizing thread
synchronized (storeRenungan)
{
String result = "";
//getting contents of the persistent object
_dataRenungan = (Vector) storeRenungan.getContents();

//checking for empty object
if (!_dataRenungan.isEmpty())
{
StoreInfo info = (StoreInfo)_dataRenungan.elementAt(global.getChoiceRenungan());
switch (chc) {
case 0:
result = (info.getElement(StoreInfo.IDSERVER));
break;
case 1:
result = (info.getElement(StoreInfo.JUDUL));
break;
case 2:
result = (info.getElement(StoreInfo.PENGARANG));
break;
case 3:
result = (info.getElement(StoreInfo.GAMBAR));
break;
case 4:
result= (info.getElement(StoreInfo.ISI));
break;
case 5:
result= (info.getElement(StoreInfo.FLAG));
break;
}
return (result);
}
else {
return ("");
}

}
}

//coding for persistent store RENUNGAN
static {

storeRenungan = PersistentStore.getPersistentObject(Global.dbRenungan);
synchronized (storeRenungan) {
if (storeRenungan.getContents() == null) {
storeRenungan.setContents(new Vector());
storeRenungan.commit();
}
}

_dataRenungan = new Vector();
_dataRenungan = (Vector) storeRenungan.getContents();

}

//new class store info implementing persistable
private static final class StoreInfo implements Persistable
{
//declaring variables
private Vector _elements;
public static final int IDSERVER = 0;
public static final int JUDUL = 1;
public static final int PENGARANG = 2;
public static final int GAMBAR = 3;
public static final int ISI = 4;
public static final int FLAG = 5;

public StoreInfo()
{
_elements = new Vector(6);
for (int i = 0; i < _elements.capacity(); ++i)
{
_elements.addElement(new String(""));
}
}

public String getElement(int id)
{
return (String) _elements.elementAt(id);
}

public void setElement(int id, String value)
{
_elements.setElementAt(value, id);
}
}

//{ ===================================================================

public void saveContent1()
{
//creating an object of inner class StoreInfo
StoreInfo info = new StoreInfo();
TheContent tc1 = new TheContent();

info.setElement(StoreInfo.IDSERVER, "1");
info.setElement(StoreInfo.JUDUL, "Judul 1");
info.setElement(StoreInfo.PENGARANG, "Pengarang 1");
info.setElement(StoreInfo.GAMBAR, "logo.jpg");
info.setElement(StoreInfo.ISI, tc1.getContent1());
info.setElement(StoreInfo.FLAG, "1");

_dataRenungan.addElement(info);

//synchronizing the thread
synchronized (storeRenungan)
{
storeRenungan.setContents(_dataRenungan);
storeRenungan.commit();
}

}

//} ===================================================================
public String[] getJudulRenungan() {

final String[] arrJudul;

//synchronizing thread
synchronized (storeRenungan)
{
arrJudul = new String[_dataRenungan.size()];
arrIndexRenungan = new int[_dataRenungan.size()];

//checking for empty object
if (!_dataRenungan.isEmpty())
{

for (int i = 0; i < _dataRenungan.size(); i++) {
//create a new object of Store Info class
StoreInfo info = (StoreInfo)_dataRenungan.elementAt(i);
getJudul = (info.getElement(StoreInfo.JUDUL));
arrJudul[i] = getJudul;
arrIndexRenungan[i] = i;

}
}
}

return arrJudul;
}

public int[] getIndexRenungan() {
return arrIndexRenungan;
}

public boolean setFlag() {

//Dialog.alert(global.getChoiceRenungan() + "");
synchronized (storeRenungan)
{
if (!_dataRenungan.isEmpty())
{
StoreInfo info = (StoreInfo)_dataRenungan.elementAt(global.getChoiceRenungan());
info.setElement(5, "0");
storeRenungan.commit();

return (true);
}
else {
return (false);
}

}
}

public void getItem()
{
//synchronizing thread
synchronized (storeRenungan)
{
//getting contents of the persistent object
_dataRenungan = (Vector) storeRenungan.getContents();

//checking for empty object
if (!_dataRenungan.isEmpty())
{
for (int i = 0; i < _dataRenungan.size(); i++) {
//if not empty
//create a new object of Store Info class
StoreInfo info = (StoreInfo)_dataRenungan.elementAt(i);
getIdServer = (info.getElement(StoreInfo.IDSERVER));
getJudul = (info.getElement(StoreInfo.JUDUL));
getPengarang = (info.getElement(StoreInfo.PENGARANG));
getGambar = (info.getElement(StoreInfo.GAMBAR));
getIsi = (info.getElement(StoreInfo.ISI));
getFlag = (info.getElement(StoreInfo.FLAG));

show();
}
}
}
}

public void show()
{
Dialog.alert("ID SERVER = " +getIdServer+ "\nJUDUL = "+getJudul+"\nPENGARANG = : "+getPengarang+"\nGAMBAR = "+getGambar+ "\nFLAG =" + getFlag);
}

}
[/php]

Step 6

Selanjutnya, buatlah sebuah file DataView.java yang akan digunakan untuk menampilkan tombol-tombol yang datanya bersumber dari RMS yg telah dibuat pada file Db.java sebelumnya.

Lalu modifikasilah agar source codenya menjadi seperti berikut ini:

[php]/*************************************************************************
* Copyright: APLYSIT CORP. – for a better Indonesia
* Project : Basic RMS
* Address : Gedung Pusat Teknologi
* Lt. 3, RICE PT. INTI
* Bandung 40253, West Java, Indonesia
* Website : www.aplysit.com
* Facebook : Aplysit Bandung
* Facebook : Aplysit Medan
* Author : Ivan Michael Siregar
* Phone : +62 22 61530230
* 081809456734
* Desc : This file to view data from FMS
**************************************************************************/

package www.aplysit.com;

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Display;
import net.rim.device.api.system.EncodedImage;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;

public class DataView extends MainScreen implements FieldChangeListener {

Global global = new Global();
Db dbase = new Db();

//Deklarasikan variabel
final int buttonWidth = 1000;

//Siapkah section yang membagi form
private VerticalFieldManager mainManager; //untuk header
private VerticalFieldManager subManager0; //untuk banner yg mengoverlay header
private VerticalFieldManager subManager1; //untuk tombol Main Menu
private VerticalFieldManager subManager2; //untuk tombi isi
private VerticalFieldManager subManager3; //untuk footer

//Siapkan gambar untuk Header dan Footer, simpan pada folder res
private Bitmap _backgroundBitmap = Bitmap.getBitmapResource ("header.png");
private Bitmap _backgroundBitmapFooter = Bitmap.getBitmapResource ("footer.png");

//ini untuk banner
private int deviceWidthMain = Display.getWidth();
private int deviceHeightMain = 100;

//ini untuk menu overlay pada banner
private int deviceWidthSub0 = Display.getWidth();
private int deviceHeightSub0 = 100;

//ini untuk menu overlay pada tombol utama
private int deviceWidthSub1 = Display.getWidth();
private int deviceHeightSub1 = 45;

//ini untuk bagian isi
private int deviceWidthSub2 = Display.getWidth();
private int deviceHeightSub2 = Display.getHeight() – deviceHeightSub0 – deviceHeightSub1 – 20;

//ini untuk footer
private int deviceWidthSub3 = Display.getWidth();
private int deviceHeightSub3 = 20;

public DataView(){

super(NO_VERTICAL_SCROLL);

/**************************************************************
{BEGIN: Mengatur Section Untuk Tampilan
***************************************************************/

//===== main manager
//Pada main manager ini ditempatkan sebuah gambar sbg header

mainManager = new VerticalFieldManager(
Manager.NO_VERTICAL_SCROLL |
Manager.NO_VERTICAL_SCROLLBAR)
{
public void paint(Graphics graphics)
{
graphics.clear();
graphics.drawBitmap(0, 0, deviceWidthMain,
deviceHeightMain, _backgroundBitmap, 0, 0);
super.paint(graphics);
}
};

//===== sub manager 0 sebagai overlay header
subManager0 = new VerticalFieldManager(
Manager.VERTICAL_SCROLL |
Manager.VERTICAL_SCROLLBAR )
{
protected void sublayout(int maxWidth, int maxHeight)
{
int displayWidth = deviceWidthSub0; //atur lebar
int displayHeight = deviceHeightSub0; //atur tinggi

super.sublayout( displayWidth, displayHeight);
setExtent( displayWidth, displayHeight);
}
};

//===== sub manager 1 sebagai tombol BACK TO MAIN MENU
subManager1 = new VerticalFieldManager(
Manager.VERTICAL_SCROLL |
Manager.VERTICAL_SCROLLBAR )
{
protected void sublayout(int maxWidth, int maxHeight)
{
int displayWidth = deviceWidthSub1;
int displayHeight = deviceHeightSub1;

super.sublayout( displayWidth, displayHeight);
setExtent( displayWidth, displayHeight);
}
};

//===== sub manager 2 sebagai bagian utama, seperti list of title
subManager2 = new VerticalFieldManager(

Manager.VERTICAL_SCROLL |
Manager.VERTICAL_SCROLLBAR )
{
protected void sublayout(int maxWidth, int maxHeight)
{
int displayWidth = deviceWidthSub2;
int displayHeight = deviceHeightSub2;

super.sublayout( displayWidth, displayHeight);
setExtent( displayWidth, displayHeight);
}
};

//===== sub manager 3 sebagai FOOTER
subManager3 = new VerticalFieldManager(
Manager.VERTICAL_SCROLL |
Manager.VERTICAL_SCROLLBAR | Manager.BOTTOMMOST )
{
protected void sublayout(int maxWidth, int maxHeight)
{
int displayWidth = deviceWidthSub3;
int displayHeight = deviceHeightSub3;

super.sublayout( displayWidth, displayHeight);
setExtent( displayWidth, displayHeight);
}
};

/**************************************************************
}END: Mengatur Section Untuk Tampilan
***************************************************************/

//Membuat objek screen utama beranama baseScreen
//final MainScreen baseScreen = new MainScreen();

//Menentukan judul pada form
//baseScreen.setTitle("Aplysit Corp. – Mengatur Layout");

/**************************************************************
{BEGIN: Menyiapkan komponen pada masing-masing Sub Manager
***************************************************************/
//===== komponen pada subManager0
//Tidak ada komponen yang perlu ditempatkan pada header

//===== komponen pada subManager1
ButtonField menuutama = new ButtonField("MENU UTAMA", ButtonField.CONSUME_CLICK);
menuutama.setMinimalWidth(buttonWidth);
menuutama.setLabel("MENU UTAMA");

//===== subManager2:

String[] judulRenungan = dbase.getJudulRenungan();
int[] indexRenungan = dbase.getIndexRenungan();

for (int i2=0; i2 < dbase.arrIndexRenungan.length; i2++){
final ButtonField renungan = new ButtonField(judulRenungan[i2] +" "+ indexRenungan[i2], ButtonField.CONSUME_CLICK);
renungan.setMargin(0, global.getButtonPadding(), 0, global.getButtonPadding());
renungan.setMinimalWidth(global.getButtonWidth());
renungan.setMinimalWidth(global.getButtonWidth());
renungan.setFont(global.getButtonFont());

final int idx = indexRenungan[i2];

//ambil nilai IDSRVER
String flagRenungan = dbase.getTheItemRenungan(idx);

if (flagRenungan.equals("0")) {
//Dialog.alert(idx + " PLAIN");
renungan.setFont(global.getButtonFont());//) .setFont(Font.BOLD, 6, Ui.UNITS_pt);
//Font buttonFont = alphaSerifFamily.getFont(Font.PLAIN, 6, Ui.UNITS_pt);
}
else {
renungan.setFont(global.getButtonFontBold());
//Dialog.alert(idx + " BOLD");
}

subManager2.add(renungan);
renungan.setChangeListener(new FieldChangeListener() {

public void fieldChanged(Field field, int context) {
// TODO Auto-generated method stub

global.setChoiceRenungan(idx);
Dialog.alert("Isinya = " + dbase.getTheItemRenungan(4));
//getUiEngine().pushScreen(new RenunganDetail());
}
});

}

/*
//===== komponen pada subManager2
//Membuat tombol Headline
ButtonField headline = new ButtonField("HEADLINE", ButtonField.CONSUME_CLICK);
headline.setMinimalWidth(buttonWidth);

//Membuat tombol Politik
ButtonField politik = new ButtonField("POLITIK", ButtonField.CONSUME_CLICK);
politik.setMinimalWidth(buttonWidth);

//Membuat tombol Olahraga
ButtonField olahraga = new ButtonField("OLAHRAGA", ButtonField.CONSUME_CLICK);
olahraga.setMinimalWidth(buttonWidth);

//Membuat tombol Budaya
ButtonField budaya = new ButtonField("BUDAYA", ButtonField.CONSUME_CLICK);
budaya.setMinimalWidth(buttonWidth);

//Membuat tombol Ekonomi
ButtonField ekonomi = new ButtonField("EKONOMI", ButtonField.CONSUME_CLICK);
ekonomi.setMinimalWidth(buttonWidth);

//Membuat tombol Teknologi
ButtonField teknologi = new ButtonField("TEKNOLOGI", ButtonField.CONSUME_CLICK);
teknologi.setMinimalWidth(buttonWidth);

//Membuat tombol Sosialita
ButtonField sosialita = new ButtonField("SOSIALITA", ButtonField.CONSUME_CLICK);
sosialita.setMinimalWidth(buttonWidth);

//Membuat tombol Kuliner
ButtonField kuliner = new ButtonField("KULINER", ButtonField.CONSUME_CLICK);
kuliner.setMinimalWidth(buttonWidth);

//Membuat tombol Peristiwa
ButtonField peristiwa = new ButtonField("PERISTIWA", ButtonField.CONSUME_CLICK);
peristiwa.setMinimalWidth(buttonWidth);

//Membuat tombol Lowongan
ButtonField lowongan = new ButtonField("LOWONGAN", ButtonField.CONSUME_CLICK);
lowongan.setMinimalWidth(buttonWidth);

//Membuat tombol Konfigurasi
ButtonField konfigurasi = new ButtonField("KONFIGURASI", ButtonField.CONSUME_CLICK);
konfigurasi.setMinimalWidth(buttonWidth);

*/

//Membuat tombol Berbagi
ButtonField berbagi = new ButtonField("BERBAGI", ButtonField.CONSUME_CLICK);
berbagi.setMinimalWidth(buttonWidth);
berbagi.setLabel("BERBAGI");

//===== komponen pada subManager3
Bitmap bitmap = EncodedImage.getEncodedImageResource("footer.png").getBitmap();
BitmapField imageFooter = new BitmapField(bitmap);

/**************************************************************
}END: Menyiapkan komponen pada masing-masing Sub Manager
***************************************************************/

/**************************************************************
{BEGIN: Menempatkan seluruh komponen pada SubManager yg bersesuaian
***************************************************************/
//===== subManager0: Tidak ada komponen yg perlu ditempatkan

//===== subManager1: Mengatur Tombol Utama
subManager1.add(menuutama);

//===== subManager2: Mengatur Tombol Menu
/*
subManager2.add(headline);
subManager2.add(politik);
subManager2.add(olahraga);
subManager2.add(budaya);
subManager2.add(ekonomi);
subManager2.add(teknologi);
subManager2.add(sosialita);
subManager2.add(kuliner);
subManager2.add(peristiwa);
subManager2.add(lowongan);

subManager2.add(konfigurasi);
*/

subManager2.add(berbagi);
//===== subManager3: Footer
subManager3.add(imageFooter);

/**************************************************************
}END: Menempatkan seluruh komponen pada SubManager yg bersesuaian
***************************************************************/

/**************************************************************
{BEGIN: Menempatkan seluruh SubManager pada MainManager
***************************************************************/

mainManager.add(subManager0);
mainManager.add(subManager1);
mainManager.add(subManager2);
mainManager.add(subManager3);

/**************************************************************
}END: Menempatkan seluruh SubManager pada MainManager
***************************************************************/

//Menempatkan mainManager ke dalam layar
this.add(mainManager);

menuutama.setChangeListener(new FieldChangeListener() {

public void fieldChanged(Field field, int context) {
Dialog.alert("Halaman Menu Utama sedang dalam pengembangan");
}
});

berbagi.setChangeListener(new FieldChangeListener() {

public void fieldChanged(Field field, int context) {
Dialog.alert("Halaman Berbagi sedang dalam pengembangan");
}
});

}

public void fieldChanged(Field field, int context) {
// TODO Auto-generated method stub

}
}
[/php]

Perhatikan bahwa beberapa perintah yang ditempatkan pada tanda /* ……. */ adalah bagian program yang tidak ikut dieksekusi. Bagian ini sengaja dibuat agar pembaca dapat memahami bahwa file ini pada prinsipnya sama seperti file yang terdapat pada proyek BasicLayoutManagement

Jangan lupa untuk memodifikasi file MainMenu.java, yaitu pada baris 60an, yang sebelumnya seperti ini:

[php]public void fieldChanged(Field field, int context) {
Dialog.inform("Data View");
//pushScreen(new DataView());
}
[/php]

Modifikasi menjadi seperi ini:

[php]public void fieldChanged(Field field, int context) {
Dialog.inform("Data View");
pushScreen(new DataView());
}
[/php]

Tujuannya agalah agar pada saat tombol Melihat Data di klik, maka secara otomatis akan ditampilkan form DataView.java

Lalu cobalah menjalankan programnya, maka Anda akan melihat tampilkan seperti berikut:

Terlihat bahwa tombol yang tampil adalah tombol yang memang disediakan pada file DataView.java dan belum ada tombol lainnya selain daripada kedua tombol tersebut.

Step 7

Selanjutnya, buatlah sebuah file DataFill.java yang akan untuk mengisi data ke dalam RMS, dan selanjutnya data tersebut akan dimanfaatkan sebagai nama tombol yang akan ditampilkan pada file DataView.java

Lalu modifikasilah source codenya menjadi seperti berikut:

[php]/*************************************************************************
* Copyright: APLYSIT CORP. – for a better Indonesia
* Project : Basic RMS
* Address : Gedung Pusat Teknologi
* Lt. 3, RICE PT. INTI
* Bandung 40253, West Java, Indonesia
* Website : www.aplysit.com
* Facebook : Aplysit Bandung
* Facebook : Aplysit Medan
* Author : Ivan Michael Siregar
* Phone : +62 22 61530230
* 081809456734
* Desc : This file to fill data FMS
**************************************************************************/

package www.aplysit.com;

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Display;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;

public class DataFill extends MainScreen implements FieldChangeListener {

Global global = new Global();
Db dbase = new Db();

//Deklarasikan variabel
final int buttonWidth = 1000;

//Siapkah section yang membagi form
private VerticalFieldManager mainManager; //untuk header
private VerticalFieldManager subManager0; //untuk banner yg mengoverlay header
private VerticalFieldManager subManager1; //untuk tombol Main Menu
private VerticalFieldManager subManager2; //untuk tombi isi
private VerticalFieldManager subManager3; //untuk footer

//Siapkan gambar untuk Header dan Footer, simpan pada folder res
private Bitmap _backgroundBitmap = Bitmap.getBitmapResource ("header.png");
private Bitmap _backgroundBitmapFooter = Bitmap.getBitmapResource ("footer.png");

//ini untuk banner
private int deviceWidthMain = Display.getWidth();
private int deviceHeightMain = 100;

//ini untuk menu overlay pada banner
private int deviceWidthSub0 = Display.getWidth();
private int deviceHeightSub0 = 100;

//ini untuk menu overlay pada tombol utama
private int deviceWidthSub1 = Display.getWidth();
private int deviceHeightSub1 = 45;

//ini untuk bagian isi
private int deviceWidthSub2 = Display.getWidth();
private int deviceHeightSub2 = Display.getHeight() – deviceHeightSub0 – deviceHeightSub1 – 20;

//ini untuk footer
private int deviceWidthSub3 = Display.getWidth();
private int deviceHeightSub3 = 20;

public DataFill(){

//Membuat tombol Lihat Data
ButtonField backtomainmenu = new ButtonField("KEMBALI KE MENU UTAMA", ButtonField.CONSUME_CLICK);
backtomainmenu.setMinimalWidth(buttonWidth);

//Membuat tombol Isi Data
ButtonField datafill = new ButtonField("ISI SEKARANG", ButtonField.CONSUME_CLICK);
datafill.setMinimalWidth(buttonWidth);

//Memasukkan seluruh komponen ke atas baseScreen
this.add(backtomainmenu);
this.add(datafill);

backtomainmenu.setChangeListener(new FieldChangeListener() {

public void fieldChanged(Field field, int context) {
//Dialog.inform("Data View");
//pushScreen(new MainMenu());
getUiEngine().pushScreen(new DataView());
}
});

datafill.setChangeListener(new FieldChangeListener() {

public void fieldChanged(Field field, int context) {
//Dialog.inform("Data Fill");
dbase.saveContent1();
//pushScreen(new DataFill());
}
});
}

public void fieldChanged(Field field, int context) {
// TODO Auto-generated method stub

}
}
[/php]

Jangan lupa untuk memodifikasi file MainMenu.java, yaitu pada baris 70an, yang sebelumnya seperti ini:

[php]public void fieldChanged(Field field, int context) {
Dialog.inform("Data Fill");
//pushScreen(new DataFill());
}
[/php]

Modifikasi menjadi seperi ini:

[php]public void fieldChanged(Field field, int context) {
Dialog.inform("Data Fill");
pushScreen(new DataFill());
}
[/php]

Tujuannya agalah agar pada saat tombol Mengisi Data di klik, maka secara otomatis akan berpindah ke form DataFill.java yang baru saja Anda buat.

Step 8

Selanjutnya, buatlah sebuah file TheContent.java yang akan menyediakan isi dari data yang akan disimpan pada RMS, yaitu pada saat tombol Mengisi Data diklik.

Lalu modifikasilah agar source codenya menjadi seperti berikut ini:

[php]/*************************************************************************
* Religion Mobile Community (RMC)
* Copyright: CV. APLYSIT
* Address : Jl. Ir. H. Djuanda (Dago) 109
* Bandung, West Java, Indonesia
* Website : www.aplysit.com
* Facebook : Aplysit Bandung
* Facebook : Aplysit Medan
* Email : info@aplysit.com
* Phone : +62 22 61530230
* +62 61 8215413
* Desc : this file to manage content, just for trial
**************************************************************************/

package www.aplysit.com;

import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.FontFamily;
import net.rim.device.api.ui.Ui;

public class TheContent {

private String isi;

public TheContent() {

}

public String getContent1() {
isi = "Jumlah manusia di dunia ini sungguh banyak. Miliaran orang menghembuskan nafasnya setiap hari. Tapi, apakah kita semua sudah menentukan apa tujuan hidup kita? Sudah kita pastikan untuk apa kita bernafas setiap hari? Jumlah manusia di dunia ini sungguh banyak. Miliaran orang menghembuskan nafasnya setiap hari. Tapi, apakah kita semua sudah menentukan apa tujuan hidup kita? Sudah kita pastikan untuk apa kita bernafas setiap hari? ";
return isi;
}

public String getContent2() {
isi = "Jangan-jangan kita hidup hanya untuk menghabiskan umur yang diberikan Tuhan saja. Bagaimana dengan anda? Anda sudah tentukan tujuan hidup anda? Syukurlah kalau sudah. Dan, saya berdoa semoga tujuan anda tercapai. Jangan-jangan kita hidup hanya untuk menghabiskan umur yang diberikan Tuhan saja. Bagaimana dengan anda? Anda sudah tentukan tujuan hidup anda? Syukurlah kalau sudah. Dan, saya berdoa semoga tujuan anda tercapai.";
return isi;
}

public String getContent3() {
isi = "Kata orang tua, hidup di dunia itu cuma sebentar. Saking sebentarnya, ibarat orang mampir minum. Sayang kalau waktu yang cuma sebentar ini tak berarti. Tapi, tak semua orang bisa dengan mudah menentukan apa yang ia tuju dalam hidupnya. Kita semua mesti melalui perjalanan yang panjang. Kata orang tua, hidup di dunia itu cuma sebentar. Saking sebentarnya, ibarat orang mampir minum. Sayang kalau waktu yang cuma sebentar ini tak berarti. Tapi, tak semua orang bisa dengan mudah menentukan apa yang ia tuju dalam hidupnya. Kita semua mesti melalui perjalanan yang panjang. ";
return isi;
}

public String getContent4() {
isi = "Dan, mungkin berliku-liku. Baru kita menemukan apa sebenarnya yang kita cari dalam umur yang pendek ini. Tujuan hidup bukan ambisi, tapi lebih pada sebuah jati diri. Ketika anda sudah menentukan apa yang anda tuju, ya itulah diri anda. Untuk hal itulah anda hidup. Dan, mungkin berliku-liku. Baru kita menemukan apa sebenarnya yang kita cari dalam umur yang pendek ini. Tujuan hidup bukan ambisi, tapi lebih pada sebuah jati diri. Ketika anda sudah menentukan apa yang anda tuju, ya itulah diri anda. Untuk hal itulah anda hidup. ";
return isi;
}

public String getContent5() {
isi = "Mungkin anda berpendapat, ”Ah! Buat apa merenung-renung memikirkan tujuan hidup. Menghabiskan waktu saja. Lebih baik kita produktif dan mendapat sesuatu yang lebih konkret.” Itu hak anda. Tapi, coba pikirkan sebentar. Apakah anda termasuk orang yang percaya kalau hidup itu penuh arti? Life is meaningful? Kalau anda percaya hidup anda punya arti, punya makna, so apapun yang anda lakukan juga pasti bermakna. Okay, daripada berputar-putar dan membuat anda bingung dengan berbagai pertanyaan yang saya ajukan, lebih baik kita bahas bagaimana cara kita bisa menemukan tujuan hidup kita. Setuju? Saya yakin, anda tidak bisa serta merta mendapatkan jawaban ketika saya tanya, apa tujuan hidup anda? Cara di bawah ini saya dapatkan secara tidak sengaja. Beberapa waktu lalu saya iseng surfing dan mendapatkan artikel menarik. Dan, saya temukan cara menemukan tujuan hidup anda hanya dalam 4 langkah. Anda siap? 1. Ambil secarik kertas kosong atau buka laptop. Bisa juga hidupkan PC. Buat file. 2. Jangan lupa, di bagian atas kertas anda tuliskan judul “apa tujuan hidup saya?” 3. Tuliskan apa saja yang anda tuju dalam hidup anda. Atau, jika anda ingin lebih cepat, buka laptop dan mulai menulis. Misal, no 1 tujuan hidup anda ingin kaya, no 2. anda ingin punya istri 4, no 3 anda ingin keliling dunia. Terus tuliskan apa yang anda mau. 4. Jangan berhenti menulis semua yang anda inginkan sampai anda menemukan jawaban yang membuat anda meneteskan air mata. Ya, jangan berhenti sampai anda menangis. Jawaban yang anda temukan dalam keadaan menangis itulah yang anda cari dalam hidup anda. Siapapun anda, apapun pekerjaan anda, apapun jabatan anda, saya yakin anda perlu waktu untuk bisa meneteskan air mata. Entah anda presiden, pengusaha sukses, karyawan, orang kaya, orang miskin, temukan hal itu sampai anda menangis. Banyaknya waktu yang kita perlukan tak sama. Ada yang 15 menit menulis sudah menangis. Ada yang 1 jam baru bisa menangis, atau bahkan 3 jam baru bisa menemukan apa yang ia cari dalam hidup. Dan, daftar jawaban setiap orang juga berbeda- beda. Ada yang sudah mendapatkan tujuan hidupnya pada urutan no 90, ada juga yang urutan 200 baru bisa menangis. Semua ini tergantung keadaan pikiran masing-masing. Juga, tergantung pada memori setiap orang. Kita pasti mengalami pengalaman hidup yang berbeda-beda. Dan, pengalaman ini pula yang membuat tujuan hidup kita berbeda dari yang lain. Sekarang anda mungkin bertanya, kenapa saya menulis artikel ini? Adakah hubungannya dengan bisnis internet? Atau saya mau alih profesi jadi guru spiritual? :-) ederhana saja alasannya. Tujuan hidup anda akan mengawal kehidupan anda sehari-hari. Tujuan hidup anda akan mempengaruhi keseharian anda. Apa yang anda lakukan mau tidak mau pasti mengarah pada apa yang anda tuju. Itulah pentingnya memiliki sebuah tujuan dalam hidup. Ada satu titik yang kita tuju, ada sebuah perjalanan yang kita lalui, ada sebuah skenario yang mesti kita lakoni. Dan, semua itu anda sendiri dalangnya. Anda sendiri sutradaranya. Semoga maksud saya bisa anda pahami. Bisnis anda juga harus memiliki tujuan. Jangan biarkan waktu berlalu tanpa ada skenario besar untuk kemajuan dan perkembangan bisnis anda. Tidak ada orang yang merencanakan kegagalan, maka anda perlu memantapkan juga tujuan bisnis anda. Agar anda mudah melangkah, dan agar langkah anda tertata, terencana. Bisnis, karir, pekerjaan, seringkali menjadi bagian paling penting dalam hidup seseorang. Mereka yang mampu menata karir mereka dengan baik biasanya lebih bisa menata kehidupan mereka. Mereka yang mendapatkan pekerjaan “impian” mereka lebih bisa berkata kutahu yang kumau.";
return isi;
}
}
[/php]

Step 9

Lakukan ujicoba, caranya klik tombol Mengisi Data, lalu kembali ke Menu Utama, lalu klik tombol Melihat Data, lalu klik tombol

 

 

Anda perlu menekan key board panah atas dan panah bawah untuk melakukan scroll pada pesan yang terlihat, karena pesannya terlalu panjang untuk ditampilkan pada 1 halaman.

Source code lengkap dapat di download di:
www.aplysit.com/kotakbrankas/BasicRMS.rar

Apabila Anda menyukai tutorial ini, jangan lupa member Like dan melakukan Share, agar ilmu pengetahuan ditempatkan pada posisi yang mulia, dan manfaatkan turut dirasakan oleh lebih banyak orang.

 

Posted in Blackberry Tutorial, Other Tutorial | Leave a comment

Image Array

“empty”

Posted in Matlab Tutorial, Other Tutorial | Leave a comment

Lingkungan Kerja Matlab

“empty”

Posted in Matlab Tutorial, Other Tutorial | Leave a comment

Autofill Spinner JSON

Tutorial ini sifatnya sangat fundamental namun memuat hal prinsip dalam pemrograman Android. Sengaja diberi judul “Autofill JSON”, karena pada tutorial ini akan dibahas tentang cara mengisi data pada beberapa komponen wiget android dengan data yang diambil dari web server menggunakan koneksi JSON (Java Script Object Notation).

Tutorial tersebut akan dibagi menjadi beberapa bagian global yaitu:

  1. Melakukan koneksi ke web server
  2. Mengakses data pada PHP dengan menggunakan JSON
  3. Implementasi pada Autofill Spinner
  4. Implementasi pada Autofill List View
  5. Implementasi pada Autofill Grid
    1. Autofill Spinner

Komponen spinner memiliki fungsional yang sama dengan radio button, yaitu fasilitas interaksi yang menyediakan sejumlah pilihan atau yang sering disebut sebagai option terhadap respon yang dapat diberikan oleh user.

Sering sekali kita perlu menyediakan option tersebut dengan data yang diambil dari web server. Bagaimana caranya? Ikuti proyek ini step by step.

Step 1

Buatlah sebuah proyek baru dengan spesifikasi berikut:

  1. Project Name          : AutoFillSpinnerJSON
  2. Target Name           : Android 2.2
  3. Application Name    : AutoFillSpinnerJSON
  4. Package Name        : www.aplysit.com
  5. Create Activity         : AutoFillSpinnerJSON
  6. Min SDK Version     : 8

Selanjutnya klik Finish.

Step 2

Modifikasilah tampilannya, caranya AutoFillSpinnerJSON » res » layout » main.xml lalu tambahkan sebuah widget spinner sehingga source codenya menjadi seperti berikut:

[php]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>

<Spinner
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/spn_semester"
android:layout_x="90px"
android:layout_y="70px">
</Spinner>
</LinearLayout>
[/php]

Layoutnya adalah seperti berikut:

Step 3

Modifikasilah file AndroidManifest.xml agar aplikasi dapat melakukan akses ke internet, seperti berikut:

[php]<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="www.aplysit.com"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".AutoFillSpinnerJSON"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

</application>
<uses-sdk android:minSdkVersion="8" />

<uses-permission android:name="android.permission.INTERNET"/>

</manifest>
[/php]

Yang perlu ditambahkan adalah pada baris 19

Step 4

Buat class baru, caranya AutoFillSpinnerJSON » src » www.aplysit.com [klik kanan] » New  »  Class lalu beri nama kelas pada Name:Global kemudian tekan tombol Finish. Modifikasilah class tersebut sehingga menjadi seperti berikut ini:

[php]/* Nama file : Global.java
* Website : www.aplysit.com
* Deskripsi : – Menangani koneksi data dengan web server.
* – Menangani pemrosesan data yang diterima dari server
* – Maksimal atribut yang dapat diproses adalah sebanyak 5
* Author : Ivan Michael Siregar and team
**/

package www.aplysit.com;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.Context;
import android.widget.Toast;

public class Global
{
//Gunakan ini jika port http yang Anda gunakan adalah defaul 80
//private static String url = "http://10.0.2.2/project/autofilljson/";

//Gunakan ini jika port http yang Anda gunakan adalah 8080
private static String url = "http://10.0.2.2:8080/project/autofilljson/";

private static String session = null;
private static Integer jumlahbaris = 0;

Context ctx;

public Global(Context ctx){
this.ctx = ctx;
}
public String getUrl()
{
return this.url;
}

public String getSession()
{
return this.session;
}

public void setSession(String param)
{
this.session= param;
}

public Integer getJumlahBaris()
{
return this.jumlahbaris;
}

public void setJumlahBaris(Integer param)
{
this.jumlahbaris = param;
}

public String[][] getCollection(String url_param) throws JSONException
{
Json jParser = new Json();
JSONObject json = jParser.getJSONFromUrl(this.getUrl() + url_param);
JSONArray jarray = json.getJSONArray("collection");

//Buka bagian ini untuk melihat berapa jumlah baris yang diterima
//Toast.makeText(ctx, "Jumlah baris = "+jarray.length() ,10).show();

String[][] anArray;
anArray = new String[jarray.length()][5];
setJumlahBaris(jarray.length());

for (Integer i=0; i<jarray.length();i++)
{
anArray[i][0] = jarray.getJSONObject(i).getString("v1");
anArray[i][1] = jarray.getJSONObject(i).getString("v2");
anArray[i][2] = jarray.getJSONObject(i).getString("v3");
anArray[i][3] = jarray.getJSONObject(i).getString("v4");
anArray[i][4] = jarray.getJSONObject(i).getString("v5");

//Buka bagian ini untuk melihat secara detil data yang diterima
//Toast.makeText(ctx, i +" "+ anArray[i][1], 10).show();
}

return anArray;
}

public String[] getAllRowsAtSpecifiedVn(String[][] sourceArray, String param, Integer panjang)
{

String[] anArray = new String[this.getJumlahBaris()];

for (Integer i=0; i<panjang; i++)
{
if (param.equalsIgnoreCase("v1")) {
anArray[i] = sourceArray[i][0];
}
else if (param.equalsIgnoreCase("v2")) {
anArray[i] = sourceArray[i][1];
}
else if (param.equalsIgnoreCase("v3")) {
anArray[i] = sourceArray[i][2];
}
else if (param.equalsIgnoreCase("v4")) {
anArray[i] = sourceArray[i][3];
}
else if (param.equalsIgnoreCase("v5")) {
anArray[i] = sourceArray[i][4];
}

}

//anArray[0] = "a"; anArray[1] = "b"; anArray[2] = "c"; anArray[3] = "d";

return anArray;
}

//Bagian ini untukmendapatkan nilai pada sebuah sel
//Parameter yang harus didefinisikan adalah nama field dan nilai pada field tersebut
//maka secara otomatis akan mengembalikan nilai field yang dicari.
//Contoh:
//Didefinisikan : v2 dan Semester 1
//Dicari : v3
//Maka akan dihasilkan nilai pada v3 yang pada v2 nya bernilai Semeseter 1
public String getOneCellByPairVnValue(String[][] sourceArray, String originalvn, String originalvnvalue, String targetvn, Integer panjang)
{

Integer i;
String hasil = "";

for (i=0; i<panjang; i++) {
if (originalvn.equalsIgnoreCase("v1")) {
if (sourceArray[i][0].equals(originalvnvalue))
{
if (targetvn.equalsIgnoreCase("v1")) {
hasil = sourceArray[i][0];
}
else if (targetvn.equalsIgnoreCase("v2")) {
hasil = sourceArray[i][1];
}
else if (targetvn.equalsIgnoreCase("v3")) {
hasil = sourceArray[i][2];
}
else if (targetvn.equalsIgnoreCase("v4")) {
hasil = sourceArray[i][3];
}
else if (targetvn.equalsIgnoreCase("v5")) {
hasil = sourceArray[i][4];
}
}
}
else if (originalvn.equalsIgnoreCase("v2")) {
if (sourceArray[i][1].equals(originalvnvalue))
{
//hasil = "fuh";
if (targetvn.equalsIgnoreCase("v1")) {
hasil = sourceArray[i][0];
}
else if (targetvn.equalsIgnoreCase("v2")) {
hasil = sourceArray[i][1];
}
else if (targetvn.equalsIgnoreCase("v3")) {
hasil = sourceArray[i][2];
}
else if (targetvn.equalsIgnoreCase("v4")) {
hasil = sourceArray[i][3];
}
else if (targetvn.equalsIgnoreCase("v5")) {
hasil = sourceArray[i][4];
}
}
}
else if (originalvn.equalsIgnoreCase("v3")) {
if (sourceArray[i][0].equals(originalvnvalue))
{
if (targetvn.equalsIgnoreCase("v1")) {
hasil = sourceArray[i][0];
}
else if (targetvn.equalsIgnoreCase("v2")) {
hasil = sourceArray[i][1];
}
else if (targetvn.equalsIgnoreCase("v3")) {
hasil = sourceArray[i][2];
}
else if (targetvn.equalsIgnoreCase("v4")) {
hasil = sourceArray[i][3];
}
else if (targetvn.equalsIgnoreCase("v5")) {
hasil = sourceArray[i][4];
}
}
}
else if (originalvn.equalsIgnoreCase("v4")) {
if (sourceArray[i][0].equals(originalvnvalue))
{
if (targetvn.equalsIgnoreCase("v1")) {
hasil = sourceArray[i][0];
}
else if (targetvn.equalsIgnoreCase("v2")) {
hasil = sourceArray[i][1];
}
else if (targetvn.equalsIgnoreCase("v3")) {
hasil = sourceArray[i][2];
}
else if (targetvn.equalsIgnoreCase("v4")) {
hasil = sourceArray[i][3];
}
else if (targetvn.equalsIgnoreCase("v5")) {
hasil = sourceArray[i][4];
}
}
}
else if (originalvn.equalsIgnoreCase("v5")) {
if (sourceArray[i][0].equals(originalvnvalue))
{
if (targetvn.equalsIgnoreCase("v1")) {
hasil = sourceArray[i][0];
}
else if (targetvn.equalsIgnoreCase("v2")) {
hasil = sourceArray[i][1];
}
else if (targetvn.equalsIgnoreCase("v3")) {
hasil = sourceArray[i][2];
}
else if (targetvn.equalsIgnoreCase("v4")) {
hasil = sourceArray[i][3];
}
else if (targetvn.equalsIgnoreCase("v5")) {
hasil = sourceArray[i][4];
}
}
}

}

return hasil;
}

}
[/php]

Kemungkinan Anda akan menemukan error pada baris ini:

Json jParser = new Json();

maka abaikan saja, karena Anda perlu membuat Class Json yang akan dilakukan pada langkah berikutnya

Step 5

Dengan cara yang sama seperti langkah sebelumnya, buatlah sebuah class baru bernama Json kemudian modifikasilah isinya sehingga menjadi seperti berikut:

[php]
/* Nama file : Json.java
* Website : www.aplysit.com
* Deskripsi : – Menangani pembacaan data (parser).
* Author : Ivan Michael Siregar and team, modified from open source
**/

package www.aplysit.com;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class Json {

static InputStream is = null;
static JSONObject jObj = null;
static String json = "";

public JSONObject getJSONFromUrl(String url)
{
// making http request
try
{
// default http client
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}

// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}

// return json string
return jObj;
}

}
[/php]

Step 6

Lalu modifikasilah file AutoFillSpinnerJSON.java sehingga menjadi seperti source code berikut:

[php]/* Nama file : AutoFillSpinnerJSON.java
* Website : www.aplysit.com
* Deskripsi : – Driver yang mengimplementasikan penggunakan spinner.
* – Data option pada spinner didatapakan dari class Global
* – Data bersifat dinamis disediakan oleh web server script php
* Author : Ivan Michael Siregar and team
**/

package www.aplysit.com;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class AutoFillSpinnerJSON extends Activity {
/** Called when the activity is first created. */

Integer jlhBarisSpinner = 0;

//Instansiasi object global
Global gSpinner = new Global(AutoFillSpinnerJSON.this);
String[][] collection = null; //digunakan oleh spinner
String currentVn = ""; //digunakan oleh spinner

String pilihan_id = ""; //digunakan oleh spinner untuk mendapat v1
String pilihan_nama = ""; //digunakan oleh spinner untuk mendapat v2
String pilihan_periode = ""; //digunakan oleh spinner untuk mendapat v3
String pilihan_keterangan = ""; //digunakan oleh spinner untuk mendapat v4
String pilihan_isactivated = ""; //digunakan oleh spinner untuk mendapat v5

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//============================{ SPINNER =======================================
//Mengisi data spinner Semester

final Spinner spinnersemester = (Spinner)findViewById(R.id.spn_semester);
final int selectionCurrent = spinnersemester.getSelectedItemPosition();

//Bagian ini untuk mengisi data pada spinner
try {
currentVn = "v2"; //default field yang akan ditampilkan pada Spinner
collection = gSpinner.getCollection("serviceautofillspinnerjson.php");
jlhBarisSpinner = gSpinner.getJumlahBaris();
String[] content_semester = gSpinner.getAllRowsAtSpecifiedVn(collection,currentVn,jlhBarisSpinner);
ArrayAdapter<String> adapter_semester = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, content_semester);
adapter_semester.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnersemester.setAdapter(adapter_semester);
} catch (Exception e) {
// TODO Auto-generated catch block
}

//Bagian ini sebagai listener apabila spinner diclick
spinnersemester.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {

//Toast.makeText(getApplicationContext(), g.getOneCellByPairVnValue(collection, currentVn, spinnerday.getSelectedItem().toString(), "v4"), 10).show();
pilihan_id = gSpinner.getOneCellByPairVnValue(collection, currentVn, spinnersemester.getSelectedItem().toString(), "v1", jlhBarisSpinner);
pilihan_nama = gSpinner.getOneCellByPairVnValue(collection, currentVn, spinnersemester.getSelectedItem().toString(), "v2", jlhBarisSpinner);
pilihan_periode = gSpinner.getOneCellByPairVnValue(collection, currentVn, spinnersemester.getSelectedItem().toString(), "v3", jlhBarisSpinner);
pilihan_keterangan = gSpinner.getOneCellByPairVnValue(collection, currentVn, spinnersemester.getSelectedItem().toString(), "v4", jlhBarisSpinner);
pilihan_isactivated = gSpinner.getOneCellByPairVnValue(collection, currentVn, spinnersemester.getSelectedItem().toString(), "v5", jlhBarisSpinner);

String hasil = pilihan_id + " " + pilihan_nama + " " + pilihan_periode + " " + pilihan_keterangan + " " + pilihan_isactivated;

Toast.makeText(getApplicationContext(), "Output = "+ hasil , 10).show();

//Eksekusi bagian ini apabila diperlukan aktivitas tambahan
//………….

}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub

}
});

//============================} SPINNER =======================================
}
}
[/php]

Pastikan seluruh source code tidak memiliki error.

Step 7

Buatlah sebuah script serviceautofillspinnerjson.php, dan tuliskan source code berikut ini:

[php]<?php

/* Nama file : service.java
* Website : www.aplysit.com
* Deskripsi : – Penyedia data bagi Android.
* – Wajib menyediakan 5 field (jangan ditambah/dikurang)
* – Jika ada field yang tidak diperlukan maka tulis sbb
* $arrdata["v4"] = "";
* Author : Ivan Michael Siregar and team
**/

//Siapkan array string yang akan dikembalikan ke Android
$response["collection"] = array();

//Field 1
$arrdata = array();
$arrdata["v1"] = "1";
$arrdata["v2"] = "Semester 1/2010";
$arrdata["v3"] = "Tahun Ajaran 2010";
$arrdata["v4"] = "";
$arrdata["v5"] = "0";
array_push($response["collection"], $arrdata);

//Field 2
$arrdata = array();
$arrdata["v1"] = "2";
$arrdata["v2"] = "Semester 2/2010";
$arrdata["v3"] = "Tahun Ajaran 2010";
$arrdata["v4"] = "";
$arrdata["v5"] = "0";
array_push($response["collection"], $arrdata);

//Field 3
$arrdata = array();
$arrdata["v1"] = "3";
$arrdata["v2"] = "Semester Pendek/2010";
$arrdata["v3"] = "Tahun Ajaran 2010";
$arrdata["v4"] = "Bulan Juli, Agustus, September";
$arrdata["v5"] = "0";
array_push($response["collection"], $arrdata);

//Field 4
$arrdata = array();
$arrdata["v1"] = "4";
$arrdata["v2"] = "Semester 1/2011";
$arrdata["v3"] = "Tahun Ajaran 2011";
$arrdata["v4"] = "";
$arrdata["v5"] = "1";
array_push($response["collection"], $arrdata);

//Field 5
$arrdata = array();
$arrdata["v1"] = "5";
$arrdata["v2"] = "Semester 2/2011";
$arrdata["v3"] = "Tahun Ajaran 2011";
$arrdata["v4"] = "";
$arrdata["v5"] = "0";
array_push($response["collection"], $arrdata);

//Field 6
$arrdata = array();
$arrdata["v1"] = "6";
$arrdata["v2"] = "Semester Pendek/2011";
$arrdata["v3"] = "Tahun Ajaran 2011";
$arrdata["v4"] = "Bulan Juli, Agustus, September";
$arrdata["v5"] = "0";
array_push($response["collection"], $arrdata);

$response["sukses"] = 1;

//Kembalikan hasilnya
echo json_encode($response);

?>
[/php]

Step 8

Periksalah script php tersebut, dan pastikan bahwa script tersebut dapat memberikan hasil yang sesuai, caranya buka web browser lalu pada URL ketikkan perintah berikut:

http://localhost:8080/project/autofilljson/serviceautofillspinnerjson.php

Hasilnya adalah seperti gambar berikut:

Step 9

Jalankan Androidnya caranya AutoFillSpinnerJSON [klik kanan] » Run As » Android Application » main.xml dan hasilnya adalah seperti gamber berikut:

 

 

 

Source code lengkap dapat di download di: www.aplysit.com/kotakbrankas/AutoFillSpinnerJSON.rar

 

Posted in Android Tutorial, Other Tutorial | Leave a comment