29 მარტის საშინაო დავალება მეორე ჯგუფისათვის შემდეგია:
მოცემული გაქვთ კლასი
public class Config {
private String driver;
private String url;
private String shutdownUrl;
// set და get მეთოდები
}
ასევე მოცემული გაქვთ ფაილი database.properties რომელიც დევს მთავარ
დირექტორიაში (Eclipse-ში ფაილი უნდა იდოს არა src, არამედ პროექტის
დირექტორიაში) და შეიცავს შემდეგ ინფორმაციას:
driver=org.apache.derby.jdbc.EmbeddedDriver
url=jdbc:derby:StudentsDB;create=true
shutdownUrl=jdbc:derby:;shutdown=true
თქვენმა პროგრამამ უნდა ჩატვირთოს ეს ფაილი java.util.Properties
ობიექტში, შემდეგ კი მასში ჩაწერილი ინფორმაციის საფუძველზე შეავსოს კლას
Config-ის ობიექტი (ამისათვის გამოიყენეთ Reflection API. მიაქციეთ
ყურადღება რომ კლასის ველებს იგივე სახელები ქვიათ რაც ”=” ნიშნის
მარცხენა მხარეს წერია და შეგიძლიათ მნიშვნელობები getProperty მეთოდით
ამოიკითხოთ). კონფიგურაციის წაკითხვა გაიტანეთ ცალკე კლასში ConfigLoader
და მისთვის გამოიყენეთ Singleton Pattern
Derby მონაცემთა ბაზაში StudentsDB შექმენით ცხრილი PERSON ველებით
PERSON_ID (ტიპი INT), FIRST_NAME, (ტიპი VARCHAR) LAST_NAME (ტიპი
VARCHAR), EMAIL (ტიპი VARCHAR) და შეავსეთ ის სატესტო ინფორმაციით.
ამისათვის შეგიძლიათ გამოიყენოთ Cloudscape Workbench ან რამე სხვა
პროგრამა
პროგრამაში შექმენით შემდეგი კლასი და შესაბამისი ანოტაციები:
@TableName("PERSON")
public class Person {
@FieldName("PERSON_ID")
private int id;
@FieldName("FIRST_NAME")
private String firstName;
@FieldName("LAST_NAME")
private String lastName;
@FieldName("EMAIL")
private String email;
// set და get მეთოდები
}
თქვენი პროგრამა უნდა აკეთებდეს შემდეგს
1. უნდა უკავშირდებოდეს მონაცემთა ბაზას, რომელიც განსაზღვრულია Config
კლასის ობიექტით
2. კითხულობდეს კლას Person-ის ობიექტებს ანოტაციაში მითითებული
ცხრილიდან და თითოეული ობიექტის ველებს ავსებდეს ცხრილის შესაბამისი
ველებიდან (შესაბამისობა განისაზღვრება ანოტაციით)
3. წაკითხული Person ობიექტების სია გამოჰქონდეს ეკრანზე. ამისათვის
Person კლასს განუსაზღვრეთ მეთოდი toString(), რომელიც დააბრუნებს
ინფორმაციას შემდეგი ფორმატით:
"Person[ id=1, firstName=Mikheil, lastName=Kapanadze,
email=
mik...@mikheil.com]" (ველების მიმდევრობას მნიშვნელობა არ
აქვს). ეს სტრიქონიც ააწყეთ Reflection API-ს გამოყენებით. ანუ ჩათვალეთ
რომ toString() ბეჭდავს ამ ობიექტის ყველა ველს და თუ მომავალში რამე
ახალი ველი დაემატება, ამ მეთოდის ცვლილება საჭირო არ უნდა გახდეს.
4. დასრულების წინ ამოწმებდეს და თუ Config კლასის ობიექტში shutdownUrl
მითითებულია, მაშინ აკეთებდეს Derby-ს shutdown-ს