Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New catalog #29

Open
wants to merge 20 commits into
base: develop
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
reverting dumb deletes
bernardoezequias committed Aug 9, 2023

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit 5f715d4d0ef5ad44ec55b7023578daf1ecb673d4
11 changes: 11 additions & 0 deletions src/main/java/saps/catalog/core/Catalog.java
Original file line number Diff line number Diff line change
@@ -148,4 +148,15 @@ List<SapsImage> filterTasks(
String preprocessingTag,
String processingTag)
throws CatalogException;

List<SapsImage> getTasksCompletedWithPagination(String search, Integer page, Integer size, String sortField,
String sortOrder);

List<SapsImage> getTasksOngoingWithPagination(String search, Integer page, Integer size, String sortField,
String sortOrder);

Integer getCountCompletedTasks(String search) throws CatalogException;

Integer getCountOngoingTasks(String search) throws CatalogException;

}
146 changes: 146 additions & 0 deletions src/main/java/saps/catalog/core/jdbc/JDBCCatalog.java
Original file line number Diff line number Diff line change
@@ -460,6 +460,90 @@ public SapsImage getTaskById(String taskId) throws CatalogException, TaskNotFoun
}
}

private String buildOngoingWithPaginationQuery(String search, Integer page, Integer size, String sortField,
String sortOrder) {
StringBuilder query = new StringBuilder("SELECT * FROM " + JDBCCatalogConstants.TablesName.TASKS);
query.append(" WHERE " + JDBCCatalogConstants.Tables.Task.STATE + " <> 'archived' ");
query.append(" AND " + JDBCCatalogConstants.Tables.Task.STATE + " <> 'failed' ");

if (search != null && !search.trim().isEmpty())
query.append(" AND to_char(image_date , 'YYYY-MM-DD') LIKE '" + search + "%' ");
if (sortField != null && sortOrder != null && !sortField.trim().isEmpty() && !sortOrder.trim().isEmpty())
query.append(" ORDER BY " + sortField + " " + sortOrder.toUpperCase());
if (page > 0 && size > 0)
query.append(" OFFSET " + (page - 1) * size + " ROWS FETCH NEXT " + size + " ROWS ONLY");

return query.toString();
}

@Override
public List<SapsImage> getTasksOngoingWithPagination(String search, Integer page, Integer size, String sortField,
String sortOrder) throws CatalogException {

Statement statement = null;
Connection connection = null;

try {
String query = buildOngoingWithPaginationQuery(search, page, size, sortField, sortOrder);

connection = getConnection();
statement = connection.createStatement();
statement.setQueryTimeout(300);

statement.execute(query);
ResultSet rs = statement.getResultSet();
return JDBCCatalogUtil.extractSapsTasks(rs);
} catch (SQLException e) {
throw new CatalogException("Error while select all tasks");
} catch (JDBCCatalogException e) {
throw new CatalogException("Error while extract all tasks");
} finally {
close(statement, connection);
}
}

private String buildCompletedWithPaginationQuery(String search, Integer page, Integer size, String sortField,
String sortOrder) {
StringBuilder query = new StringBuilder("SELECT * FROM " + JDBCCatalogConstants.TablesName.TASKS);
query.append(" WHERE (" + JDBCCatalogConstants.Tables.Task.STATE + " = 'archived' ");
query.append(" OR " + JDBCCatalogConstants.Tables.Task.STATE + " = 'failed') ");

if (search != null && !search.trim().isEmpty())
query.append(" AND to_char(image_date , 'YYYY-MM-DD') LIKE '" + search + "%' ");
if (sortField != null && sortOrder != null && !sortField.trim().isEmpty() && !sortOrder.trim().isEmpty())
query.append(" ORDER BY " + sortField + " " + sortOrder.toUpperCase());
if (page > 0 && size > 0)
query.append(" OFFSET " + (page - 1) * size + " ROWS FETCH NEXT " + size + " ROWS ONLY");

return query.toString();
}

@Override
public List<SapsImage> getTasksCompletedWithPagination(String search, Integer page, Integer size, String sortField,
String sortOrder)
throws CatalogException {
Statement statement = null;
Connection connection = null;

try {
String query = buildCompletedWithPaginationQuery(search, page, size, sortField, sortOrder);

connection = getConnection();
statement = connection.createStatement();
statement.setQueryTimeout(300);

statement.execute(query);
ResultSet rs = statement.getResultSet();
return JDBCCatalogUtil.extractSapsTasks(rs);
} catch (SQLException e) {
throw new CatalogException("Error while select all tasks");
} catch (JDBCCatalogException e) {
throw new CatalogException("Error while extract all tasks");
} finally {
close(statement, connection);
}
}

@Override
public List<SapsImage> filterTasks(
ImageTaskState state,
@@ -611,4 +695,66 @@ public void removeStateChangeTime(String taskId, ImageTaskState state, Timestamp
close(removeStatement, connection);
}
}

private String buildCountOngoingQuery(String search) {
StringBuilder query = new StringBuilder(JDBCCatalogConstants.Queries.Select.TASKS_ONGOING_COUNT);

if (search != null && !search.trim().isEmpty())
query.append(" AND to_char(image_date , 'YYYY-MM-DD') LIKE '" + search + "%' ");

return query.toString();
}

@Override
public Integer getCountOngoingTasks(String search) throws CatalogException {
Statement statement = null;
Connection connection = null;
try {
String query = buildCountOngoingQuery(search);

connection = getConnection();
statement = connection.createStatement();
statement.setQueryTimeout(300);
statement.execute(query);

ResultSet rs = statement.getResultSet();
rs.next();
return rs.getInt("count");
} catch (SQLException e) {
throw new CatalogException("Error while select all tasks");
} finally {
close(statement, connection);
}
}

private String buildCountCompletedQuery(String search) {
StringBuilder query = new StringBuilder(JDBCCatalogConstants.Queries.Select.TASKS_COMPLETED_COUNT);

if (search != null && !search.trim().isEmpty())
query.append(" AND to_char(image_date , 'YYYY-MM-DD') LIKE '" + search + "%' ");

return query.toString();
}

@Override
public Integer getCountCompletedTasks(String search) throws CatalogException {
Statement statement = null;
Connection connection = null;
try {
String query = buildCountCompletedQuery(search);

connection = getConnection();
statement = connection.createStatement();
statement.setQueryTimeout(300);
statement.execute(query);

ResultSet rs = statement.getResultSet();
rs.next();
return rs.getInt("count");
} catch (SQLException e) {
throw new CatalogException("Error while select all tasks");
} finally {
close(statement, connection);
}
}
}
16 changes: 16 additions & 0 deletions src/main/java/saps/catalog/core/jdbc/JDBCCatalogConstants.java
Original file line number Diff line number Diff line change
@@ -257,6 +257,22 @@ public final class Select {
+ " WHERE task_id = ANY(ARRAY(SELECT tasks_ids FROM "
+ JDBCCatalogConstants.TablesName.JOBS
+ " WHERE job_id = ?))";

public static final String TASKS_ONGOING_COUNT = "SELECT COUNT(*) FROM "
+ JDBCCatalogConstants.TablesName.TASKS
+ " WHERE ("
+ Tables.Task.STATE
+ " <> 'archived' AND "
+ Tables.Task.STATE
+ " <> 'failed')";

public static final String TASKS_COMPLETED_COUNT = "SELECT COUNT(*) FROM "
+ JDBCCatalogConstants.TablesName.TASKS
+ " WHERE ("
+ Tables.Task.STATE
+ " = 'archived' OR "
+ Tables.Task.STATE
+ " = 'failed')";
}

public final class Delete {
37 changes: 0 additions & 37 deletions src/main/java/saps/catalog/core/jdbc/JDBCCatalogUtil.java
Original file line number Diff line number Diff line change
@@ -11,9 +11,7 @@
import saps.common.core.model.SapsImage;
import saps.common.core.model.SapsLandsatImage;
import saps.common.core.model.SapsUser;
import saps.common.core.model.SapsUserJob;
import saps.common.core.model.enums.ImageTaskState;
import saps.common.core.model.enums.JobState;

public class JDBCCatalogUtil {

@@ -69,41 +67,6 @@ public static List<SapsImage> extractSapsTasks(ResultSet rs) throws JDBCCatalogE
return imageTasks;
}

public static List<SapsUserJob> extractSapsUserJob(ResultSet rs, boolean withoutTasks) throws JDBCCatalogException {
List<SapsUserJob> userJobs = new ArrayList<SapsUserJob>();
while (true) {

try {
if (!rs.next())
break;

List<String> tasksIds = new ArrayList<>();
if (!withoutTasks)
tasksIds = Arrays.asList(
rs.getString(JDBCCatalogConstants.Tables.Job.TASKS_IDS).replace("{", "").replace("}", "").split(","));

userJobs.add(
new SapsUserJob(
rs.getString(JDBCCatalogConstants.Tables.Job.ID),
rs.getString(JDBCCatalogConstants.Tables.Job.LOWER_LEFT_LATITUDE),
rs.getString(JDBCCatalogConstants.Tables.Job.LOWER_LEFT_LONGITUDE),
rs.getString(JDBCCatalogConstants.Tables.Job.UPPER_RIGHT_LATITUDE),
rs.getString(JDBCCatalogConstants.Tables.Job.UPPER_RIGHT_LONGITUDE),
JobState.getStateFromStr(rs.getString(JDBCCatalogConstants.Tables.Job.STATE)),
rs.getString(JDBCCatalogConstants.Tables.Job.USER_EMAIL),
rs.getString(JDBCCatalogConstants.Tables.Job.JOB_LABEL),
rs.getDate(JDBCCatalogConstants.Tables.Job.START_DATE),
rs.getDate(JDBCCatalogConstants.Tables.Job.END_DATE),
rs.getInt(JDBCCatalogConstants.Tables.Job.PRIORITY),
tasksIds,
rs.getTimestamp(JDBCCatalogConstants.Tables.Job.CREATION_TIME)));
} catch (SQLException e) {
throw new JDBCCatalogException("Error while extract task", e);
}
}
return userJobs;
}

public static SapsLandsatImage extractSapsImages(ResultSet rs) throws JDBCCatalogException {
SapsLandsatImage sapsLandImage = null;
while (true) {
54 changes: 54 additions & 0 deletions src/main/java/saps/catalog/core/retry/CatalogUtils.java
Original file line number Diff line number Diff line change
@@ -195,6 +195,60 @@ public static List<SapsImage> getProcessedTasks(
return imageStore.filterTasks(ImageTaskState.ARCHIVED, region, initDate, endDate, message, preprocessingPhaseTag, processingPhaseTag);
}

/**
* This function return all the tasks that have not finished all the pipeline.
* @param imageStore catalog component
* @param search search query
* @param page pagination page number
* @param size pagination page size
* @param sortField sort field
* @param sortOrder type of sort order
* @param message information message
* @return SAPS image list
*/
public static List<SapsImage> getTasksOngoingWithPagination(Catalog imageStore, String search, Integer page,
Integer size, String sortField, String sortOrder) {
return imageStore.getTasksOngoingWithPagination(search, page, size, sortField, sortOrder);
}

/**
* This function return all the tasks that have finished all the pipeline.
* @param imageStore catalog component
* @param search search query
* @param page pagination page number
* @param size pagination page size
* @param sortField sort field
* @param sortOrder type of sort order
* @param message information message
* @return SAPS image list
*/
public static List<SapsImage> getTasksCompletedWithPagination(Catalog imageStore, String search, Integer page,
Integer size, String sortField, String sortOrder) {
return imageStore.getTasksCompletedWithPagination(search, page, size, sortField, sortOrder);
}

/**
* This function return the amount of tasks that have not finished all the pipeline.
* @param imageStore catalog component
* @param search search query
* @param message information message
* @return SAPS image list
*/
public static Integer getCountOngoingTasks(Catalog imageStore, String search, String message) {
return imageStore.getCountOngoingTasks(search);
}

/**
* This function return the amount of tasks that have finished all the pipeline.
* @param imageStore catalog component
* @param search search query
* @param message information message
* @return SAPS image list
*/
public static Integer getCountCompletedTasks(Catalog imageStore, String search, String message) {
return imageStore.getCountCompletedTasks(search);
}

/**
* This function get all tasks.
*