view src/main/java/de/mpiwg/itgroup/ismi/merge/PublicByAuthorBean.java @ 165:85fdcca37a0d public_by_author

working on public by author feature...
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Tue, 29 May 2018 21:04:13 +0200
parents 3c83f42a8a39
children e9ab943ec528
line wrap: on
line source

package de.mpiwg.itgroup.ismi.merge;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

import org.apache.log4j.Logger;
import org.mpi.openmind.search.utils.ResultEntry;
import org.mpi.openmind.search.utils.SAttributeMultipleName;
import org.mpi.openmind.search.utils.SEntity;
import org.mpi.openmind.search.utils.SRelation;

import de.mpiwg.itgroup.ismi.entry.beans.AbstractISMIBean;

public class PublicByAuthorBean extends AbstractISMIBean implements Serializable{
	
	private static Logger logger = Logger.getLogger(PublicByAuthorBean.class);
	
	private static final long serialVersionUID = 1L;
	
	private String currentTemplate;
	private static List<SelectItem> templateList;
	
	private String findAuthorName = "";

	private boolean searched = false;

	private long timeExecution;

    private List<ResultEntry> rs;
	
	static{
		templateList = new ArrayList<SelectItem>();
		//templateList.add(new SelectItem("sample01"));
		templateList.add(new SelectItem("witness4Title", "Witnesses for a title"));
		//templateList.add(new SelectItem("sample03"));
		//templateList.add(new SelectItem("sample04"));
		//templateList.add(new SelectItem("sample05"));
		templateList.add(new SelectItem("titles4Person", "Titles for a person"));
		templateList.add(new SelectItem("codexOwnership", "Codex ownership"));
		//templateList.add(new SelectItem("sample07"));
		//templateList.add(new SelectItem("sample08"));
		//templateList.add(new SelectItem("sample09"));
	}
	
	public PublicByAuthorBean(){
		//logger.info("AdvancedSearchBean");
		this.reset();
	}
	
	public void reset(){
		//logger.info("AdvancedSearchBean.reset()");
		currentTemplate = "witness4Title";
	}
	
	public void listenerChange(ValueChangeEvent event){
		/*
		logger.info(event.getOldValue());
		logger.info(event.getNewValue());
		*/
	}
	
	public void listenerFindAuthorSearch(ActionEvent event){
		try {
			long start = System.currentTimeMillis();
			this.search();
			long end = System.currentTimeMillis();
			this.searched = true;
			this.timeExecution = end - start;
			logger.info(toString() + " time execution=" + (timeExecution));
		} catch (Exception e) {
			logger.error(e.getMessage(), e);
			printInternalError(e);
		}

	}
	

	
	public String actionSearch(){
		this.search();
		return null;
	}
	
	public void search(){
		long start = System.currentTimeMillis();
		
		rs = sample06();
		
		//printRs(rs);

		long end = System.currentTimeMillis();
		logger.info("execution time [ms] = " + (end - start));
		logger.info("Search resultSet size= " + this.rs.size());
	}

	
	/**
	 * 6) Bring up people associated with a particular title (not just one huge list of people, but be able to distinguish author, student, teacher)
	 * @return
	 */
	private List<ResultEntry> sample06(){
		
		List<SEntity> entFilters = new ArrayList<SEntity>();
		List<SRelation> relFilters = new ArrayList<SRelation>();
		
		//alias, "is_prime_alias_name_of", "PERSON"
		//alias, "is_alias_name_of", "PERSON"
		SEntity person = new SEntity(1, "PERSON");
		person.addAtt(new SAttributeMultipleName("a", "name_translit", "name"));
		entFilters.add(person);
		
		/*
		SEntity alias = new SEntity(1, "ALIAS");
		alias.addAtt(new SAttributeUniqueName("alias", "abu"));
		entFilters.add(alias);
		*/
		
		/*
		SEntity title = new SEntity(2, "TEXT");
		title.addAtt(new SAttributeMultipleName("abu", "full_title_translit", "full_title"));
		entFilters.add(title);
		*/
		
		/*
		SRelationMultipleName title_to_person = new SRelationMultipleName(title, person, "had_patron", "was_dedicated_to", "was_created_by");
		relFilters.add(title_to_person);
		*/
		
		List<ResultEntry> rs = getAppBean().getSS().search(entFilters, relFilters);
		
		return rs;
		
	}
	

	public String getCurrentTemplate() {
		return currentTemplate;
	}

	public void setCurrentTemplate(String currentTemplate) {
		this.currentTemplate = currentTemplate;
	}

	public List<SelectItem> getTemplateList() {
		return templateList;
	}

	/**
	 * @return the findAuthorName
	 */
	public String getFindAuthorName() {
		return findAuthorName;
	}

	/**
	 * @param findAuthorName the findAuthorName to set
	 */
	public void setFindAuthorName(String findAuthorName) {
		this.findAuthorName = findAuthorName;
	}

    /**
     * @return the rs
     */
    public List<ResultEntry> getRs() {
        return rs;
    }

    /**
     * @return the searched
     */
    public boolean isSearched() {
        return searched;
    }

}