001/*
002 *  Copyright 2017 Anyware Services
003 *
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package org.ametys.plugins.odfsync.apogee;
017
018import java.util.List;
019import java.util.Map;
020
021import org.apache.ibatis.session.SqlSession;
022
023import org.ametys.core.datasource.AbstractMyBatisDAO;
024import org.ametys.runtime.config.Config;
025
026/**
027 * Data access object to the remote DB Apogee
028 */
029public class ApogeeDAO extends AbstractMyBatisDAO
030{
031    /** Avalon ROLE */
032    public static final String ROLE = ApogeeDAO.class.getName();
033    
034    /**
035     * Returns Apogee programs matching the search criteria
036     * @param params The parameters for search criteria: DIP code, VDI code, title
037     * @return the list Apogee course lists matching the search criteria
038     */
039    public List<Map<String, Object>> searchPrograms(Map<String, Object> params)
040    {
041        String administrativeYear = Config.getInstance().getValue("odf.apogee.administrative.year");
042        params.put("year", administrativeYear);
043        
044        try (SqlSession session = getSession())
045        {
046            return session.selectList("Apogee.searchPrograms", params);
047        }
048    }
049    
050    /**
051     * Returns joint org units linked to a program
052     * @param params The parameters for search criteria: Program ID
053     * @return The list of Apogee joint org units matching the program
054     */
055    public List<Map<String, Object>> getJointOrgUnits(Map<String, Object> params)
056    {
057        try (SqlSession session = getSession())
058        {
059            return session.selectList("Apogee.getJointOrgUnits", params);
060        }
061    }
062
063    /**
064     * Returns form of teaching linked to a program
065     * @param params The parameters for search criteria: Program ID
066     * @return The list of Apogee form of teaching matching the program
067     */
068    public List<Map<String, Object>> getFormOfTeachingOrg(Map<String, Object> params)
069    {
070        try (SqlSession session = getSession())
071        {
072            return session.selectList("Apogee.getFormOfTeachingOrg", params);
073        }
074    }
075    
076    /**
077     * Returns the add elements (rich texts) to a program
078     * @param params The parameters for search criteria: Program ID
079     * @return The list of Apogee add elements matching the program
080     */
081    public List<Map<String, Object>> getAddElements(Map<String, Object> params)
082    {
083        try (SqlSession session = getSession())
084        {
085            return session.selectList("Apogee.getAddElements", params);
086        }
087    }
088    
089    /**
090     * Returns the domains to a program
091     * @param params The parameters for search criteria: Program ID
092     * @return The list of Apogee domains matching the program
093     */
094    public List<Map<String, Object>> getDomains(Map<String, Object> params)
095    {
096        try (SqlSession session = getSession())
097        {
098            return session.selectList("Apogee.getDomains", params);
099        }
100    }
101    
102    /**
103     * Returns Apogee organizational units matching the search criteria
104     * @param params The parameters for search criteria: cod_cmp, cod_tpc, title
105     * @return The list of Apogee organizational units matching the search criteria
106     */
107    public List<Map<String, Object>> searchOrgUnits(Map<String, Object> params)
108    {
109        try (SqlSession session = getSession())
110        {
111            return session.selectList("Apogee.searchOrgUnits", params);
112        }
113    }
114    
115    /**
116     * Returns Apogee containers matching the search criteria
117     * @param params The parameters for search criteria: code, type, title
118     * @return The list of Apogee containers matching the search criteria
119     */
120    public List<Map<String, Object>> searchContainers(Map<String, Object> params)
121    {
122        try (SqlSession session = getSession())
123        {
124            return session.selectList("Apogee.searchContainers", params);
125        }
126    }
127    
128    /**
129     * Returns Apogee subprograms matching the search criteria
130     * @param params The parameters for search criteria: "dip", "vdi", "vdi-ter", "etp-code", "vet-code", "vet-title"
131     * @return The list of Apogee subprograms matching the search criteria
132     */
133    public List<Map<String, Object>> searchSubPrograms(Map<String, Object> params)
134    {
135        String administrativeYear = Config.getInstance().getValue("odf.apogee.administrative.year");
136        params.put("year", administrativeYear);
137        
138        try (SqlSession session = getSession())
139        {
140            return session.selectList("Apogee.searchSubPrograms", params);
141        }
142    }
143    
144    /**
145     * Returns the Apogee educational elements matching the search criteria
146     * @param params The parameters for search criteria: ELP code (code), ELP type (type), title (title)
147     * @return the list of Apogee educational elements matching the search criteria
148     */
149    public List<Map<String, Object>> searchCourses(Map<String, Object> params)
150    {
151        try (SqlSession session = getSession())
152        {
153            return session.selectList("Apogee.searchCourses", params);
154        }
155    }
156    
157    /**
158     * Returns the course parts (hours) to a course
159     * @param params The parameters for search criteria: Course ID
160     * @return The list of Apogee course parts matching the course
161     */
162    public List<Map<String, Object>> getCourseParts(Map<String, Object> params)
163    {
164        String administrativeYear = Config.getInstance().getValue("odf.apogee.administrative.year");
165        params.put("year", administrativeYear);
166        
167        try (SqlSession session = getSession())
168        {
169            return session.selectList("Apogee.getCourseParts", params);
170        }
171    }
172    
173    /**
174     * Returns the Apogee course lists matching the search criteria
175     * @param params The parameters for search criteria: ELP code (code), NEL code (cod_nel), title (title)
176     * @return the list Apogee course lists matching the search criteria
177     */
178    public List<Map<String, Object>> searchCourseLists(Map<String, Object> params)
179    {
180        try (SqlSession session = getSession())
181        {
182            return session.selectList("Apogee.searchCourseLists", params);
183        }
184    }
185}