View Javadoc
1   package fr.ifremer.quadrige3.core.dao.administration.metaprogamme;
2   
3   /*-
4    * #%L
5    * Quadrige3 Core :: Quadrige3 Client Core
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2017 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  import com.google.common.collect.ImmutableList;
27  import org.apache.commons.collections4.CollectionUtils;
28  import org.hibernate.SessionFactory;
29  import org.springframework.beans.factory.annotation.Autowired;
30  import org.springframework.context.annotation.Lazy;
31  import org.springframework.stereotype.Repository;
32  
33  import javax.annotation.Resource;
34  
35  /**
36   * <p>
37   * MetaprogrammeDaoImpl class.
38   * </p>
39   * 
40   * @see Metaprogramme
41   */
42  @Repository("metaprogrammeDao")
43  @Lazy
44  public class MetaprogrammeDaoImpl
45  		extends MetaprogrammeDaoBase
46  {
47  
48  	@Resource
49  	private MonLocMetDao monLocMetDao;
50  
51  	@Resource
52  	private PmfmMetDao pmfmMetDao;
53  
54  	/**
55  	 * Constructor used by Spring
56  	 * 
57  	 * @param sessionFactory
58  	 *            a {@link org.hibernate.SessionFactory} object.
59  	 */
60  	@Autowired
61  	public MetaprogrammeDaoImpl(SessionFactory sessionFactory) {
62  		super();
63  		setSessionFactory(sessionFactory);
64  	}
65  
66  	/** {@inheritDoc} */
67  	@Override
68  	public void remove(Metaprogramme metaprogramme) {
69  
70  		// Remove monitoring locations
71  		if (CollectionUtils.isNotEmpty(metaprogramme.getMonLocMets())) {
72  			monLocMetDao.remove(ImmutableList.copyOf(metaprogramme.getMonLocMets()));
73  			metaprogramme.getMonLocMets().clear();
74  		}
75  
76  		// Remove pmfms
77  		if (CollectionUtils.isNotEmpty(metaprogramme.getPmfmMets())) {
78  			pmfmMetDao.remove(ImmutableList.copyOf(metaprogramme.getPmfmMets()));
79  			metaprogramme.getPmfmMets().clear();
80  		}
81  
82  		super.remove(metaprogramme);
83  	}
84  }