Search in sources :

Example 1 with SpecificQueryAO

use of org.irods.jargon.core.pub.SpecificQueryAO in project metalnx-web by irods-contrib.

the class SpecificQueryServiceImpl method createSpecificQuery.

@Override
public boolean createSpecificQuery(DataGridSpecificQuery specificQuery) throws DataGridConnectionRefusedException {
    SpecificQueryAO specificQueryAO = irodsServices.getSpecificQueryAO();
    try {
        SpecificQueryDefinition newQuery = new SpecificQueryDefinition(specificQuery.getAlias(), specificQuery.getQuery());
        specificQueryAO.addSpecificQuery(newQuery);
        return true;
    } catch (JargonException e) {
        logger.error("Could not create specific query {}", specificQuery.getAlias(), e);
    }
    return false;
}
Also used : JargonException(org.irods.jargon.core.exception.JargonException) SpecificQueryAO(org.irods.jargon.core.pub.SpecificQueryAO) SpecificQueryDefinition(org.irods.jargon.core.pub.domain.SpecificQueryDefinition)

Example 2 with SpecificQueryAO

use of org.irods.jargon.core.pub.SpecificQueryAO in project metalnx-web by irods-contrib.

the class SpecificQueryServiceImpl method findByAlias.

@Override
public DataGridSpecificQuery findByAlias(String alias) throws DataGridConnectionRefusedException {
    SpecificQueryAO specificQueryAO = irodsServices.getSpecificQueryAO();
    SpecificQueryDefinition query;
    try {
        query = specificQueryAO.findSpecificQueryByAlias(alias);
        return createDataGridSpecificQuery(query);
    } catch (JargonException e) {
        logger.error("Could not retrieve specific query with alias {}", alias, e);
    }
    return null;
}
Also used : JargonException(org.irods.jargon.core.exception.JargonException) SpecificQueryAO(org.irods.jargon.core.pub.SpecificQueryAO) SpecificQueryDefinition(org.irods.jargon.core.pub.domain.SpecificQueryDefinition)

Example 3 with SpecificQueryAO

use of org.irods.jargon.core.pub.SpecificQueryAO in project metalnx-web by irods-contrib.

the class SpecificQueryServiceImpl method updateSpecificQuery.

@Override
public boolean updateSpecificQuery(DataGridSpecificQuery specificQuery) throws DataGridConnectionRefusedException {
    SpecificQueryAO specificQueryAO = irodsServices.getSpecificQueryAO();
    try {
        // Jargon does not support SpecificQueries update, so we'll remove and create
        // a new one.
        specificQueryAO.removeSpecificQueryByAlias(specificQuery.getAlias());
        this.createSpecificQuery(specificQuery);
        return true;
    } catch (JargonException e) {
        logger.error("Could not create specific query {}", specificQuery.getAlias(), e);
    }
    return false;
}
Also used : JargonException(org.irods.jargon.core.exception.JargonException) SpecificQueryAO(org.irods.jargon.core.pub.SpecificQueryAO)

Example 4 with SpecificQueryAO

use of org.irods.jargon.core.pub.SpecificQueryAO in project metalnx-web by irods-contrib.

the class CollectionServiceImpl method listDataObjectsUnderPathThatMatchSearchText.

/**
 * Lists all data objects under the given path that match a search term. Any
 * data object where the term appears in the beginning, middle, and the end of
 * its name will be retrieved.
 *
 * @param parentPath
 *            path to the parent collection where you are looking for items that
 *            match a search term
 * @param searchText
 *            term to be matched
 * @param offset
 *            partial start index
 * @param limit
 *            max number of items retrieved
 * @return list of data objects that match the given search text
 * @throws DataGridConnectionRefusedException
 */
private List<DataGridCollectionAndDataObject> listDataObjectsUnderPathThatMatchSearchText(String parentPath, String searchText, int offset, int limit, int orderColumn, String orderDir) throws DataNotFoundException, JargonQueryException, DataGridConnectionRefusedException {
    logger.info("listDataObjectsUnderPathThatMatchSearchText()");
    logger.info("parentPath:{}", parentPath);
    logger.info("searchText:{}", searchText);
    logger.info("offset:{}", offset);
    logger.info("limit:{}", limit);
    logger.info("orderColumn:{}", orderColumn);
    logger.info("orderDir:{}", orderDir);
    SpecificQueryAO specificQueryAO = adminServices.getSpecificQueryAO();
    SpecificQueryDefinition queryDef = null;
    List<CollectionAndDataObjectListingEntry> dataGridList = null;
    List<DataGridCollectionAndDataObject> dataGridCollectionAndDataObjects = null;
    String sqlAlias = null;
    try {
        dataGridCollectionAndDataObjects = new ArrayList<DataGridCollectionAndDataObject>();
        sqlAlias = SQL_LIST_DATA_OBJECTS_MATCHING_SEARCH_TEXT_ALIAS_WITH_ORDERING;
        ClientHints clientHints = this.irodsServices.getEnvironmentalInfoAO().retrieveClientHints(false);
        SpecificQueryProvider provider = specificQueryProviderFactory.instance(clientHints.whatTypeOfIcatIsIt());
        String query = provider.buildSelectDataObjectsUnderPathThatMatchSearchText(parentPath, searchText, offset, limit, orderColumn, orderDir);
        // Creating Specific Query instance
        queryDef = new SpecificQueryDefinition();
        queryDef.setAlias(sqlAlias);
        queryDef.setSql(query.toString());
        // Creating spec query on iRODS
        specificQueryAO.addSpecificQuery(queryDef);
        // Executing specific query
        String zone = irodsServices.getCurrentUserZone();
        List<String> args = new ArrayList<String>();
        args.add(parentPath);
        args.add("%" + searchText + "%");
        args.add(String.valueOf(offset));
        args.add(String.valueOf(limit));
        SpecificQuery specQuery = SpecificQuery.instanceArguments(sqlAlias, args, 0, zone);
        SpecificQueryResultSet queryResultSet = specificQueryAO.executeSpecificQueryUsingAlias(specQuery, MAX_RESULTS_PER_PAGE, 0);
        // Mapping spec query results to DataGrid* objects
        dataGridList = DataGridUtils.mapQueryResultSetToDataGridObjectsForSearch(queryResultSet);
        dataGridCollectionAndDataObjects.addAll(DataGridUtils.mapListingEntryToDataGridCollectionAndDataObject(dataGridList));
    } catch (JargonException | UnsupportedDataGridFeatureException e) {
        logger.error("Could not execute specific query for listing data objects that match a search text", e);
    } finally {
        try {
            // after running the user specific query, we need to remove from the database
            specificQueryAO.removeSpecificQueryByAlias(sqlAlias);
        } catch (JargonException e) {
            logger.error("Could not remove specific query {}: ", sqlAlias, e.getMessage());
        }
    }
    return dataGridCollectionAndDataObjects;
}
Also used : UnsupportedDataGridFeatureException(com.emc.metalnx.core.domain.exceptions.UnsupportedDataGridFeatureException) SpecificQueryProvider(com.emc.metalnx.services.irods.utils.SpecificQueryProvider) JargonException(org.irods.jargon.core.exception.JargonException) ClientHints(org.irods.jargon.core.pub.domain.ClientHints) ArrayList(java.util.ArrayList) SpecificQueryResultSet(org.irods.jargon.core.query.SpecificQueryResultSet) CollectionAndDataObjectListingEntry(org.irods.jargon.core.query.CollectionAndDataObjectListingEntry) SpecificQueryAO(org.irods.jargon.core.pub.SpecificQueryAO) SpecificQueryDefinition(org.irods.jargon.core.pub.domain.SpecificQueryDefinition) DataGridCollectionAndDataObject(com.emc.metalnx.core.domain.entity.DataGridCollectionAndDataObject) SpecificQuery(org.irods.jargon.core.query.SpecificQuery)

Example 5 with SpecificQueryAO

use of org.irods.jargon.core.pub.SpecificQueryAO in project metalnx-web by irods-contrib.

the class CollectionServiceImpl method getTotalCollectionsUnderPathThatMatchSearchText.

/**
 * Calculates the number of collections that match the given search term.
 *
 * @param parentPath
 *            path to the parent collection where you are looking for items that
 *            match a search term
 * @param searchText
 *            term to be matched
 * @return total number of collections matching the given search text
 * @throws DataGridConnectionRefusedException
 * @throws JargonException
 * @throws DuplicateDataException
 * @throws JargonQueryException
 */
private int getTotalCollectionsUnderPathThatMatchSearchText(String parentPath, String searchText) throws DataGridConnectionRefusedException {
    logger.info("getTotalCollectionsUnderPathThatMatchSearchText()");
    SpecificQueryAO specificQueryAO = adminServices.getSpecificQueryAO();
    int totalNumberOfItems = 0;
    SpecificQueryDefinition queryDef = null;
    String sqlQueryAlias = "totalNumberOfCollectionsThatMatchSearchText";
    try {
        sqlQueryAlias = SQL_TOTAL_NUMBER_OF_COLLS_MATCHING_SEARCH_TEXT_ALIAS;
        ClientHints clientHints = this.irodsServices.getEnvironmentalInfoAO().retrieveClientHints(false);
        SpecificQueryProvider provider = specificQueryProviderFactory.instance(clientHints.whatTypeOfIcatIsIt());
        String query = provider.buildSelectTotalCollectionsUnderPathThatMatchSearchText(parentPath, searchText);
        // Creating Specific Query instance
        queryDef = new SpecificQueryDefinition();
        queryDef.setAlias(sqlQueryAlias);
        queryDef.setSql(query);
        // Creating spec query on iRODS
        specificQueryAO.addSpecificQuery(queryDef);
        // Executing specific query
        String zone = irodsServices.getCurrentUserZone();
        List<String> args = new ArrayList<String>();
        String collNameParam = null;
        if (IRODS_PATH_SEPARATOR.equals(parentPath)) {
            collNameParam = String.format("%%%s%%%%%s%%", IRODS_PATH_SEPARATOR, searchText);
        } else {
            collNameParam = String.format("%s%s%%%s%%", parentPath, IRODS_PATH_SEPARATOR, searchText);
        }
        args.add(collNameParam);
        args.add(parentPath);
        SpecificQuery specQuery = SpecificQuery.instanceArguments(sqlQueryAlias, args, 0, zone);
        SpecificQueryResultSet queryResultSet = specificQueryAO.executeSpecificQueryUsingAlias(specQuery, MAX_RESULTS_PER_PAGE, 0);
        totalNumberOfItems = DataGridUtils.mapCountQueryResultSetToInteger(queryResultSet);
    } catch (JargonException | JargonQueryException | UnsupportedDataGridFeatureException e) {
        logger.error("Could not execute specific query to find collections matching a search text. ", e);
    } finally {
        try {
            // after running the user specific query, we need to remove from the database
            specificQueryAO.removeSpecificQueryByAlias(sqlQueryAlias);
        } catch (JargonException e) {
            logger.error("Could not remove specific query {}: ", sqlQueryAlias, e.getMessage());
        }
    }
    return totalNumberOfItems;
}
Also used : UnsupportedDataGridFeatureException(com.emc.metalnx.core.domain.exceptions.UnsupportedDataGridFeatureException) SpecificQueryProvider(com.emc.metalnx.services.irods.utils.SpecificQueryProvider) JargonException(org.irods.jargon.core.exception.JargonException) ClientHints(org.irods.jargon.core.pub.domain.ClientHints) ArrayList(java.util.ArrayList) SpecificQueryResultSet(org.irods.jargon.core.query.SpecificQueryResultSet) SpecificQueryAO(org.irods.jargon.core.pub.SpecificQueryAO) SpecificQueryDefinition(org.irods.jargon.core.pub.domain.SpecificQueryDefinition) JargonQueryException(org.irods.jargon.core.query.JargonQueryException) SpecificQuery(org.irods.jargon.core.query.SpecificQuery)

Aggregations

SpecificQueryAO (org.irods.jargon.core.pub.SpecificQueryAO)21 ArrayList (java.util.ArrayList)12 JargonException (org.irods.jargon.core.exception.JargonException)12 SpecificQueryResultSet (org.irods.jargon.core.query.SpecificQueryResultSet)12 SpecificQueryDefinition (org.irods.jargon.core.pub.domain.SpecificQueryDefinition)10 AdminServices (com.emc.metalnx.services.interfaces.AdminServices)9 IRODSServices (com.emc.metalnx.services.interfaces.IRODSServices)9 IRODSAccount (org.irods.jargon.core.connection.IRODSAccount)9 EnvironmentalInfoAO (org.irods.jargon.core.pub.EnvironmentalInfoAO)9 Test (org.junit.Test)9 SpecificQueryProvider (com.emc.metalnx.services.irods.utils.SpecificQueryProvider)8 ClientHints (org.irods.jargon.core.pub.domain.ClientHints)8 SpecificQuery (org.irods.jargon.core.query.SpecificQuery)8 UnsupportedDataGridFeatureException (com.emc.metalnx.core.domain.exceptions.UnsupportedDataGridFeatureException)7 JargonQueryException (org.irods.jargon.core.query.JargonQueryException)6 DataGridFilePropertySearch (com.emc.metalnx.core.domain.entity.DataGridFilePropertySearch)4 DataGridMetadataSearch (com.emc.metalnx.core.domain.entity.DataGridMetadataSearch)4 DataGridCollectionAndDataObject (com.emc.metalnx.core.domain.entity.DataGridCollectionAndDataObject)3 CollectionAndDataObjectListingEntry (org.irods.jargon.core.query.CollectionAndDataObjectListingEntry)2 CollectionAndDataObjectListAndSearchAO (org.irods.jargon.core.pub.CollectionAndDataObjectListAndSearchAO)1