Projects >> Maritaca_SD_version >>082dea92615d8feaddf93f60ff94997aa22ccfc2

Chunk
Conflicting content
	 */
	List groupsStartingWith(String startingString);

	/**
<<<<<<< HEAD
	 * Gets the owner's group
	 * @param group
	 * @return
	User getOwnerOfGroup(Group gr);
	
=======
	 * Removes the current user from the given group.
	 * @param group
	 * @return true if successful, false otherwise 
	 */
	boolean removeCurrentUserFromGroup(Group group);
	
	/**
	 * Removes the given user from the given group.
	 * @param group
	 * @param user
	 * @return
	 */
	boolean removeUserFromGroup(Group group, User user);

	/**
	 * Removes the current user from the given group in the database. 
	 * This method cascades the deletion to the GroupUser table, removing
	 * any entries that belongs to the given group.
	 * @param group
	 * @return true if successful, false otherwise
	 */
	boolean removeGroup(Group group);

>>>>>>> aaf5e883628fcfd8e4a9b3e25801b7bf60350690
	void close();

	
Solution content
	List groupsStartingWith(String startingString);

	/**
	 * Gets the owner's group
	 * @param group
	 * @return
	 */
	User getOwnerOfGroup(Group gr);
	
	 /**  
	 * Removes the current user from the given group.
	 * @param group
	 * @return true if successful, false otherwise 
	 */
	boolean removeCurrentUserFromGroup(Group group);
	
	/**
	 * Removes the given user from the given group.
	 * @param group
	 * @param user
	 * @return
	 */
	boolean removeUserFromGroup(Group group, User user);

	/**
	 * Removes the current user from the given group in the database. 
	 * This method cascades the deletion to the GroupUser table, removing
	 * any entries that belongs to the given group.
	 * @param group
	 * @return true if successful, false otherwise
	 */
	boolean removeGroup(Group group);

	void close();

	
File
UserModel.java
Developer's decision
Concatenation
Kind of conflict
Comment
Method interface
Chunk
Conflicting content
		if (group.getKey() == null) {
			// new group
<<<<<<< HEAD
			if (searchGroupByName(group.getName()) != null) {
				return false;
			}
			if (entityManager.persist(group)) {
				// add current user to group
				GroupUser grUser = new GroupUser();
				grUser.setGroup(group);
				grUser.setUser(group.getOwner());
				if (saveGroupUser(grUser))
					return true;
				else {
					// not able to add user to group
					entityManager.delete(group);
					return false;
				}
			} else
				return false; // group not saved

=======
			return entityManager.persist(group);
>>>>>>> aaf5e883628fcfd8e4a9b3e25801b7bf60350690
		} else {
			// look for group
			Group g = getGroup(group.getKey());
Solution content
		if (group.getKey() == null) {
			// new group
			if (searchGroupByName(group.getName()) != null) {
				return false;
			}
			if (entityManager.persist(group)) {
				// add current user to group
				GroupUser grUser = new GroupUser();
				grUser.setGroup(group);
				grUser.setUser(group.getOwner());
				if (saveGroupUser(grUser))
					return true;
				else {
					// not able to add user to group
					entityManager.delete(group);
					return false;
				}
			} else
				return false; // group not saved
		} else {
			// look for group
			Group g = getGroup(group.getKey());
File
UserModelImpl.java
Developer's decision
Version 1
Kind of conflict
Comment
If statement
Method invocation
Return statement
Chunk
Conflicting content
		return entityManager.persist(groupUser);
	}

<<<<<<< HEAD
=======
	@Override
	public boolean removeCurrentUserFromGroup(Group group) {
		return removeUserFromGroup(group, getCurrentUser());
	}

	@Override
	public boolean removeGroup(Group group) {
		verifyEM(entityManager);
		verifyEntity(group);
		
		if(!removeGroupUserFromGroup(group)){
			return false;
		} else {
			return entityManager.delete(group);
		}				
	}
	
	/**
	 * Removes every entry in GroupsUser from the given group.
	 * @param group
	 * @return true if successful, false otherwise
	 */
	private boolean removeGroupUserFromGroup(Group group){
		verifyEM(entityManager);
		verifyEntity(group);
		List groupsUserFromUser;
		groupsUserFromUser = entityManager.cQuery(GroupUser.class, "group", group.getKey().toString());
		
		for(GroupUser groupUser : groupsUserFromUser){
			if(groupUser.getGroup().equals(group.getKey())){
				if(!entityManager.delete(groupUser)){
					return false;
				}
			}
		}
		
		return true;
	}

	@Override
	public Collection searchUsersByGroup(Group group) {
		String           groupKey            = group.getKey().toString();
		List  groupsUserFromUser  = entityManager.cQuery(GroupUser.class, "group", groupKey);
		Collection foundUsers          = new ArrayList();
				
		for(GroupUser groupUser : groupsUserFromUser){
			User user = entityManager.find(User.class, groupUser.getUser().getKey());
			foundUsers.add(user);
		}
		return foundUsers;
	}

	@Override
	public boolean removeUserFromGroup(Group group, User user) {
		verifyEM(entityManager);
		verifyEntity(group);

		List groupsUserFromUser = new ArrayList();
		groupsUserFromUser = entityManager.cQuery(GroupUser.class, "user", user.getKey().toString());
		
		for(GroupUser groupUser : groupsUserFromUser){
			if(groupUser.getGroup().getKey().equals(group.getKey())){
				if(!entityManager.delete(groupUser)){
					return false;
				} else {
					return true;
				}
			}
		}
		//TODO Add log warning in this case...
		return false; // User is not in the given group
	}
	
>>>>>>> aaf5e883628fcfd8e4a9b3e25801b7bf60350690
	@Override
	public void close() {
		entityManager = null;
Solution content
		return entityManager.persist(groupUser);
	}

	@Override
	public boolean removeCurrentUserFromGroup(Group group) {
		return removeUserFromGroup(group, getCurrentUser());
	}

	@Override
	public boolean removeGroup(Group group) {
		verifyEM(entityManager);
		verifyEntity(group);
		
		if(!removeGroupUserFromGroup(group)){
			return false;
		} else {
			return entityManager.delete(group);
		}				
	}
	
	/**
	 * Removes every entry in GroupsUser from the given group.
	 * @param group
	 * @return true if successful, false otherwise
	 */
	private boolean removeGroupUserFromGroup(Group group){
		verifyEM(entityManager);
		verifyEntity(group);
		List groupsUserFromUser;
		groupsUserFromUser = entityManager.cQuery(GroupUser.class, "group", group.getKey().toString());
		
		for(GroupUser groupUser : groupsUserFromUser){
			if(groupUser.getGroup().equals(group.getKey())){
				if(!entityManager.delete(groupUser)){
					return false;
				}
			}
		}
		
		return true;
	}

	@Override
	public Collection searchUsersByGroup(Group group) {
		String           groupKey            = group.getKey().toString();
		List  groupsUserFromUser  = entityManager.cQuery(GroupUser.class, "group", groupKey);
		Collection foundUsers          = new ArrayList();
				
		for(GroupUser groupUser : groupsUserFromUser){
			User user = entityManager.find(User.class, groupUser.getUser().getKey());
			foundUsers.add(user);
		}
		return foundUsers;
	}

	@Override
	public boolean removeUserFromGroup(Group group, User user) {
		verifyEM(entityManager);
		verifyEntity(group);

		List groupsUserFromUser = new ArrayList();
		groupsUserFromUser = entityManager.cQuery(GroupUser.class, "user", user.getKey().toString());
		
		for(GroupUser groupUser : groupsUserFromUser){
			if(groupUser.getGroup().getKey().equals(group.getKey())){
				if(!entityManager.delete(groupUser)){
					return false;
				} else {
					return true;
				}
			}
		}
		//TODO Add log warning in this case...
		return false; // User is not in the given group
	}
	
	@Override
	public void close() {
		entityManager = null;
File
UserModelImpl.java
Developer's decision
Version 2
Kind of conflict
Annotation
Comment
Method declaration