View Javadoc
1   package us.codecraft.webmagic.model.fields;
2   
3   import java.lang.reflect.InvocationTargetException;
4   
5   import org.slf4j.Logger;
6   
7   import us.codecraft.webmagic.model.FieldExtractor;
8   import us.codecraft.webmagic.model.formatter.ObjectFormatter;
9   
10  public abstract class PageField {
11     public abstract boolean operation(Object o, FieldExtractor fieldExtractor, Logger logger) throws IllegalAccessException, InvocationTargetException;
12  
13     protected Object convert(String value, ObjectFormatter objectFormatter, Logger logger) {
14        try {
15           Object format = objectFormatter.format(value);
16           logger.debug("String {} is converted to {}", value, format);
17           return format;
18        } catch (Exception e) {
19              logger.error("convert " + value + " to " + objectFormatter.clazz() + " error!", e);
20        }
21        return null;
22     }
23  
24     protected void setField(Object o, FieldExtractor fieldExtractor, Object value) throws IllegalAccessException, InvocationTargetException {
25        if (value != null) {
26           if (fieldExtractor.getSetterMethod() != null)
27              fieldExtractor.getSetterMethod().invoke(o, value);
28           fieldExtractor.getField().set(o, value);
29        }
30     }
31  }