Projects >> Maritaca_SD_version >>9fe03cfc1b7d37af7d56cf9943d027e98b5f73ad

Chunk
Conflicting content
			else if (f.getType() == UUID.class)
				method.invoke(result, UUID.fromString(value));
			else if (f.getType() == Date.class) {
<<<<<<< HEAD
				SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yy hh:mm a");
=======
				SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy hh:mm a");
>>>>>>> c24a5786bdbb567825fee84eb2c2ca17d590edd9
				Date date;
				try {
					date = sdf.parse(value);
Solution content
			else if (f.getType() == UUID.class)
				method.invoke(result, UUID.fromString(value));
			else if (f.getType() == Date.class) {
				SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy hh:mm a");
				Date date;
				try {
					date = sdf.parse(value);
File
EntityManagerHectorImpl.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Variable
Chunk
Conflicting content
	private static final Log log = LogFactory.getLog(FormEditorEJB.class);
		
	@Inject private FormListerDAO formListerDAO;
<<<<<<< HEAD
	@Inject private ListMaritacaListDAO managerListDAO;
	@Inject private FormPermissionsDAO formPermissionsDAO;
	@Inject private UserDAO userDAO;
	
=======
	@Inject private ManagerListDAO managerListDAO;
>>>>>>> c24a5786bdbb567825fee84eb2c2ca17d590edd9
	
	//////////////////////////////////////////////////////////////////
	@Inject private FormDAO formDAO;
Solution content
	private static final Log log = LogFactory.getLog(FormEditorEJB.class);
		
	@Inject private FormListerDAO formListerDAO;
	@Inject private ListMaritacaListDAO managerListDAO;
	@Inject private UserDAO userDAO;
	@Inject private FormDAO formDAO;
File
FormEditorEJB.java
Developer's decision
Combination
Kind of conflict
Attribute
Chunk
Conflicting content
				formLists.add(UtilsBusiness.convertToClass(list, MaritacaListDTO.class));				
			}
		}
	}
	
<<<<<<< HEAD
	public List populateFormSharedList(FormDTO formDTO) {		
		List formLists = new ArrayList();
		Form                  form      = new Form();
		form.setKey(formDTO.getKey());
		
		for(FormPermissions fp : formListerDAO.getFormPermissions(form)) {
			MaritacaList list = formListerDAO.getMaritacaList(fp.getMaritacaList().getKey());
			if(!list.equals(formListerDAO.getAllUsersList())) {
		}
		
		return formLists;
	}
	
	public MaritacaListDTO searchMaritacaListByName(String selectedItem) {
		MaritacaList list = formListerDAO.searchMaritacaListByName(selectedItem);
		if(list != null) {
			return UtilsBusiness.convertToClass(list, MaritacaListDTO.class);
		}		
		return null;
	}
	
	public Collection getMaritacaListsByPrefix(String prefix) {
		return managerListDAO.maritacaListsStartingWith(prefix);
	}
	
	public List getOwnerOfMaritacaListByPrefix(String prefix) {
		List    listsDto = new ArrayList();
		Collection lists    = managerListDAO.maritacaListsStartingWith(prefix);
		for(MaritacaList list : lists) {
			listsDto.add(UtilsBusiness.convertToClass(list, MaritacaListDTO.class));
=======
	/**
	 * Get the lists for a form
	 * @param usedItems
	 * @return
	 */
	private List getListsForForm(List usedItems) {
		List uuids = new ArrayList();
		for(String s : usedItems) {
			List mLists = new ArrayList(formDAO.getMaritacaListsByName(s));
			if(mLists != null && !mLists.isEmpty()) {
				uuids.add(mLists.get(0).getKey());//TODO: Fix
			}
		}
		return uuids;
	}
	
	//MaritacaList > autocomplete
	//////////////////////////////////////////////////////////////////
	public List getOwnerOfMaritacaListByPrefix(String prefix) {
		List listsNames = new ArrayList();
		Collection lists = managerListDAO.maritacaListsStartingWith(prefix);
		for(MaritacaList gr : lists) {
			//set data of the owner
			gr.setOwner(formEditorDAO.getOwnerOfMaritacaList(gr));
			listsNames.add(gr.getName());
>>>>>>> c24a5786bdbb567825fee84eb2c2ca17d590edd9
		}	
		return listsDto;
	}
Solution content
		}
	}
		
	public List populateFormSharedList(FormDTO formDTO) {
		List lstItems = new ArrayList();
		Form form = formDAO.getFormByKey(formDTO.getKey(), false);		
		if(form != null && form.getLists() != null && !form.getLists().isEmpty()) {
			for(UUID uuid : form.getLists()) {
				MaritacaList mList = managerListDAO.getMaritacaList(uuid);
				if(mList != null && !mList.getName().equals(MaritacaConstants.ALL_USERS)) {
					lstItems.add(UtilsBusiness.convertToClass(mList, MaritacaListDTO.class));
				}
			}
		}
		return lstItems;
	}

	private List fetchKeysFromLists(List usedLists) {
		List uuids = new ArrayList();
		for(MaritacaListDTO list : usedLists) {			
			uuids.add(list.getKey());			
		}
		return uuids;
	}

	
	public MaritacaListDTO searchMaritacaListByName(String selectedItem) {
		MaritacaList list = formListerDAO.searchMaritacaListByName(selectedItem);
		if(list != null) {
			return UtilsBusiness.convertToClass(list, MaritacaListDTO.class);
		}		
		return null;
	}
	
	public Collection getMaritacaListsByPrefix(String prefix) {
		return managerListDAO.maritacaListsStartingWith(prefix);
	}
	
	public List getOwnerOfMaritacaListByPrefix(String prefix) {
		List    listsDto = new ArrayList();
		Collection lists    = managerListDAO.maritacaListsStartingWith(prefix);
		for(MaritacaList list : lists) {
			listsDto.add(UtilsBusiness.convertToClass(list, MaritacaListDTO.class));
		}	
		return listsDto;
	}
File
FormEditorEJB.java
Developer's decision
Manual
Kind of conflict
Comment
For statement
Method declaration
Method invocation
Method signature
Variable
Chunk
Conflicting content
			lists.add(list);
		}
		return lists;
<<<<<<< HEAD
	}
	
	//
	
		
}
=======
	}	
}
>>>>>>> c24a5786bdbb567825fee84eb2c2ca17d590edd9
Solution content
		
package br.unifesp.maritaca.business.form.edit;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.UUID;

import javax.ejb.Stateless;
import javax.inject.Inject;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import br.unifesp.maritaca.access.operation.Operation;
import br.unifesp.maritaca.business.base.AbstractEJB;
import br.unifesp.maritaca.business.base.MaritacaConstants;
import br.unifesp.maritaca.business.base.dao.FormDAO;
import br.unifesp.maritaca.business.base.dao.UserDAO;
import br.unifesp.maritaca.business.form.dto.FormDTO;
import br.unifesp.maritaca.business.form.edit.dao.FormEditorDAO;
import br.unifesp.maritaca.business.form.list.dao.FormListerDAO;
import br.unifesp.maritaca.business.list.list.dao.ListMaritacaListDAO;
import br.unifesp.maritaca.business.list.list.dto.MaritacaListDTO;
import br.unifesp.maritaca.business.util.UtilsBusiness;
import br.unifesp.maritaca.core.Form;
import br.unifesp.maritaca.core.MaritacaList;
import br.unifesp.maritaca.core.User;
import br.unifesp.maritaca.exception.AuthorizationDenied;
import br.unifesp.maritaca.persistence.dto.UserDTO;
import br.unifesp.maritaca.persistence.permission.Document;
import br.unifesp.maritaca.persistence.permission.Permission;
import br.unifesp.maritaca.util.UtilsCore;

/**
 * 
 * @author alvaro, jimvalsan
 *
 */
@Stateless
public class FormEditorEJB extends AbstractEJB {
	private static final long serialVersionUID = 1L;
	private static final Log log = LogFactory.getLog(FormEditorEJB.class);
		
	@Inject private FormListerDAO formListerDAO;
	@Inject private ListMaritacaListDAO managerListDAO;
	@Inject private UserDAO userDAO;
	@Inject private FormDAO formDAO;
	@Inject private FormEditorDAO formEditorDAO;
	
	/**
	 * Save a new form, by default the policy is PRIVATE
	 * @param formDTO
	 */
	public void saveNewForm(FormDTO formDTO) {
		Form form = new Form();
		form.setTitle(formDTO.getTitle());
		form.setXml(formDTO.getXml());
		form.setUrl(this.getUniqueUrl());
		
		UserDTO userDTO = new UserDTO(); 
		userDTO.setKey(formDTO.getUserKey());
		User user = (User) verifyReturnNullValuesInDB(userDTO);
		
		form.setUser(user);
		form.setLists(getOwnMaritacaListByUser(user));
		formDAO.persistForm(form);	
		formEditorDAO.createRandownAnswer(form);
	}
	
	/**
	 * Get the MaritacaList for the current user
	 * @param user
	 * @return List
	 */
	private List getOwnMaritacaListByUser(User user) {
		List uuids = new ArrayList();
		List mLists = (List) formDAO.getMaritacaListsByOwner(user.getKey());
		if(mLists != null && !mLists.isEmpty()) {
			for(MaritacaList mList : mLists) {
				if(mList.getName().equals(user.getEmail()))
					uuids.add(mList.getKey());
			}
		}		
		return uuids;
	}
	
	/**
	 * Get an unique URL for a form 
	 * @return String
	 */
	private String getUniqueUrl() {
		// TODO: check if this random string is enough
		// maybe it is better to generate uuid-based string
		String url = UtilsCore.randomString();
		if (!formDAO.verifyIfUrlExist(url))
			return url;
		else
			return getUniqueUrl();
	}
	
	/**
	 * Get a FormDTO
	 * @param userDTO
	 * @param formDTO
	 * @return FormDTO
	 */
	public FormDTO getFormDTOByUserDTOAndFormDTO(FormDTO formDTO, UserDTO userDTO) {
		//TODO: Verify userDTO.getKey()				
		verifyReturnNullValuesInDB(userDTO);
		//Form form = (Form) verifyReturnNullValuesInDB(formDTO);
		Form form = formDAO.getFormByKey(formDTO.getKey(), false);
		Permission permission = super.getPermission(form, userDTO.getKey(), Document.FORM);
		if(permission != null) {
			formDTO = new FormDTO();
			formDTO.setKey(form.getKey());
			formDTO.setTitle(form.getTitle());
			formDTO.setUrl(form.getUrl());
			formDTO.setXml(form.getXml());
			formDTO.setPolicy(form.getPolicy());
			formDTO.setPermission(permission);
			return formDTO;
		}
		else {
			throw new AuthorizationDenied(Form.class, form.getKey(), userDTO.getKey(), Operation.READ);
		}
	}
	
	/**
	 * Update a Form
	 * @param formDTO
	 * @param userDTO
	 */
	public void updateForm(FormDTO formDTO, UserDTO userDTO) {
		//TODO: verifyEntity(formDTO.getUserKey()); verifyNullProperties(formDTO); and keyUser
		Form originalForm = (Form) verifyReturnNullValuesInDB(formDTO);
		User user = (User) verifyReturnNullValuesInDB(userDTO);
		
		Permission permission = super.getPermission(originalForm, userDTO.getKey(), Document.FORM);
		if(permission != null && permission.getUpdate()) {
			Form form = new Form();
			form.setKey(formDTO.getKey());
			form.setUser(user);
			form.setTitle(formDTO.getTitle());
			form.setXml(formDTO.getXml());
			form.setUrl(getUniqueUrl());
			form.setPolicy(originalForm.getPolicy());			
			formDAO.persistForm(form);
		}
		else {
			throw new AuthorizationDenied(Form.class, originalForm.getKey(), user.getKey(), Operation.UPDATE);
		}
	}
	
	/**
	 * Delete a Form
	 * @param formDTO
	 * @param userDTO
	 */
	//TODO delete answers?
	public void deleteForm(FormDTO formDTO, UserDTO userDTO) {
		//Form originalForm = (Form) verifyReturnNullValuesInDB(formDTO);
		User user = (User) verifyReturnNullValuesInDB(userDTO);
		Form originalForm = formDAO.getFormByKey(formDTO.getKey(), false);
		
		Permission permission = super.getPermission(originalForm, userDTO.getKey(), Document.FORM);
		if(permission != null && permission.getDelete()) {
			formDAO.delete(originalForm);
			formEditorDAO.deleteFormAccessible(originalForm, user);//
		}
		else {
			throw new AuthorizationDenied(Form.class, originalForm.getKey(), user.getKey(), Operation.DELETE);
		}
	}
	
	/**
	 * 
	 * @param obj
	 * @return Form or User
	 */
	private  Object verifyReturnNullValuesInDB(T obj) {
		if(obj instanceof FormDTO) {
			FormDTO formDTO = (FormDTO)obj;
			Form form = formDAO.getFormByKey(formDTO.getKey(), true);
			if(form == null) {
				throw new IllegalArgumentException("Form " +formDTO.getKey()+ " does not exist in database");
			}
			return form;
		}
		else if(obj instanceof UserDTO) {
			UserDTO userDTO = (UserDTO)obj;
			User user = userDAO.findUserByKey(userDTO.getKey());
			if(user == null) {
				throw new IllegalArgumentException("User does not exist in database");
			}
			return user;
		}
		return null;
	}
	
	/**
	 * Update the Form with the new Policy
	 * @param formDTO
	 * @param userDTO
	 * @param usedItems
	 * @return
	 */
	public Boolean updateFormFromPolicyEditor(FormDTO formDTO, UserDTO userDTO, List usedItems) {		
		//Form originalForm = (Form) verifyReturnNullValuesInDB(formDTO);//
		Form originalForm = formDAO.getFormByKey(formDTO.getKey(), false);
		User user = (User) verifyReturnNullValuesInDB(userDTO);
		Form form = new Form();//TODO: new ?
		form.setKey(formDTO.getKey());
		form.setUser(user);
		form.setTitle(formDTO.getTitle());
		form.setXml(formDTO.getXml());
		form.setUrl(getUniqueUrl());
		form.setPolicy(formDTO.getPolicy());			
		form.setLists(fetchKeysFromLists(usedItems));
		
		Permission permission = super.getPermission(originalForm, userDTO.getKey(), Document.FORM);
		if(permission != null && permission.getUpdate()) {
			formDAO.persistForm(form);
			formEditorDAO.createOrUpdateFormAccessible(form, user);//
			return true;
		}
		else {
			throw new AuthorizationDenied(Form.class, originalForm.getKey(), user.getKey(), Operation.UPDATE);
		}
	}
		
	public List populateFormSharedList(FormDTO formDTO) {
		List lstItems = new ArrayList();
		Form form = formDAO.getFormByKey(formDTO.getKey(), false);		
		if(form != null && form.getLists() != null && !form.getLists().isEmpty()) {
			for(UUID uuid : form.getLists()) {
				MaritacaList mList = managerListDAO.getMaritacaList(uuid);
				if(mList != null && !mList.getName().equals(MaritacaConstants.ALL_USERS)) {
					lstItems.add(UtilsBusiness.convertToClass(mList, MaritacaListDTO.class));
				}
			}
		}
		return lstItems;
	}

	private List fetchKeysFromLists(List usedLists) {
		List uuids = new ArrayList();
		for(MaritacaListDTO list : usedLists) {			
			uuids.add(list.getKey());			
		}
		return uuids;
	}

	
	public MaritacaListDTO searchMaritacaListByName(String selectedItem) {
		MaritacaList list = formListerDAO.searchMaritacaListByName(selectedItem);
		if(list != null) {
			return UtilsBusiness.convertToClass(list, MaritacaListDTO.class);
		}		
		return null;
	}
	
	public Collection getMaritacaListsByPrefix(String prefix) {
		return managerListDAO.maritacaListsStartingWith(prefix);
	}
	
	public List getOwnerOfMaritacaListByPrefix(String prefix) {
		List    listsDto = new ArrayList();
		Collection lists    = managerListDAO.maritacaListsStartingWith(prefix);
		for(MaritacaList list : lists) {
			listsDto.add(UtilsBusiness.convertToClass(list, MaritacaListDTO.class));
		}	
		return listsDto;
	}
}
File
FormEditorEJB.java
Developer's decision
Manual
Kind of conflict
Comment