Revision be3b26e1

b/src/gr/ebs/gss/server/ejb/GSSDAOBean.java
31 31
import gr.ebs.gss.server.domain.User;
32 32
import gr.ebs.gss.server.domain.UserClass;
33 33

  
34
import java.math.BigInteger;
34 35
import java.util.ArrayList;
35 36
import java.util.Calendar;
36 37
import java.util.Date;
......
330 331
					setParameter("userId", userId).setParameter("groupId", groupId).getResultList();
331 332
	}
332 333

  
334
	private List<Long> getGroupIdsForUserId(Long userId) {
335
		List<BigInteger> groups = manager.createNativeQuery("select distinct groupsmember_id " +
336
		"from GSS_Group_GSS_User where members_id=:userId")
337
			.setParameter("userId", userId)
338
			.getResultList();
339
		List<Long> groupIds = new ArrayList<Long>();
340
		for (BigInteger id : groups)
341
			groupIds.add(id.longValue());
342
		return groupIds;
343
	}
344
	
333 345
	@Override
334 346
	public List<User> getUsersSharingFoldersForUser(Long userId) {
335 347
		return manager.createQuery("select distinct f.owner from Folder f " +
336 348
					"LEFT JOIN f.permissions p where f.owner.id != :userId and f.deleted=false " +
337
					"and (p.user.id=:userId or p.group.id in (select distinct gg.id " +
338
					"from Group gg join gg.members memb where memb.id=:userId))) ").
349
					"and (p.user.id=:userId or p.group.id in (:groupIds))").
350
					setParameter("groupIds", getGroupIdsForUserId(userId)).
339 351
					setParameter("userId", userId).getResultList();
340 352
	}
341 353

  
......
343 355
	public List<User> getUsersSharingFilesForUser(Long userId) {
344 356
		List<User> users = manager.createQuery("select distinct f.owner from FileHeader f " +
345 357
					"LEFT JOIN f.permissions p where f.owner.id != :userId and f.deleted=false " +
346
					"and (p.user.id=:userId or p.group.id in (select distinct gg.id from Group gg " +
347
					"join gg.members memb where memb.id=:userId)))").
348
					setParameter("userId", userId).getResultList();
358
					"and (p.user.id=:userId or p.group.id in (:groupIds))").
359
					setParameter("userId", userId).
360
					setParameter("groupIds", getGroupIdsForUserId(userId)).
361
					getResultList();
349 362
		return users;
350

  
351 363
	}
352 364

  
353 365
	@Override

Also available in: Unified diff