|
22 | 22 | import org.b3log.latke.logging.Level; |
23 | 23 | import org.b3log.latke.logging.Logger; |
24 | 24 | import org.b3log.latke.model.User; |
| 25 | +import org.b3log.latke.repository.jdbc.JdbcRepository; |
25 | 26 | import org.b3log.latke.service.annotation.Service; |
26 | 27 | import org.b3log.latke.util.Strings; |
27 | 28 | import org.b3log.solo.SoloServletListener; |
|
37 | 38 | * Import service. |
38 | 39 | * |
39 | 40 | * @author <a href="http://88250.b3log.org">Liang Ding</a> |
40 | | - * @version 1.0.0.2, Jul 3, 2017 |
| 41 | + * @version 1.0.1.0, Aug 31, 2017 |
41 | 42 | * @since 2.2.0 |
42 | 43 | */ |
43 | 44 | @Service |
@@ -71,72 +72,76 @@ public class ImportService { |
71 | 72 | */ |
72 | 73 | public void importMarkdowns() { |
73 | 74 | new Thread(() -> { |
74 | | - final ServletContext servletContext = SoloServletListener.getServletContext(); |
75 | | - final String markdownsPath = servletContext.getRealPath("markdowns"); |
76 | | - LOGGER.debug("Import directory [" + markdownsPath + "]"); |
77 | | - |
78 | | - JSONObject admin; |
79 | 75 | try { |
80 | | - admin = userQueryService.getAdmin(); |
81 | | - } catch (final Exception e) { |
82 | | - return; |
83 | | - } |
84 | | - |
85 | | - if (null == admin) { // Not init yet |
86 | | - return; |
87 | | - } |
| 76 | + final ServletContext servletContext = SoloServletListener.getServletContext(); |
| 77 | + final String markdownsPath = servletContext.getRealPath("markdowns"); |
| 78 | + LOGGER.debug("Import directory [" + markdownsPath + "]"); |
88 | 79 |
|
89 | | - final String adminEmail = admin.optString(User.USER_EMAIL); |
90 | | - |
91 | | - int succCnt = 0, failCnt = 0; |
92 | | - final Set<String> failSet = new TreeSet<>(); |
93 | | - final Collection<File> mds = FileUtils.listFiles(new File(markdownsPath), new String[]{"md"}, true); |
94 | | - if (null == mds || mds.isEmpty()) { |
95 | | - return; |
96 | | - } |
97 | | - |
98 | | - for (final File md : mds) { |
99 | | - final String fileName = md.getName(); |
100 | | - if (StringUtils.equalsIgnoreCase(fileName, "README.md")) { |
101 | | - continue; |
| 80 | + JSONObject admin; |
| 81 | + try { |
| 82 | + admin = userQueryService.getAdmin(); |
| 83 | + } catch (final Exception e) { |
| 84 | + return; |
102 | 85 | } |
103 | 86 |
|
104 | | - try { |
105 | | - final String fileContent = FileUtils.readFileToString(md, "UTF-8"); |
106 | | - final JSONObject article = parseArticle(fileName, fileContent); |
107 | | - article.put(Article.ARTICLE_AUTHOR_EMAIL, adminEmail); |
| 87 | + if (null == admin) { // Not init yet |
| 88 | + return; |
| 89 | + } |
108 | 90 |
|
109 | | - final JSONObject request = new JSONObject(); |
110 | | - request.put(Article.ARTICLE, article); |
| 91 | + final String adminEmail = admin.optString(User.USER_EMAIL); |
111 | 92 |
|
112 | | - final String id = articleMgmtService.addArticle(request); |
113 | | - FileUtils.moveFile(md, new File(md.getPath() + "." + id)); |
114 | | - LOGGER.info("Imported article [" + article.optString(Article.ARTICLE_TITLE) + "]"); |
115 | | - succCnt++; |
116 | | - } catch (final Exception e) { |
117 | | - LOGGER.log(Level.ERROR, "Import file [" + fileName + "] failed", e); |
| 93 | + int succCnt = 0, failCnt = 0; |
| 94 | + final Set<String> failSet = new TreeSet<>(); |
| 95 | + final Collection<File> mds = FileUtils.listFiles(new File(markdownsPath), new String[]{"md"}, true); |
| 96 | + if (null == mds || mds.isEmpty()) { |
| 97 | + return; |
| 98 | + } |
118 | 99 |
|
119 | | - failCnt++; |
120 | | - failSet.add(fileName); |
| 100 | + for (final File md : mds) { |
| 101 | + final String fileName = md.getName(); |
| 102 | + if (StringUtils.equalsIgnoreCase(fileName, "README.md")) { |
| 103 | + continue; |
| 104 | + } |
| 105 | + |
| 106 | + try { |
| 107 | + final String fileContent = FileUtils.readFileToString(md, "UTF-8"); |
| 108 | + final JSONObject article = parseArticle(fileName, fileContent); |
| 109 | + article.put(Article.ARTICLE_AUTHOR_EMAIL, adminEmail); |
| 110 | + |
| 111 | + final JSONObject request = new JSONObject(); |
| 112 | + request.put(Article.ARTICLE, article); |
| 113 | + |
| 114 | + final String id = articleMgmtService.addArticle(request); |
| 115 | + FileUtils.moveFile(md, new File(md.getPath() + "." + id)); |
| 116 | + LOGGER.info("Imported article [" + article.optString(Article.ARTICLE_TITLE) + "]"); |
| 117 | + succCnt++; |
| 118 | + } catch (final Exception e) { |
| 119 | + LOGGER.log(Level.ERROR, "Import file [" + fileName + "] failed", e); |
| 120 | + |
| 121 | + failCnt++; |
| 122 | + failSet.add(fileName); |
| 123 | + } |
121 | 124 | } |
122 | | - } |
123 | 125 |
|
124 | | - if (0 == succCnt && 0 == failCnt) { |
125 | | - return; |
126 | | - } |
| 126 | + if (0 == succCnt && 0 == failCnt) { |
| 127 | + return; |
| 128 | + } |
127 | 129 |
|
128 | | - final StringBuilder logBuilder = new StringBuilder(); |
129 | | - logBuilder.append("[").append(succCnt).append("] imported, [").append(failCnt).append("] failed"); |
130 | | - if (failCnt > 0) { |
131 | | - logBuilder.append(": ").append(Strings.LINE_SEPARATOR); |
| 130 | + final StringBuilder logBuilder = new StringBuilder(); |
| 131 | + logBuilder.append("[").append(succCnt).append("] imported, [").append(failCnt).append("] failed"); |
| 132 | + if (failCnt > 0) { |
| 133 | + logBuilder.append(": ").append(Strings.LINE_SEPARATOR); |
132 | 134 |
|
133 | | - for (final String fail : failSet) { |
134 | | - logBuilder.append(" ").append(fail).append(Strings.LINE_SEPARATOR); |
| 135 | + for (final String fail : failSet) { |
| 136 | + logBuilder.append(" ").append(fail).append(Strings.LINE_SEPARATOR); |
| 137 | + } |
| 138 | + } else { |
| 139 | + logBuilder.append(" :p"); |
135 | 140 | } |
136 | | - } else { |
137 | | - logBuilder.append(" :p"); |
| 141 | + LOGGER.info(logBuilder.toString()); |
| 142 | + } finally { |
| 143 | + JdbcRepository.dispose(); |
138 | 144 | } |
139 | | - LOGGER.info(logBuilder.toString()); |
140 | 145 | }).start(); |
141 | 146 | } |
142 | 147 |
|
|
0 commit comments