new String("The {alpha} {do} over the {animal}\n")
.concat("and feels as if {who} where in {where}\n")
.concat("of typography together with {with}.\n");
String diatas merupakan sebuah template dan setiap kata yang diapit oleh
curly braces ({}) adalah placeholder, placeholder setelah proses parsing
akan digantikan oleh nilai dari data yang memiliki identifier atau nama
variabel yang sama dengan placeholder tersebut tanpa curly braces, e.g.
{alpha} akan digantikan oleh nilai dari variabel alpha.
Buatlah sebuah program untuk melakukan template parsing dengan method
berikut:
List<String> parse(String template, Map<String, String> data)
Memparsingtemplate dan mengganti semua placeholder yang ada dengan
nilai dari data yang sesuai, jika ada placeholder yang tidak ada didalam
data, maka placeholder tersebut dibiarkan apa adanya. template
dikembalikan sebagai List<String> dimana setiap elemennya merupakan hasil
splittemplate berdasarkan new line (\n)
void render(List<String> string)
Mencetak perbaris hasil dari methodparse
Contoh
Jika diberikan main method berikut
public static void main(String[] args) {
String template = new String("The {alpha} {do} over the {animal}\n")
.concat("and feels as if {who} where in {where}\n")
.concat("of typography together with {with}.\n");
Map<String, String> data = new HashMap<>();
data.put("with", "Hermann Zapf");
data.put("do", "jumps");
data.put("alpha", "quick brown fox");
data.put("animal", "lazy dog");
data.put("where", "the seventh heaven");
data.put("who", "he");
render(parse(template, data));
}
Program akan menghasilkan output berikut
The quick brown fox jumps over the lazy dog
and feels as if he where in the seventh heaven
of typography together with Hermann Zapf.
2. Data Manipulation Language
Dalam Relational Database Management System, Data Manipulation Language (DML)
merupakan perintah-perintah yang digunakan untuk memanipulasi struktur data
di dalam database, 2 diantaranya adalah INSERT dan SELECT.
Buatlah sebuah program yang mensimulasikan proses INSERT dan SELECT
sederhana dengan method berikut
Placeholder file dari tugas ini hanya mendefinisikan method beserta
return type tanpa method signature (parameter)
Lengkapi method signature yang dibutuhkan sesuai deskripsi method dan
main method dibawah
Map<String, String> insert(/* signatures */)
Merupakan simulasi dari perintah INSERT, perintah INSERT memiliki
sintaks: INSERT INTO <table_name> <column(s)> VALUES (value(s)).
Pada program ini, <table_name> direpresentasikan oleh List<Map<String, String>>
sedangkan column(s) merupakan String dengan setiap kolomnya dipisahkan
oleh koma (,), e.g. "id,name,address" berarti 3 kolom (id, name,
address) dan value(s) memiliki format yang sama dengan column(s) dimana
setiap nilainya dipasangkan tepat 1 dengan kolom pada column(s), e.g.
"01,Fitrah,Maros" berarti id=01, name=Fitrah, dan address=Maros, hal
ini berarti jumlah column(s) = jumlah value(s), jika jumlahnya tidak sama,
program akan menghasilakn IllegalArgumentException
// student merupkan <table_name>
List<Map<String, String>> student = new ArrayList<>();
// Ketiga sintaks dibawah ini valid
// column(s) selalu menjadi lower case dan tanpa spasi
// value(s) disimpan apa adanya namun tanpa spasi
student.add(insert("id,first_name,last_name", "H071171504, Rabia, Adaw"));
// spasi pada sintaks ini dihilangkan oleh method insert
student.add(insert("id, first_name, last_name", "H071171512,Fitrah,M"));
// UPPER CASE pada sintaks ini diganti menjadi lower case oleh method insert
student.add(insert("ID, FIRST_NAME, LAST_NAME", "H071171510, Amalia, Dwi"));
// Baris berikut menghasilkan IllegalArgumentException
// student.add(insert("id,first_name, last_name", "H071171308,Babang,Arizk,Male"));
List<String> select(/* signatures */)
Merupakan simulasi dari perintah SELECT, printah SELECT memiliki
sintaks: SELECT <column(s)> from <table_name>.
Pada program ini, column(s) merupakan String variadic arguments,
<table_name> sama dengan yang ada pada method insert dan mengembalikan
List<String> yang berisi nama kolom dan data dari setiap kolomnya dipisahkan
oleh semi colon (;), jika ada kolom pada column(s) yang tidak terdapat didalam
<table_name>, kolom tersebut diisi oleh nilai "NONE"
Contoh
// dengan asumsi baris berikut merupakan lanjutan potongan program
// pada deskripsi method insert
select(student, "first_name", "last_name").forEach(System.out::println);
void prettify(List<String> strings)
Mencetak hasil dari method select dengan format
Tabel, semi colon dari select dihilangkan
Rata kanan sesuai elemen terpanjang
Setiap kolom terdapat 1 spasi di awal dan akhir
Nama kolom dicetak UPPER CASE
Baris pertama (nama kolom) dan baris terakhir memiliki separator (-)
separator memiliki panjang = (panjang baris) - 2
separator rata tengah
Contoh
// dengan asumsi baris berikut merupakan lanjutan potongan program
// pada deskripsi method insert
prettify(select(student, "id", "first_name", "last_name"));
Collection - Material.pdf
1. Template Parser
String diatas merupakan sebuah template dan setiap kata yang diapit oleh curly braces (
{}
) adalah placeholder, placeholder setelah proses parsing akan digantikan oleh nilai dari data yang memiliki identifier atau nama variabel yang sama dengan placeholder tersebut tanpa curly braces, e.g.{alpha}
akan digantikan oleh nilai dari variabelalpha
.Buatlah sebuah program untuk melakukan template parsing dengan method berikut:
List<String> parse(String template, Map<String, String> data)
Memparsingtemplate
dan mengganti semua placeholder yang ada dengan nilai daridata
yang sesuai, jika ada placeholder yang tidak ada didalamdata
, maka placeholder tersebut dibiarkan apa adanya.template
dikembalikan sebagaiList<String>
dimana setiap elemennya merupakan hasil splittemplate
berdasarkan new line (\n
)void render(List<String> string)
Mencetak perbaris hasil dari methodparse
Contoh
Jika diberikan
main
method berikutProgram akan menghasilkan output berikut
2. Data Manipulation Language
Dalam Relational Database Management System, Data Manipulation Language (DML) merupakan perintah-perintah yang digunakan untuk memanipulasi struktur data di dalam database, 2 diantaranya adalah INSERT dan SELECT.
Buatlah sebuah program yang mensimulasikan proses INSERT dan SELECT sederhana dengan method berikut
Map<String, String> insert(/* signatures */)
Merupakan simulasi dari perintah INSERT, perintah INSERT memiliki sintaks:INSERT INTO <table_name> <column(s)> VALUES (value(s))
. Pada program ini,<table_name>
direpresentasikan olehList<Map<String, String>>
sedangkancolumn(s)
merupakanString
dengan setiap kolomnya dipisahkan oleh koma (,
), e.g."id,name,address"
berarti 3 kolom (id
,name
,address
) danvalue(s)
memiliki format yang sama dengancolumn(s)
dimana setiap nilainya dipasangkan tepat 1 dengan kolom padacolumn(s)
, e.g."01,Fitrah,Maros"
berartiid=01
,name=Fitrah
, danaddress=Maros
, hal ini berarti jumlahcolumn(s)
= jumlahvalue(s)
, jika jumlahnya tidak sama, program akan menghasilaknIllegalArgumentException
List<String> select(/* signatures */)
Merupakan simulasi dari perintah SELECT, printah SELECT memiliki sintaks:SELECT <column(s)> from <table_name>
. Pada program ini,column(s)
merupakanString variadic arguments
,<table_name>
sama dengan yang ada pada methodinsert
dan mengembalikanList<String>
yang berisi nama kolom dan data dari setiap kolomnya dipisahkan oleh semi colon (;
), jika ada kolom padacolumn(s)
yang tidak terdapat didalam<table_name>
, kolom tersebut diisi oleh nilai"NONE"
Contoh
menghasilkan
menghasilkan
void prettify(List<String> strings)
Mencetak hasil dari methodselect
dengan format-
)Contoh
menghasilkan
menghasilkan
main
method berikutMenghasilakan output berikut