diff src/main/java/de/mpiwg/itgroup/ismi/merge/NonpublicEntitiesBean.java @ 196:dedd218ad565

new find-non-public-entities function for aliases with source or target relations.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Thu, 20 Dec 2018 19:13:34 +0100
parents b36a57a452a6
children
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/itgroup/ismi/merge/NonpublicEntitiesBean.java	Fri Dec 14 16:54:05 2018 +0100
+++ b/src/main/java/de/mpiwg/itgroup/ismi/merge/NonpublicEntitiesBean.java	Thu Dec 20 19:13:34 2018 +0100
@@ -79,6 +79,88 @@
 		logger.debug("Done findNonpublicDigitalizations.");
 	}
 	
+	/**
+	 * Find non-public ALIASes with source relations to public entities.
+	 */
+	public void actionFindNonpublicAliasSrcs() {
+		logger.debug("Start findNonpublicAliasSrcs...");
+		List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
+		/*
+		 * find ALIAS -*-> * relations
+		 */
+        browseBean = new FullEntityRepositoryBean();
+	    browseBean.setObjectClass(ALIAS);
+	    RelationFilter relFilter = new RelationFilter();
+	    relFilter.relObjectClass = "*";
+	    relFilter.tarObjectClass = "*";
+	    relFilters.add(relFilter);
+	    try {
+	    	// search all aliases with target relations
+            browseBean.searchByRelations(relFilters);
+            // filter out non-public ALIASes 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("*", "*");
+            		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 findNonpublicAliasSrcs.");
+	}
+	
+	/**
+	 * Find non-public ALIASes with target relations to public entities.
+	 */
+	public void actionFindNonpublicAliasTars() {
+		logger.debug("Start findNonpublicAliasTars...");
+		List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
+		/*
+		 * find ALIAS <-*- * relations
+		 */
+        browseBean = new FullEntityRepositoryBean();
+	    browseBean.setObjectClass(ALIAS);
+	    RelationFilter relFilter = new RelationFilter();
+	    relFilter.relObjectClass = "*";
+	    relFilter.srcObjectClass = "*";
+	    relFilters.add(relFilter);
+	    try {
+	    	// search all aliases with target relations
+            browseBean.searchByRelations(relFilters);
+            // filter out non-public ALIASes 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.getTargetRelations("*", "*");
+            		for (Relation rel : rels) {
+            			Entity tar = getWrapper().getEntityById(rel.getSourceId());
+            			if (tar.getIsPublic()) {
+            				nonpublicEntities.add(ent);
+            				break;
+            			}
+            		}
+            	}
+            }
+            browseBean.updateEntities(nonpublicEntities);
+            
+        } catch (Exception e) {
+            logger.error(e);
+        }
+		logger.debug("Done findNonpublicAliasTars.");
+	}
+	
     /**
      * Makes the selected Entities public.
      * Uses PrivacityUtils.changeEntityPrivacity().