TUTORIAL BIRT GQL Scripting DataSource - Login dan AccessGroupGet #8

Open
opened 2023-08-14 11:23:33 +07:00 by sindhu · 0 comments
Owner
  1. Silahkan buat new project, dan new report baru. Kemudian silahkan pilih tab Window, Preference dan pilih report design, class path. Lalu add External Jar seperti gambar dibawah ini.
    image

  2. Lalu bikin data source seperti dibawah ini
    image

  3. Lalu pada tab Script, pilih Open . Lalu import package seperti ini

// Tahap 1 : Import Package
importPackage(Packages.java.io);
importPackage(org.apache.http.impl.client);
importPackage(org.apache.http.client.methods);
importPackage(Packages.java.util);
importPackage(org.apache.http.message);
importPackage(org.apache.http.entity);
  1. Kemudian silahkan setup end point
// Tahap 2 : Setup End Point
var client = new DefaultHttpClient();
var userName = "adiet";
var password = "qwerty";
var his_end_point = "http://hos.sismedika.online:8080/query";
  1. Kemudian define variable
// Tahap 3 : Define Variable
var post = new HttpPost(his_end_point);
var paramAccessGroupGet = 1;
var getAccessGroupGet = "";
  1. Membuat fungsi custom post
// Tahap 4 : Helper buat post data ke server dengan nama postFunc
function postFunc(name, data, paramToken) {
   // parameter data merupakan json param yang akan di post
	var jsonEntity = StringEntity(data);
	post.setEntity(jsonEntity);
	post.setHeader("Content-type", "application/json");
	if (paramToken != undefined) {
		post.setHeader("Authorization", "Bearer " + paramToken);
	}

	//get response
	var response = client.execute(post);
	var rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
	var result = "";
	var line = "";
	while ((line = rd.readLine()) != null) {
		result += line;
	}

	var getDataJson = JSON.parse(result);
	
	// check json data response
	if(getDataJson.data == null){
	    result = getDataJson.errors;
	}

	if(getDataJson.data[name]){
		result = getDataJson.data[name];
	}
	
	return result;
}
  1. Kemudian buat fungsi login untuk mendapatkan token.
function login(userName, password) {
	var gql = {"query" : "mutation { passwordEncrypt(password:\"" + password + "\") }"};
	var data = JSON.stringify(gql);
	var enc_password = postFunc("passwordEncrypt", data);
	
	// userLogin
	gql = {"query" : "mutation { userLogin(userName:\"" + userName + "\",password:\"" + enc_password + "\") { token userID } }"}
	data = JSON.stringify(gql);
	var userToken = postFunc("userLogin",data);
	
	// mendapatkan hasil berupa object token
	return userToken.token;
}
  1. Kemudian membuat fungsi access group get
// Tahap 6. function accessGroupGet
function accessGroupGet(paramAccessGroupGet){
    tokenTmp = login( userName,password);
	var gql = {"query" : "query { accessGroupGet(groupID:\"" + paramAccessGroupGet + "\") { groupID groupName } }"};
	var data = JSON.stringify(gql);
	var dataGroupGet = postFunc("accessGroupGet", data, tokenTmp);
	
	// menghasilkan object berupa array dari object accessGroupGet (GQL)
	return dataGroupGet;
}
  1. Kemudian ambil return dari fungsi tersebut
// ambil accessGroupGet
getAccessGroupGet = accessGroupGet(paramAccessGroupGet);

// token -- untuk dapet token
mutationJsonToken = login( userName,password);

// getAccessGroupGet untuk debug
// mutationJson = getAccessGroupGet[0].groupName;

mutationJsonAccessGroupGet = getAccessGroupGet;

return;
  1. Kemudian buat DataSet seperti ini
    image

  2. Pada tab Script di dataset, pilih open. lalu isikan code seperti ini

recNum = 0;
  1. Pada Script pilih fetch. lalu isikan code seperti ini
if (recNum >= mutationJsonAccessGroupGet.length )
return false;

// mutation json token hanya berupa object sehingga tidak memerlukan Array recNum seperti accessGroupGet
row["token"] = mutationJsonToken;


// accessGroupGet menggunakan Array recNum karena object di dalamnya ada di dalam Array index ke 0
var rec = mutationJsonAccessGroupGet[recNum];
row["groupName"] = mutationJsonAccessGroupGet[recNum].groupName;
row["groupID"] = mutationJsonAccessGroupGet[recNum].groupID;

recNum = recNum+1 ;
return true;
  1. Kemudian di data set klik kanan pilih Edit. Lalu isikan output column seperti ini
    image

  2. Lalu di tab Master Layout silahkan buat tampilan seperti ini
    image

  3. Lalu output yang dihasilkan akan seperti ini
    image

1. Silahkan buat new project, dan new report baru. Kemudian silahkan pilih tab **Window**, **Preference** dan pilih report design, class path. Lalu add External Jar seperti gambar dibawah ini. ![image](/attachments/4fe7ced7-e3ce-4272-ae93-5400cd16592e) 2. Lalu bikin data source seperti dibawah ini ![image](/attachments/9a29ff0a-61f4-44bf-b6d1-9995c9667fd8) 3. Lalu pada tab **Script**, pilih **Open** . Lalu import package seperti ini ``` // Tahap 1 : Import Package importPackage(Packages.java.io); importPackage(org.apache.http.impl.client); importPackage(org.apache.http.client.methods); importPackage(Packages.java.util); importPackage(org.apache.http.message); importPackage(org.apache.http.entity); ``` 4. Kemudian silahkan setup end point ``` // Tahap 2 : Setup End Point var client = new DefaultHttpClient(); var userName = "adiet"; var password = "qwerty"; var his_end_point = "http://hos.sismedika.online:8080/query"; ``` 5. Kemudian define variable ``` // Tahap 3 : Define Variable var post = new HttpPost(his_end_point); var paramAccessGroupGet = 1; var getAccessGroupGet = ""; ``` 6. Membuat fungsi custom post ``` // Tahap 4 : Helper buat post data ke server dengan nama postFunc function postFunc(name, data, paramToken) { // parameter data merupakan json param yang akan di post var jsonEntity = StringEntity(data); post.setEntity(jsonEntity); post.setHeader("Content-type", "application/json"); if (paramToken != undefined) { post.setHeader("Authorization", "Bearer " + paramToken); } //get response var response = client.execute(post); var rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); var result = ""; var line = ""; while ((line = rd.readLine()) != null) { result += line; } var getDataJson = JSON.parse(result); // check json data response if(getDataJson.data == null){ result = getDataJson.errors; } if(getDataJson.data[name]){ result = getDataJson.data[name]; } return result; } ``` 7. Kemudian buat fungsi login untuk mendapatkan token. ``` function login(userName, password) { var gql = {"query" : "mutation { passwordEncrypt(password:\"" + password + "\") }"}; var data = JSON.stringify(gql); var enc_password = postFunc("passwordEncrypt", data); // userLogin gql = {"query" : "mutation { userLogin(userName:\"" + userName + "\",password:\"" + enc_password + "\") { token userID } }"} data = JSON.stringify(gql); var userToken = postFunc("userLogin",data); // mendapatkan hasil berupa object token return userToken.token; } ``` 8. Kemudian membuat fungsi access group get ``` // Tahap 6. function accessGroupGet function accessGroupGet(paramAccessGroupGet){ tokenTmp = login( userName,password); var gql = {"query" : "query { accessGroupGet(groupID:\"" + paramAccessGroupGet + "\") { groupID groupName } }"}; var data = JSON.stringify(gql); var dataGroupGet = postFunc("accessGroupGet", data, tokenTmp); // menghasilkan object berupa array dari object accessGroupGet (GQL) return dataGroupGet; } ``` 9. Kemudian ambil return dari fungsi tersebut ``` // ambil accessGroupGet getAccessGroupGet = accessGroupGet(paramAccessGroupGet); // token -- untuk dapet token mutationJsonToken = login( userName,password); // getAccessGroupGet untuk debug // mutationJson = getAccessGroupGet[0].groupName; mutationJsonAccessGroupGet = getAccessGroupGet; return; ``` 10. Kemudian buat DataSet seperti ini ![image](/attachments/7fc94118-0e73-4a03-8b93-ffed569e6d4a) 11. Pada tab **Script** di dataset, pilih **open**. lalu isikan code seperti ini ``` recNum = 0; ``` 12. Pada **Script** pilih **fetch**. lalu isikan code seperti ini ``` if (recNum >= mutationJsonAccessGroupGet.length ) return false; // mutation json token hanya berupa object sehingga tidak memerlukan Array recNum seperti accessGroupGet row["token"] = mutationJsonToken; // accessGroupGet menggunakan Array recNum karena object di dalamnya ada di dalam Array index ke 0 var rec = mutationJsonAccessGroupGet[recNum]; row["groupName"] = mutationJsonAccessGroupGet[recNum].groupName; row["groupID"] = mutationJsonAccessGroupGet[recNum].groupID; recNum = recNum+1 ; return true; ``` 13. Kemudian di **data set** klik kanan pilih **Edit**. Lalu isikan **output column** seperti ini ![image](/attachments/466e430f-e4f5-429a-a71d-b4d24954807a) 14. Lalu di tab **Master Layout** silahkan buat tampilan seperti ini ![image](/attachments/8d17bc87-c576-4325-9d0b-f4b8066d7ff0) 15. Lalu output yang dihasilkan akan seperti ini ![image](/attachments/cdba7b49-68f3-4516-ba7d-e650f71540a8)
sindhu changed title from TUTORIAL BIRT GQL - Login dan AccessGroupGet to TUTORIAL BIRT GQL Scripting DataSource - Login dan AccessGroupGet 2023-08-14 11:23:54 +07:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sindhu/belajar#8