1 | package com.ether.dao; |
---|
2 | |
---|
3 | import com.ether.Data; |
---|
4 | import com.ether.PersistenceException; |
---|
5 | import com.medias.database.objects.Valeur; |
---|
6 | import org.hibernate.criterion.DetachedCriteria; |
---|
7 | import org.hibernate.criterion.Order; |
---|
8 | import org.hibernate.criterion.Projections; |
---|
9 | import org.hibernate.criterion.Restrictions; |
---|
10 | import org.jetbrains.annotations.NotNull; |
---|
11 | import org.jetbrains.annotations.Nullable; |
---|
12 | |
---|
13 | import java.util.Date; |
---|
14 | import java.util.List; |
---|
15 | |
---|
16 | /** |
---|
17 | * @author vmipsl |
---|
18 | * @date 07 apr 2011 |
---|
19 | */ |
---|
20 | public class ValueDAOImpl |
---|
21 | extends DomainAccessObjectImpl<Valeur, Integer> |
---|
22 | implements ValueDAO |
---|
23 | { |
---|
24 | protected ValueDAOImpl() |
---|
25 | { |
---|
26 | super( Valeur.class ); |
---|
27 | } |
---|
28 | |
---|
29 | @NotNull |
---|
30 | public <T1, T2, T3> Data<T1[], T2[], T3[]> getListsByPlateformByParameterByPeriodForTimeSerie( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd ) |
---|
31 | throws PersistenceException |
---|
32 | { |
---|
33 | final DetachedCriteria criteria = DetachedCriteria.forClass( Valeur.class, "value" ) |
---|
34 | .add( Restrictions.eq( "value.parametre.id", parameterId ) ) |
---|
35 | .createCriteria( "mesure", "measure" ) |
---|
36 | .add( Restrictions.eq( "measure.plateforme.id", plateformId ) ); |
---|
37 | |
---|
38 | if( null != dateBegin ) |
---|
39 | criteria.add( Restrictions.ge( "measure.mesureDate", dateBegin ) ); |
---|
40 | if( null != dateEnd ) |
---|
41 | criteria.add( Restrictions.le( "measure.mesureDate", dateEnd ) ); |
---|
42 | |
---|
43 | criteria.setProjection( Projections.distinct( Projections.projectionList() |
---|
44 | .add( Projections.property( "value.valeurVal" ) ) |
---|
45 | .add( Projections.property( "measure.mesureDate" ) ) ) ); |
---|
46 | criteria.addOrder( Order.asc( "measure.mesureDate" ) ); |
---|
47 | |
---|
48 | final List<Object[]> objects = selectAllByCriteria( Object[].class, criteria ); |
---|
49 | // TODO : remove maxResults to 10 |
---|
50 | // final List<Object[]> objects = selectPage( null, 10, criteria ); |
---|
51 | |
---|
52 | final double[] values = new double[objects.size()]; |
---|
53 | final Date[] dates = new Date[objects.size()]; |
---|
54 | |
---|
55 | int i = 0; |
---|
56 | for( final Object[] value : objects ) |
---|
57 | { |
---|
58 | values[i] = (Double) value[0]; |
---|
59 | dates[i] = (Date) value[1]; |
---|
60 | i++; |
---|
61 | } |
---|
62 | |
---|
63 | return new Data( values, dates ); |
---|
64 | } |
---|
65 | |
---|
66 | @NotNull |
---|
67 | public <T1, T2, T3> Data<T1[], T2[], T3[]> getListsByPlateformByParameterByPeriodFor2D( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date dateBegin, @Nullable final Date dateEnd ) |
---|
68 | throws PersistenceException |
---|
69 | { |
---|
70 | final DetachedCriteria criteria = DetachedCriteria.forClass( Valeur.class, "value" ) |
---|
71 | .add( Restrictions.eq( "value.parametre.id", parameterId ) ) |
---|
72 | .createCriteria( "mesure", "measure" ) |
---|
73 | .add( Restrictions.eq( "measure.plateforme.id", plateformId ) ); |
---|
74 | |
---|
75 | if( null != dateBegin ) |
---|
76 | criteria.add( Restrictions.ge( "measure.mesureDate", dateBegin ) ); |
---|
77 | if( null != dateEnd ) |
---|
78 | criteria.add( Restrictions.le( "measure.mesureDate", dateEnd ) ); |
---|
79 | |
---|
80 | criteria.createCriteria( "localisation", "localisation" ); |
---|
81 | |
---|
82 | criteria.setProjection( Projections.distinct( Projections.projectionList() |
---|
83 | .add( Projections.property( "value.valeurVal" ) ) |
---|
84 | .add( Projections.property( "localisation.localisationLat" ) ) |
---|
85 | .add( Projections.property( "localisation.localisationLon" ) ) ) ); |
---|
86 | |
---|
87 | criteria.addOrder( Order.asc( "localisation.localisationLon" ) ); |
---|
88 | |
---|
89 | // final List<Object[]> objects = selectAllByCriteria( Object[].class, criteria ); |
---|
90 | // TODO : remove maxResults to 10 |
---|
91 | final List<Object[]> objects = selectPage( null, 10, criteria ); |
---|
92 | |
---|
93 | final double[] latitudeValues = new double[objects.size()]; |
---|
94 | final double[] longitudeValues = new double[objects.size()]; |
---|
95 | final double[] parameterValues = new double[objects.size()]; |
---|
96 | |
---|
97 | int i = 0; |
---|
98 | for( final Object[] value : objects ) |
---|
99 | { |
---|
100 | parameterValues[i] = (Double) value[0]; |
---|
101 | latitudeValues[i] = Double.valueOf( (Integer) value[1] ); |
---|
102 | longitudeValues[i] = Double.valueOf( (Integer) value[2] ); |
---|
103 | i++; |
---|
104 | } |
---|
105 | |
---|
106 | return new Data( parameterValues, latitudeValues, longitudeValues ); |
---|
107 | } |
---|
108 | |
---|
109 | @NotNull |
---|
110 | public Integer getNumberValuesByPlateformByParameterByPeriod( @NotNull final Integer plateformId, @NotNull final Integer parameterId, @Nullable final Date beginDate, @Nullable final Date endDate ) |
---|
111 | throws PersistenceException |
---|
112 | { |
---|
113 | final DetachedCriteria criteria = DetachedCriteria.forClass( Valeur.class, "value" ) |
---|
114 | .add( Restrictions.eq( "value.parametre.id", parameterId ) ) |
---|
115 | .createCriteria( "mesure", "measure" ) |
---|
116 | .add( Restrictions.eq( "measure.plateforme.id", plateformId ) ); |
---|
117 | |
---|
118 | if( null != beginDate ) |
---|
119 | criteria.add( Restrictions.ge( "measure.mesureDate", beginDate ) ); |
---|
120 | if( null != endDate ) |
---|
121 | criteria.add( Restrictions.le( "measure.mesureDate", endDate ) ); |
---|
122 | |
---|
123 | criteria.setProjection( Projections.property( "value.valeurVal" ) ); |
---|
124 | |
---|
125 | return count( criteria ); |
---|
126 | } |
---|
127 | |
---|
128 | // @NotNull |
---|
129 | // public Integer getNumberValuesByPlateformByParameterByPeriod( @NotNull final List<Pair> pairs, @Nullable final Date beginDate, @Nullable final Date endDate ) |
---|
130 | // throws PersistenceException |
---|
131 | // { |
---|
132 | // final DetachedCriteria criteria = DetachedCriteria.forClass( Valeur.class, "value" ) |
---|
133 | // .add( Restrictions.eq( "value.parametre.id", parameterId ) ) |
---|
134 | // .createCriteria( "mesure", "measure" ) |
---|
135 | // .add( Restrictions.eq( "measure.plateforme.id", plateformId ) ); |
---|
136 | // |
---|
137 | // if( null != beginDate ) |
---|
138 | // criteria.add( Restrictions.ge( "measure.mesureDate", beginDate ) ); |
---|
139 | // if( null != endDate ) |
---|
140 | // criteria.add( Restrictions.le( "measure.mesureDate", endDate ) ); |
---|
141 | // |
---|
142 | // criteria.setProjection( Projections.property( "value.valeurVal" ) ); |
---|
143 | // |
---|
144 | // return count( criteria ); |
---|
145 | // } |
---|
146 | |
---|
147 | } |
---|