Mercurial > hg > ismi-richfaces
changeset 122:fb3cb7d70f66
misidentification of witness should really work now.
author | casties |
---|---|
date | Tue, 10 Jan 2017 17:58:51 +0100 |
parents | 6f0e9a333c15 |
children | 32ce1f93ad33 |
files | src/main/java/de/mpiwg/itgroup/ismi/entry/beans/CurrentWitnessBean.java src/main/java/de/mpiwg/itgroup/ismi/util/guiComponents/Misidentification.java src/main/java/de/mpiwg/itgroup/ismi/util/guiComponents/MisidentificationTable.java src/main/resources/own-value.cfg.xml |
diffstat | 4 files changed, 80 insertions(+), 75 deletions(-) [+] |
line wrap: on
line diff
--- 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);
--- 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)) {
--- 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<SelectableObject<Misidentification>> list = new ArrayList<SelectableObject<Misidentification>>(); - + 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<SelectableObject<Misidentification>> toDelete = new ArrayList<SelectableObject<Misidentification>>(); - - for(SelectableObject<Misidentification> so : this.list){ - if(so.isSelected()){ + + for (SelectableObject<Misidentification> so : this.list) { + if (so.isSelected()) { toDelete.add(so); } } - for(SelectableObject<Misidentification> so : toDelete){ + for (SelectableObject<Misidentification> so : toDelete) { this.list.remove(so); } } - - public void listenerEditRef(ActionEvent event){ - SelectableObject<Misidentification> so = - (SelectableObject<Misidentification>)getRequestBean("item"); - if(so != null){ + + public void listenerEditRef(ActionEvent event) { + SelectableObject<Misidentification> so = (SelectableObject<Misidentification>) 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>(Misidentification.load(misattEntity, getWrapper(), getUserName()))); + this.list.add(new SelectableObject<Misidentification>( + 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>(Misidentification.create(title, title_translit, person, getWrapper(), getUserName()))); + 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())){ + + 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. + * 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<Relation> 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<Misidentification> getMisidentList() { List<Misidentification> list = new ArrayList<Misidentification>(); - for(SelectableObject<Misidentification> so : this.list){ + for (SelectableObject<Misidentification> so : this.list) { list.add(so.getObj()); } return list; } - + public List<SelectableObject<Misidentification>> getList() { return list; }
--- 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 @@ </own-value-rule> - <own-value-rule id="misident_01"> + <own-value-rule id="misident-witness"> <target-relation name="has_misidentification" substring="false"> - <source object-class="WITNESS"> - <source-relation name="is_exemplar_of" substring="false"> - <target object-class="TEXT"> - <attribute name="full_title_translit" end-node="true"/> - </target> - </source-relation> + <source object-class="WITNESS" end-node="true"> </source> </target-relation> </own-value-rule> - <own-value-rule id="misident_02"> + <own-value-rule id="misident-person"> <source-relation name="misattributed_to" substring="false"> <target object-class="PERSON"> <attribute name="name_translit" end-node="true"/> @@ -348,9 +343,9 @@ </print-rule> <print-rule for="MISIDENTIFICATION"> - <formatstr value="%misident_01% to %misident_02%"/> - <entry own-value-rule="misident_01"/> - <entry own-value-rule="misident_02"/> + <formatstr value="%misident-witness% to %misident-person%"/> + <entry own-value-rule="misident-witness"/> + <entry own-value-rule="misident-person"/> </print-rule> <print-rule for="REFERENCE">