package com.brucezee.jspider.parser.define; import com.brucezee.jspider.parser.processor.FieldProcessor; import java.io.Serializable; /** * 字段解析定义 * Created by zhoubing on 2016/11/22. */ public class FieldDefine implements Serializable { private String id;//唯一标识 private String type;//字段类型 private String name;//字段名称 private String selector;//字段解析表达式 private FieldDefine[] defines;//字段对象包含的字段数组 private FieldProcessor processor;//字段特殊处理类 public FieldDefine() { } public FieldDefine(String type, String name, String selector, FieldDefine[] defines, FieldProcessor processor) { this.type = type; this.name = name; this.selector = selector; this.defines = defines; this.processor = processor; } public FieldDefine(String type, String name, String selector, FieldDefine[] defines) { this(type, name, selector, defines, null); } public FieldDefine(String type, String name, String selector, FieldDefine define) { this(type, name, selector, define != null ? new FieldDefine[]{define} : null); } public FieldDefine(String name, String selector, FieldDefine[] defines) { this(FieldTypeEnum.Object.toString(), name, selector, defines, null); } public FieldDefine(String name, String selector, FieldDefine define) { this(FieldTypeEnum.Object.toString(), name, selector, define != null ? new FieldDefine[]{define} : null); } public FieldDefine(FieldDefine define) { this(null, null, define); } public FieldDefine(FieldDefine[] defines) { this(null, null, defines); } public FieldDefine firstDefine() { return defines != null && defines.length > 0 ? defines[0] : null; } public FieldDefine lastDefine() { return defines != null && defines.length > 0 ? defines[defines.length-1] : null; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSelector() { return selector; } public void setSelector(String selector) { this.selector = selector; } public FieldDefine[] getDefines() { return defines; } public void setDefines(FieldDefine[] defines) { this.defines = defines; } public FieldProcessor getProcessor() { return processor; } public void setProcessor(FieldProcessor processor) { this.processor = processor; } public static FieldDefine newString(String name, String selector) { return newString(name, selector, null); } public static FieldDefine newString(String name, FieldProcessor fieldProcessor) { return newString(name, null, fieldProcessor); } public static FieldDefine newString(String name, String selector, FieldProcessor fieldProcessor) { return new FieldDefine(FieldTypeEnum.String.toString(), name, selector, (FieldDefine[])null, fieldProcessor); } public static FieldDefine newDouble(String name, String selector) { return newDouble(name, selector, null); } public static FieldDefine newDouble(String name, FieldProcessor fieldProcessor) { return newDouble(name, null, fieldProcessor); } public static FieldDefine newDouble(String name, String selector, FieldProcessor fieldProcessor) { return new FieldDefine(FieldTypeEnum.Double.toString(), name, selector, (FieldDefine[])null, fieldProcessor); } public static FieldDefine newFloat(String name, String selector) { return newFloat(name, selector, null); } public static FieldDefine newFloat(String name, FieldProcessor fieldProcessor) { return newFloat(name, null, fieldProcessor); } public static FieldDefine newFloat(String name, String selector, FieldProcessor fieldProcessor) { return new FieldDefine(FieldTypeEnum.Float.toString(), name, selector, (FieldDefine[])null, fieldProcessor); } public static FieldDefine newInteger(String name, String selector) { return newInteger(name, selector, null); } public static FieldDefine newInteger(String name, FieldProcessor fieldProcessor) { return newInteger(name, null, fieldProcessor); } public static FieldDefine newInteger(String name, String selector, FieldProcessor fieldProcessor) { return new FieldDefine(FieldTypeEnum.Integer.toString(), name, selector, (FieldDefine[])null, fieldProcessor); } public static FieldDefine newShort(String name, String selector) { return newShort(name, selector, null); } public static FieldDefine newShort(String name, FieldProcessor fieldProcessor) { return newShort(name, null, fieldProcessor); } public static FieldDefine newShort(String name, String selector, FieldProcessor fieldProcessor) { return new FieldDefine(FieldTypeEnum.Short.toString(), name, selector, (FieldDefine[])null, fieldProcessor); } public static FieldDefine newBoolean(String name, String selector) { return newBoolean(name, selector, null); } public static FieldDefine newBoolean(String name, FieldProcessor fieldProcessor) { return newBoolean(name, null, fieldProcessor); } public static FieldDefine newBoolean(String name, String selector, FieldProcessor fieldProcessor) { return new FieldDefine(FieldTypeEnum.Boolean.toString(), name, selector, (FieldDefine[])null, fieldProcessor); } public static FieldDefine newByte(String name, String selector) { return newByte(name, selector, null); } public static FieldDefine newByte(String name, FieldProcessor fieldProcessor) { return newByte(name, null, fieldProcessor); } public static FieldDefine newByte(String name, String selector, FieldProcessor fieldProcessor) { return new FieldDefine(FieldTypeEnum.Byte.toString(), name, selector, (FieldDefine[])null, fieldProcessor); } public static FieldDefine newLong(String name, String selector) { return newLong(name, selector, null); } public static FieldDefine newLong(String name, FieldProcessor fieldProcessor) { return newLong(name, null, fieldProcessor); } public static FieldDefine newLong(String name, String selector, FieldProcessor fieldProcessor) { return new FieldDefine(FieldTypeEnum.Long.toString(), name, selector, (FieldDefine[])null, fieldProcessor); } public static FieldDefine newObject(String name, String selector, FieldDefine[] defines) { return new FieldDefine(FieldTypeEnum.Object.toString(), name, selector, defines); } public static FieldDefine newObject(String name, String selector) { return newObject(name, selector, null); } public static FieldDefine newObject(String name, FieldDefine[] defines) { return newObject(name, null, defines); } public static FieldDefine newObject(FieldDefine[] defines) { return newObject(null, null, defines); } public static FieldDefine newObject(FieldDefine define) { return newObject(null, null, new FieldDefine[]{define}); } public static FieldDefine newArray(String name, String selector, FieldDefine define) { return new FieldDefine(FieldTypeEnum.Array.toString(), name, selector, define); } public static FieldDefine newArray(String name, String selector) { return newArray(name, selector, null); } public static FieldDefine newArray(FieldDefine define) { return newArray(null, null, define); } public static FieldDefine newList(String name, String selector, FieldDefine define) { return new FieldDefine(FieldTypeEnum.List.toString(), name, selector, define); } public static FieldDefine newList(String name, String selector) { return newList(name, selector, null); } public static FieldDefine newList(FieldDefine define) { return newList(null, null, define); } public static FieldDefine newMap(String name, String selector, FieldDefine[] defines) { return new FieldDefine(FieldTypeEnum.Map.toString(), name, selector, defines); } public static FieldDefine newMap(String name, String selector) { return newMap(name, selector, null); } public static FieldDefine newMap(String name, FieldDefine[] defines) { return newMap(name, null, defines); } public static FieldDefine newMap(FieldDefine[] defines) { return newMap(null, null, defines); } public static FieldDefine newMap(FieldDefine define) { return newMap(null, null, new FieldDefine[]{define}); } }