view src/main/java/de/mpiwg/itgroup/ismi/util/guiComponents/MisidentificationTable.java @ 121:6f0e9a333c15

misidentification of witness mostly works now.
author casties
date Mon, 09 Jan 2017 20:37:29 +0100
parents 71638720fe2f
children fb3cb7d70f66
line wrap: on
line source

package de.mpiwg.itgroup.ismi.util.guiComponents;

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

import javax.faces.event.ActionEvent;

import org.apache.log4j.Logger;
import org.mpi.openmind.repository.bo.Entity;

import de.mpiwg.itgroup.ismi.auxObjects.ListenerObject;
import de.mpiwg.itgroup.ismi.entry.beans.AbstractISMIBean;
import de.mpiwg.itgroup.ismi.utils.SelectableObject;

public class MisidentificationTable extends AbstractISMIBean {
	private static final long serialVersionUID = -2756216426560705498L;
	private static Logger logger = Logger.getLogger(MisidentificationTable.class);

	private List<SelectableObject<Misidentification>> list = new ArrayList<SelectableObject<Misidentification>>();
	
	private Misidentification misident;
	
	private ListenerObject lo;
	//private String attName;
	//private String oc;
	
	public MisidentificationTable(){
		lo = new ListenerObject(PERSON, "name_translit");
	}
	
	public void listenerRemove(ActionEvent event){		
		List<SelectableObject<Misidentification>> toDelete = new ArrayList<SelectableObject<Misidentification>>();
		
		for(SelectableObject<Misidentification> so : this.list){
			if(so.isSelected()){
				toDelete.add(so);
			}
		}
		for(SelectableObject<Misidentification> so : toDelete){
			this.list.remove(so);
		}
	}
	
	public void listenerEditRef(ActionEvent event){
		SelectableObject<Misidentification> so = 
			(SelectableObject<Misidentification>)getRequestBean("item");
		if(so != null){
			this.misident = so.getObj();
		}
	}
	
	public void listenerSaveRef(ActionEvent event){
		this.misident = null;
	}
	
	public void listenerCancel(ActionEvent event){
		//@TODO
	}
	
	public void listenerCreate(ActionEvent event) {
		Entity ent = this.lo.entity;
		if(ent != null & ent.isPersistent()){
			// FIXME: where to get title?
			
			this.create(null, null, ent);	
		}
	}
	
	public void load(Entity misattEntity){
		if(!containsEntity(misattEntity)){
			//TODO sort
			//Collections.sort(this.misattList);
			try {
				this.list.add(new SelectableObject<Misidentification>(Misidentification.load(misattEntity, getWrapper(), getUserName())));
			} catch (Exception e) {
				addErrorMsg(e.getMessage());
				logger.error(e);
			}
		}else{
			addGeneralMsg("This entity has been already inserted!");
		}
	}
	
	public void create(String title, String title_translit, Entity person){
		try {
			this.list.add(new SelectableObject<Misidentification>(Misidentification.create(title, title_translit, person, getWrapper(), getUserName())));
		} catch (Exception e) {
			addErrorMsg(e.getMessage());
			logger.error(e);
		}
	}
	
	private boolean containsEntity(Entity ent){
		for(SelectableObject<Misidentification> so : this.list){
			if(so.getObj().getPerson() != null && so.getObj().getPerson().getId().equals(ent.getId())){
				return true;
			}
		}
		return false;
	}
	
	/*
	public void listenerChanged(ValueChangeEvent event) {
		this.lo = changeListener(event, lo, this.oc, this.attName);
		if(lo.entity != null && lo.entity.isPersistent()){
			lo.statusImage.setStatus(StatusImage.STATUS_OK);
		}else{
			lo.statusImage.setStatus(StatusImage.STATUS_UNSET);
		}
	}
	*/

	
	/**
	 * Save all misidentifications.
	 * 
	 * @param text
	 * @return
	 * @throws Exception
	 */
	public Entity saveMisidentifications(Entity text) throws Exception{
		for(Misidentification misatt : this.getMisidentList()){
			text = misatt.saveAndGetMisidentification(text);
		}
		return text;
	}
	
	
	private List<Misidentification> getMisidentList() {
		List<Misidentification> list = new ArrayList<Misidentification>();
		for(SelectableObject<Misidentification> so : this.list){
			list.add(so.getObj());
		}
		return list;
	}
	
	public List<SelectableObject<Misidentification>> getList() {
		return list;
	}

	public void setList(List<SelectableObject<Misidentification>> list) {
		this.list = list;
	}

	public Misidentification getMisident() {
		return misident;
	}

	public void setMisident(Misidentification misident) {
		this.misident = misident;
	}

	public ListenerObject getLo() {
		return lo;
	}

	public void setLo(ListenerObject lo) {
		this.lo = lo;
	}
}