Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
solo-1
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
solo-1
Commits
e5ec2661
Commit
e5ec2661
authored
Apr 08, 2017
by
Liang Ding
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🚧
#12256 填充侧边栏分类模型
parent
183ba177
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
164 additions
and
110 deletions
+164
-110
src/main/java/org/b3log/solo/model/Common.java
src/main/java/org/b3log/solo/model/Common.java
+7
-2
src/main/java/org/b3log/solo/processor/util/Filler.java
src/main/java/org/b3log/solo/processor/util/Filler.java
+111
-103
src/main/java/org/b3log/solo/repository/CategoryRepository.java
...in/java/org/b3log/solo/repository/CategoryRepository.java
+12
-1
src/main/java/org/b3log/solo/repository/impl/CategoryRepositoryImpl.java
...rg/b3log/solo/repository/impl/CategoryRepositoryImpl.java
+32
-1
src/main/java/org/b3log/solo/service/ArticleQueryService.java
...main/java/org/b3log/solo/service/ArticleQueryService.java
+2
-3
No files found.
src/main/java/org/b3log/solo/model/Common.java
View file @
e5ec2661
...
...
@@ -20,7 +20,7 @@ package org.b3log.solo.model;
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="mailto:dongxu.wang@acm.org">Dongxu Wang</a>
* @version 1.
4.5.1, Nov 1, 2015
* @version 1.
5.5.1, Apr 8, 2017
* @since 0.3.1
*/
public
final
class
Common
{
...
...
@@ -35,6 +35,11 @@ public final class Common {
*/
public
static
final
String
MOST_USED_TAGS
=
"mostUsedTags"
;
/**
* Most used categories.
*/
public
static
final
String
MOST_USED_CATEGORIES
=
"mostUsedCategories"
;
/**
* Most comment count articles.
*/
...
...
src/main/java/org/b3log/solo/processor/util/Filler.java
View file @
e5ec2661
...
...
@@ -16,15 +16,6 @@
package
org
.
b3log
.
solo
.
processor
.
util
;
import
freemarker.template.Template
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
javax.inject.Inject
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.commons.lang.time.DateFormatUtils
;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.Latkes
;
...
...
@@ -47,30 +38,26 @@ import org.b3log.latke.util.*;
import
org.b3log.latke.util.freemarker.Templates
;
import
org.b3log.solo.SoloServletListener
;
import
org.b3log.solo.model.*
;
import
static
org
.
b3log
.
solo
.
model
.
Article
.
ARTICLE_CONTENT
;
import
org.b3log.solo.repository.ArchiveDateRepository
;
import
org.b3log.solo.repository.ArticleRepository
;
import
org.b3log.solo.repository.CommentRepository
;
import
org.b3log.solo.repository.LinkRepository
;
import
org.b3log.solo.repository.PageRepository
;
import
org.b3log.solo.repository.TagRepository
;
import
org.b3log.solo.repository.UserRepository
;
import
org.b3log.solo.service.ArticleQueryService
;
import
org.b3log.solo.service.OptionQueryService
;
import
org.b3log.solo.service.StatisticQueryService
;
import
org.b3log.solo.service.TagQueryService
;
import
org.b3log.solo.service.UserQueryService
;
import
org.b3log.solo.repository.*
;
import
org.b3log.solo.service.*
;
import
org.b3log.solo.util.Thumbnails
;
import
org.b3log.solo.util.comparator.Comparators
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
javax.inject.Inject
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.*
;
import
static
org
.
b3log
.
solo
.
model
.
Article
.
ARTICLE_CONTENT
;
/**
* Filler utilities.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.
5.11.13, Feb 26
, 2017
* @version 1.
6.11.13, Apr 8
, 2017
* @since 0.3.1
*/
@Service
...
...
@@ -80,101 +67,89 @@ public class Filler {
* Logger.
*/
private
static
final
Logger
LOGGER
=
Logger
.
getLogger
(
Filler
.
class
.
getName
());
/**
* {@code true} for published.
*/
private
static
final
boolean
PUBLISHED
=
true
;
/**
* User service.
*/
private
static
UserService
userService
=
UserServiceFactory
.
getUserService
();
/**
* Topbar utilities.
*/
@Inject
private
TopBars
topBars
;
/**
* Article repository.
*/
@Inject
private
ArticleRepository
articleRepository
;
/**
* Comment repository.
*/
@Inject
private
CommentRepository
commentRepository
;
/**
* Archive date repository.
*/
@Inject
private
ArchiveDateRepository
archiveDateRepository
;
/**
* Category repository.
*/
@Inject
private
CategoryRepository
categoryRepository
;
/**
* Tag repository.
*/
@Inject
private
TagRepository
tagRepository
;
/**
* Link repository.
*/
@Inject
private
LinkRepository
linkRepository
;
/**
* Page repository.
*/
@Inject
private
PageRepository
pageRepository
;
/**
* Statistic query service.
*/
@Inject
private
StatisticQueryService
statisticQueryService
;
/**
* User repository.
*/
@Inject
private
UserRepository
userRepository
;
/**
* Option query service..
*/
@Inject
private
OptionQueryService
optionQueryService
;
/**
* Article query service.
*/
@Inject
private
ArticleQueryService
articleQueryService
;
/**
* {@code true} for published.
*/
private
static
final
boolean
PUBLISHED
=
true
;
/**
* Tag query service.
*/
@Inject
private
TagQueryService
tagQueryService
;
/**
* User query service.
*/
@Inject
private
UserQueryService
userQueryService
;
/**
* Fill tag article..
*/
@Inject
private
FillTagArticles
fillTagArticles
;
/**
* User service.
*/
private
static
UserService
userService
=
UserServiceFactory
.
getUserService
();
/**
* Event manager.
*/
...
...
@@ -331,6 +306,31 @@ public class Filler {
Stopwatchs
.
end
();
}
/**
* Fills most used categories.
*
* @param dataModel data model
* @param preference the specified preference
* @throws ServiceException service exception
*/
public
void
fillMostUsedCategories
(
final
Map
<
String
,
Object
>
dataModel
,
final
JSONObject
preference
)
throws
ServiceException
{
Stopwatchs
.
start
(
"Fill Most Used Categories"
);
try
{
LOGGER
.
debug
(
"Filling most used categories...."
);
final
int
mostUsedCategoryDisplayCnt
=
Integer
.
MAX_VALUE
;
// XXX: preference instead
final
List
<
JSONObject
>
categories
=
categoryRepository
.
getMostUsedCategories
(
mostUsedCategoryDisplayCnt
);
dataModel
.
put
(
Common
.
MOST_USED_CATEGORIES
,
categories
);
}
catch
(
final
RepositoryException
e
)
{
LOGGER
.
log
(
Level
.
ERROR
,
"Fills most used categories failed"
,
e
);
throw
new
ServiceException
(
e
);
}
finally
{
Stopwatchs
.
end
();
}
}
/**
* Fills most used tags.
*
...
...
@@ -755,6 +755,10 @@ public class Filler {
fillRecentComments
(
dataModel
,
preference
);
}
if
(
Templates
.
hasExpression
(
template
,
"<#list mostUsedCategories as tag>"
))
{
fillMostUsedCategories
(
dataModel
,
preference
);
}
if
(
Templates
.
hasExpression
(
template
,
"<#list mostUsedTags as tag>"
))
{
fillMostUsedTags
(
dataModel
,
preference
);
}
...
...
@@ -806,6 +810,10 @@ public class Filler {
fillRecentComments
(
dataModel
,
preference
);
}
if
(
Templates
.
hasExpression
(
template
,
"<#list mostUsedCategories as tag>"
))
{
fillMostUsedCategories
(
dataModel
,
preference
);
}
if
(
Templates
.
hasExpression
(
template
,
"<#list mostUsedTags as tag>"
))
{
fillMostUsedTags
(
dataModel
,
preference
);
}
...
...
@@ -890,7 +898,7 @@ public class Filler {
/**
* Sets some extra properties into the specified article with the specified author and preference, performs content
* and abstract editor processing.
*
*
<p>
* <p>
* Article ext properties:
* <pre>
...
...
@@ -953,7 +961,7 @@ public class Filler {
/**
* Sets some extra properties into the specified article with the specified preference, performs content and
* abstract editor processing.
*
*
<p>
* <p>
* Article ext properties:
* <pre>
...
...
@@ -1014,11 +1022,11 @@ public class Filler {
/**
* Sets some extra properties into the specified article with the specified author and preference.
*
*
<p>
* <p>
* The batch version of method {@linkplain #setArticleExProperties(HttpServletRequest, JSONObject, JSONObject, JSONObject)}.
* </p>
*
*
<p>
* <p>
* Article ext properties:
* <pre>
...
...
@@ -1047,11 +1055,11 @@ public class Filler {
/**
* Sets some extra properties into the specified article with the specified preference.
*
*
<p>
* <p>
* The batch version of method {@linkplain #setArticleExProperties(HttpServletRequest, JSONObject, JSONObject)}.
* </p>
*
*
<p>
* <p>
* Article ext properties:
* <pre>
...
...
@@ -1079,7 +1087,7 @@ public class Filler {
/**
* Processes the abstract of the specified article with the specified preference.
*
*
<p>
* <p>
* <ul>
* <li>If the abstract is {@code null}, sets it with ""</li>
...
...
src/main/java/org/b3log/solo/repository/CategoryRepository.java
View file @
e5ec2661
...
...
@@ -19,11 +19,13 @@ import org.b3log.latke.repository.Repository;
import
org.b3log.latke.repository.RepositoryException
;
import
org.json.JSONObject
;
import
java.util.List
;
/**
* Category repository.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.
1.0.1, Apr 1
, 2017
* @version 1.
2.0.1, Apr 8
, 2017
* @since 2.0.0
*/
public
interface
CategoryRepository
extends
Repository
{
...
...
@@ -80,4 +82,13 @@ public interface CategoryRepository extends Repository {
* @throws RepositoryException repository exception
*/
JSONObject
getByOrder
(
final
int
order
)
throws
RepositoryException
;
/**
* Gets most used categories (contains the most tags) with the specified number.
*
* @param num the specified number
* @return a list of most used categories, returns an empty list if not found
* @throws RepositoryException repository exception
*/
List
<
JSONObject
>
getMostUsedCategories
(
final
int
num
)
throws
RepositoryException
;
}
src/main/java/org/b3log/solo/repository/impl/CategoryRepositoryImpl.java
View file @
e5ec2661
...
...
@@ -18,16 +18,23 @@ package org.b3log.solo.repository.impl;
import
org.b3log.latke.Keys
;
import
org.b3log.latke.repository.*
;
import
org.b3log.latke.repository.annotation.Repository
;
import
org.b3log.latke.util.CollectionUtils
;
import
org.b3log.solo.model.Category
;
import
org.b3log.solo.model.Tag
;
import
org.b3log.solo.repository.CategoryRepository
;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
import
java.text.Collator
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.List
;
/**
* Category repository.
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.1.0.
0, Apr 1
, 2017
* @version 1.1.0.
1, Apr 8
, 2017
* @since 2.0.0
*/
@Repository
...
...
@@ -104,6 +111,20 @@ public class CategoryRepositoryImpl extends AbstractRepository implements Catego
return
array
.
optJSONObject
(
0
);
}
@Override
public
List
<
JSONObject
>
getMostUsedCategories
(
final
int
num
)
throws
RepositoryException
{
final
Query
query
=
new
Query
().
addSort
(
Category
.
CATEGORY_TAG_CNT
,
SortDirection
.
DESCENDING
).
setCurrentPageNum
(
1
).
setPageSize
(
num
).
setPageCount
(
1
);
final
JSONObject
result
=
get
(
query
);
final
JSONArray
array
=
result
.
optJSONArray
(
Keys
.
RESULTS
);
final
List
<
JSONObject
>
ret
=
CollectionUtils
.
jsonArrayToList
(
array
);
sortJSONCategoryList
(
ret
);
return
ret
;
}
@Override
public
JSONObject
getUpper
(
final
String
id
)
throws
RepositoryException
{
final
JSONObject
category
=
get
(
id
);
...
...
@@ -153,4 +174,14 @@ public class CategoryRepositoryImpl extends AbstractRepository implements Catego
return
array
.
optJSONObject
(
0
);
}
private
void
sortJSONCategoryList
(
final
List
<
JSONObject
>
tagJoList
)
{
Collections
.
sort
(
tagJoList
,
new
Comparator
<
JSONObject
>()
{
@Override
public
int
compare
(
final
JSONObject
o1
,
final
JSONObject
o2
)
{
return
Collator
.
getInstance
(
java
.
util
.
Locale
.
CHINA
).
compare
(
o1
.
optString
(
Tag
.
TAG_TITLE
),
o2
.
optString
(
Tag
.
TAG_TITLE
));
}
});
}
}
src/main/java/org/b3log/solo/service/ArticleQueryService.java
View file @
e5ec2661
...
...
@@ -142,9 +142,8 @@ public class ArticleQueryService {
pagination
.
put
(
Pagination
.
PAGINATION_PAGE_NUMS
,
(
Object
)
Collections
.
emptyList
());
try
{
final
JSONArray
categoryTags
=
categoryTagRepository
.
getByCategoryId
(
categoryId
,
1
,
Integer
.
MAX_VALUE
)
.
optJSONArray
(
Keys
.
RESULTS
);
final
JSONArray
categoryTags
=
categoryTagRepository
.
getByCategoryId
(
categoryId
,
1
,
Integer
.
MAX_VALUE
).
optJSONArray
(
Keys
.
RESULTS
);
if
(
categoryTags
.
length
()
<=
0
)
{
return
ret
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment