All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.tinygroup.fulltext.document.HighlightDocument Maven / Gradle / Ivy

The newest version!
package org.tinygroup.fulltext.document;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.tinygroup.fulltext.FullTextHelper;
import org.tinygroup.fulltext.field.Field;
import org.tinygroup.fulltext.field.FieldType;
import org.tinygroup.fulltext.field.HighlightField;


/**
 * 高亮渲染结果文档
 * @author yancheng11334
 *
 */
@SuppressWarnings("rawtypes")
public class HighlightDocument {
	
	private List fields = new ArrayList();
	/**
	 * 默认构造
	 * @param document  要渲染的文档
	 */
	public HighlightDocument(Document document){
		this(document, new Object[]{});
	}
	
	/**
	 * 包装构建
	 * @param document  要渲染的文档
	 * @param arguments 渲染参数
	 */
	public HighlightDocument(Document document,Object... arguments){
        Iterator it = document.iterator();
        while(it.hasNext()){
        	Field field = it.next();
        	//支持高亮
        	if(field instanceof HighlightField){
        		HighlightField f = (HighlightField) field;
        		fields.add(new FieldWrapper(f,arguments));
        	}else{
        		fields.add(field);
        	}
        }
	}
	
	public String getId(){
		Field f = getField(FullTextHelper.getStoreId());
		return f==null?null:f.getValue().toString();
	}
	
	public String getType(){
		Field f = getField(FullTextHelper.getStoreType());
		return f==null?null:f.getValue().toString();
	}
	
	public String getTitle(){
		Field f = getField(FullTextHelper.getStoreTitle());
		return f==null?null:f.getValue().toString();
	}
	
	public String getAbstract(){
		Field f = getField(FullTextHelper.getStoreAbstract());
		return f==null?null:f.getValue().toString();
	}
	
	private Field getField(String name) {
		for(Field field:fields){
		   if(field.getName().equals(name)){
			   return field;
		   }
		}
		return null;
	}
    
	class FieldWrapper implements Field{
        private HighlightField field;
        private Object[] arguments;
    	public FieldWrapper(HighlightField hField,Object... arguments){
    		this.field = hField;
    		this.arguments = arguments;
    	}
		public String getName() {
			return field.getName();
		}

		public FieldType getType() {
			return field.getType();
		}

		public Object getValue() {
			if(arguments==null || arguments.length<=0){
				//返回原值
				return field.getSourceValue();
			}else{
				//返回包装值
				return field.getRenderValue(arguments);
			}
		}
    	
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy