View Javadoc
1   package net.sumaris.core.dao.administration.user;
2   
3   /*-
4    * #%L
5    * SUMARiS:: Core
6    * %%
7    * Copyright (C) 2018 SUMARiS Consortium
8    * %%
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU General Public License as
11   * published by the Free Software Foundation, either version 3 of the
12   * License, or (at your option) any later version.
13   * 
14   * This program is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Public License for more details.
18   * 
19   * You should have received a copy of the GNU General Public
20   * License along with this program.  If not, see
21   * <http://www.gnu.org/licenses/gpl-3.0.html>.
22   * #L%
23   */
24  
25  import net.sumaris.core.dao.cache.CacheNames;
26  import net.sumaris.core.dao.technical.SortDirection;
27  import net.sumaris.core.model.administration.user.Department;
28  import net.sumaris.core.vo.administration.user.DepartmentVO;
29  import net.sumaris.core.vo.filter.DepartmentFilterVO;
30  import org.springframework.cache.annotation.CacheEvict;
31  import org.springframework.cache.annotation.CachePut;
32  import org.springframework.cache.annotation.Cacheable;
33  import org.springframework.cache.annotation.Caching;
34  
35  import java.util.List;
36  
37  public interface DepartmentDao {
38  
39      List<DepartmentVO> findByFilter(DepartmentFilterVO filter,
40                                      int offset,
41                                      int size,
42                                      String sortAttribute,
43                                      SortDirection sortDirection);
44  
45      @Cacheable(cacheNames = CacheNames.DEPARTMENT_BY_ID, key = "#id", unless="#result==null")
46      DepartmentVO get(int id);
47  
48      @Cacheable(cacheNames = CacheNames.DEPARTMENT_BY_LABEL, key = "#label", unless="#result==null")
49      Department getByLabelOrNull(String label);
50  
51      @Caching(evict = {
52              @CacheEvict(cacheNames = CacheNames.DEPARTMENT_BY_ID, key = "#id"),
53              @CacheEvict(cacheNames = CacheNames.DEPARTMENT_BY_LABEL, allEntries = true)
54      })
55      void delete(int id);
56  
57      @Caching(put = {
58              @CachePut(cacheNames= CacheNames.DEPARTMENT_BY_ID, key="#source.id", condition = "#source != null && #source.id != null"),
59              @CachePut(cacheNames= CacheNames.DEPARTMENT_BY_LABEL, key="#source.label", condition = "#source != null && #source.id != null && #source.label != null")
60      })
61      DepartmentVO./../../../../../net/sumaris/core/vo/administration/user/DepartmentVO.html#DepartmentVO">DepartmentVO save(DepartmentVO source);
62  
63      DepartmentVO toDepartmentVO(Department department);
64  }