/* * eGov suite of products aim to improve the internal efficiency,transparency, * accountability and the service delivery of the government organizations. * * Copyright (C) <2015> eGovernments Foundation * * The updated version of eGov suite of products as by eGovernments Foundation * is available at http://www.egovernments.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/ or * http://www.gnu.org/licenses/gpl.html . * * In addition to the terms of the GPL license to be adhered to in using this * program, the following additional terms are to be complied with: * * 1) All versions of this program, verbatim or modified must carry this * Legal Notice. * * 2) Any misrepresentation of the origin of the material is prohibited. It * is required that all modified versions of this material be marked in * reasonable ways as different from the original version. * * 3) This license does not grant any rights to any user of the program * with regards to rights under trademark law for use of the trade names * or trademarks of eGovernments Foundation. * * In case of any queries, you can reach eGovernments Foundation at contact@egovernments.org. */ package org.egov.ptis.web.rest; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility; import org.codehaus.jackson.annotate.JsonMethod; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; import org.egov.infra.config.core.ApplicationThreadLocals; import org.egov.ptis.constants.PropertyTaxConstants; import org.egov.ptis.domain.dao.property.BasicPropertyDAO; import org.egov.ptis.domain.entity.objection.RevisionPetition; import org.egov.ptis.domain.entity.property.BasicProperty; import org.egov.ptis.domain.model.ErrorDetails; import org.egov.ptis.domain.service.revisionPetition.RevisionPetitionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.ws.rs.Consumes; import javax.ws.rs.FormParam; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; /** * The AssessmentService class is used as the RESTFul service to handle user * request and response. * * @author Pradeep */ @Component @Path("/rv") public class RevisionPetitionRestService { @Autowired private RevisionPetitionService revisionPetitionService; @Autowired private BasicPropertyDAO basicPropertyDAO; String USER_NAME = "mahesh"; String PASSWORD = "demo"; String LOGIN_USERID = "16"; /** * This method is used for handling user request for revision petition * details. * * @param applicationNumber * - applicationNumber number i.e. revision peatition application * number * @return * @throws JsonGenerationException * @throws JsonMappingException * @throws IOException */ @GET @Path("/restrevisionPetition/{applicationNumber}") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces(MediaType.APPLICATION_JSON) public String getRevisionPetitionDetails(@PathParam("applicationNumber") String appNumber) throws JsonGenerationException, JsonMappingException, IOException { RevisionPetition revisionPetition = revisionPetitionService.getRevisionPetitionByApplicationNumber(appNumber); if (revisionPetition != null) return convertRevisionPetitionObjectToJson(revisionPetition); else { ErrorDetails errorDetails = new ErrorDetails(); errorDetails.setErrorCode(PropertyTaxConstants.THIRD_PARTY_ERR_CODE_REVISIONPETITION_INVALID); errorDetails.setErrorMessage(PropertyTaxConstants.THIRD_PARTY_ERR_MSG_REVISIONPETITION_INVALID); return getJSONResponse(errorDetails); } } /** * @param accessmentnumber * @param username * @param password * @param details * @param receivedon * @param recievedBy * @return * @throws JsonGenerationException * @throws JsonMappingException * @throws IOException */ @POST @Path("/restrevisionPetition/createRevisionPetition") @Produces(MediaType.APPLICATION_JSON) public String createRevisionPetitionFromRest(@FormParam("accessmentnumber") String accessmentnumber, @FormParam("username") String username, @FormParam("password") String password, @FormParam("details") String details, @FormParam("receivedon") String receivedon, @FormParam("recievedBy") String recievedBy) throws JsonGenerationException, JsonMappingException, IOException { String responseJson = new String(); Boolean isAuthenticatedUser = authenticateUser(username, password); if (isAuthenticatedUser) { ApplicationThreadLocals.setUserId(Long.valueOf(LOGIN_USERID)); ErrorDetails errorDetails = validateRevisionPetitionForm(accessmentnumber, details, receivedon, recievedBy); if (null != errorDetails) { responseJson = getJSONResponse(errorDetails); } else { try { BasicProperty basicProperty = basicPropertyDAO.getBasicPropertyByPropertyID(accessmentnumber); if (basicProperty != null && basicProperty.isUnderWorkflow()) { errorDetails = new ErrorDetails(); errorDetails .setErrorCode(PropertyTaxConstants.THIRD_PARTY_ERR_CODE_REVISIONPETITION_ALREADYINWORKFLOW); errorDetails .setErrorMessage(PropertyTaxConstants.THIRD_PARTY_ERR_MSG_REVISIONPETITION_ALREADYINWORKFLOW); return getJSONResponse(errorDetails); } RevisionPetition revPetition = new RevisionPetition(); revPetition.setBasicProperty(basicProperty); revPetition.setRecievedBy(recievedBy); revPetition.setDetails(details); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); revPetition.setRecievedOn(sdf.parse(receivedon)); responseJson = convertRevisionPetitionObjectToJson(revisionPetitionService .createRevisionPetitionForRest(revPetition)); } catch (ParseException e) { } } } return responseJson; } /** * @param accessmentnumber * @param details * @param receivedon * @param recievedBy * @return */ private ErrorDetails validateRevisionPetitionForm(String accessmentnumber, String details, String receivedon, String recievedBy) { ErrorDetails errorDetails = null; if (accessmentnumber == null || accessmentnumber.trim().length() == 0) { errorDetails = new ErrorDetails(); errorDetails.setErrorCode(PropertyTaxConstants.THIRD_PARTY_ERR_CODE_ASSESSMENT_NO_REQUIRED); errorDetails.setErrorMessage(PropertyTaxConstants.THIRD_PARTY_ERR_MSG_ASSESSMENT_NO_REQUIRED); } else { if (accessmentnumber.trim().length() > 0 && accessmentnumber.trim().length() < 10) { errorDetails = new ErrorDetails(); errorDetails.setErrorCode(PropertyTaxConstants.THIRD_PARTY_ERR_CODE_ASSESSMENT_NO_LEN); errorDetails.setErrorMessage(PropertyTaxConstants.THIRD_PARTY_ERR_MSG_ASSESSMENT_NO_LEN); } if (!basicPropertyDAO.isAssessmentNoExist(accessmentnumber)) { errorDetails = new ErrorDetails(); errorDetails.setErrorCode(PropertyTaxConstants.THIRD_PARTY_ERR_CODE_ASSESSMENT_NO_NOT_FOUND); errorDetails.setErrorMessage(PropertyTaxConstants.THIRD_PARTY_ERR_MSG_ASSESSMENT_NO_NOT_FOUND); } } if (receivedon == null || receivedon.trim().length() == 0) { errorDetails = new ErrorDetails(); errorDetails.setErrorCode(PropertyTaxConstants.THIRD_PARTY_ERR_CODE_REVISIONPETITION_RECEIVEDON); errorDetails.setErrorMessage(PropertyTaxConstants.THIRD_PARTY_ERR_MSG_REVISIONPETITION_RECEIVEDON); } else if (recievedBy == null || recievedBy.trim().length() == 0) { errorDetails = new ErrorDetails(); errorDetails.setErrorCode(PropertyTaxConstants.THIRD_PARTY_ERR_CODE_REVISIONPETITION_RECEIVEDBY); errorDetails.setErrorMessage(PropertyTaxConstants.THIRD_PARTY_ERR_MSG_REVISIONPETITION_RECEIVEDBY); } else if (details == null || details.trim().length() == 0) { errorDetails = new ErrorDetails(); errorDetails.setErrorCode(PropertyTaxConstants.THIRD_PARTY_ERR_CODE_REVISIONPETITION_RECEIVEDDETAIL); errorDetails.setErrorMessage(PropertyTaxConstants.THIRD_PARTY_ERR_MSG_REVISIONPETITION_RECEIVEDDETAIL); } return errorDetails; } /** * @param object * @return */ private String convertRevisionPetitionObjectToJson(final Object object) { GsonBuilder gsonBuilder = new GsonBuilder(); Gson gson = gsonBuilder.registerTypeAdapter(RevisionPetition.class, new RevisionPetitionAdaptor()).create(); String json = gson.toJson(object); return json; } private String getJSONResponse(Object obj) throws JsonGenerationException, JsonMappingException, IOException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(JsonMethod.FIELD, Visibility.ANY); String jsonResponse = objectMapper.writeValueAsString(obj); return jsonResponse; } /** * This method is used to get the error details for invalid credentials. * * @return */ private ErrorDetails getInvalidCredentialsErrorDetails() { ErrorDetails errorDetails = new ErrorDetails(); errorDetails.setErrorCode(PropertyTaxConstants.THIRD_PARTY_ERR_CODE_INVALIDCREDENTIALS); errorDetails.setErrorMessage(PropertyTaxConstants.THIRD_PARTY_ERR_MSG_INVALIDCREDENTIALS); return errorDetails; } public RevisionPetitionService getRevisionPetitionService() { return revisionPetitionService; } public void setRevisionPetitionService(RevisionPetitionService revisionPetitionService) { this.revisionPetitionService = revisionPetitionService; } public Boolean authenticateUser(String username, String password) { Boolean isAuthenticated = false; if (username != null && password != null && username.equals(USER_NAME) && password.equals(PASSWORD)) { isAuthenticated = true; } return isAuthenticated; } }