[java] Java Vaadin 데이터 필터링과 정렬

Vaadin은 Java로 웹 애플리케이션을 개발하기 위한 오픈 소스 프레임워크입니다. Vaadin을 사용하면 웹 애플리케이션의 UI를 자바 코드로 작성할 수 있습니다. 이번 포스트에서는 Vaadin에서 데이터 필터링과 정렬을 다루는 방법에 대해 알아보겠습니다.

데이터 모델 생성

먼저 데이터를 표현하는 모델 클래스를 생성해야합니다. 이 클래스는 데이터베이스에서 가져온 데이터를 저장하는 데 사용됩니다. 예를 들어, Person 클래스가 있다고 가정해보겠습니다.

public class Person {
    private String name;
    private int age;
    // 생성자, getter, setter 등 생략
}

데이터 필터링

Vaadin에서 데이터 필터링을 구현하기 위해서는 Filter 인터페이스를 구현해야 합니다. 필터링할 조건에 따라 Filter 인터페이스의 passesFilter 메서드를 구현하면 됩니다. 예를 들어, 나이가 30세 이상인 사람만 필터링하고 싶다면 다음과 같이 구현할 수 있습니다.

public class AgeFilter implements Filter {
    private int minAge;

    public AgeFilter(int minAge) {
        this.minAge = minAge;
    }

    @Override
    public boolean passesFilter(Object item) {
        Person person = (Person) item;
        return person.getAge() >= minAge;
    }
}

passesFilter 메서드는 각 아이템에 대해 필터링 조건을 만족하는지 확인합니다.

데이터 정렬

Vaadin에서 데이터를 정렬하기 위해서는 Comparator 인터페이스를 구현해야 합니다. Comparator 인터페이스는 compare 메서드를 구현해야하며, 두 개의 객체를 비교하여 정렬 순서를 결정합니다. 예를 들어, 이름에 따라 오름차순으로 정렬하고 싶다면 다음과 같이 구현할 수 있습니다.

public class NameComparator implements Comparator<Person> {
    @Override
    public int compare(Person person1, Person person2) {
        return person1.getName().compareTo(person2.getName());
    }
}

compare 메서드에서는 두 개의 Person 객체를 비교하고 순서를 결정하기 위해 compareTo 메서드를 호출합니다.

데이터 필터링과 정렬 적용

Vaadin에서는 ListDataProvider를 사용하여 데이터를 관리하고 필터링 및 정렬을 적용할 수 있습니다. 먼저 데이터베이스로부터 데이터를 가져온 다음 ListDataProvider에 데이터를 추가합니다.

List<Person> people = fetchDataFromDatabase();
ListDataProvider<Person> dataProvider = new ListDataProvider<>(people);

그런 다음 데이터 프로바이더에 필터와 정렬을 적용합니다.

AgeFilter ageFilter = new AgeFilter(30);
dataProvider.addFilter(ageFilter);

NameComparator nameComparator = new NameComparator();
dataProvider.setSortComparator(nameComparator);

이제 dataProvider를 Vaadin의 데이터 컴포넌트에 연결하여 필터링과 정렬된 데이터를 표시할 수 있습니다.

Grid<Person> grid = new Grid<>();
grid.setDataProvider(dataProvider);
// 그리드 컬럼 설정 등 생략

결론

이번 포스트에서는 Vaadin에서 데이터 필터링과 정렬을 구현하는 방법에 대해 알아보았습니다. Filter 인터페이스를 구현하여 원하는 조건에 따라 데이터를 필터링하고, Comparator 인터페이스를 구현하여 데이터를 정렬할 수 있습니다. 이러한 기능을 사용하여 Vaadin 애플리케이션에서 데이터를 효과적으로 관리할 수 있습니다.

참고 자료