/**
* Este arquivo é parte do Biblivre3.
*
* Biblivre3 é um software livre; você pode redistribuí-lo e/ou
* modificá-lo dentro dos termos da Licença Pública Geral GNU como
* publicada pela Fundação do Software Livre (FSF); na versão 3 da
* Licença, ou (caso queira) qualquer versão posterior.
*
* Este programa é distribuído na esperança de que possa ser útil,
* mas SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de
* MERCANTIBILIDADE OU ADEQUAÇÃO PARA UM FIM PARTICULAR. Veja a
* Licença Pública Geral GNU para maiores detalhes.
*
* Você deve ter recebido uma cópia da Licença Pública Geral GNU junto
* com este programa, Se não, veja em <http://www.gnu.org/licenses/>.
*
* @author Alberto Wagner <alberto@biblivre.org.br>
* @author Danniel Willian <danniel@biblivre.org.br>
*
*/
package biblivre3.administration;
import biblivre3.circulation.CirculationBO;
import biblivre3.circulation.UserTypeDTO;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import mercury.BaseHandler;
import mercury.DTOCollection;
import mercury.ErrorDTO;
import mercury.IFJson;
import mercury.RootJsonHandler;
import mercury.SuccessDTO;
import org.apache.commons.lang.StringUtils;
import org.json.JSONObject;
public class JsonUserTypeHandler extends RootJsonHandler {
private CirculationBO circulationBO;
private AdminBO adminBO;
@Override
public JSONObject process(HttpServletRequest request, HttpServletResponse response) {
circulationBO = new CirculationBO();
adminBO = new AdminBO();
String submitButton = request.getParameter("submitButton");
Properties properties = BaseHandler.getI18nProperties(request, "biblivre3");
IFJson dto = null;
if (submitButton == null || submitButton.isEmpty()) {
} else if (submitButton.equals("list")) {
dto = list();
} else if (submitButton.equals("save")) {
dto = save(request);
} else if (submitButton.equals("delete")) {
dto = delete(request);
}
return dto.toJSONObject(properties);
}
private IFJson list() {
return new DTOCollection().addAll(circulationBO.findAllUserType());
}
private IFJson save(HttpServletRequest request) {
String data = request.getParameter("data");
String id = request.getParameter("serial");
boolean isNew = StringUtils.isBlank(id) || id.equals("0");
boolean result = false;
UserTypeDTO dto = new UserTypeDTO();
try {
dto = populateDtoFromJson(data, dto);
} catch (Exception e) {
e.printStackTrace();
return new ErrorDTO("ERROR_CREATE_RECORD", "warning");
}
if (!validateDto(dto)) {
return new ErrorDTO("ERROR_FIELDS_NOT_FILLED", "warning");
}
if (isNew) {
adminBO.addUserType(dto);
result = true;
} else {
dto.setSerial(Integer.valueOf(id));
adminBO.updateUserType(dto);
result = true;
}
if (result) {
if (isNew) {
return new SuccessDTO("SUCCESS_CREATE_RECORD");
} else {
return new SuccessDTO("SUCCESS_UPDATE_RECORD");
}
} else {
if (isNew) {
return new ErrorDTO("ERROR_CREATE_RECORD", "warning");
} else {
return new ErrorDTO("ERROR_UPDATE_RECORD", "warning");
}
}
}
private boolean validateDto(UserTypeDTO dto) {
return
StringUtils.isNotBlank(dto.getName()) &&
StringUtils.isNotBlank(dto.getDescription()) &&
(dto.getMaxLendingCount() != null && dto.getMaxLendingCount() >= 0) &&
(dto.getMaxLendingDays() != null && dto.getMaxLendingDays() > 0) &&
(dto.getMaxReservationDays() != null && dto.getMaxReservationDays() > 0);
}
private IFJson delete(HttpServletRequest request) {
String id = request.getParameter("serial");
Integer serial;
try {
serial = Integer.valueOf(id);
} catch (Exception e) {
e.printStackTrace();
return new ErrorDTO("ERROR_REMOVE_RECORD", "warning");
}
Integer userCount = new CirculationBO().countUsersByUserType(serial);
if (userCount > 0) {
return new ErrorDTO("MESSAGE_USER_TYPE_IN_USE", "warning");
} else if (adminBO.deleteUserType(serial)) {
return new SuccessDTO("SUCCESS_REMOVE_USER_TYPE");
} else {
return new ErrorDTO("ERROR_REMOVE_USER_TYPE", "warning");
}
}
}