From 8958d774f20a4780bca22acdc2e95eed4afacb16 Mon Sep 17 00:00:00 2001 From: "yihua.huang" Date: Mon, 24 Mar 2014 13:52:17 +0800 Subject: [PATCH] add default values for @Formatter --- .../webmagic/example/OschinaBlog.java | 2 +- .../webmagic/model/annotation/Formatter.java | 2 +- .../model/formatter/DateFormatter.java | 7 +++++-- .../src/main/resouces/log4j.xml | 21 +++++++++++++++++++ .../src/test/resouces/log4j.xml | 12 +---------- 5 files changed, 29 insertions(+), 15 deletions(-) create mode 100644 webmagic-extension/src/main/resouces/log4j.xml diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/example/OschinaBlog.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/example/OschinaBlog.java index e8ac20c..b527ea7 100644 --- a/webmagic-extension/src/main/java/us/codecraft/webmagic/example/OschinaBlog.java +++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/example/OschinaBlog.java @@ -26,11 +26,11 @@ public class OschinaBlog { @ExtractBy(value = "//div[@class='BlogTags']/a/text()", multi = true) private List tags; - @Formatter("yyyy-MM-dd HH:mm") @ExtractBy("//div[@class='BlogStat']/regex('\\d+-\\d+-\\d+\\s+\\d+:\\d+')") private Date date; public static void main(String[] args) { + //results will be saved to "/data/webmagic/" in json format OOSpider.create(Site.me(), new JsonFilePageModelPipeline("/data/webmagic/"), OschinaBlog.class) .addUrl("http://my.oschina.net/flashsword/blog").run(); } diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/Formatter.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/Formatter.java index e603c59..a3a56f8 100644 --- a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/Formatter.java +++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/annotation/Formatter.java @@ -21,7 +21,7 @@ public @interface Formatter { * * @return formatter params */ - String[] value(); + String[] value() default ""; /** * Specific the class of field of class of elements in collection for field.
diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/formatter/DateFormatter.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/formatter/DateFormatter.java index b0f6e77..6305d7b 100644 --- a/webmagic-extension/src/main/java/us/codecraft/webmagic/model/formatter/DateFormatter.java +++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/model/formatter/DateFormatter.java @@ -10,7 +10,8 @@ import java.util.Date; */ public class DateFormatter implements ObjectFormatter { - private String[] datePatterns = new String[]{"yyyy-MM-dd HH:mm"}; + public static final String[] DEFAULT_PATTERN = new String[]{"yyyy-MM-dd HH:mm"}; + private String[] datePatterns = DEFAULT_PATTERN; @Override public Date format(String raw) throws Exception { @@ -24,6 +25,8 @@ public class DateFormatter implements ObjectFormatter { @Override public void initParam(String[] extra) { - datePatterns = extra; + if (extra != null && !(extra.length == 1 && extra[0].length() == 0)) { + datePatterns = extra; + } } } diff --git a/webmagic-extension/src/main/resouces/log4j.xml b/webmagic-extension/src/main/resouces/log4j.xml new file mode 100644 index 0000000..c2b5a2f --- /dev/null +++ b/webmagic-extension/src/main/resouces/log4j.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/webmagic-extension/src/test/resouces/log4j.xml b/webmagic-extension/src/test/resouces/log4j.xml index a58e889..c2b5a2f 100644 --- a/webmagic-extension/src/test/resouces/log4j.xml +++ b/webmagic-extension/src/test/resouces/log4j.xml @@ -8,23 +8,13 @@ - - - - - - - - - - - +