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 }