# HG changeset patch # User casties # Date 1484067531 -3600 # Node ID fb3cb7d70f66db76d167e452d090ff6b279a85f8 # Parent 6f0e9a333c15719bbd91992a954cd9afedaee9aa misidentification of witness should really work now. diff -r 6f0e9a333c15 -r fb3cb7d70f66 src/main/java/de/mpiwg/itgroup/ismi/entry/beans/CurrentWitnessBean.java --- a/src/main/java/de/mpiwg/itgroup/ismi/entry/beans/CurrentWitnessBean.java Mon Jan 09 20:37:29 2017 +0100 +++ b/src/main/java/de/mpiwg/itgroup/ismi/entry/beans/CurrentWitnessBean.java Tue Jan 10 17:58:51 2017 +0100 @@ -241,7 +241,7 @@ // WITNESS -> is_exemplar_of -> TEXT this.entity.replaceSourceRelation(this.titleLo.entity, TEXT, is_exemplar_of); - + // legacy relations(?) this.entity.removeAllSourceRelationsByName(is_possible_exemplar_of); this.entity.removeAllSourceRelations(rel_has_title_written_as, ALIAS); this.entity.removeAllSourceRelations(rel_has_author_written_as, ALIAS); diff -r 6f0e9a333c15 -r fb3cb7d70f66 src/main/java/de/mpiwg/itgroup/ismi/util/guiComponents/Misidentification.java --- a/src/main/java/de/mpiwg/itgroup/ismi/util/guiComponents/Misidentification.java Mon Jan 09 20:37:29 2017 +0100 +++ b/src/main/java/de/mpiwg/itgroup/ismi/util/guiComponents/Misidentification.java Tue Jan 10 17:58:51 2017 +0100 @@ -94,8 +94,8 @@ if (misident.isLightweight()) { misident = ot.getEntityByIdWithContent(misident.getId()); - obj.setMisident(misident); } + obj.setMisident(misident); // load title if (misident.containsAttribute(TITLE)) { diff -r 6f0e9a333c15 -r fb3cb7d70f66 src/main/java/de/mpiwg/itgroup/ismi/util/guiComponents/MisidentificationTable.java --- a/src/main/java/de/mpiwg/itgroup/ismi/util/guiComponents/MisidentificationTable.java Mon Jan 09 20:37:29 2017 +0100 +++ b/src/main/java/de/mpiwg/itgroup/ismi/util/guiComponents/MisidentificationTable.java Tue Jan 10 17:58:51 2017 +0100 @@ -7,6 +7,7 @@ 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; @@ -17,123 +18,132 @@ private static Logger logger = Logger.getLogger(MisidentificationTable.class); private List> list = new ArrayList>(); - + private Misidentification misident; - + private ListenerObject lo; - //private String attName; - //private String oc; - - public MisidentificationTable(){ + // private String attName; + // private String oc; + + public MisidentificationTable() { lo = new ListenerObject(PERSON, "name_translit"); } - - public void listenerRemove(ActionEvent event){ + + public void listenerRemove(ActionEvent event) { List> toDelete = new ArrayList>(); - - for(SelectableObject so : this.list){ - if(so.isSelected()){ + + for (SelectableObject so : this.list) { + if (so.isSelected()) { toDelete.add(so); } } - for(SelectableObject so : toDelete){ + for (SelectableObject so : toDelete) { this.list.remove(so); } } - - public void listenerEditRef(ActionEvent event){ - SelectableObject so = - (SelectableObject)getRequestBean("item"); - if(so != null){ + + public void listenerEditRef(ActionEvent event) { + SelectableObject so = (SelectableObject) getRequestBean("item"); + if (so != null) { this.misident = so.getObj(); } } - - public void listenerSaveRef(ActionEvent event){ + + public void listenerSaveRef(ActionEvent event) { this.misident = null; } - - public void listenerCancel(ActionEvent event){ - //@TODO + + public void listenerCancel(ActionEvent event) { + // @TODO } - + public void listenerCreate(ActionEvent event) { Entity ent = this.lo.entity; - if(ent != null & ent.isPersistent()){ + if (ent != null & ent.isPersistent()) { // FIXME: where to get title? - - this.create(null, null, ent); + + this.create(null, null, ent); } } - - public void load(Entity misattEntity){ - if(!containsEntity(misattEntity)){ - //TODO sort - //Collections.sort(this.misattList); + + public void load(Entity misattEntity) { + if (!containsEntity(misattEntity)) { + // TODO sort + // Collections.sort(this.misattList); try { - this.list.add(new SelectableObject(Misidentification.load(misattEntity, getWrapper(), getUserName()))); + this.list.add(new SelectableObject( + Misidentification.load(misattEntity, getWrapper(), getUserName()))); } catch (Exception e) { addErrorMsg(e.getMessage()); logger.error(e); } - }else{ + } else { addGeneralMsg("This entity has been already inserted!"); } } - - public void create(String title, String title_translit, Entity person){ + + public void create(String title, String title_translit, Entity person) { try { - this.list.add(new SelectableObject(Misidentification.create(title, title_translit, person, getWrapper(), getUserName()))); + this.list.add(new SelectableObject( + Misidentification.create(title, title_translit, person, getWrapper(), getUserName()))); } catch (Exception e) { addErrorMsg(e.getMessage()); logger.error(e); } } - - private boolean containsEntity(Entity ent){ - for(SelectableObject so : this.list){ - if(so.getObj().getPerson() != null && so.getObj().getPerson().getId().equals(ent.getId())){ + + private boolean containsEntity(Entity ent) { + for (SelectableObject 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. + * Save all misidentifications. Deletes removed misidentifications. * - * @param text + * @param witness * @return * @throws Exception */ - public Entity saveMisidentifications(Entity text) throws Exception{ - for(Misidentification misatt : this.getMisidentList()){ - text = misatt.saveAndGetMisidentification(text); + public Entity saveMisidentifications(Entity witness) throws Exception { + // remember old misidentifications + List oldRels = witness.getSourceRelations(Misidentification.HAS_MISIDENT, Misidentification.MISIDENT); + // delete old relations + witness.removeAllSourceRelationsByName(Misidentification.HAS_MISIDENT); + // create new misidentifications + for (Misidentification misident : this.getMisidentList()) { + witness = misident.saveAndGetMisidentification(witness); } - return text; + // check for orphaned old misidentifications + for (Relation rel : oldRels) { + boolean match = false; + for (Misidentification mi : this.getMisidentList()) { + Entity miEnt = mi.getMisident(); + if (miEnt != null && rel.getTargetId() == miEnt.getId()) { + match = true; + break; + } + } + if (!match) { + Entity ent = getWrapper().getEntityById(rel.getTargetId()); + logger.warn("Orphaned MISIDENTIFICATION will be deleted: "+ent); + getWrapper().removeCurrentVersionEntity(ent, getUserName()); + } + } + return witness; } - - + private List getMisidentList() { List list = new ArrayList(); - for(SelectableObject so : this.list){ + for (SelectableObject so : this.list) { list.add(so.getObj()); } return list; } - + public List> getList() { return list; } diff -r 6f0e9a333c15 -r fb3cb7d70f66 src/main/resources/own-value.cfg.xml --- a/src/main/resources/own-value.cfg.xml Mon Jan 09 20:37:29 2017 +0100 +++ b/src/main/resources/own-value.cfg.xml Tue Jan 10 17:58:51 2017 +0100 @@ -59,19 +59,14 @@ - + - - - - - - + - + @@ -348,9 +343,9 @@ - - - + + +