Commit 29fd5c49 authored by Liang Ding's avatar Liang Ding

Fixed #169

parent 7da5a034
......@@ -16,12 +16,9 @@
package org.b3log.solo.api.metaweblog;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletInputStream;
......@@ -30,6 +27,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.b3log.latke.Keys;
import org.b3log.latke.model.User;
import org.b3log.latke.repository.Transaction;
......@@ -74,7 +72,7 @@ import org.jsoup.Jsoup;
* </p>
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.0.7, Aug 29, 2012
* @version 1.0.0.8, Jan 18, 2013
* @since 0.4.0
*/
@RequestProcessor
......@@ -372,12 +370,7 @@ public final class MetaWeblogAPI {
} catch (final ParseException e) {
LOGGER.log(Level.WARNING,
"Parses article create date failed with ISO8601, retry to parse with pattern[yyyy-MM-dd'T'HH:mm:ss]");
final String timeZoneId = preference.getString(Preference.TIME_ZONE_ID);
final TimeZone timeZone = TimeZone.getTimeZone(timeZoneId);
final DateFormat format = new SimpleDateFormat("yyyyMMdd'T'HH:mm:ss");
format.setTimeZone(timeZone);
date = format.parse(dateString);
date = DateUtils.parseDate(dateString, new String[] {"yyyyMMdd'T'HH:mm:ss"});
}
ret.put(Article.ARTICLE_CREATE_DATE, date);
} else if ("title".equals(name)) {
......
......@@ -24,6 +24,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
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;
import org.b3log.latke.event.Event;
......@@ -65,7 +66,7 @@ import org.json.JSONObject;
* Comment receiver (from B3log Symphony).
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.0.4, Jan 4, 2013
* @version 1.0.0.5, Jan 18, 2013
* @since 0.5.5
*/
@RequestProcessor
......@@ -206,7 +207,7 @@ public final class CommentReceiver {
final Date date = TimeZones.getTime(timeZoneId);
comment.put(Comment.COMMENT_DATE, date);
ret.put(Comment.COMMENT_DATE, Comment.DATE_FORMAT.format(date));
ret.put(Comment.COMMENT_DATE, DateFormatUtils.format(date, "yyyy-MM-dd hh:mm:ss"));
if (!Strings.isEmptyOrNull(originalCommentId)) {
originalComment = commentRepository.get(originalCommentId);
if (null != originalComment) {
......
......@@ -16,15 +16,11 @@
package org.b3log.solo.model;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
/**
* This class defines all archive date model relevant keys.
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.0.3, Jul 2, 2011
* @version 1.0.0.4, Jan 18, 2013
*/
public final class ArchiveDate {
......@@ -63,11 +59,6 @@ public final class ArchiveDate {
*/
public static final String ARCHIVE_DATE_MONTH = "archiveDateMonth";
/**
* Date format(yyyy/MM).
*/
public static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy/MM");
/**
* Private default constructor.
*/
......
......@@ -16,15 +16,11 @@
package org.b3log.solo.model;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
/**
* This class defines all comment model relevant keys.
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.0.6, Oct 28, 2011
* @version 1.0.0.7, Jan 18, 2013
* @since 0.3.1
*/
public final class Comment {
......@@ -99,11 +95,6 @@ public final class Comment {
*/
public static final String COMMENT_ON_ID = "commentOnId";
/**
* Date format(yyyy/MM/dd hh:mm:ss).
*/
public static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
/**
* Private default constructor.
*/
......
......@@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.b3log.latke.Keys;
import org.b3log.latke.Latkes;
import org.b3log.latke.cache.PageCaches;
......@@ -66,7 +67,7 @@ import org.jsoup.Jsoup;
* Article processor.
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.1.2.6, Jan 7, 2013
* @version 1.1.2.7, Jan 18, 2013
* @since 0.3.1
*/
@RequestProcessor
......@@ -1134,7 +1135,7 @@ public final class ArticleProcessor {
filler.fillBlogFooter(dataModel, preference);
final long time = archiveDate.getLong(ArchiveDate.ARCHIVE_TIME);
final String dateString = ArchiveDate.DATE_FORMAT.format(time);
final String dateString = DateFormatUtils.format(time, "yyyy/MM");
final String[] dateStrings = dateString.split("/");
final String year = dateStrings[0];
final String month = dateStrings[1];
......
......@@ -56,7 +56,7 @@ import org.json.JSONObject;
* Site map (sitemap) processor.
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.0.4, Jun 11, 2012
* @version 1.0.0.5, Jan 18, 2013
* @since 0.3.1
*/
@RequestProcessor
......@@ -248,7 +248,7 @@ public final class SitemapProcessor {
for (int i = 0; i < archiveDates.length(); i++) {
final JSONObject archiveDate = archiveDates.getJSONObject(i);
final long time = archiveDate.getLong(ArchiveDate.ARCHIVE_TIME);
final String dateString = ArchiveDate.DATE_FORMAT.format(time);
final String dateString = DateFormatUtils.format(time, "yyyy/MM");
final URL url = new URL();
......
......@@ -25,11 +25,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringEscapeUtils;
import org.b3log.latke.repository.RepositoryException;
import org.b3log.solo.util.Articles;
import org.b3log.solo.model.Article;
import org.b3log.solo.repository.ArticleRepository;
import org.b3log.solo.repository.TagRepository;
import org.apache.commons.lang.time.DateFormatUtils;
import org.b3log.latke.Keys;
import org.b3log.latke.Latkes;
import org.b3log.latke.event.Event;
......@@ -43,15 +39,14 @@ import org.b3log.latke.repository.*;
import org.b3log.latke.service.ServiceException;
import org.b3log.latke.util.*;
import org.b3log.latke.util.freemarker.Templates;
import org.b3log.solo.model.ArchiveDate;
import org.b3log.solo.model.Link;
import org.b3log.solo.model.Preference;
import org.b3log.solo.repository.CommentRepository;
import org.b3log.solo.repository.LinkRepository;
import org.b3log.solo.SoloServletListener;
import org.b3log.solo.model.*;
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.repository.impl.ArchiveDateRepositoryImpl;
import org.b3log.solo.repository.impl.ArticleRepositoryImpl;
......@@ -62,6 +57,7 @@ import org.b3log.solo.repository.impl.TagRepositoryImpl;
import org.b3log.solo.repository.impl.UserRepositoryImpl;
import org.b3log.solo.service.ArticleQueryService;
import org.b3log.solo.service.StatisticQueryService;
import org.b3log.solo.util.Articles;
import org.b3log.solo.util.Tags;
import org.b3log.solo.util.Users;
import org.json.JSONArray;
......@@ -73,7 +69,7 @@ import org.json.JSONObject;
* Filler utilities.
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.6.1, Aug 9, 2012
* @version 1.0.6.2, Jan 18, 2013
* @since 0.3.1
*/
public final class Filler {
......@@ -287,7 +283,7 @@ public final class Filler {
for (final JSONObject archiveDate : archiveDates) {
final long time = archiveDate.getLong(ArchiveDate.ARCHIVE_TIME);
final String dateString = ArchiveDate.DATE_FORMAT.format(time);
final String dateString = DateFormatUtils.format(time, "yyyy/MM");
final String[] dateStrings = dateString.split("/");
final String year = dateStrings[0];
final String month = dateStrings[1];
......
......@@ -21,6 +21,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.lang.time.DateUtils;
import org.b3log.latke.Keys;
import org.b3log.latke.repository.*;
import org.b3log.latke.util.CollectionUtils;
......@@ -34,7 +35,7 @@ import org.json.JSONObject;
* Archive date repository.
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.0.6, Dec 31, 2011
* @version 1.0.0.7, Jan 18, 2013
* @since 0.3.1
*/
public final class ArchiveDateRepositoryImpl extends AbstractRepository implements ArchiveDateRepository {
......@@ -54,7 +55,7 @@ public final class ArchiveDateRepositoryImpl extends AbstractRepository implemen
long time = 0L;
try {
time = ArchiveDate.DATE_FORMAT.parse(archiveDate).getTime();
time = DateUtils.parseDate(archiveDate, new String[] {"yyyy/MM"}).getTime();
} catch (final ParseException e) {
LOGGER.log(Level.SEVERE, "Can not parse archive date [" + archiveDate + "]", e);
throw new RepositoryException("Can not parse archive date [" + archiveDate + "]");
......
......@@ -16,15 +16,15 @@
package org.b3log.solo.service;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.b3log.latke.Keys;
import org.b3log.latke.event.Event;
import org.b3log.latke.event.EventException;
......@@ -68,7 +68,7 @@ import org.json.JSONObject;
* Article management service.
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.1.3, Oct 12, 2012
* @version 1.0.1.4, Jan 18, 2013
* @since 0.3.5
*/
public final class ArticleMgmtService {
......@@ -148,11 +148,6 @@ public final class ArticleMgmtService {
*/
private static Tags tagUtils = Tags.getInstance();
/**
* Permalink date format(yyyy/MM/dd).
*/
public static final DateFormat PERMALINK_FORMAT = new SimpleDateFormat("yyyy/MM/dd");
/**
* Cancels publish an article by the specified article id.
*
......@@ -990,13 +985,13 @@ public final class ArticleMgmtService {
*/
private void archiveDate(final JSONObject article) throws RepositoryException {
final Date createDate = (Date) article.opt(Article.ARTICLE_CREATE_DATE);
final String createDateString = ArchiveDate.DATE_FORMAT.format(createDate);
final String createDateString = DateFormatUtils.format(createDate, "yyyy/MM");
JSONObject archiveDate = archiveDateRepository.getByArchiveDate(createDateString);
if (null == archiveDate) {
archiveDate = new JSONObject();
try {
archiveDate.put(ArchiveDate.ARCHIVE_TIME, ArchiveDate.DATE_FORMAT.parse(createDateString).getTime());
archiveDate.put(ArchiveDate.ARCHIVE_TIME, DateUtils.parseDate(createDateString, new String[] {"yyyy/MM"}).getTime());
archiveDate.put(ArchiveDate.ARCHIVE_DATE_ARTICLE_COUNT, 0);
archiveDate.put(ArchiveDate.ARCHIVE_DATE_PUBLISHED_ARTICLE_COUNT, 0);
......@@ -1064,7 +1059,7 @@ public final class ArticleMgmtService {
String ret = article.optString(Article.ARTICLE_PERMALINK);
if (Strings.isEmptyOrNull(ret)) {
ret = "/articles/" + PERMALINK_FORMAT.format(date) + "/" + article.optString(Keys.OBJECT_ID) + ".html";
ret = "/articles/" + DateFormatUtils.format(date, "yyyy/MM/dd") + "/" + article.optString(Keys.OBJECT_ID) + ".html";
}
if (!ret.startsWith("/")) {
......@@ -1102,7 +1097,7 @@ public final class ArticleMgmtService {
if (!oldPermalink.equals(ret)) {
if (Strings.isEmptyOrNull(ret)) {
ret = "/articles/" + PERMALINK_FORMAT.format(createDate) + "/" + articleId + ".html";
ret = "/articles/" + DateFormatUtils.format(createDate, "yyyy/MM/dd") + "/" + articleId + ".html";
}
if (!ret.startsWith("/")) {
......
......@@ -23,6 +23,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.b3log.latke.Keys;
import org.b3log.latke.Latkes;
import org.b3log.latke.event.Event;
......@@ -55,7 +56,7 @@ import org.json.JSONObject;
* Comment management service.
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.0.3, Aug 12, 2012
* @version 1.0.0.4, Jan 18, 2013
* @since 0.3.5
*/
public final class CommentMgmtService {
......@@ -168,7 +169,7 @@ public final class CommentMgmtService {
final Date date = TimeZones.getTime(timeZoneId);
comment.put(Comment.COMMENT_DATE, date);
ret.put(Comment.COMMENT_DATE, Comment.DATE_FORMAT.format(date));
ret.put(Comment.COMMENT_DATE, DateFormatUtils.format(date, "yyyy-MM-dd hh:mm:ss"));
if (!Strings.isEmptyOrNull(originalCommentId)) {
originalComment = commentRepository.get(originalCommentId);
if (null != originalComment) {
......@@ -288,7 +289,7 @@ public final class CommentMgmtService {
final Date date = TimeZones.getTime(timeZoneId);
comment.put(Comment.COMMENT_DATE, date);
ret.put(Comment.COMMENT_DATE, Comment.DATE_FORMAT.format(date));
ret.put(Comment.COMMENT_DATE, DateFormatUtils.format(date, "yyyy-MM-dd hh:mm:ss"));
if (!Strings.isEmptyOrNull(originalCommentId)) {
originalComment = commentRepository.get(originalCommentId);
......
......@@ -25,6 +25,8 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.b3log.latke.Keys;
import org.b3log.latke.Latkes;
import org.b3log.latke.RuntimeEnv;
......@@ -57,7 +59,7 @@ import org.json.JSONObject;
* B3log Solo initialization service.
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.1.3, Jan 4, 2013
* @version 1.0.1.4, Jan 18, 2013
* @since 0.4.0
*/
public final class InitService {
......@@ -345,11 +347,11 @@ public final class InitService {
*/
public void archiveDate(final JSONObject article) throws RepositoryException {
final Date createDate = (Date) article.opt(Article.ARTICLE_CREATE_DATE);
final String createDateString = ArchiveDate.DATE_FORMAT.format(createDate);
final String createDateString = DateFormatUtils.format(createDate, "yyyy/MM");
final JSONObject archiveDate = new JSONObject();
try {
archiveDate.put(ArchiveDate.ARCHIVE_TIME, ArchiveDate.DATE_FORMAT.parse(createDateString).getTime());
archiveDate.put(ArchiveDate.ARCHIVE_TIME, DateUtils.parseDate(createDateString, new String[] {"yyyy/MM"}).getTime());
archiveDate.put(ArchiveDate.ARCHIVE_DATE_ARTICLE_COUNT, 1);
archiveDate.put(ArchiveDate.ARCHIVE_DATE_PUBLISHED_ARTICLE_COUNT, 1);
......
......@@ -19,15 +19,13 @@ package org.b3log.solo.util;
import java.util.Date;
import java.util.TimeZone;
import org.b3log.latke.util.freemarker.Templates;
import org.b3log.solo.model.ArchiveDate;
import org.b3log.solo.model.Comment;
/**
* Time zone utilities.
*
* @author <a href="mailto:DL88250@gmail.com">Liang Ding</a>
* @version 1.0.0.3, Dec 29, 2011
* @version 1.0.0.4, Jan 18, 2013
*/
public final class TimeZones {
......@@ -64,8 +62,6 @@ public final class TimeZones {
TimeZone.setDefault(timeZone);
System.setProperty("user.timezone", timeZoneId);
ArchiveDate.DATE_FORMAT.setTimeZone(timeZone);
Comment.DATE_FORMAT.setTimeZone(timeZone);
Templates.MAIN_CFG.setTimeZone(timeZone);
Templates.MOBILE_CFG.setTimeZone(timeZone);
}
......
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