Added filiter to app list

feature/appm-store/pbac
Chatura Dilan 8 years ago committed by Harshan Liyanage
parent 9d5e912d11
commit 76342ee7e3

@ -51,7 +51,9 @@ public class GsonMessageBodyHandler implements MessageBodyWriter<Object>, Messag
private Gson getGson() { private Gson getGson() {
if (gson == null) { if (gson == null) {
final GsonBuilder gsonBuilder = new GsonBuilder().setExclusionStrategies(new AnnotationExclusionStrategy()); final GsonBuilder gsonBuilder = new GsonBuilder()
.setDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz")
.setExclusionStrategies(new AnnotationExclusionStrategy());
gson = gsonBuilder.create(); gson = gsonBuilder.create();
} }
return gson; return gson;

@ -67,11 +67,28 @@ public interface ApplicationManagementService {
response = ErrorResponse.class) response = ErrorResponse.class)
}) })
Response getApplications( Response getApplications(
@ApiParam( @ApiParam(
name = "If-Modified-Since", name = "If-Modified-Since",
value = "Validates if the requested variant has not been modified since the time specified", value = "Validates if the requested variant has not been modified since the time specified",
required = false) required = false)
@HeaderParam("If-Modified-Since") String ifModifiedSince); @HeaderParam("If-Modified-Since") String ifModifiedSince,
@ApiParam(
name = "offset",
value = "Provide how many apps it should return",
required = false,
defaultValue = "20")
@QueryParam("offset") int offset,
@ApiParam(
name = "limit",
value = "Provide from which position apps should return",
required = false,
defaultValue = "0")
@QueryParam("limit") int limit
);
} }

@ -22,28 +22,39 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.application.mgt.core.components.ApplicationManager; import org.wso2.carbon.device.application.mgt.core.components.ApplicationManager;
import org.wso2.carbon.device.application.mgt.core.dto.ApplicationList; import org.wso2.carbon.device.application.mgt.core.dto.ApplicationList;
import org.wso2.carbon.device.application.mgt.core.dto.Filter;
import org.wso2.carbon.device.application.mgt.core.util.ApplicationManagementUtil; import org.wso2.carbon.device.application.mgt.core.util.ApplicationManagementUtil;
import javax.ws.rs.Consumes; import javax.ws.rs.*;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
@Produces({ "application/json"}) @Produces({ "application/json"})
@Consumes({ "application/json"}) @Consumes({ "application/json"})
public class ApplicationManagementServiceImpl { public class ApplicationManagementServiceImpl {
public static final int DEFAULT_LIMIT = 20;
private static Log log = LogFactory.getLog(ApplicationManagementServiceImpl.class); private static Log log = LogFactory.getLog(ApplicationManagementServiceImpl.class);
@GET @GET
@Consumes("application/json") @Consumes("application/json")
@Path("applications") @Path("applications")
public Response getApplications() { public Response getApplications(@QueryParam("offset") int offset, @QueryParam("limit") int limit,
@QueryParam("q") String searchQuery) {
ApplicationManager applicationManager = ApplicationManagementUtil.getApplicationManager(); ApplicationManager applicationManager = ApplicationManagementUtil.getApplicationManager();
try { try {
ApplicationList applications = applicationManager.getApplications();
if(limit == 0){
limit = DEFAULT_LIMIT;
}
Filter filter = new Filter();
filter.setOffset(offset);
filter.setLimit(limit);
filter.setSearchQuery(searchQuery);
ApplicationList applications = applicationManager.getApplications(filter);
return Response.status(Response.Status.OK).entity(applications).build(); return Response.status(Response.Status.OK).entity(applications).build();
} catch (Exception e) { } catch (Exception e) {
String msg = "Error occurred while getting the application list"; String msg = "Error occurred while getting the application list";

@ -20,6 +20,7 @@ package org.wso2.carbon.device.application.mgt.core.components;
import org.wso2.carbon.device.application.mgt.core.dto.Application; import org.wso2.carbon.device.application.mgt.core.dto.Application;
import org.wso2.carbon.device.application.mgt.core.dto.ApplicationList; import org.wso2.carbon.device.application.mgt.core.dto.ApplicationList;
import org.wso2.carbon.device.application.mgt.core.dto.Filter;
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagerException; import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagerException;
import java.util.List; import java.util.List;
@ -28,6 +29,6 @@ public interface ApplicationManager {
public void createApplication(Application application) throws ApplicationManagerException; public void createApplication(Application application) throws ApplicationManagerException;
public ApplicationList getApplications() throws ApplicationManagerException; public ApplicationList getApplications(Filter filter) throws ApplicationManagerException;
} }

@ -24,6 +24,7 @@ import org.wso2.carbon.device.application.mgt.core.components.ApplicationManager
import org.wso2.carbon.device.application.mgt.core.dao.ApplicationManagementDAO; import org.wso2.carbon.device.application.mgt.core.dao.ApplicationManagementDAO;
import org.wso2.carbon.device.application.mgt.core.dto.Application; import org.wso2.carbon.device.application.mgt.core.dto.Application;
import org.wso2.carbon.device.application.mgt.core.dto.ApplicationList; import org.wso2.carbon.device.application.mgt.core.dto.ApplicationList;
import org.wso2.carbon.device.application.mgt.core.dto.Filter;
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagerException; import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagerException;
import org.wso2.carbon.device.application.mgt.core.internal.ApplicationManagementDataHolder; import org.wso2.carbon.device.application.mgt.core.internal.ApplicationManagementDataHolder;
import org.wso2.carbon.device.application.mgt.core.util.ConnectionManagerUtil; import org.wso2.carbon.device.application.mgt.core.util.ConnectionManagerUtil;
@ -52,10 +53,10 @@ public class ApplicationManagerImpl implements ApplicationManager {
} }
@Override @Override
public ApplicationList getApplications() throws ApplicationManagerException { public ApplicationList getApplications(Filter filter) throws ApplicationManagerException {
ConnectionManagerUtil.openConnection(); ConnectionManagerUtil.openConnection();
ApplicationManagementDAO applicationManagementDAO = ApplicationManagementDataHolder.getInstance().getApplicationManagementDAO(); ApplicationManagementDAO applicationManagementDAO = ApplicationManagementDataHolder.getInstance().getApplicationManagementDAO();
ApplicationList applications = applicationManagementDAO.getApplications(); ApplicationList applications = applicationManagementDAO.getApplications(filter);
ConnectionManagerUtil.closeConnection(); ConnectionManagerUtil.closeConnection();
return applications; return applications;
} }

@ -20,6 +20,7 @@ package org.wso2.carbon.device.application.mgt.core.dao;
import org.wso2.carbon.device.application.mgt.core.dto.Application; import org.wso2.carbon.device.application.mgt.core.dto.Application;
import org.wso2.carbon.device.application.mgt.core.dto.ApplicationList; import org.wso2.carbon.device.application.mgt.core.dto.ApplicationList;
import org.wso2.carbon.device.application.mgt.core.dto.Filter;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -59,6 +60,6 @@ public interface ApplicationManagementDAO {
public void createApplication(Application application) throws ApplicationManagementDAOException; public void createApplication(Application application) throws ApplicationManagementDAOException;
public ApplicationList getApplications() throws ApplicationManagementDAOException; public ApplicationList getApplications(Filter filter) throws ApplicationManagementDAOException;
} }

@ -25,4 +25,8 @@ public class ApplicationManagementDAOException extends ApplicationManagerExcepti
public ApplicationManagementDAOException(String message, Throwable throwable) { public ApplicationManagementDAOException(String message, Throwable throwable) {
super(message, throwable); super(message, throwable);
} }
public ApplicationManagementDAOException(String message) {
super(message, new Exception());
}
} }

@ -24,6 +24,7 @@ import org.wso2.carbon.device.application.mgt.core.dao.ApplicationManagementDAOE
import org.wso2.carbon.device.application.mgt.core.dao.ApplicationManagementDAOUtil; import org.wso2.carbon.device.application.mgt.core.dao.ApplicationManagementDAOUtil;
import org.wso2.carbon.device.application.mgt.core.dto.Application; import org.wso2.carbon.device.application.mgt.core.dto.Application;
import org.wso2.carbon.device.application.mgt.core.dto.ApplicationList; import org.wso2.carbon.device.application.mgt.core.dto.ApplicationList;
import org.wso2.carbon.device.application.mgt.core.dto.Filter;
import org.wso2.carbon.device.application.mgt.core.dto.Pagination; import org.wso2.carbon.device.application.mgt.core.dto.Pagination;
import org.wso2.carbon.device.application.mgt.core.util.ConnectionManagerUtil; import org.wso2.carbon.device.application.mgt.core.util.ConnectionManagerUtil;
@ -42,26 +43,45 @@ public class GenericAppManagementDAO implements ApplicationManagementDAO {
} }
@Override @Override
public ApplicationList getApplications() throws ApplicationManagementDAOException { public ApplicationList getApplications(Filter filter) throws ApplicationManagementDAOException {
Connection conn = null; Connection conn = null;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs = null; ResultSet rs = null;
String sql = null; String sql = "";
ApplicationList applicationList = new ApplicationList(); ApplicationList applicationList = new ApplicationList();
List<Application> applications = new ArrayList<>(); List<Application> applications = new ArrayList<>();
Pagination pagination = new Pagination(); Pagination pagination = new Pagination();
if (filter == null) {
throw new ApplicationManagementDAOException("Filter need to be instantiated");
} else {
pagination.setLimit(filter.getLimit());
pagination.setOffset(filter.getOffset());
}
try { try {
conn = ConnectionManagerUtil.getCurrentConnection().get(); conn = ConnectionManagerUtil.getCurrentConnection().get();
sql = "SELECT SQL_CALC_FOUND_ROWS AP.*, AT.NAME AS AT_NAME, AT.CODE AS AT_CODE, CT.NAME AS CT_NAME " + sql += "SELECT SQL_CALC_FOUND_ROWS AP.*, AT.NAME AS AT_NAME, AT.CODE AS AT_CODE, CT.NAME AS CT_NAME ";
"FROM APPM_APPLICATION AS AP " + sql += "FROM APPM_APPLICATION AS AP ";
"INNER JOIN APPM_APPLICATION_TYPE AS AT ON AP.APPLICATION_TYPE_ID = AT.ID " + sql += "INNER JOIN APPM_APPLICATION_TYPE AS AT ON AP.APPLICATION_TYPE_ID = AT.ID ";
"INNER JOIN APPM_APPLICATION_CATEGORY AS CT ON AP.CATEGORY_ID = CT.ID;"; sql += "INNER JOIN APPM_APPLICATION_CATEGORY AS CT ON AP.CATEGORY_ID = CT.ID ";
if (filter.getSearchQuery() != null || "".equals(filter.getSearchQuery())) {
sql += "WHERE AP.NAME LIKE ? ";
}
sql += "LIMIT ? ";
sql += "OFFSET ?;";
stmt = conn.prepareStatement(sql); stmt = conn.prepareStatement(sql);
int index = 0;
if (filter.getSearchQuery() != null || "".equals(filter.getSearchQuery())) {
stmt.setString(++index, "%" + filter.getSearchQuery() + "%");
}
stmt.setInt(++index, filter.getLimit());
stmt.setInt(++index, filter.getOffset());
rs = stmt.executeQuery(); rs = stmt.executeQuery();
int length = 0; int length = 0;
@ -84,7 +104,7 @@ public class GenericAppManagementDAO implements ApplicationManagementDAO {
length++; length++;
} }
pagination.setLength(length); pagination.setSize(length);
applicationList.setApplications(applications); applicationList.setApplications(applications);
applicationList.setPagination(pagination); applicationList.setPagination(pagination);

@ -0,0 +1,81 @@
/*
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.wso2.carbon.device.application.mgt.core.dto;
import java.util.Map;
public class Filter {
private int limit;
private int offset;
private String filter;
private Map<String, String> filterProperties;
private String searchQuery;
public int getLimit() {
return limit;
}
public void setLimit(int limit) {
this.limit = limit;
}
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public String getFilter() {
return filter;
}
public void setFilter(String filter) {
this.filter = filter;
}
public Map<String, String> getFilterProperties() {
return filterProperties;
}
public void setFilterProperties(Map<String, String> filterProperties) {
this.filterProperties = filterProperties;
}
public String getSearchQuery() {
return searchQuery;
}
public void setSearchQuery(String searchQuery) {
this.searchQuery = searchQuery;
}
public boolean hasCondition() {
if (filterProperties != null || searchQuery != null || filter != null) {
return true;
}
return false;
}
}

@ -24,7 +24,7 @@ public class Pagination {
private int limit; private int limit;
private int length; private int size;
private int count; private int count;
@ -44,12 +44,12 @@ public class Pagination {
this.limit = limit; this.limit = limit;
} }
public int getLength() { public int getSize() {
return length; return size;
} }
public void setLength(int length) { public void setSize(int size) {
this.length = length; this.size = size;
} }
public int getCount() { public int getCount() {

Loading…
Cancel
Save