RinduDendam’s Web Blog

RinduDendam’s Web Blog

Akhir adalah Awal …

RinduDendam’s Web Blog RSS Feed
 
 
 
 

Javascript [OOP]: FDatabase

Kali ini saya mempersembahkan FDatabase. Yaitu sebuah class yang berfungsi sebagai pengolah data type array yang dianggap sebagai database. Ini bukan murni database lho. Dan data tidak permanen tersimpan. Karena begitu browser di restart atau reload maka datanya akan hilang atau kembali ke nilai awal sesuai pengolahannya diawalnya.

Fungsi-fungsi yang dimilikinya adalah :

  • menambah
  • menyisipkan
  • mengubah
  • menghapus
  • mencari

Class ini tergantung dengan script saya terdahulu, yaitu Class FError dan Clone Array. Oh ya, hampir lupa tergantung pula dengan Base.js buah karya Dean Edward

Method Keterangan
actAppend(vData) untuk menambahkan record ke akhir data. Bisa lebih dari satu record.

vData data yang akan disimpan ke database. Bertype object. Dengan format: {namafield:valuefield}
actAssign(intIndex,varData,varKey) untuk menyisipkan 1 (satu) record.

intIndex nomer urut record
varData data yang akan disisipkan. Type data object. Format: {namafield:valuefield}
varKey optional. nilai ini digunakan untuk mengisi record pada field tertentu. Type data string.
actDelete(intIndex) untuk menghapus 1 record sesuai dengan intIndex

intIndex nomer urut record
actDeleteBy(sValue,sField,sValue1,sField1) untuk menghapus record sesuai nilai sValue pada field sField.

sValue nilai yang disyaratkan
sField field yang disyaratkan
sField1 dan sValue1 sama dengan diatas. Tetapi digunakan untuk syarat kedua.
actDeleteAll() untuk menghapus semua record.
actUpdate(sValue,sField,mData) untuk mengubah data sesuai dengan field sField yang bernilai tertentu pada sValue menjadi mData.

sValue Nilai yang disyaratkan
sField Nama field yang disyaratkan
mData Data yang akan menggantikan data lama
getData(sValue,sField) untuk mendapatkan data sesuai nilai sValue pada field sField.

sValue Nilai yang disyaratkan
sField Nama field yang disyaratkan

Deklarasi

var myDB=new FDatabase("myDB");
if(myDB.isError()){myDB.actQuit();}
/*
sVarName : nama variable memory. String.
parent: nama parent dari variable memory. Bertype data object. Bila dikosongkan secara default berisi object window.
*/

Menambahkan record.

var myRecord={id:1,nama:"RinduDendam",kota:"Bandung",negara:"Indonesia"};
myDB.actAppend(myRecord);

Menambahkan record pada no urut tertentu.

var myRecord={id:2,nama:"RinduDendam1",kota:"Jakarta",negara:"Indonesia"};
myDB.actAssign(0,myRecord);

Menghapus record.

myDB.actDelete(1);

Menghapus record dengan syarat.

myDB.actDeleteBy("Jakarta","kota");

Menghapus semua record.

myDB.actDeleteAll();

Mengubah Data.

var myRecord={id:3,nama:"RinduDendamX",kota:"Surabaya",negara:"Indonesia"};
myDB.actUpdate(1,"id",myRecord);

Mendapatkan atau mencari Data.

var MySearch=myDB.getData("Jakarta","kota");

Dibawah ini adalah script lengkapnya.

var FDatabase = FError.extend({
	ErrHead:"[ERROR] FDatabase",
	version:"1.0",arData:[],
	constructor:function(sVarName,parent)
	{
		var err=this.ErrHead+".constructor()\n";
		if(!sVarName){this.Error(err+" Parameter sVarName was empty");return;}
		this.sVarName=sVarName;
		this.ErrHead="[ERROR] "+this.sVarName;
		err=this.ErrHead+".constructor()\n";
		if(parent){this.parent=parent;}else{this.parent=window;}
	},
	actAppend:function(vData)
	{
		var err=this.ErrHead+".actAppend()\n";
		if(!vData){this.Error(err+"Parameter vData was empty");return;};
		var isExists=false;
		if(vData.id)
		{
			if(this.arData.length)
			{
				for(var i in this.arData)
				{
					if(!isNaN(i))
					{
						if(this.arData[i].id == vData.id)
						{
							isExists=true;
							break;
						}
					}
				}
			}
		}
		if(!isExists){this.arData.push(vData);}
	},
	actAppendAt:function(intIndex,varData,varKey)
	{
		var err=this.ErrHead+".actAppendAt()\n";
		if(isNaN(intIndex)){this.Error(err+"Parameter intIndex was empty or not numeric");return;}
		if(!varData){this.Error(err+"Parameter varData was empty");return;};
		if(varKey)
		{
			this.arData[intIndex][varKey].push(varData);
		}
		else
		{
			this.arData[intIndex].push(varData);
		}
	},
	actAssign:function(intIndex,varData,varKey)
	{
		var err=this.ErrHead+".actAssignAt()\n";
		if(isNaN(intIndex)){this.Error(err+"Parameter intIndex was empty or not numeric");return;}
		if(!varData){this.Error(err+"Parameter varData was empty");return;};
		if(varKey)
		{
			this.arData[intIndex][varKey]=varData;
		}
		else
		{
			this.arData[intIndex]=varData;
		}
	},
	actDelete:function(intIndex)
	{
		var err=this.ErrHead+".actDelete()\n";
		if(isNaN(intIndex)){this.Error(err+"Parameter intIndex was empty or not numeric");return;}
		this.arData[intIndex]=null;
		this.arData.splice(intIndex,1);
	},
	actDeleteBy:function(sValue,sField,sValue1,sField1)
	{
		var err=this.ErrHead+".actDeleteBy()\n";
		if(!sValue){this.Error(err+"Parameter sValue was empty");return;};
		if(!sField){this.Error(err+"Parameter sField was empty");return;};
		if(!this.arData.length){return;}
		for(var i in this.arData)
		{
			if(isNaN(i)){continue;};
			eval("var vData=this.arData[i]."+sField+";");
			if(sField1)
			{
				eval("var vData1=this.arData[i]."+sField1+";");
				if(vData == sValue && vData1 == sValue1){this.actDelete(i);break;}
			}
			else
			{
				if(vData == sValue){this.actDelete(i);break;}
			}
		}
		return true;
	},
	actDeleteAll:function(){this.arData=[];},
	actUpdate:function(sValue,sField,mData)
	{
		var err=this.ErrHead+".actUpdate()\n";
		if(!sValue){this.Error(err+"Parameter sValue was empty");return;}
		if(!sField){this.Error(err+"Parameter sField was empty");return;}

		for(var i in this.arData)
		{
			if(isNaN(i)){continue;};
			var arD=this.arData[i];
			eval("var vData=arD."+sField+";");
			if(vData == sValue)
			{
				for(var ii in mData)
				{
					if(ii == "toJSONString" || ii == "clone"){continue;}
					eval("var Dd=arD."+ii+";");
					if(Dd instanceof Object)
					{
						if(Dd.parentNode){Dd.parentNode.removeChild(Dd);}
						eval("arD."+ii+"=null;");
					}
					eval("this.arData[i]."+ii+"=mData."+ii+";");
				}
			};
		}
	},
	getData:function(sValue,sField)
	{
		var err=this.ErrHead+".getData()\n";
		if(!sValue){this.Error(err+"Parameter sValue was empty");return;};
		if(!sField){this.Error(err+"Parameter sField was empty");return;};
		if(!this.arData.length){return;}
		for(var i in this.arData)
		{
			if(!isNaN(i))
			{
				eval("var vData=this.arData[i]."+sField+";");
				if(vData == sValue)
				{
					return this.arData[i];
					break;
				}
			}
		}
	},
	searchData:function(sValue,sField,sValue1,sField1)
	{
		var err=this.ErrHead+".getData()\n";
		if(!sValue){this.Error(err+"Parameter sValue was empty");return;};
		if(!sField){this.Error(err+"Parameter sField was empty");return;};
		if(!this.arData.length){return;}
		var arDt=[];
		for(var i in this.arData)
		{
			if(isNaN(i)){continue;}
			eval("var vData=this.arData[i]."+sField+";");
			if(sValue1 && sField1)
			{
				eval("var vData1=this.arData[i]."+sField1+";");
				if((vData == sValue || vData.substring(0,sValue.length) == sValue) && (vData1 == sValue1 || vData1.substring(0,sValue1.length) == sValue1))
				{
					arDt.push(this.arData[i]);
				}

			}else
			{
				if(vData == sValue || vData.substring(0,sValue.length) == sValue)
				{
					arDt.push(this.arData[i]);
				}
			}
		};
		return arDt;
	}
});

Semoga membantu.

3 Responses to “Javascript [OOP]: FDatabase”

  1. 1
    tusyalrasyid:

    mumet nie mas

  2. 2
    RinduDendam:

    ada yang bisa dibanting ? eh .. di bantu ?

  3. 3
    saepulloh:

    artikel yg sangat bagus…

Leave a Reply

Kategori

Tulisan Terakhir

Komentar Terakhir

Arsip

RSS Jay adalah Yulian

  • An error has occurred; the feed is probably down. Try again later.

RSS things left unsaid

RSS Slashdot

RSS Ajaxian

RSS PHPClasses.org

Karantina