Mercurial > hg > ismi-richfaces
view src/main/java/de/mpiwg/itgroup/ismi/util/guiComponents/MisattributionTable.java @ 128:aef031e76278
105: MISATTRIBUTION should be deleted when detached
Task-Url: https://it-dev.mpiwg-berlin.mpg.de/tracs/ismi/ticket/105
author | casties |
---|---|
date | Wed, 01 Feb 2017 18:20:04 +0100 |
parents | ca36b24a22f7 |
children | 502ae5b1a07d |
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 org.mpi.openmind.repository.bo.Relation; import de.mpiwg.itgroup.ismi.auxObjects.ListenerObject; import de.mpiwg.itgroup.ismi.entry.beans.AbstractISMIBean; import de.mpiwg.itgroup.ismi.utils.SelectableObject; public class MisattributionTable extends AbstractISMIBean { private static final long serialVersionUID = -2756216426560705499L; private static Logger logger = Logger.getLogger(MisattributionTable.class); private List<SelectableObject<Misattribution>> list = new ArrayList<SelectableObject<Misattribution>>(); private Misattribution misatt; private ListenerObject lo = new ListenerObject(PERSON, "name_translit"); //private String attName; //private String oc; public MisattributionTable(){ /* this.attName = attName; this.oc = oc; */ } public void listenerRemove(ActionEvent event){ List<SelectableObject<Misattribution>> toDelete = new ArrayList<SelectableObject<Misattribution>>(); for(SelectableObject<Misattribution> so : this.list){ if(so.isSelected()){ toDelete.add(so); } } for(SelectableObject<Misattribution> so : toDelete){ this.list.remove(so); } } public void listenerEditRef(ActionEvent event){ SelectableObject<Misattribution> so = (SelectableObject<Misattribution>)getRequestBean("item"); if(so != null){ this.misatt = so.getObj(); } } public void listenerSaveRef(ActionEvent event){ this.misatt = null; } public void listenerCancel(ActionEvent event){ //@TODO } public void listenerCreate(ActionEvent event){ if(this.lo.entity != null & this.lo.entity.isPersistent()){ this.create(this.lo.entity); } } public void load(Entity misattEntity){ if(!containsEntity(misattEntity)){ //TODO sort //Collections.sort(this.misattList); try { this.list.add(new SelectableObject<Misattribution>(Misattribution.load(misattEntity, getWrapper(), getUserName()))); } catch (Exception e) { addErrorMsg(e.getMessage()); e.printStackTrace(); } }else{ addGeneralMsg("This entity has been already inserted!"); } } public void create(Entity person){ try { this.list.add(new SelectableObject<Misattribution>(Misattribution.create(person, getWrapper(), getUserName()))); } catch (Exception e) { addErrorMsg(e.getMessage()); e.printStackTrace(); } } private boolean containsEntity(Entity ent){ for(SelectableObject<Misattribution> so : this.list){ if(so.getObj().getPerson() != null && so.getObj().getPerson().getId().equals(ent.getId())){ return true; } } return false; } /** * Save all misattributions. * * Deletes removed misattributions. * * @param text * @return * @throws Exception */ public Entity saveMisattributions(Entity text) throws Exception { // remember old misattributions List<Relation> oldRels = text.getSourceRelations(Misattribution.HAS_AUTHOR_MISATT, Misattribution.MISATT); // delete old relations text.removeAllSourceRelationsByName(Misattribution.HAS_AUTHOR_MISATT); // create new misattributions for (Misattribution misatt : this.getMisattList()) { text = misatt.saveAndGetMisattribution(text); } // check for orphaned old misattributions for (Relation rel : oldRels) { boolean match = false; for (Misattribution mi : this.getMisattList()) { Entity miEnt = mi.getMisatt(); if (miEnt != null && rel.getTargetId() == miEnt.getId()) { match = true; break; } } if (!match) { Entity ent = getWrapper().getEntityById(rel.getTargetId()); logger.warn("Orphaned MISATTRIBUTION will be deleted: " + ent); getWrapper().removeCurrentVersionEntity(ent, getUserName()); } } return text; } private List<Misattribution> getMisattList() { List<Misattribution> list = new ArrayList<Misattribution>(); for(SelectableObject<Misattribution> so : this.list){ list.add(so.getObj()); } return list; } public List<SelectableObject<Misattribution>> getList() { return list; } public void setList(List<SelectableObject<Misattribution>> list) { this.list = list; } public Misattribution getMisatt() { return misatt; } public void setMisatt(Misattribution misatt) { this.misatt = misatt; } public ListenerObject getLo() { return lo; } public void setLo(ListenerObject lo) { this.lo = lo; } }