001// license-header java merge-point
002//
003// Attention: Generated code! Do not modify by hand!
004// Generated by: hibernate/SpringHibernateDaoBase.vsl in <project>/mda/src/main/cartridge/custom/...
005//
006package fr.ifremer.adagio.core.dao.administration.user;
007
008/*
009 * #%L
010 * SIH-Adagio :: Core
011 * $Id:$
012 * $HeadURL:$
013 * %%
014 * Copyright (C) 2012 - 2014 Ifremer
015 * %%
016 * This program is free software: you can redistribute it and/or modify
017 * it under the terms of the GNU Affero General Public License as published by
018 * the Free Software Foundation, either version 3 of the License, or
019 * (at your option) any later version.
020 * 
021 * This program is distributed in the hope that it will be useful,
022 * but WITHOUT ANY WARRANTY; without even the implied warranty of
023 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
024 * GNU General Public License for more details.
025 * 
026 * You should have received a copy of the GNU Affero General Public License
027 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
028 * #L%
029 */
030
031import fr.ifremer.adagio.core.dao.PrincipalStore;
032import fr.ifremer.adagio.core.dao.PropertySearch;
033import fr.ifremer.adagio.core.dao.Search;
034import fr.ifremer.adagio.core.dao.referential.Status;
035import fr.ifremer.adagio.core.dao.technical.hibernate.HibernateDaoSupport;
036import java.security.Principal;
037import java.sql.Timestamp;
038import java.util.Collection;
039import java.util.Date;
040import java.util.LinkedHashSet;
041import java.util.List;
042import java.util.Set;
043import javax.annotation.Resource;
044import org.andromda.spring.PaginationResult;
045import org.apache.commons.collections.CollectionUtils;
046import org.apache.commons.collections.Transformer;
047import org.hibernate.Criteria;
048import org.hibernate.HibernateException;
049import org.hibernate.Query;
050import org.hibernate.ScrollableResults;
051
052/**
053 * <p>
054 * Base Spring DAO Class: is able to create, update, remove, load, and find
055 * objects of type <code>DepartmentPrivilegeTransfert</code>.
056 * </p>
057 *
058 * @see DepartmentPrivilegeTransfert
059 */
060public abstract class DepartmentPrivilegeTransfertDaoBase
061    extends HibernateDaoSupport    
062    implements DepartmentPrivilegeTransfertDao
063{
064    /**
065     * {@inheritDoc}
066     */
067    @Override
068    public Object get(final int transform, final DepartmentPrivilegeTransfertPK departmentPrivilegeTransfertPk)
069    {
070        if (departmentPrivilegeTransfertPk == null)
071        {
072            throw new IllegalArgumentException(
073                "DepartmentPrivilegeTransfert.get - 'departmentPrivilegeTransfertPk' can not be null");
074        }
075        final DepartmentPrivilegeTransfert entity = get(DepartmentPrivilegeTransfertImpl.class, departmentPrivilegeTransfertPk);
076        return transformEntity(transform, entity);
077    }
078    /**
079     * {@inheritDoc}
080     */
081    @Override
082    public DepartmentPrivilegeTransfert get(DepartmentPrivilegeTransfertPK departmentPrivilegeTransfertPk)
083    {
084        return (DepartmentPrivilegeTransfert)this.get(TRANSFORM_NONE, departmentPrivilegeTransfertPk);
085    }
086
087    /**
088     * {@inheritDoc}
089     */
090    @Override
091    public Object load(final int transform, final DepartmentPrivilegeTransfertPK departmentPrivilegeTransfertPk)
092    {
093        if (departmentPrivilegeTransfertPk == null)
094        {
095            throw new IllegalArgumentException(
096                "DepartmentPrivilegeTransfert.load - 'departmentPrivilegeTransfertPk' can not be null");
097        }
098        final DepartmentPrivilegeTransfert entity = get(DepartmentPrivilegeTransfertImpl.class, departmentPrivilegeTransfertPk);
099        return transformEntity(transform, entity);
100    }
101
102    /**
103     * {@inheritDoc}
104     */
105    @Override
106    public DepartmentPrivilegeTransfert load(DepartmentPrivilegeTransfertPK departmentPrivilegeTransfertPk)
107    {
108        return (DepartmentPrivilegeTransfert)this.load(TRANSFORM_NONE, departmentPrivilegeTransfertPk);
109    }
110
111    /**
112     * {@inheritDoc}
113     */
114    @Override
115    @SuppressWarnings({"unchecked"})
116    public Collection<DepartmentPrivilegeTransfert> loadAll()
117    {
118        return (Collection<DepartmentPrivilegeTransfert>) this.loadAll(DepartmentPrivilegeTransfertDao.TRANSFORM_NONE);
119    }
120
121    /**
122     * {@inheritDoc}
123     */
124    @Override
125    public Collection<?> loadAll(final int transform)
126    {
127        return this.loadAll(transform, -1, -1);
128    }
129
130    /**
131     * {@inheritDoc}
132     */
133    @Override
134    public Collection<?> loadAll(final int pageNumber, final int pageSize)
135    {
136        return this.loadAll(DepartmentPrivilegeTransfertDao.TRANSFORM_NONE, pageNumber, pageSize);
137    }
138
139    /**
140     * {@inheritDoc}
141     */
142    @Override
143    public Collection<?> loadAll(final int transform, final int pageNumber, final int pageSize)
144    {
145        try
146        {
147            final Criteria criteria = this.getSession().createCriteria(DepartmentPrivilegeTransfertImpl.class);
148            if (pageNumber > 0 && pageSize > 0)
149            {
150                criteria.setFirstResult(this.calculateFirstResult(pageNumber, pageSize));
151                criteria.setMaxResults(pageSize);
152            }
153            final Collection<?> results = criteria.list();
154            this.transformEntities(transform, results);
155            return results;
156        }
157        catch (HibernateException ex)
158        {
159            throw ex;
160        }
161    }
162
163    /**
164     * firstResult = (pageNumber - 1) * pageSize
165     * @param pageNumber
166     * @param pageSize
167     * @return firstResult
168     */
169    protected int calculateFirstResult(int pageNumber, int pageSize)
170    {
171        int firstResult = 0;
172        if (pageNumber > 0)
173        {
174            firstResult = (pageNumber - 1) * pageSize;
175        }
176        return firstResult;
177    }
178
179    /**
180     * {@inheritDoc}
181     */
182    @Override
183    public DepartmentPrivilegeTransfert create(DepartmentPrivilegeTransfert departmentPrivilegeTransfert)
184    {
185        return (DepartmentPrivilegeTransfert)this.create(DepartmentPrivilegeTransfertDao.TRANSFORM_NONE, departmentPrivilegeTransfert);
186    }
187
188    /**
189     * {@inheritDoc}
190     */
191    @Override
192    public Object create(final int transform, final DepartmentPrivilegeTransfert departmentPrivilegeTransfert)
193    {
194        if (departmentPrivilegeTransfert == null)
195        {
196            throw new IllegalArgumentException(
197                "DepartmentPrivilegeTransfert.create - 'departmentPrivilegeTransfert' can not be null");
198        }
199        this.getSessionFactory().getCurrentSession().save(departmentPrivilegeTransfert);
200        return this.transformEntity(transform, departmentPrivilegeTransfert);
201    }
202
203    /**
204     * {@inheritDoc}
205     */
206    @Override
207    @SuppressWarnings({"unchecked"})
208    public Collection<DepartmentPrivilegeTransfert> create(final Collection<DepartmentPrivilegeTransfert> entities)
209    {
210        return (Collection<DepartmentPrivilegeTransfert>) create(DepartmentPrivilegeTransfertDao.TRANSFORM_NONE, entities);
211    }
212
213    /**
214     * {@inheritDoc}
215     */
216    @Override
217    public Collection<?> create(final int transform, final Collection<DepartmentPrivilegeTransfert> entities)
218    {
219        if (entities == null)
220        {
221            throw new IllegalArgumentException(
222                "DepartmentPrivilegeTransfert.create - 'entities' can not be null");
223        }
224                    for (DepartmentPrivilegeTransfert entity : entities)
225                    {
226                        create(transform, entity);
227                    }
228        return entities;
229    }
230
231    /**
232     * {@inheritDoc}
233     */
234    @Override
235    public DepartmentPrivilegeTransfert create(
236        Date transfertDate,
237        Timestamp updateDate)
238    {
239        return (DepartmentPrivilegeTransfert)this.create(DepartmentPrivilegeTransfertDao.TRANSFORM_NONE, transfertDate, updateDate);
240    }
241
242    /**
243     * {@inheritDoc}
244     */
245    @Override
246    public Object create(
247        final int transform,
248        Date transfertDate,
249        Timestamp updateDate)
250    {
251        DepartmentPrivilegeTransfert entity = new DepartmentPrivilegeTransfertImpl();
252        entity.setTransfertDate(transfertDate);
253        entity.setUpdateDate(updateDate);
254        return this.create(transform, entity);
255    }
256
257    /**
258     * {@inheritDoc}
259     */
260    @Override
261    public DepartmentPrivilegeTransfert create(
262        Department fromDepartment,
263        Status status,
264        Department toDepartment,
265        Date transfertDate,
266        Timestamp updateDate)
267    {
268        return (DepartmentPrivilegeTransfert)this.create(DepartmentPrivilegeTransfertDao.TRANSFORM_NONE, fromDepartment, status, toDepartment, transfertDate, updateDate);
269    }
270
271    /**
272     * {@inheritDoc}
273     */
274    @Override
275    public Object create(
276        final int transform,
277        Department fromDepartment,
278        Status status,
279        Department toDepartment,
280        Date transfertDate,
281        Timestamp updateDate)
282    {
283        DepartmentPrivilegeTransfert entity = new DepartmentPrivilegeTransfertImpl();
284        entity.setFromDepartment(fromDepartment);
285        entity.setStatus(status);
286        entity.setToDepartment(toDepartment);
287        entity.setTransfertDate(transfertDate);
288        entity.setUpdateDate(updateDate);
289        return this.create(transform, entity);
290    }
291
292    /**
293     * {@inheritDoc}
294     */
295    @Override
296    public void update(DepartmentPrivilegeTransfert departmentPrivilegeTransfert)
297    {
298        if (departmentPrivilegeTransfert == null)
299        {
300            throw new IllegalArgumentException(
301                "DepartmentPrivilegeTransfert.update - 'departmentPrivilegeTransfert' can not be null");
302        }
303        this.getSessionFactory().getCurrentSession().update(departmentPrivilegeTransfert);
304    }
305
306    /**
307     * {@inheritDoc}
308     */
309    @Override
310    public void update(final Collection<DepartmentPrivilegeTransfert> entities)
311    {
312        if (entities == null)
313        {
314            throw new IllegalArgumentException(
315                "DepartmentPrivilegeTransfert.update - 'entities' can not be null");
316        }
317                    for (DepartmentPrivilegeTransfert entity : entities)
318                    {
319                        update(entity);
320                    }
321    }
322
323    /**
324     * {@inheritDoc}
325     */
326    @Override
327    public void remove(DepartmentPrivilegeTransfert departmentPrivilegeTransfert)
328    {
329        if (departmentPrivilegeTransfert == null)
330        {
331            throw new IllegalArgumentException(
332                "DepartmentPrivilegeTransfert.remove - 'departmentPrivilegeTransfert' can not be null");
333        }
334        this.getSessionFactory().getCurrentSession().delete(departmentPrivilegeTransfert);
335    }
336
337    /**
338     * {@inheritDoc}
339     */
340    @Override
341    public void remove(DepartmentPrivilegeTransfertPK departmentPrivilegeTransfertPk)
342    {
343        if (departmentPrivilegeTransfertPk == null)
344        {
345            throw new IllegalArgumentException(
346                "DepartmentPrivilegeTransfert.remove - 'departmentPrivilegeTransfertPk' can not be null");
347        }
348        DepartmentPrivilegeTransfert entity = this.get(departmentPrivilegeTransfertPk);
349        if (entity != null)
350        {
351            this.remove(entity);
352        }
353    }
354
355    /**
356     * {@inheritDoc}
357     */
358    @Override
359    public void remove(Collection<DepartmentPrivilegeTransfert> entities)
360    {
361        if (entities == null)
362        {
363            throw new IllegalArgumentException(
364                "DepartmentPrivilegeTransfert.remove - 'entities' can not be null");
365        }
366        deleteAll(entities);
367    }
368    /**
369     * Allows transformation of entities into value objects
370     * (or something else for that matter), when the <code>transform</code>
371     * flag is set to one of the constants defined in <code>DepartmentPrivilegeTransfertDao</code>, please note
372     * that the {@link #TRANSFORM_NONE} constant denotes no transformation, so the entity itself
373     * will be returned.
374     *
375     * If the integer argument value is unknown {@link #TRANSFORM_NONE} is assumed.
376     *
377     * @param transform one of the constants declared in {@link DepartmentPrivilegeTransfertDao}
378     * @param entity an entity that was found
379     * @return the transformed entity (i.e. new value object, etc)
380     * @see DepartmentPrivilegeTransfertDao#transformEntity(int, DepartmentPrivilegeTransfert)
381     */
382    public Object transformEntity(final int transform, final DepartmentPrivilegeTransfert entity)
383    {
384        Object target = null;
385        if (entity != null)
386        {
387            switch (transform)
388            {
389                case DepartmentPrivilegeTransfertDao.TRANSFORM_NONE : // fall-through
390                default:
391                    target = entity;
392            }
393        }
394        return target;
395    }
396
397    /**
398     * {@inheritDoc}
399     */
400    @Override
401    public void transformEntities(final int transform, final Collection<?> entities)
402    {
403        switch (transform)
404        {
405            case DepartmentPrivilegeTransfertDao.TRANSFORM_NONE : // fall-through
406                default:
407                // do nothing;
408        }
409    }
410
411    /**
412     * @see DepartmentPrivilegeTransfertDao#toEntities(Collection)
413     */
414    public void toEntities(final Collection<?> results)
415    {
416        if (results != null)
417        {
418            CollectionUtils.transform(results, this.ENTITYTRANSFORMER);
419        }
420    }
421
422    /**
423     * This anonymous transformer is designed to transform report query results
424     * (which result in an array of entities) to {@link DepartmentPrivilegeTransfert}
425     * using the Jakarta Commons-Collections Transformation API.
426     */
427    private Transformer ENTITYTRANSFORMER =
428        new Transformer()
429        {
430            public Object transform(Object input)
431            {
432                Object result = null;
433                if (input instanceof Object[])
434                {
435                    result = toEntity((Object[])input);
436                }
437                else if (input instanceof DepartmentPrivilegeTransfert)
438                {
439                    result = input;
440                }
441                return result;
442            }
443        };
444
445    /**
446     * @param row
447     * @return DepartmentPrivilegeTransfert
448     */
449    protected DepartmentPrivilegeTransfert toEntity(Object[] row)
450    {
451        DepartmentPrivilegeTransfert target = null;
452        if (row != null)
453        {
454            final int numberOfObjects = row.length;
455            for (int ctr = 0; ctr < numberOfObjects; ctr++)
456            {
457                final Object object = row[ctr];
458                if (object instanceof DepartmentPrivilegeTransfert)
459                {
460                    target = (DepartmentPrivilegeTransfert)object;
461                    break;
462                }
463            }
464        }
465        return target;
466    }
467
468    /**
469     * Gets the current <code>principal</code> if one has been set,
470     * otherwise returns <code>null</code>.
471     *
472     * @return the current principal
473     */
474    protected Principal getPrincipal()
475    {
476        return PrincipalStore.get();
477    }
478
479    /**
480     * {@inheritDoc}
481     */
482    @Override
483    @SuppressWarnings({ "unchecked" })
484    public PaginationResult search(final int transform, final int pageNumber, final int pageSize, final Search search)
485    {
486        try
487        {
488            search.setPageNumber(pageNumber);
489            search.setPageSize(pageSize);
490            final PropertySearch propertySearch = new PropertySearch(
491                this.getSession(), DepartmentPrivilegeTransfertImpl.class, search);
492            final List results = propertySearch.executeAsList();
493            this.transformEntities(transform, results);
494            return new PaginationResult(results.toArray(new Object[results.size()]), propertySearch.getTotalCount());
495        }
496        catch (HibernateException ex)
497        {
498            throw ex; /*super.convertHibernateAccessException(ex);*/
499        }
500    }
501
502    /**
503     * {@inheritDoc}
504     */
505    @Override
506    public PaginationResult search(final int pageNumber, final int pageSize, final Search search)
507    {
508        return this.search(DepartmentPrivilegeTransfertDao.TRANSFORM_NONE, pageNumber, pageSize, search);
509    }
510
511    /**
512     * {@inheritDoc}
513     */
514    @Override
515    public Set<?> search(final int transform, final Search search)
516    {
517        try
518        {
519            final PropertySearch propertySearch = new PropertySearch(
520                this.getSession(), DepartmentPrivilegeTransfertImpl.class, search);
521            final Set<?> results = propertySearch.executeAsSet();
522            this.transformEntities(transform, results);
523            return results;
524        }
525        catch (HibernateException ex)
526        {
527            throw ex; /*super.convertHibernateAccessException(ex);*/
528        }
529    }
530
531    /**
532     * {@inheritDoc}
533     */
534    @Override
535    @SuppressWarnings("unchecked")
536    public Set<DepartmentPrivilegeTransfert> search(final Search search)
537    {
538        return (Set<DepartmentPrivilegeTransfert>) this.search(DepartmentPrivilegeTransfertDao.TRANSFORM_NONE, search);
539    }
540
541    /**
542     * Executes and returns the given Hibernate queryObject as a {@link PaginationResult} instance.
543     * @param queryObject
544     * @param transform
545     * @param pageNumber
546     * @param pageSize
547     * @return PaginationResult
548     */
549    @SuppressWarnings({ "unchecked" })
550    protected PaginationResult getPaginationResult(
551        final Query queryObject,
552        final int transform, int pageNumber, int pageSize)
553    {
554        try
555        {
556            final ScrollableResults scrollableResults = queryObject.scroll();
557            scrollableResults.last();
558            int totalCount = scrollableResults.getRowNumber();
559            totalCount = totalCount >= 0 ? totalCount + 1 : 0;
560            if (pageNumber > 0 && pageSize > 0)
561            {
562                queryObject.setFirstResult(this.calculateFirstResult(pageNumber, pageSize));
563                queryObject.setMaxResults(pageSize);
564            }
565            // Unchecked transformation because Set object is reused, cannot be strongly typed.
566            Set results = new LinkedHashSet(queryObject.list());
567            transformEntities(transform, results);
568            return new PaginationResult(results.toArray(new Object[results.size()]), totalCount);
569        }
570        catch (HibernateException ex)
571        {
572            throw ex; /*super.convertHibernateAccessException(ex);*/
573        }
574    }
575
576    // spring-hibernate-dao-base merge-point
577}