-
Notifications
You must be signed in to change notification settings - Fork 37
Description
Collection - Material.pdf
1. Template Parser
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)
Memparsingtemplatedan mengganti semua placeholder yang ada dengan
nilai daridatayang sesuai, jika ada placeholder yang tidak ada didalam
data, maka placeholder tersebut dibiarkan apa adanya.template
dikembalikan sebagaiList<String>dimana setiap elemennya merupakan hasil
splittemplateberdasarkan 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
mainmethod 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 olehList<Map<String, String>>
sedangkancolumn(s)merupakanStringdengan 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// 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)merupakanString variadic arguments,
<table_name>sama dengan yang ada pada methodinsertdan mengembalikan
List<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
// dengan asumsi baris berikut merupakan lanjutan potongan program // pada deskripsi method insert select(student, "first_name", "last_name").forEach(System.out::println);
menghasilkan
first_name;last_name Fitrah;M Amalia;Dwi Rabia;Adaw
select(student, "first_name", "i").forEach(System.out::println);
menghasilkan
first_name;i Fitrah;NONE Amalia;NONE Rabia;NONE
-
void prettify(List<String> strings)
Mencetak hasil dari methodselectdengan 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"));
menghasilkan
| ID | FIRST_NAME | LAST_NAME | -------------------------------------- | H071171512 | Fitrah | M | | H071171510 | Amalia | Dwi | | H071171504 | Rabia | Adaw | --------------------------------------
prettify(select(student, "id", "address", "first_name", "last_name"));
menghasilkan
| ID | ADDRESS | FIRST_NAME | LAST_NAME | --------------------------------------------------- | H071171512 | NONE | Fitrah | M | | H071171510 | NONE | Amalia | Dwi | | H071171504 | NONE | Rabia | Adaw | ---------------------------------------------------
main method berikut
public static void main(String[] args) {
List<Map<String, String>> student = new ArrayList<>();
student.add(insert("id, first_name, last_name, gender", "H071171512, Fitrah, Muhammad, Male"));
student.add(insert("id, first_name, last_name, gender", "H071171510, Amalia, Dwi, Female"));
student.add(insert("id,first_name,last_name,gender", "H071171504, Rabia,Adaw,Female"));
student.add(insert("id,first_name, last_name, gender", "H071171308,Babang,Arizk,Male"));
select(student, "first_name", "last_name", "i").forEach(System.out::println);
System.out.println();
prettify(select(student, "id", "first_name", "last_name", "gender"));
}Menghasilakan output berikut
first_name;last_name;i
Fitrah;Muhammad;NONE
Amalia;Dwi;NONE
Rabia;Adaw;NONE
Babang;Arizk;NONE
| ID | FIRST_NAME | LAST_NAME | GENDER |
---------------------------------------------------
| H071171512 | Fitrah | Muhammad | Male |
| H071171510 | Amalia | Dwi | Female |
| H071171504 | Rabia | Adaw | Female |
| H071171308 | Babang | Arizk | Male |
---------------------------------------------------