mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Added filiter to app list
This commit is contained in:
parent
c53e5d5e70
commit
c6263ae22d
@ -51,7 +51,9 @@ public class GsonMessageBodyHandler implements MessageBodyWriter<Object>, Messag
|
||||
|
||||
private Gson getGson() {
|
||||
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();
|
||||
}
|
||||
return gson;
|
||||
|
||||
@ -67,11 +67,28 @@ public interface ApplicationManagementService {
|
||||
response = ErrorResponse.class)
|
||||
})
|
||||
Response getApplications(
|
||||
@ApiParam(
|
||||
|
||||
@ApiParam(
|
||||
name = "If-Modified-Since",
|
||||
value = "Validates if the requested variant has not been modified since the time specified",
|
||||
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.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.Filter;
|
||||
import org.wso2.carbon.device.application.mgt.core.util.ApplicationManagementUtil;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
@Produces({ "application/json"})
|
||||
@Consumes({ "application/json"})
|
||||
public class ApplicationManagementServiceImpl {
|
||||
|
||||
public static final int DEFAULT_LIMIT = 20;
|
||||
|
||||
private static Log log = LogFactory.getLog(ApplicationManagementServiceImpl.class);
|
||||
|
||||
|
||||
@GET
|
||||
@Consumes("application/json")
|
||||
@Path("applications")
|
||||
public Response getApplications() {
|
||||
public Response getApplications(@QueryParam("offset") int offset, @QueryParam("limit") int limit,
|
||||
@QueryParam("q") String searchQuery) {
|
||||
ApplicationManager applicationManager = ApplicationManagementUtil.getApplicationManager();
|
||||
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();
|
||||
} catch (Exception e) {
|
||||
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.ApplicationList;
|
||||
import org.wso2.carbon.device.application.mgt.core.dto.Filter;
|
||||
import org.wso2.carbon.device.application.mgt.core.exception.ApplicationManagerException;
|
||||
|
||||
import java.util.List;
|
||||
@ -28,6 +29,6 @@ public interface ApplicationManager {
|
||||
|
||||
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.dto.Application;
|
||||
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.internal.ApplicationManagementDataHolder;
|
||||
import org.wso2.carbon.device.application.mgt.core.util.ConnectionManagerUtil;
|
||||
@ -52,10 +53,10 @@ public class ApplicationManagerImpl implements ApplicationManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApplicationList getApplications() throws ApplicationManagerException {
|
||||
public ApplicationList getApplications(Filter filter) throws ApplicationManagerException {
|
||||
ConnectionManagerUtil.openConnection();
|
||||
ApplicationManagementDAO applicationManagementDAO = ApplicationManagementDataHolder.getInstance().getApplicationManagementDAO();
|
||||
ApplicationList applications = applicationManagementDAO.getApplications();
|
||||
ApplicationList applications = applicationManagementDAO.getApplications(filter);
|
||||
ConnectionManagerUtil.closeConnection();
|
||||
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.ApplicationList;
|
||||
import org.wso2.carbon.device.application.mgt.core.dto.Filter;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@ -59,6 +60,6 @@ public interface ApplicationManagementDAO {
|
||||
|
||||
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) {
|
||||
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.dto.Application;
|
||||
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.util.ConnectionManagerUtil;
|
||||
|
||||
@ -42,33 +43,52 @@ public class GenericAppManagementDAO implements ApplicationManagementDAO {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApplicationList getApplications() throws ApplicationManagementDAOException {
|
||||
public ApplicationList getApplications(Filter filter) throws ApplicationManagementDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
String sql = null;
|
||||
String sql = "";
|
||||
ApplicationList applicationList = new ApplicationList();
|
||||
List<Application> applications = new ArrayList<>();
|
||||
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 {
|
||||
|
||||
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 " +
|
||||
"FROM APPM_APPLICATION AS AP " +
|
||||
"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 += "SELECT SQL_CALC_FOUND_ROWS AP.*, AT.NAME AS AT_NAME, AT.CODE AS AT_CODE, CT.NAME AS CT_NAME ";
|
||||
sql += "FROM APPM_APPLICATION AS AP ";
|
||||
sql += "INNER JOIN APPM_APPLICATION_TYPE AS AT ON AP.APPLICATION_TYPE_ID = AT.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);
|
||||
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();
|
||||
|
||||
int length = 0;
|
||||
sql = "SELECT FOUND_ROWS() AS COUNT;";
|
||||
stmt = conn.prepareStatement(sql);
|
||||
ResultSet rsCount = stmt.executeQuery();
|
||||
if(rsCount.next()){
|
||||
if (rsCount.next()) {
|
||||
pagination.setCount(rsCount.getInt("COUNT"));
|
||||
}
|
||||
|
||||
@ -84,7 +104,7 @@ public class GenericAppManagementDAO implements ApplicationManagementDAO {
|
||||
length++;
|
||||
}
|
||||
|
||||
pagination.setLength(length);
|
||||
pagination.setSize(length);
|
||||
|
||||
applicationList.setApplications(applications);
|
||||
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 length;
|
||||
private int size;
|
||||
|
||||
private int count;
|
||||
|
||||
@ -44,12 +44,12 @@ public class Pagination {
|
||||
this.limit = limit;
|
||||
}
|
||||
|
||||
public int getLength() {
|
||||
return length;
|
||||
public int getSize() {
|
||||
return size;
|
||||
}
|
||||
|
||||
public void setLength(int length) {
|
||||
this.length = length;
|
||||
public void setSize(int size) {
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user