|
| 1 | +package com.javarush.test.level23.lesson08.home01; |
| 2 | + |
| 3 | +import com.javarush.test.level23.lesson08.home01.vo.*; |
| 4 | + |
| 5 | +import java.util.List; |
| 6 | + |
| 7 | +/* Анонимность иногда так приятна! |
| 8 | +1. В пакете vo создайте public классы User, Location, Server, Subject, Subscription, которые наследуются от NamedItem |
| 9 | +2. В классе Solution для каждого класса создайте свой метод, который возвращает список экземпляров класса. |
| 10 | +Например, для класса User это будет - public List<User> getUsers() |
| 11 | +Для класса Location это будет - public List<Location> getLocations() |
| 12 | +3. Внутри каждого такого метода создайте анонимный класс от AbstractDbSelectExecutor и вызовите его нужный метод. |
| 13 | +Подсказка: тело метода должно начинаться так: return new AbstractDbSelectExecutor |
| 14 | +
|
| 15 | +4. Пример вывода для User и Location: |
| 16 | +Id=5, name='User-5', description=Got by executing 'select * from USER' |
| 17 | +Id=1, name='Location-1', description=Got by executing 'select * from LOCATION' |
| 18 | +
|
| 19 | +5. Проанализируйте пример вывода и сформируйте правильный query для всех классов. |
| 20 | +6. Классы не должны содержать закоментированного кода. |
| 21 | +*/ |
| 22 | +public class Solution { |
| 23 | + public static void main(String[] args) { |
| 24 | + Solution solution = new Solution(); |
| 25 | + print(solution.getUsers()); |
| 26 | + print(solution.getLocations()); |
| 27 | + } |
| 28 | + |
| 29 | + public static void print(List list) { |
| 30 | + String format = "Id=%d, name='%s', description=%s"; |
| 31 | + for (Object obj : list) { |
| 32 | + NamedItem item = (NamedItem) obj; |
| 33 | + System.out.println(String.format(format, item.getId(), item.getName(), item.getDescription())); |
| 34 | + } |
| 35 | + } |
| 36 | + |
| 37 | + public List<User> getUsers() { |
| 38 | + return new AbstractDbSelectExecutor<User>() { |
| 39 | + |
| 40 | + @Override |
| 41 | + public String getQuery() |
| 42 | + { |
| 43 | + return "select * from USER"; |
| 44 | + } |
| 45 | + }.execute(); |
| 46 | + |
| 47 | + } |
| 48 | + |
| 49 | + public List<Location> getLocations() { |
| 50 | + return new AbstractDbSelectExecutor<Location>() { |
| 51 | + |
| 52 | + @Override |
| 53 | + public String getQuery() |
| 54 | + { |
| 55 | + return "select * from LOCATION"; |
| 56 | + } |
| 57 | + }.execute(); |
| 58 | + } |
| 59 | + |
| 60 | + public List<Server> getServers() { |
| 61 | + return new AbstractDbSelectExecutor<Server>() { |
| 62 | + |
| 63 | + @Override |
| 64 | + public String getQuery() |
| 65 | + { |
| 66 | + return "select * from SERVER"; |
| 67 | + } |
| 68 | + }.execute(); |
| 69 | + } |
| 70 | + |
| 71 | + public List<Subject> getSubjects() { |
| 72 | + return new AbstractDbSelectExecutor<Subject>() { |
| 73 | + |
| 74 | + @Override |
| 75 | + public String getQuery() |
| 76 | + { |
| 77 | + return "select * from SUBJECT"; |
| 78 | + } |
| 79 | + }.execute(); |
| 80 | + } |
| 81 | + |
| 82 | + public List<Subscription> getSubscriptions() { |
| 83 | + return new AbstractDbSelectExecutor<Subscription>() { |
| 84 | + |
| 85 | + @Override |
| 86 | + public String getQuery() |
| 87 | + { |
| 88 | + return "select * from SUBSCRIPTION"; |
| 89 | + } |
| 90 | + }.execute(); |
| 91 | + } |
| 92 | + |
| 93 | +} |
0 commit comments