Mercurial > hg > ismi-richfaces
view src/main/java/de/mpiwg/itgroup/ismi/merge/NonpublicEntitiesBean.java @ 190:b36a57a452a6
new Clean UI to find non-public references and witnesses and make them public.
author | Robert Casties <casties@mpiwg-berlin.mpg.de> |
---|---|
date | Fri, 09 Nov 2018 15:13:32 +0100 |
parents | 34ac2e1b323a |
children | dedd218ad565 |
line wrap: on
line source
package de.mpiwg.itgroup.ismi.merge; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.mpi.openmind.repository.bo.Entity; import org.mpi.openmind.repository.bo.Relation; import org.mpi.openmind.repository.services.utils.RelationFilter; import org.richfaces.event.ItemChangeEvent; import de.mpiwg.itgroup.ismi.browse.EntityRepositoryBean; import de.mpiwg.itgroup.ismi.browse.FullEntityRepositoryBean; import de.mpiwg.itgroup.ismi.entry.beans.AbstractISMIBean; import de.mpiwg.itgroup.ismi.entry.utils.PrivacityUtils; public class NonpublicEntitiesBean extends AbstractISMIBean implements Serializable{ private static Logger logger = Logger.getLogger(NonpublicEntitiesBean.class); private static final long serialVersionUID = 1L; protected FullEntityRepositoryBean browseBean; protected String selectedTab = "aut"; public NonpublicEntitiesBean(){ //logger.info("AdvancedSearchBean"); this.reset(); } public synchronized void reset(){ logger.info("NonpublicEntitiesBean.reset()"); browseBean = new FullEntityRepositoryBean(); logger.info("NonpublicEntitiesBean.reset() Done."); } /** * Find non-public DIGITALIZATIONs of public CODEXs. */ public void actionFindNonpublicDigitalizations() { logger.debug("Start findNonpublicDigitalizations..."); List<RelationFilter> relFilters = new ArrayList<RelationFilter>(); /* * find DIGITALIZATION is_digitalization_of CODEX relation */ browseBean = new FullEntityRepositoryBean(); browseBean.setObjectClass(DIGITALIZATION); RelationFilter relFilter = new RelationFilter(); relFilter.relObjectClass = "is_digitalization_of"; relFilter.tarObjectClass = "CODEX"; relFilters.add(relFilter); try { // search all digitalizations browseBean.searchByRelations(relFilters); // filter out non-public DIGITALIZATIONs of public CODEXs List<Entity> entities = browseBean.getEntities(); List<Entity> nonpublicEntities = new ArrayList<Entity>(); for (Entity ent : entities) { if (!ent.getIsPublic()) { List<Relation> rels = ent.getSourceRelations("is_digitalization_of", CODEX); for (Relation rel : rels) { Entity tar = getWrapper().getEntityById(rel.getTargetId()); if (tar.getIsPublic()) { nonpublicEntities.add(ent); break; } } } } browseBean.updateEntities(nonpublicEntities); } catch (Exception e) { logger.error(e); } logger.debug("Done findNonpublicDigitalizations."); } /** * Makes the selected Entities public. * Uses PrivacityUtils.changeEntityPrivacity(). * @return */ public String actionMakeSelectedEntitiesPublic() { logger.info("MAKE SELECTED ENTITIES PUBLIC"); List<String> textMsg = new ArrayList<String>(); try { List<Entity> entities = browseBean.getEntities(); if (entities.size() == 0) return null; for (Entity ent : entities) { PrivacityUtils.changeEntityPrivacity(ent, true, getWrapper()); textMsg.add("Set public=true on "+ent.getShortString()+"\n"); } // save only public state getWrapper().saveEntityListAsNodeWithoutContent(entities, null); } catch (Exception e) { logger.error(e); } for (String msg : textMsg) { this.addGeneralMsg(msg); logger.debug(msg); } addGeneralMsg(browseBean.getEntities().size() + " Entities were made public!"); return null; } /** * Find non-public REFERENCEs of public Entities. */ public void actionFindNonpublicReferences() { logger.debug("Start findNonpublicReferences..."); List<RelationFilter> relFilters = new ArrayList<RelationFilter>(); /* * find REFERENCE is_reference_of * relations */ browseBean = new FullEntityRepositoryBean(); browseBean.setObjectClass(REFERENCE); RelationFilter relFilter = new RelationFilter(); relFilter.relObjectClass = "is_reference_of"; relFilter.tarObjectClass = "*"; relFilters.add(relFilter); try { // search all References browseBean.searchByRelations(relFilters); // filter out non-public REFERENCEs of public Entities List<Entity> entities = browseBean.getEntities(); List<Entity> nonpublicEntities = new ArrayList<Entity>(); for (Entity ent : entities) { if (!ent.getIsPublic()) { List<Relation> rels = ent.getSourceRelations("is_reference_of", "*"); for (Relation rel : rels) { Entity tar = getWrapper().getEntityById(rel.getTargetId()); if (tar.getIsPublic()) { nonpublicEntities.add(ent); break; } } } } browseBean.updateEntities(nonpublicEntities); } catch (Exception e) { logger.error(e); } logger.debug("Done findNonpublicReferences."); } /** * Find non-public WITNESSes of public TEXTs. */ public void actionFindNonpublicWitnesses() { logger.debug("Start findNonpublicWitnesses..."); List<RelationFilter> relFilters = new ArrayList<RelationFilter>(); /* * find WITNESS is_exemplar_of TEXT relation */ browseBean = new FullEntityRepositoryBean(); browseBean.setObjectClass(WITNESS); RelationFilter relFilter = new RelationFilter(); relFilter.relObjectClass = "is_exemplar_of"; relFilter.tarObjectClass = "TEXT"; relFilters.add(relFilter); try { // search all Witnesses browseBean.searchByRelations(relFilters); // filter out non-public Witnesses of public CODEXs List<Entity> entities = browseBean.getEntities(); List<Entity> nonpublicEntities = new ArrayList<Entity>(); for (Entity ent : entities) { if (!ent.getIsPublic()) { List<Relation> rels = ent.getSourceRelations("is_exemplar_of", TEXT); for (Relation rel : rels) { Entity tar = getWrapper().getEntityById(rel.getTargetId()); if (tar.getIsPublic()) { nonpublicEntities.add(ent); break; } } } } browseBean.updateEntities(nonpublicEntities); } catch (Exception e) { logger.error(e); } logger.debug("Done findNonpublicWitnesses."); } public EntityRepositoryBean getBrowseBean() { return browseBean; } public void listenerTabChange(ItemChangeEvent event) { reset(); String url = "?formIndex=" + selectedTab; redirect(null, url); } public String getSelectedTab() { return selectedTab; } public void setSelectedTab(String selectedMissingRelationsTab) { selectedTab = selectedMissingRelationsTab; } }