wip audit api

This commit is contained in:
John Woodlock
2012-12-14 17:38:07 +00:00
parent 7a7654e75f
commit adca69b0a0
2 changed files with 31 additions and 11 deletions
@@ -63,20 +63,24 @@ public class AuditApiResource {
@GET @GET
@Consumes({ MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
public String retrieveAuditEntries(@Context final UriInfo uriInfo, public String retrieveAuditEntries(
@Context final UriInfo uriInfo,
@QueryParam("apiOperation") final String apiOperation, @QueryParam("apiOperation") final String apiOperation,
@QueryParam("resource") final String resource, @QueryParam("resource") final String resource,
@QueryParam("resourceId") final Long resourceId, @QueryParam("resourceId") final Long resourceId,
@QueryParam("makerId") final Long makerId, @QueryParam("makerId") final Long makerId,
@QueryParam("makerDateTime") final String makerDateTime, @QueryParam("makerDateTimeFrom") final String makerDateTimeFrom,
@QueryParam("makerDateTimeTo") final String makerDateTimeTo,
@QueryParam("checkerId") final Long checkerId, @QueryParam("checkerId") final Long checkerId,
@QueryParam("checkerDateTime") final String checkerDateTime) { @QueryParam("checkerDateTimeFrom") final String checkerDateTimeFrom,
@QueryParam("checkerDateTimeTo") final String checkerDateTimeTo) {
context.authenticatedUser().validateHasReadPermission( context.authenticatedUser().validateHasReadPermission(
resourceNameForPermissions); resourceNameForPermissions);
final String extraCriteria = getExtraCriteria(apiOperation, resource, final String extraCriteria = getExtraCriteria(apiOperation, resource,
resourceId, makerId, makerDateTime, checkerId, checkerDateTime); resourceId, makerId, makerDateTimeFrom, makerDateTimeTo,
checkerId, checkerDateTimeFrom, checkerDateTimeTo);
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper
.process(uriInfo.getQueryParameters()); .process(uriInfo.getQueryParameters());
@@ -130,8 +134,10 @@ public class AuditApiResource {
} }
private String getExtraCriteria(final String apiOperation, private String getExtraCriteria(final String apiOperation,
final String resource, final Long resourceId, final Long makerId, final String makerDateTime, final String resource, final Long resourceId, final Long makerId,
final Long checkerId, final String checkerDateTime) { final String makerDateTimeFrom, final String makerDateTimeTo,
final Long checkerId, final String checkerDateTimeFrom,
final String checkerDateTimeTo) {
String extraCriteria = ""; String extraCriteria = "";
@@ -153,11 +159,21 @@ public class AuditApiResource {
if (checkerId != null) { if (checkerId != null) {
extraCriteria += " and aud.checker_id = " + checkerId; extraCriteria += " and aud.checker_id = " + checkerId;
} }
if (makerDateTime != null) { if (makerDateTimeFrom != null) {
extraCriteria += " and aud.made_on_date >= " + ApiParameterHelper.sqlEncodeString(makerDateTime); extraCriteria += " and aud.made_on_date >= "
+ ApiParameterHelper.sqlEncodeString(makerDateTimeFrom);
} }
if (checkerDateTime != null) { if (makerDateTimeTo != null) {
extraCriteria += " and aud.checked_on_date >= " + ApiParameterHelper.sqlEncodeString(checkerDateTime); extraCriteria += " and aud.made_on_date <= "
+ ApiParameterHelper.sqlEncodeString(makerDateTimeTo);
}
if (checkerDateTimeFrom != null) {
extraCriteria += " and aud.checked_on_date >= "
+ ApiParameterHelper.sqlEncodeString(checkerDateTimeFrom);
}
if (checkerDateTimeTo != null) {
extraCriteria += " and aud.checked_on_date <= "
+ ApiParameterHelper.sqlEncodeString(checkerDateTimeTo);
} }
if (StringUtils.isNotBlank(extraCriteria)) { if (StringUtils.isNotBlank(extraCriteria)) {
@@ -11,9 +11,12 @@ import org.mifosplatform.audit.data.AuditData;
import org.mifosplatform.audit.data.AuditSearchData; import org.mifosplatform.audit.data.AuditSearchData;
import org.mifosplatform.infrastructure.core.domain.JdbcSupport; import org.mifosplatform.infrastructure.core.domain.JdbcSupport;
import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSource; import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSource;
import org.mifosplatform.infrastructure.dataqueries.service.ReadWriteNonCoreDataServiceImpl;
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext; import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
import org.mifosplatform.useradministration.data.AppUserLookup; import org.mifosplatform.useradministration.data.AppUserLookup;
import org.mifosplatform.useradministration.service.AppUserReadPlatformService; import org.mifosplatform.useradministration.service.AppUserReadPlatformService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.RowMapper;
@@ -22,6 +25,7 @@ import org.springframework.stereotype.Service;
@Service @Service
public class AuditReadPlatformServiceImpl implements AuditReadPlatformService { public class AuditReadPlatformServiceImpl implements AuditReadPlatformService {
private final static Logger logger = LoggerFactory.getLogger(AuditReadPlatformServiceImpl.class);
private final JdbcTemplate jdbcTemplate; private final JdbcTemplate jdbcTemplate;
private final PlatformSecurityContext context; private final PlatformSecurityContext context;
private final AppUserReadPlatformService appUserReadPlatformService; private final AppUserReadPlatformService appUserReadPlatformService;
@@ -78,7 +82,7 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService {
String sql = "select " + rm.schema(includeJson); String sql = "select " + rm.schema(includeJson);
if (StringUtils.isNotBlank(extraCriteria)) sql += " where (" + extraCriteria + ")"; if (StringUtils.isNotBlank(extraCriteria)) sql += " where (" + extraCriteria + ")";
sql += " order by aud.id DESC"; sql += " order by aud.id DESC";
logger.info("sql: " + sql);
return this.jdbcTemplate.query(sql, rm, new Object[] {}); return this.jdbcTemplate.query(sql, rm, new Object[] {});
} }