Search in sources :

Example 76 with Query

use of org.b3log.latke.repository.Query in project solo by b3log.

the class ArticleRepositoryImpl method getPreviousArticle.

@Override
public JSONObject getPreviousArticle(final String articleId) throws RepositoryException {
    final JSONObject currentArticle = get(articleId);
    final Date currentArticleCreateDate = (Date) currentArticle.opt(Article.ARTICLE_CREATE_DATE);
    final Query query = new Query().setFilter(CompositeFilterOperator.and(new PropertyFilter(Article.ARTICLE_CREATE_DATE, FilterOperator.LESS_THAN, currentArticleCreateDate), new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true))).addSort(Article.ARTICLE_CREATE_DATE, SortDirection.DESCENDING).setCurrentPageNum(1).setPageSize(1).setPageCount(1).addProjection(Article.ARTICLE_TITLE, String.class).addProjection(Article.ARTICLE_PERMALINK, String.class).addProjection(Article.ARTICLE_ABSTRACT, String.class);
    final JSONObject result = get(query);
    final JSONArray array = result.optJSONArray(Keys.RESULTS);
    if (1 != array.length()) {
        return null;
    }
    final JSONObject ret = new JSONObject();
    final JSONObject article = array.optJSONObject(0);
    try {
        ret.put(Article.ARTICLE_TITLE, article.getString(Article.ARTICLE_TITLE));
        ret.put(Article.ARTICLE_PERMALINK, article.getString(Article.ARTICLE_PERMALINK));
        ret.put(Article.ARTICLE_ABSTRACT, article.getString((Article.ARTICLE_ABSTRACT)));
    } catch (final JSONException e) {
        throw new RepositoryException(e);
    }
    return ret;
}
Also used : JSONObject(org.json.JSONObject) Query(org.b3log.latke.repository.Query) JSONArray(org.json.JSONArray) JSONException(org.json.JSONException) PropertyFilter(org.b3log.latke.repository.PropertyFilter) RepositoryException(org.b3log.latke.repository.RepositoryException) Date(java.util.Date)

Example 77 with Query

use of org.b3log.latke.repository.Query in project solo by b3log.

the class ArticleRepositoryImpl method getMostViewCountArticles.

@Override
public List<JSONObject> getMostViewCountArticles(final int num) throws RepositoryException {
    final Query query = new Query();
    query.addSort(Article.ARTICLE_VIEW_COUNT, SortDirection.DESCENDING).addSort(Article.ARTICLE_UPDATE_DATE, SortDirection.DESCENDING);
    query.setFilter(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true));
    query.setCurrentPageNum(1);
    query.setPageSize(num);
    query.setPageCount(1);
    final JSONObject result = get(query);
    final JSONArray array = result.optJSONArray(Keys.RESULTS);
    return CollectionUtils.jsonArrayToList(array);
}
Also used : Query(org.b3log.latke.repository.Query) JSONObject(org.json.JSONObject) JSONArray(org.json.JSONArray) PropertyFilter(org.b3log.latke.repository.PropertyFilter)

Example 78 with Query

use of org.b3log.latke.repository.Query in project solo by b3log.

the class ArticleRepositoryImpl method getRandomly.

@Override
public List<JSONObject> getRandomly(final int fetchSize) throws RepositoryException {
    final List<JSONObject> ret = new ArrayList<JSONObject>();
    if (0 == count()) {
        return ret;
    }
    final double mid = Math.random() + RANDOM_RANGE;
    LOGGER.log(Level.TRACE, "Random mid[{0}]", mid);
    Query query = new Query();
    query.setFilter(CompositeFilterOperator.and(new PropertyFilter(Article.ARTICLE_RANDOM_DOUBLE, FilterOperator.GREATER_THAN_OR_EQUAL, mid), new PropertyFilter(Article.ARTICLE_RANDOM_DOUBLE, FilterOperator.LESS_THAN_OR_EQUAL, mid), new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true)));
    query.setCurrentPageNum(1);
    query.setPageSize(fetchSize);
    query.setPageCount(1);
    final JSONObject result1 = get(query);
    final JSONArray array1 = result1.optJSONArray(Keys.RESULTS);
    final List<JSONObject> list1 = CollectionUtils.<JSONObject>jsonArrayToList(array1);
    ret.addAll(list1);
    final int reminingSize = fetchSize - array1.length();
    if (0 != reminingSize) {
        // Query for remains
        query = new Query();
        query.setFilter(CompositeFilterOperator.and(new PropertyFilter(Article.ARTICLE_RANDOM_DOUBLE, FilterOperator.GREATER_THAN_OR_EQUAL, 0D), new PropertyFilter(Article.ARTICLE_RANDOM_DOUBLE, FilterOperator.LESS_THAN_OR_EQUAL, mid), new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true)));
        query.setCurrentPageNum(1);
        query.setPageSize(reminingSize);
        query.setPageCount(1);
        final JSONObject result2 = get(query);
        final JSONArray array2 = result2.optJSONArray(Keys.RESULTS);
        final List<JSONObject> list2 = CollectionUtils.<JSONObject>jsonArrayToList(array2);
        ret.addAll(list2);
    }
    return ret;
}
Also used : JSONObject(org.json.JSONObject) Query(org.b3log.latke.repository.Query) ArrayList(java.util.ArrayList) JSONArray(org.json.JSONArray) PropertyFilter(org.b3log.latke.repository.PropertyFilter)

Example 79 with Query

use of org.b3log.latke.repository.Query in project solo by b3log.

the class CommentRepositoryImpl method getComments.

@Override
public List<JSONObject> getComments(final String onId, final int currentPageNum, final int pageSize) throws RepositoryException {
    final Query query = new Query().addSort(Keys.OBJECT_ID, SortDirection.DESCENDING).setFilter(new PropertyFilter(Comment.COMMENT_ON_ID, FilterOperator.EQUAL, onId)).setCurrentPageNum(currentPageNum).setPageSize(pageSize).setPageCount(1);
    final JSONObject result = get(query);
    final JSONArray array = result.optJSONArray(Keys.RESULTS);
    return CollectionUtils.jsonArrayToList(array);
}
Also used : Query(org.b3log.latke.repository.Query) JSONObject(org.json.JSONObject) JSONArray(org.json.JSONArray) PropertyFilter(org.b3log.latke.repository.PropertyFilter)

Example 80 with Query

use of org.b3log.latke.repository.Query in project solo by b3log.

the class LinkRepositoryImpl method getUnder.

@Override
public JSONObject getUnder(final String id) throws RepositoryException {
    final JSONObject link = get(id);
    if (null == link) {
        return null;
    }
    final Query query = new Query();
    query.setFilter(new PropertyFilter(Link.LINK_ORDER, FilterOperator.GREATER_THAN, link.optInt(Link.LINK_ORDER))).addSort(Link.LINK_ORDER, SortDirection.ASCENDING);
    query.setCurrentPageNum(1);
    query.setPageSize(1);
    final JSONObject result = get(query);
    final JSONArray array = result.optJSONArray(Keys.RESULTS);
    if (1 != array.length()) {
        return null;
    }
    return array.optJSONObject(0);
}
Also used : JSONObject(org.json.JSONObject) Query(org.b3log.latke.repository.Query) JSONArray(org.json.JSONArray) PropertyFilter(org.b3log.latke.repository.PropertyFilter)

Aggregations

Query (org.b3log.latke.repository.Query)112 JSONObject (org.json.JSONObject)105 JSONArray (org.json.JSONArray)56 PropertyFilter (org.b3log.latke.repository.PropertyFilter)47 Test (org.testng.annotations.Test)26 RepositoryException (org.b3log.latke.repository.RepositoryException)23 MockRequest (org.b3log.solo.MockRequest)23 MockResponse (org.b3log.solo.MockResponse)23 ServiceException (org.b3log.latke.service.ServiceException)14 List (java.util.List)10 Date (java.util.Date)8 URL (org.b3log.solo.model.sitemap.URL)8 HttpServletResponse (javax.servlet.http.HttpServletResponse)7 PrintWriter (java.io.PrintWriter)6 StringWriter (java.io.StringWriter)6 ArrayList (java.util.ArrayList)6 ServletContext (javax.servlet.ServletContext)6 HttpServletRequest (javax.servlet.http.HttpServletRequest)6 Transactional (org.b3log.latke.repository.annotation.Transactional)6 JSONException (org.json.JSONException)6