Groovy скрипт / Java-код, чтобы получить отдельных пользователей из набора результатов - PullRequest
0 голосов
/ 09 марта 2012

Привет! Я запускаю простой запрос на выборку в oracle по таблице и получаю набор результатов. как select username, responsibility, project from mytable.
Результирующий набор содержит данные пользователя. для каждого имени пользователя возвращаются несколько строк с разными значениями ответственности и проекта. Теперь я хочу получить список списков из этого набора результатов, который имеет один список для каждого имени пользователя, а отдельные значения объединяются в запятую. Поэтому, если у Сэма есть несколько записей в наборе результатов, результат моей операции должен дать мне:

UserList =
["Sam", "responsibility1,responsibility2,responsibility3...", "dept1,dept2,dept3.."],
[Some other User],
[and so on..]

Позже я напишу это в CSV-файл.
Я не могу сделать это в самом запросе по причинам совместимости, мы должны поддерживать несколько баз данных, версии в будущем.
Как мне сделать это в Java или Groovy?

Спасибо

1 Ответ

1 голос
/ 09 марта 2012

Java довольно прост.Вам нужен класс для моделирования каждого пользователя.Вам нужна карта имени пользователя для пользователя.Каждый Пользователь содержит Список ответственности и Список отделов.Затем вы повторяете свой набор результатов, находите пользователя на карте в каждой строке и добавляете ответственность и отдел к этому пользователю

Вам нужен код или он достаточно хорош?*

Редактировать: Вот некоторый стартовый код Java: (не проверяется на синтаксис или ошибки;])

public class User {
    private final List<String> responsibility = new ArrayList<String>();
    private final List<String> department = new ArrayList<String>();

    ...standard getters and setters
}

// Your code to do the read
public void executeRead() {

    ... obtain the resultset somehow here

    Map<String, User> usernameToUser = new HashMap<String, User>():
    while (rs.next) {
        String username = rs.getString("username");
        User user = usernameToUser.get(username);
        if (user == null) {
            user = new User(); // Create and remember a user the first time you see them
            usernameToUser.put(username, user);
        }
        String responsiblity = rs.getString("responsiblity");
        String department = rs.getString("department");
        user.addResponsibility(responsibility);
        user.addDepartment(department);
    }
    rs.close();

    // Now you have the data structure of users in memory you can output
    // it in whichever format you like e.g. HTML, CSV, etc
    // Probably best to do this step in a totally separate place that can
    // be switched out for a different output format in future.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...