diff src/main/java/de/mpiwg/itgroup/ismi/merge/NonpublicEntitiesBean.java @ 188:34ac2e1b323a

new Clean UI to find non-public digitalizations of public codices and make them public.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Tue, 06 Nov 2018 20:05:49 +0100
parents
children b36a57a452a6
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/mpiwg/itgroup/ismi/merge/NonpublicEntitiesBean.java	Tue Nov 06 20:05:49 2018 +0100
@@ -0,0 +1,127 @@
+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("MissingRelationsBean.reset()");
+	    browseBean = new FullEntityRepositoryBean();	    
+        logger.info("MissingRelationsBean.reset() Done.");
+	}
+	
+	
+	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 digitalizations public.
+     * Uses PrivacityUtils.setTextAndMorePrivacity().
+     * @return
+     */
+    public String actionMakeDigitalizationsPublic() {
+        logger.info("MAKE DIGITALIZATIONS 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() + " DIGITALIZATIONS were made public!");            
+        return null;
+    }
+    
+    
+    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;
+    }
+
+
+}