diff 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 diff
--- a/src/main/java/de/mpiwg/itgroup/ismi/merge/NonpublicEntitiesBean.java	Thu Nov 08 20:15:02 2018 +0100
+++ b/src/main/java/de/mpiwg/itgroup/ismi/merge/NonpublicEntitiesBean.java	Fri Nov 09 15:13:32 2018 +0100
@@ -32,12 +32,15 @@
 	}
 	
 	public synchronized void reset(){
-		logger.info("MissingRelationsBean.reset()");
+		logger.info("NonpublicEntitiesBean.reset()");
 	    browseBean = new FullEntityRepositoryBean();	    
-        logger.info("MissingRelationsBean.reset() Done.");
+        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>();
@@ -77,12 +80,12 @@
 	}
 	
     /**
-     * Makes the selected digitalizations public.
-     * Uses PrivacityUtils.setTextAndMorePrivacity().
+     * Makes the selected Entities public.
+     * Uses PrivacityUtils.changeEntityPrivacity().
      * @return
      */
-    public String actionMakeDigitalizationsPublic() {
-        logger.info("MAKE DIGITALIZATIONS PUBLIC");
+    public String actionMakeSelectedEntitiesPublic() {
+        logger.info("MAKE SELECTED ENTITIES PUBLIC");
         List<String> textMsg = new ArrayList<String>();
         try {
             List<Entity> entities = browseBean.getEntities();
@@ -100,10 +103,92 @@
             this.addGeneralMsg(msg);
             logger.debug(msg);
         }
-        addGeneralMsg(browseBean.getEntities().size() + " DIGITALIZATIONS were made public!");            
+        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;