Commit 281f76af authored by Liang Ding's avatar Liang Ding

#12669

parent f10de201
......@@ -77,8 +77,8 @@ public class B3ArticleSender extends AbstractEventListener<JSONObject> {
try {
final JSONObject originalArticle = data.getJSONObject(Article.ARTICLE);
final String title = originalArticle.getString(Article.ARTICLE_TITLE);
if (!originalArticle.getBoolean(Article.ARTICLE_IS_PUBLISHED)) {
LOGGER.log(Level.INFO, "Ignored push an article [title={0}] to Rhy", title);
if (Article.ARTICLE_STATUS_C_PUBLISHED != originalArticle.optInt(Article.ARTICLE_STATUS)) {
LOGGER.log(Level.INFO, "Ignored push a draft [title={0}] to Rhy", title);
return;
}
......
......@@ -28,7 +28,7 @@ import org.jsoup.safety.Whitelist;
* This class defines all article model relevant keys.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.4.0.0, Feb 28, 2019
* @version 1.5.0.0, Mar 4, 2019
* @since 0.3.1
*/
public final class Article {
......@@ -128,21 +128,11 @@ public final class Article {
*/
public static final String ARTICLE_PUT_TOP = "articlePutTop";
/**
* Key of is published.
*/
public static final String ARTICLE_IS_PUBLISHED = "articleIsPublished";
/**
* Key of author id.
*/
public static final String ARTICLE_AUTHOR_ID = "articleAuthorId";
/**
* Key of had been published.
*/
public static final String ARTICLE_HAD_BEEN_PUBLISHED = "articleHadBeenPublished";
/**
* Key of random double.
*/
......@@ -163,7 +153,24 @@ public final class Article {
*/
public static final String ARTICLE_IMG1_URL = "articleImg1URL";
//// constants
/**
* Key of article status.
*/
public static final String ARTICLE_STATUS = "articleStatus";
//// Status constants
/**
* Article status - published.
*/
public static final int ARTICLE_STATUS_C_PUBLISHED = 0;
/**
* Article status - draft.
*/
public static final int ARTICLE_STATUS_C_DRAFT = 1;
//// Other constants
/**
* Article abstract length.
......
......@@ -400,7 +400,7 @@ public class ArticleProcessor {
pathBuilder.append(currentPageNum).append('/').append(pageSize).append('/').append(windowSize);
final JSONObject requestJSONObject = Solos.buildPaginationRequest(pathBuilder.toString());
requestJSONObject.put(Article.ARTICLE_IS_PUBLISHED, true);
requestJSONObject.put(Article.ARTICLE_STATUS, Article.ARTICLE_STATUS_C_PUBLISHED);
requestJSONObject.put(Option.ID_C_ENABLE_ARTICLE_UPDATE_HINT, preference.optBoolean(Option.ID_C_ENABLE_ARTICLE_UPDATE_HINT));
final JSONObject result = articleQueryService.getArticles(requestJSONObject);
final List<JSONObject> articles = org.b3log.latke.util.CollectionUtils.jsonArrayToList(result.getJSONArray(Article.ARTICLES));
......@@ -709,7 +709,7 @@ public class ArticleProcessor {
try {
final JSONObject preference = optionQueryService.getPreference();
final boolean allowVisitDraftViaPermalink = preference.getBoolean(Option.ID_C_ALLOW_VISIT_DRAFT_VIA_PERMALINK);
if (!article.optBoolean(Article.ARTICLE_IS_PUBLISHED) && !allowVisitDraftViaPermalink) {
if (Article.ARTICLE_STATUS_C_PUBLISHED != article.optInt(Article.ARTICLE_STATUS) && !allowVisitDraftViaPermalink) {
context.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
......
......@@ -179,7 +179,7 @@ public class B3Receiver {
article.put(Article.ARTICLE_AUTHOR_ID, articleAuthor.getString(Keys.OBJECT_ID));
final String articleContent = article.optString(Article.ARTICLE_CONTENT);
article.put(Article.ARTICLE_ABSTRACT, Article.getAbstractText(articleContent));
article.put(Article.ARTICLE_IS_PUBLISHED, true);
article.put(Article.ARTICLE_STATUS, Article.ARTICLE_STATUS_C_PUBLISHED);
article.put(Common.POST_TO_COMMUNITY, false); // Do not send to rhythm
article.put(Article.ARTICLE_COMMENTABLE, true);
article.put(Article.ARTICLE_VIEW_PWD, "");
......
......@@ -142,7 +142,7 @@ public class BlogProcessor {
requestJSONObject.put(Pagination.PAGINATION_CURRENT_PAGE_NUM, 1);
requestJSONObject.put(Pagination.PAGINATION_PAGE_SIZE, Integer.MAX_VALUE);
requestJSONObject.put(Pagination.PAGINATION_WINDOW_SIZE, Integer.MAX_VALUE);
requestJSONObject.put(Article.ARTICLE_IS_PUBLISHED, true);
requestJSONObject.put(Article.ARTICLE_STATUS, Article.ARTICLE_STATUS_C_PUBLISHED);
final JSONArray excludes = new JSONArray();
......@@ -150,8 +150,6 @@ public class BlogProcessor {
excludes.put(Article.ARTICLE_UPDATED);
excludes.put(Article.ARTICLE_CREATED);
excludes.put(Article.ARTICLE_AUTHOR_ID);
excludes.put(Article.ARTICLE_HAD_BEEN_PUBLISHED);
excludes.put(Article.ARTICLE_IS_PUBLISHED);
excludes.put(Article.ARTICLE_RANDOM_DOUBLE);
requestJSONObject.put(Keys.EXCLUDES, excludes);
......
......@@ -112,7 +112,7 @@ public class FeedProcessor {
feed.setId(Latkes.getServePath() + "/");
final List<Filter> filters = new ArrayList<>();
filters.add(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true));
filters.add(new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED));
filters.add(new PropertyFilter(Article.ARTICLE_VIEW_PWD, FilterOperator.EQUAL, ""));
final Query query = new Query().setPage(1, outputCnt).
setFilter(new CompositeFilter(CompositeFilterOperator.AND, filters)).
......@@ -199,7 +199,7 @@ public class FeedProcessor {
final List<Filter> filters = new ArrayList<>();
filters.add(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true));
filters.add(new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED));
filters.add(new PropertyFilter(Article.ARTICLE_VIEW_PWD, FilterOperator.EQUAL, ""));
final Query query = new Query().setPageCount(1).setPage(1, outputCnt).
setFilter(new CompositeFilter(CompositeFilterOperator.AND, filters)).
......
......@@ -125,7 +125,7 @@ public class SitemapProcessor {
*/
private void addArticles(final Sitemap sitemap) throws Exception {
final Query query = new Query().setPage(1, Integer.MAX_VALUE).
setFilter(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true)).
setFilter(new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED)).
addSort(Article.ARTICLE_CREATED, SortDirection.DESCENDING).
select(Article.ARTICLE_PERMALINK, Article.ARTICLE_UPDATED);
final JSONObject articleResult = articleRepository.get(query);
......
......@@ -160,7 +160,6 @@ public class ArticleConsole {
* "articleAbstract": "",
* "articleContent": "",
* "articlePermalink": "",
* "articleHadBeenPublished": boolean,
* "articleTags": [{
* "oId": "",
* "tagTitle": ""
......@@ -235,16 +234,13 @@ public class ArticleConsole {
path = path.substring((status + "/").length());
final JSONObject requestJSONObject = Solos.buildPaginationRequest(path);
final boolean published = "published".equals(status);
requestJSONObject.put(Article.ARTICLE_IS_PUBLISHED, published);
requestJSONObject.put(Article.ARTICLE_STATUS, "published".equals(status) ? Article.ARTICLE_STATUS_C_PUBLISHED : Article.ARTICLE_STATUS_C_DRAFT);
final JSONArray excludes = new JSONArray();
excludes.put(Article.ARTICLE_CONTENT);
excludes.put(Article.ARTICLE_UPDATED);
excludes.put(Article.ARTICLE_CREATED);
excludes.put(Article.ARTICLE_AUTHOR_ID);
excludes.put(Article.ARTICLE_HAD_BEEN_PUBLISHED);
excludes.put(Article.ARTICLE_IS_PUBLISHED);
excludes.put(Article.ARTICLE_RANDOM_DOUBLE);
requestJSONObject.put(Keys.EXCLUDES, excludes);
......@@ -456,7 +452,7 @@ public class ArticleConsole {
* "articleContent": "",
* "articleTags": "tag1,tag2,tag3", // optional, default set "待分类"
* "articlePermalink": "", // optional
* "articleIsPublished": boolean,
* "articleStatus": int, // 0: published, 1: draft
* "articleSignId": "" // optional
* "articleCommentable": boolean,
* "articleViewPwd": "",
......@@ -520,7 +516,7 @@ public class ArticleConsole {
* "articleContent": "",
* "articleTags": "tag1,tag2,tag3", // optional, default set "待分类"
* "articlePermalink": "", // optional
* "articleIsPublished": boolean,
* "articleStatus": int, // 0: published, 1: draft
* "postToCommunity": boolean,
* "articleSignId": "" // optional
* "articleCommentable": boolean,
......
......@@ -112,7 +112,7 @@ public class ArticleRepository extends AbstractRepository {
Query query = new 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))).
new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED))).
setPage(1, fetchSize).setPageCount(1);
final List<JSONObject> list1 = getList(query);
......@@ -125,7 +125,7 @@ public class ArticleRepository extends AbstractRepository {
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))).
new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED))).
setPage(1, reminingSize).setPageCount(1);
final List<JSONObject> list2 = getList(query);
......@@ -159,7 +159,7 @@ public class ArticleRepository extends AbstractRepository {
final Query query = new Query().
setFilter(CompositeFilterOperator.and(
new PropertyFilter(Article.ARTICLE_AUTHOR_ID, FilterOperator.EQUAL, authorId),
new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true))).
new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED))).
addSort(Article.ARTICLE_UPDATED, SortDirection.DESCENDING).addSort(Article.ARTICLE_PUT_TOP, SortDirection.DESCENDING).
setPage(currentPageNum, pageSize);
......@@ -204,7 +204,7 @@ public class ArticleRepository extends AbstractRepository {
*/
public List<JSONObject> getRecentArticles(final int fetchSize) throws RepositoryException {
final Query query = new Query().
setFilter(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true)).
setFilter(new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED)).
addSort(Article.ARTICLE_UPDATED, SortDirection.DESCENDING).
setPage(1, fetchSize).setPageCount(1);
......@@ -222,7 +222,7 @@ public class ArticleRepository extends AbstractRepository {
final Query query = new Query().
addSort(Article.ARTICLE_COMMENT_COUNT, SortDirection.DESCENDING).
addSort(Article.ARTICLE_UPDATED, SortDirection.DESCENDING).
setFilter(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true)).
setFilter(new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED)).
setPage(1, num).setPageCount(1);
return getList(query);
......@@ -239,7 +239,7 @@ public class ArticleRepository extends AbstractRepository {
final Query query = new Query().
addSort(Article.ARTICLE_VIEW_COUNT, SortDirection.DESCENDING).
addSort(Article.ARTICLE_UPDATED, SortDirection.DESCENDING).
setFilter(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true)).
setFilter(new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED)).
setPage(1, num).setPageCount(1);
return getList(query);
......@@ -271,7 +271,7 @@ public class ArticleRepository extends AbstractRepository {
final Query query = new Query().
setFilter(CompositeFilterOperator.and(
new PropertyFilter(Article.ARTICLE_CREATED, FilterOperator.LESS_THAN, currentArticleCreated),
new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true))).
new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED))).
addSort(Article.ARTICLE_CREATED, SortDirection.DESCENDING).
setPage(1, 1).setPageCount(1).
select(Article.ARTICLE_TITLE, Article.ARTICLE_PERMALINK, Article.ARTICLE_ABSTRACT);
......@@ -322,7 +322,7 @@ public class ArticleRepository extends AbstractRepository {
final Query query = new Query().
setFilter(CompositeFilterOperator.and(
new PropertyFilter(Article.ARTICLE_CREATED, FilterOperator.GREATER_THAN, currentArticleCreated),
new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true))).
new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED))).
addSort(Article.ARTICLE_CREATED, SortDirection.ASCENDING).
setPage(1, 1).setPageCount(1).
select(Article.ARTICLE_TITLE, Article.ARTICLE_PERMALINK, Article.ARTICLE_ABSTRACT);
......@@ -360,6 +360,6 @@ public class ArticleRepository extends AbstractRepository {
return false;
}
return article.optBoolean(Article.ARTICLE_IS_PUBLISHED);
return Article.ARTICLE_STATUS_C_PUBLISHED == article.optInt(Article.ARTICLE_STATUS);
}
}
......@@ -193,7 +193,7 @@ public class ArticleMgmtService {
try {
final JSONObject article = articleRepository.get(articleId);
article.put(ARTICLE_IS_PUBLISHED, false);
article.put(ARTICLE_STATUS, ARTICLE_STATUS_C_DRAFT);
articleRepository.update(articleId, article);
transaction.commit();
......@@ -247,7 +247,7 @@ public class ArticleMgmtService {
* "articleContent": "",
* "articleTags": "tag1,tag2,tag3", // optional, default set "待分类"
* "articlePermalink": "", // optional
* "articleIsPublished": boolean,
* "articleStatus": int, // 0: published, 1: draft
* "articleSignId": "", // optional
* "articleCommentable": boolean,
* "articleViewPwd": ""
......@@ -291,25 +291,7 @@ public class ArticleMgmtService {
article.put(Article.ARTICLE_SIGN_ID, "0");
}
if (article.getBoolean(ARTICLE_IS_PUBLISHED)) { // Publish it
if (articleQueryService.hadBeenPublished(oldArticle)) {
// Edit update date only for published article
article.put(ARTICLE_UPDATED, now);
} else { // This article is a draft and this is the first time to publish it
article.put(ARTICLE_CREATED, now);
article.put(ARTICLE_UPDATED, now);
article.put(ARTICLE_HAD_BEEN_PUBLISHED, true);
}
} else { // Save as draft
if (articleQueryService.hadBeenPublished(oldArticle)) {
// Save update date only for published article
article.put(ARTICLE_UPDATED, now);
} else {
// Reset create/update date to indicate this is an new draft
article.put(ARTICLE_CREATED, now);
article.put(ARTICLE_UPDATED, now);
}
}
final String articleImg1URL = getArticleImg1URL(article);
article.put(ARTICLE_IMG1_URL, articleImg1URL);
......@@ -317,23 +299,18 @@ public class ArticleMgmtService {
final String articleAbstractText = Article.getAbstractText(article);
article.put(ARTICLE_ABSTRACT_TEXT, articleAbstractText);
final boolean publishNewArticle = !oldArticle.getBoolean(ARTICLE_IS_PUBLISHED) && article.getBoolean(ARTICLE_IS_PUBLISHED);
// Update
final boolean postToCommunity = article.optBoolean(Common.POST_TO_COMMUNITY, true);
article.remove(Common.POST_TO_COMMUNITY); // Do not persist this property
articleRepository.update(articleId, article);
article.put(Common.POST_TO_COMMUNITY, postToCommunity); // Restores the property
if (publishNewArticle) {
// Fire add article event
final boolean publishNewArticle = Article.ARTICLE_STATUS_C_DRAFT == oldArticle.optInt(ARTICLE_STATUS) && Article.ARTICLE_STATUS_C_PUBLISHED == article.optInt(ARTICLE_STATUS);
final JSONObject eventData = new JSONObject();
eventData.put(ARTICLE, article);
if (publishNewArticle) {
eventManager.fireEventAsynchronously(new Event<>(EventTypes.ADD_ARTICLE, eventData));
} else {
// Fire update article event
final JSONObject eventData = new JSONObject();
eventData.put(ARTICLE, article);
eventManager.fireEventAsynchronously(new Event<>(EventTypes.UPDATE_ARTICLE, eventData));
}
......@@ -368,7 +345,7 @@ public class ArticleMgmtService {
* "articleAbstract": "",
* "articleContent": "",
* "articleTags": "tag1,tag2,tag3",
* "articleIsPublished": boolean,
* "articleStatus": int, // 0: published, 1: draft
* "articlePermalink": "", // optional
* "postToCommunity": boolean, // optional, default is true
* "articleSignId": "" // optional, default is "0",
......@@ -440,12 +417,6 @@ public class ArticleMgmtService {
final String signId = article.optString(Article.ARTICLE_SIGN_ID, "1");
article.put(Article.ARTICLE_SIGN_ID, signId);
article.put(Article.ARTICLE_HAD_BEEN_PUBLISHED, false);
if (article.optBoolean(Article.ARTICLE_IS_PUBLISHED)) {
// Publish it directly
article.put(Article.ARTICLE_HAD_BEEN_PUBLISHED, true);
}
article.put(Article.ARTICLE_RANDOM_DOUBLE, Math.random());
final String articleImg1URL = getArticleImg1URL(article);
......@@ -461,7 +432,7 @@ public class ArticleMgmtService {
article.put(Common.POST_TO_COMMUNITY, postToCommunity); // Restores the property
if (article.optBoolean(Article.ARTICLE_IS_PUBLISHED)) {
if (Article.ARTICLE_STATUS_C_PUBLISHED == article.optInt(ARTICLE_STATUS)) {
final JSONObject eventData = new JSONObject();
eventData.put(Article.ARTICLE, article);
eventManager.fireEventAsynchronously(new Event<>(EventTypes.ADD_ARTICLE, eventData));
......@@ -848,7 +819,6 @@ public class ArticleMgmtService {
article.put(ARTICLE_COMMENT_COUNT, oldArticle.getInt(ARTICLE_COMMENT_COUNT));
article.put(ARTICLE_VIEW_COUNT, oldArticle.getInt(ARTICLE_VIEW_COUNT));
article.put(ARTICLE_PUT_TOP, oldArticle.getBoolean(ARTICLE_PUT_TOP));
article.put(ARTICLE_HAD_BEEN_PUBLISHED, oldArticle.getBoolean(ARTICLE_HAD_BEEN_PUBLISHED));
article.put(ARTICLE_AUTHOR_ID, oldArticle.getString(ARTICLE_AUTHOR_ID));
article.put(ARTICLE_RANDOM_DOUBLE, Math.random());
}
......
......@@ -53,7 +53,7 @@ import static org.b3log.solo.model.Article.*;
* @author <a href="https://hacpai.com/member/armstrong">ArmstrongCN</a>
* @author <a href="http://zephyr.b3log.org">Zephyr</a>
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @version 1.3.2.10, Feb 23, 2019
* @version 1.3.2.11, Mar 4, 2019
* @since 0.3.5
*/
@Service
......@@ -143,7 +143,7 @@ public class ArticleQueryService {
try {
final Query query = new Query().setFilter(
CompositeFilterOperator.and(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true),
CompositeFilterOperator.and(new PropertyFilter(ARTICLE_STATUS, FilterOperator.EQUAL, ARTICLE_STATUS_C_PUBLISHED),
CompositeFilterOperator.or(
new PropertyFilter(Article.ARTICLE_TITLE, FilterOperator.LIKE, "%" + keyword + "%"),
new PropertyFilter(Article.ARTICLE_CONTENT, FilterOperator.LIKE, "%" + keyword + "%")))).
......@@ -230,7 +230,7 @@ public class ArticleQueryService {
final JSONArray articleArray = articleRepository.get(query).optJSONArray(Keys.RESULTS);
for (int i = 0; i < articleArray.length(); i++) {
final JSONObject article = articleArray.optJSONObject(i);
if (!article.optBoolean(Article.ARTICLE_IS_PUBLISHED)) {
if (ARTICLE_STATUS_C_PUBLISHED != article.optInt(ARTICLE_STATUS)) {
// Skips the unpublished article
continue;
}
......@@ -378,17 +378,6 @@ public class ArticleQueryService {
return createDate != updateDate;
}
/**
* Determines the specified article had been published.
*
* @param article the specified article
* @return {@code true} if it had been published, {@code false} otherwise
* @throws JSONException json exception
*/
public boolean hadBeenPublished(final JSONObject article) throws JSONException {
return article.getBoolean(Article.ARTICLE_HAD_BEEN_PUBLISHED);
}
/**
* Gets the recent articles with the specified fetch size.
*
......@@ -420,7 +409,6 @@ public class ArticleQueryService {
* "articleAbstract": "",
* "articleContent": "",
* "articlePermalink": "",
* "articleHadBeenPublished": boolean,
* "articleCreateDate": java.util.Date,
* "articleTags": [{
* "oId": "",
......@@ -469,13 +457,12 @@ public class ArticleQueryService {
// Remove unused properties
article.remove(ARTICLE_AUTHOR_ID);
article.remove(ARTICLE_COMMENT_COUNT);
article.remove(ARTICLE_IS_PUBLISHED);
article.remove(ARTICLE_PUT_TOP);
article.remove(ARTICLE_UPDATED);
article.remove(ARTICLE_VIEW_COUNT);
article.remove(ARTICLE_RANDOM_DOUBLE);
LOGGER.log(Level.DEBUG, "Got an article[id={0}]", articleId);
LOGGER.log(Level.DEBUG, "Got an article [id={0}]", articleId);
return ret;
} catch (final Exception e) {
......@@ -498,7 +485,7 @@ public class ArticleQueryService {
* "paginationCurrentPageNum": 1,
* "paginationPageSize": 20,
* "paginationWindowSize": 10,
* "articleIsPublished": boolean,
* "articleStatus": int,
* "keyword": "", // Optional search keyword
* "excludes": ["", ....], // Optional
* "enableArticleUpdateHint": bool // Optional
......@@ -532,7 +519,7 @@ public class ArticleQueryService {
final int currentPageNum = requestJSONObject.getInt(Pagination.PAGINATION_CURRENT_PAGE_NUM);
final int pageSize = requestJSONObject.getInt(Pagination.PAGINATION_PAGE_SIZE);
final int windowSize = requestJSONObject.getInt(Pagination.PAGINATION_WINDOW_SIZE);
final boolean articleIsPublished = requestJSONObject.optBoolean(ARTICLE_IS_PUBLISHED, true);
final int articleStatus = requestJSONObject.optInt(ARTICLE_STATUS, ARTICLE_STATUS_C_PUBLISHED);
final Query query = new Query().setPage(currentPageNum, pageSize).
addSort(ARTICLE_PUT_TOP, SortDirection.DESCENDING);
......@@ -544,10 +531,10 @@ public class ArticleQueryService {
final String keyword = requestJSONObject.optString(Common.KEYWORD);
if (StringUtils.isBlank(keyword)) {
query.setFilter(new PropertyFilter(ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, articleIsPublished));
query.setFilter(new PropertyFilter(ARTICLE_STATUS, FilterOperator.EQUAL, articleStatus));
} else {
query.setFilter(CompositeFilterOperator.and(
new PropertyFilter(ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, articleIsPublished),
new PropertyFilter(ARTICLE_STATUS, FilterOperator.EQUAL, articleStatus),
CompositeFilterOperator.or(
new PropertyFilter(ARTICLE_TITLE, FilterOperator.LIKE, "%" + keyword + "%"),
new PropertyFilter(ARTICLE_TAGS_REF, FilterOperator.LIKE, "%" + keyword + "%")
......@@ -628,7 +615,7 @@ public class ArticleQueryService {
final JSONArray articles = result.getJSONArray(Keys.RESULTS);
for (int i = 0; i < articles.length(); i++) {
final JSONObject article = articles.getJSONObject(i);
if (!article.getBoolean(Article.ARTICLE_IS_PUBLISHED)) {
if (ARTICLE_STATUS_C_PUBLISHED != article.optInt(ARTICLE_STATUS)) {
// Skips the unpublished article
continue;
}
......@@ -682,7 +669,7 @@ public class ArticleQueryService {
final JSONArray articles = result.getJSONArray(Keys.RESULTS);
for (int i = 0; i < articles.length(); i++) {
final JSONObject article = articles.getJSONObject(i);
if (!article.getBoolean(Article.ARTICLE_IS_PUBLISHED)) {
if (ARTICLE_STATUS_C_PUBLISHED != article.optInt(ARTICLE_STATUS)) {
// Skips the unpublished article
continue;
}
......@@ -762,7 +749,7 @@ public class ArticleQueryService {
final JSONObject relevant = articleRepository.get(relatedArticleId);
if (!relevant.getBoolean(Article.ARTICLE_IS_PUBLISHED)) {
if (ARTICLE_STATUS_C_PUBLISHED != relevant.optInt(ARTICLE_STATUS)) {
continue;
}
......@@ -1024,9 +1011,7 @@ public class ArticleQueryService {
article.remove(Article.ARTICLE_UPDATED);
article.remove(Article.ARTICLE_VIEW_COUNT);
article.remove(Article.ARTICLE_RANDOM_DOUBLE);
article.remove(Article.ARTICLE_IS_PUBLISHED);
article.remove(Article.ARTICLE_PUT_TOP);
article.remove(Article.ARTICLE_HAD_BEEN_PUBLISHED);
article.remove(Article.ARTICLE_VIEW_PWD);
article.remove(Article.ARTICLE_SIGN_ID);
article.remove(ARTICLE_COMMENTABLE);
......
......@@ -70,11 +70,6 @@ public class DataModelService {
*/
private static final Logger LOGGER = Logger.getLogger(DataModelService.class);
/**
* {@code true} for published.
*/
private static final boolean PUBLISHED = true;
/**
* Article repository.
*/
......@@ -201,7 +196,7 @@ public class DataModelService {
final int windowSize = preference.getInt(Option.ID_C_ARTICLE_LIST_PAGINATION_WINDOW_SIZE);
final Query query = new Query().setPage(currentPageNum, pageSize).
setFilter(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, PUBLISHED));
setFilter(new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED));
final Template template = Skins.getSkinTemplate(context, "index.ftl");
boolean isArticles1 = false;
......
......@@ -180,7 +180,7 @@ public class ExportService {
passwords.add(one);
continue;
} else if (article.optBoolean(Article.ARTICLE_IS_PUBLISHED)) {
} else if (Article.ARTICLE_STATUS_C_PUBLISHED == article.optInt(Article.ARTICLE_STATUS)) {
posts.add(one);
continue;
......
......@@ -162,7 +162,7 @@ public class ImportService {
ret.put(Article.ARTICLE_CONTENT, fileContent);
ret.put(Article.ARTICLE_ABSTRACT, Article.getAbstractText(fileContent));
ret.put(Article.ARTICLE_TAGS_REF, DEFAULT_TAG);
ret.put(Article.ARTICLE_IS_PUBLISHED, true);
ret.put(Article.ARTICLE_STATUS, Article.ARTICLE_STATUS_C_PUBLISHED);
ret.put(Article.ARTICLE_COMMENTABLE, true);
ret.put(Article.ARTICLE_VIEW_PWD, "");
......@@ -201,7 +201,7 @@ public class ImportService {
tagBuilder.deleteCharAt(tagBuilder.length() - 1);
ret.put(Article.ARTICLE_TAGS_REF, tagBuilder.toString());
ret.put(Article.ARTICLE_IS_PUBLISHED, true);
ret.put(Article.ARTICLE_STATUS, Article.ARTICLE_STATUS_C_PUBLISHED);
ret.put(Article.ARTICLE_COMMENTABLE, true);
ret.put(Article.ARTICLE_VIEW_PWD, "");
......
......@@ -261,8 +261,7 @@ public class InitService {
article.put(Article.ARTICLE_CONTENT, content);
article.put(Article.ARTICLE_TAGS_REF, "Solo");
article.put(Article.ARTICLE_PERMALINK, "/hello-solo");
article.put(Article.ARTICLE_IS_PUBLISHED, true);
article.put(Article.ARTICLE_HAD_BEEN_PUBLISHED, true);
article.put(Article.ARTICLE_STATUS, Article.ARTICLE_STATUS_C_PUBLISHED);
article.put(Article.ARTICLE_SIGN_ID, "1");
article.put(Article.ARTICLE_COMMENT_COUNT, 1);
article.put(Article.ARTICLE_VIEW_COUNT, 0);
......
......@@ -80,7 +80,7 @@ public class StatisticQueryService {
public JSONObject getStatistic() {
try {
final JSONObject ret = optionQueryService.getOptions(Option.CATEGORY_C_STATISTIC);
final long publishedArticleCount = articleRepository.count(new Query().setFilter(new PropertyFilter(Article.ARTICLE_IS_PUBLISHED, FilterOperator.EQUAL, true)));
final long publishedArticleCount = articleRepository.count(new Query().setFilter(new PropertyFilter(Article.ARTICLE_STATUS, FilterOperator.EQUAL, Article.ARTICLE_STATUS_C_PUBLISHED)));
ret.put(Option.ID_T_STATISTIC_PUBLISHED_ARTICLE_COUNT, publishedArticleCount);
final long commentCount = commentRepository.count(new Query());
ret.put(Option.ID_T_STATISTIC_PUBLISHED_BLOG_COMMENT_COUNT, commentCount);
......
{
"description": "Description of repository structures, for generation of the relational database table and persistence validation.",
"version": "3.2.1.5, Feb 8, 2019",
"version": "3.2.1.6, Mar 4, 2019",
"authors": [
"Liang Ding"
],
......@@ -477,16 +477,6 @@
"type": "String",
"length": 255
},
{
"name": "articleHadBeenPublished",
"description": "文章是否已经发布过",
"type": "boolean"
},
{
"name": "articleIsPublished",
"description": "文章是否处于已发布状态",
"type": "boolean"
},
{
"name": "articlePutTop",
"description": "文章是否置顶",
......@@ -529,6 +519,11 @@
"type": "String",
"length": 255,
"description": "文章首图地址"
},
{
"name": "articleStatus",
"type": "int",
"description": "文章状态,0:已发布,1:草稿"
}
]
},
......
......@@ -59,8 +59,7 @@ public final class ArticleRepositoryImplTestCase extends AbstractTestCase {
article.put(Article.ARTICLE_VIEW_COUNT, 0);
article.put(Article.ARTICLE_CONTENT, "article content");
article.put(Article.ARTICLE_PERMALINK, "article permalink1");
article.put(Article.ARTICLE_HAD_BEEN_PUBLISHED, true);
article.put(Article.ARTICLE_IS_PUBLISHED, true);
article.put(Article.ARTICLE_STATUS, Article.ARTICLE_STATUS_C_PUBLISHED);
article.put(Article.ARTICLE_PUT_TOP, false);
article.put(Article.ARTICLE_CREATED, new Date().getTime());
article.put(Article.ARTICLE_UPDATED, new Date().getTime());
......@@ -115,8 +114,7 @@ public final class ArticleRepositoryImplTestCase extends AbstractTestCase {
article.put(Article.ARTICLE_VIEW_COUNT, 1);
article.put(Article.ARTICLE_CONTENT, "article content");
article.put(Article.ARTICLE_PERMALINK, "article permalink2");
article.put(Article.ARTICLE_HAD_BEEN_PUBLISHED, true);
article.put(Article.ARTICLE_IS_PUBLISHED, true);
article.put(Article.ARTICLE_STATUS, Article.ARTICLE_STATUS_C_PUBLISHED);
article.put(Article.ARTICLE_PUT_TOP, false);
article.put(Article.ARTICLE_CREATED, new Date().getTime());
article.put(Article.ARTICLE_UPDATED, new Date().getTime());
......@@ -166,8 +164,7 @@ public final class ArticleRepositoryImplTestCase extends AbstractTestCase {
article.put(Article.ARTICLE_VIEW_COUNT, 2);
article.put(Article.ARTICLE_CONTENT, "article content");
article.put(Article.ARTICLE_PERMALINK, "article permalink3");
article.put(Article.ARTICLE_HAD_BEEN_PUBLISHED, true);
article.put(Article.ARTICLE_IS_PUBLISHED, true);
article.put(Article.ARTICLE_STATUS, Article.ARTICLE_STATUS_C_PUBLISHED);
article.put(Article.ARTICLE_PUT_TOP, false);
article.put(Article.ARTICLE_CREATED, new Date().getTime());
article.put(Article.ARTICLE_UPDATED, new Date().getTime());
......@@ -213,8 +210,7 @@ public final class ArticleRepositoryImplTestCase extends AbstractTestCase {
article.put(Article.ARTICLE_VIEW_COUNT, 3);
article.put(Article.ARTICLE_CONTENT, "article content");
article.put(Article.ARTICLE_PERMALINK, "article permalink4");
article.put(Article.ARTICLE_HAD_BEEN_PUBLISHED, false);
article.put(Article.ARTICLE_IS_PUBLISHED, false); // Unpublished
article.put(Article.ARTICLE_STATUS, Article.ARTICLE_STATUS_C_DRAFT);
article.put(Article.ARTICLE_PUT_TOP, false);
article.put(Article.ARTICLE_CREATED, new Date().getTime());
article.put(Article.ARTICLE_UPDATED, new Date().getTime());
......@@ -291,7 +287,7 @@ public final class ArticleRepositoryImplTestCase extends AbstractTestCase {
final JSONObject notPublished = articleRepository.getByPermalink("article permalink4");
Assert.assertNotNull(notPublished);
Assert.assertFalse(notPublished.getBoolean(Article.ARTICLE_IS_PUBLISHED));
Assert.assertEquals(Article.ARTICLE_STATUS_C_DRAFT, notPublished.optInt(Article.ARTICLE_STATUS));
Assert.assertFalse(articleRepository.isPublished("not found"));
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment