@@ -175,22 +175,38 @@ public int getNumberOfAttendees(Integer ownerId, HashMap<String, String> attribu
175175
176176 return ConversionTools .getValue (query .uniqueResult ());
177177 }
178+
179+ @ Transactional (readOnly = true )
180+ @ SuppressWarnings ("unchecked" )
181+ public List <Integer > getAccessibleAttendees (Integer ownerId , HashMap <String ,String > attributeFilter ) throws Exception {
182+ Session session = sessionFactory .getCurrentSession ();
183+
184+ HashMap <String , Object > parameters = new HashMap <>();
185+ String sql = getSql (session , ownerId , attributeFilter , parameters , false );
186+
187+ SQLQuery query = session .createSQLQuery ("SELECT a.ATTENDEE_ID " + sql );
188+ sqlQueryService .setParameters (query , parameters );
189+
190+ @ SuppressWarnings ("rawtypes" )
191+ List res = query .list ();
192+ return res ;
193+ }
178194
179- private String getSql (Session session , Integer ownerId , Map <String , String > hashMap , HashMap <String , Object > oQueryParameters , boolean onlywritableshares ) {
195+ private String getSql (Session session , Integer ownerId , Map <String , String > attributeFilter , HashMap <String , Object > oQueryParameters , boolean onlywritableshares ) {
180196
181197 StringBuilder sql = new StringBuilder ("FROM ATTENDEE a" );
182198
183- if (hashMap != null && hashMap .size () > 0 )
199+ if (attributeFilter != null && attributeFilter .size () > 0 )
184200 {
185- for (String key : hashMap .keySet ())
201+ for (String key : attributeFilter .keySet ())
186202 {
187- if (!key .equalsIgnoreCase ("name" ) && !key .equalsIgnoreCase ("email" ) && !key .equalsIgnoreCase ("owner" ) && !key .equalsIgnoreCase ("_csrf" ) && !key .startsWith ("visibleAttendee" ) && hashMap .get (key ) != null && hashMap .get (key ).trim ().length () > 0 )
203+ if (!key .equalsIgnoreCase ("name" ) && !key .equalsIgnoreCase ("email" ) && !key .equalsIgnoreCase ("owner" ) && !key .equalsIgnoreCase ("_csrf" ) && !key .startsWith ("visibleAttendee" ) && attributeFilter .get (key ) != null && attributeFilter .get (key ).trim ().length () > 0 )
188204 {
189205 sql .append (" LEFT OUTER JOIN ATTRIBUTE at ON at.ATTE_ID = a.ATTENDEE_ID " );
190206 break ;
191207 }
192208 }
193- if (hashMap .containsKey ("owner" ) && hashMap .get ("owner" ) != null && hashMap .get ("owner" ).length () > 0 )
209+ if (attributeFilter .containsKey ("owner" ) && attributeFilter .get ("owner" ) != null && attributeFilter .get ("owner" ).length () > 0 )
194210 {
195211 sql .append (" JOIN USERS u ON u.USER_ID = a.OWNER_ID " );
196212 }
@@ -212,15 +228,15 @@ private String getSql(Session session, Integer ownerId, Map<String, String> hash
212228
213229 sql .append (" AND a.ATTENDEE_HIDDEN IS NULL" );
214230
215- if (hashMap != null && hashMap .size () > 0 )
231+ if (attributeFilter != null && attributeFilter .size () > 0 )
216232 {
217233 int counter = 0 ;
218- for (String key : hashMap .keySet ())
234+ for (String key : attributeFilter .keySet ())
219235 {
220236 if (!key .equalsIgnoreCase ("name" ) && !key .equalsIgnoreCase ("email" ) && !key .equalsIgnoreCase ("owner" ))
221237 try {
222238 int intKey = Integer .parseInt (key );
223- String value = hashMap .get (key ).trim ();
239+ String value = attributeFilter .get (key ).trim ();
224240
225241 if (value .length () > 0 )
226242 {
@@ -234,22 +250,22 @@ private String getSql(Session session, Integer ownerId, Map<String, String> hash
234250 }
235251 }
236252
237- if (hashMap .containsKey ("name" ) && hashMap .get ("name" ) != null && hashMap .get ("name" ).length () > 0 )
253+ if (attributeFilter .containsKey ("name" ) && attributeFilter .get ("name" ) != null && attributeFilter .get ("name" ).length () > 0 )
238254 {
239255 sql .append (" AND a.ATTENDEE_NAME like :name" );
240- oQueryParameters .put ("name" , "%" + hashMap .get ("name" ) + "%" );
256+ oQueryParameters .put ("name" , "%" + attributeFilter .get ("name" ) + "%" );
241257 }
242258
243- if (hashMap .containsKey ("email" ) && hashMap .get ("email" ) != null && hashMap .get ("email" ).length () > 0 )
259+ if (attributeFilter .containsKey ("email" ) && attributeFilter .get ("email" ) != null && attributeFilter .get ("email" ).length () > 0 )
244260 {
245261 sql .append (" AND a.ATTENDEE_EMAIL like :email" );
246- oQueryParameters .put ("email" , "%" + hashMap .get ("email" ) + "%" );
262+ oQueryParameters .put ("email" , "%" + attributeFilter .get ("email" ) + "%" );
247263 }
248264
249- if (hashMap .containsKey ("owner" ) && hashMap .get ("owner" ) != null && hashMap .get ("owner" ).length () > 0 )
265+ if (attributeFilter .containsKey ("owner" ) && attributeFilter .get ("owner" ) != null && attributeFilter .get ("owner" ).length () > 0 )
250266 {
251267 sql .append (" AND (u.USER_DISPLAYNAME like :owner OR u.USER_LOGIN like :owner)" );
252- oQueryParameters .put ("owner" , "%" + hashMap .get ("owner" ) + "%" );
268+ oQueryParameters .put ("owner" , "%" + attributeFilter .get ("owner" ) + "%" );
253269 }
254270 }
255271
0 commit comments