|
|
|
@ -94,7 +94,13 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<ApplicationDTO> getApplications(Filter filter,int deviceTypeId, int tenantId) throws ApplicationManagementDAOException {
|
|
|
|
|
public List<ApplicationDTO> getApplications(Filter filter, int deviceTypeId, int tenantId) throws
|
|
|
|
|
ApplicationManagementDAOException {
|
|
|
|
|
if (filter == null) {
|
|
|
|
|
String msg = "Filter is not instantiated for tenant "+tenantId;
|
|
|
|
|
log.error(msg);
|
|
|
|
|
throw new ApplicationManagementDAOException(msg);
|
|
|
|
|
}
|
|
|
|
|
if (log.isDebugEnabled()) {
|
|
|
|
|
log.debug("Getting application data from the database");
|
|
|
|
|
log.debug(String.format("Filter: limit=%s, offset=%s", filter.getLimit(), filter.getOffset()));
|
|
|
|
@ -131,14 +137,12 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
|
|
|
|
|
+ "FROM AP_APP "
|
|
|
|
|
+ "INNER JOIN AP_APP_RELEASE ON "
|
|
|
|
|
+ "AP_APP.ID = AP_APP_RELEASE.AP_APP_ID "
|
|
|
|
|
+ "INNER JOIN (SELECT ID FROM AP_APP WHERE AP_APP.TENANT_ID = ? LIMIT ? OFFSET ? ) AS app_data ON app_data.ID = AP_APP.ID "
|
|
|
|
|
+ "WHERE AP_APP.TENANT_ID = ?";
|
|
|
|
|
|
|
|
|
|
if (filter == null) {
|
|
|
|
|
String msg = "Filter is not instantiated.";
|
|
|
|
|
log.error(msg);
|
|
|
|
|
throw new ApplicationManagementDAOException(msg);
|
|
|
|
|
+ "INNER JOIN (SELECT AP_APP.ID FROM AP_APP ";
|
|
|
|
|
if (!StringUtils.isEmpty(filter.getVersion()) || !StringUtils.isEmpty(filter.getAppReleaseState())
|
|
|
|
|
|| !StringUtils.isEmpty(filter.getAppReleaseType())) {
|
|
|
|
|
sql += "INNER JOIN AP_APP_RELEASE ON AP_APP.ID = AP_APP_RELEASE.AP_APP_ID ";
|
|
|
|
|
}
|
|
|
|
|
sql += "WHERE AP_APP.TENANT_ID = ? ";
|
|
|
|
|
|
|
|
|
|
if (!StringUtils.isEmpty(filter.getAppType())) {
|
|
|
|
|
sql += "AND AP_APP.TYPE = ? ";
|
|
|
|
@ -169,36 +173,24 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
|
|
|
|
|
if (deviceTypeId != -1) {
|
|
|
|
|
sql += "AND AP_APP.DEVICE_TYPE_ID = ? ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (filter.getLimit() == -1) {
|
|
|
|
|
sql = sql.replace("LIMIT ? OFFSET ?", "");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String sortingOrder = "ASC";
|
|
|
|
|
sql += "GROUP BY AP_APP.ID ";
|
|
|
|
|
if (!StringUtils.isEmpty(filter.getSortBy())) {
|
|
|
|
|
sortingOrder = filter.getSortBy();
|
|
|
|
|
sql += "ORDER BY ID " + filter.getSortBy() +" ";
|
|
|
|
|
}
|
|
|
|
|
sql += " ORDER BY APP_ID " + sortingOrder;
|
|
|
|
|
|
|
|
|
|
if (filter.getLimit() != -1) {
|
|
|
|
|
sql += " LIMIT ? OFFSET ? ";
|
|
|
|
|
}
|
|
|
|
|
sql += ") AS app_data ON app_data.ID = AP_APP.ID " +
|
|
|
|
|
"WHERE AP_APP.TENANT_ID = ?";
|
|
|
|
|
try {
|
|
|
|
|
Connection conn = this.getDBConnection();
|
|
|
|
|
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
|
|
|
|
int paramIndex = 1;
|
|
|
|
|
stmt.setInt(paramIndex++, tenantId);
|
|
|
|
|
if (filter.getLimit() != -1) {
|
|
|
|
|
if (filter.getLimit() == 0) {
|
|
|
|
|
stmt.setInt(paramIndex++, 100);
|
|
|
|
|
} else {
|
|
|
|
|
stmt.setInt(paramIndex++, filter.getLimit());
|
|
|
|
|
}
|
|
|
|
|
stmt.setInt(paramIndex++, filter.getOffset());
|
|
|
|
|
}
|
|
|
|
|
stmt.setInt(paramIndex++, tenantId);
|
|
|
|
|
|
|
|
|
|
if (filter.getAppType() != null && !filter.getAppType().isEmpty()) {
|
|
|
|
|
if (!StringUtils.isEmpty(filter.getAppType())) {
|
|
|
|
|
stmt.setString(paramIndex++, filter.getAppType());
|
|
|
|
|
}
|
|
|
|
|
if (filter.getAppName() != null && !filter.getAppName().isEmpty()) {
|
|
|
|
|
if (!StringUtils.isEmpty(filter.getAppName())) {
|
|
|
|
|
if (filter.isFullMatch()) {
|
|
|
|
|
stmt.setString(paramIndex++, filter.getAppName().toLowerCase());
|
|
|
|
|
} else {
|
|
|
|
@ -221,8 +213,13 @@ public class GenericApplicationDAOImpl extends AbstractDAOImpl implements Applic
|
|
|
|
|
stmt.setString(paramIndex++, filter.getAppReleaseState());
|
|
|
|
|
}
|
|
|
|
|
if (deviceTypeId > 0) {
|
|
|
|
|
stmt.setInt(paramIndex, deviceTypeId);
|
|
|
|
|
stmt.setInt(paramIndex++, deviceTypeId);
|
|
|
|
|
}
|
|
|
|
|
if (filter.getLimit() != -1) {
|
|
|
|
|
stmt.setInt(paramIndex++, filter.getLimit());
|
|
|
|
|
stmt.setInt(paramIndex++, filter.getOffset());
|
|
|
|
|
}
|
|
|
|
|
stmt.setInt(paramIndex, tenantId);
|
|
|
|
|
try (ResultSet rs = stmt.executeQuery()) {
|
|
|
|
|
return DAOUtil.loadApplications(rs);
|
|
|
|
|
}
|
|
|
|
|