changeset 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 5309d29b3061
children c2c37d41cbde
files src/main/java/de/mpiwg/itgroup/ismi/merge/NonpublicEntitiesBean.java src/main/webapp/clean/components/nonpublicAliasSrc.xhtml src/main/webapp/clean/components/nonpublicAliasTar.xhtml src/main/webapp/clean/nonpublicEntities.xhtml
diffstat 4 files changed, 412 insertions(+), 0 deletions(-) [+]
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().
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/webapp/clean/components/nonpublicAliasSrc.xhtml	Thu Dec 20 19:13:34 2018 +0100
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:a4j="http://richfaces.org/a4j"
+	xmlns:rich="http://richfaces.org/rich">
+
+<body>
+	<ui:composition>
+
+        <h2 style="color:black">non-public Aliases sources of public entities</h2>
+
+		<h:panelGrid columns="3" styleClass="displayPanel"
+			columnClasses="displayPanelColumn01,displayPanelColumn02">
+
+            <a4j:commandButton value="show non-public Aliases"
+                actionListener="#{Session.nonpublicEntities.actionFindNonpublicAliasSrcs}"
+                render="showAliasSrcPanel,aliasSrcPubButton" />
+            <h:outputText/>
+            <h:outputText/>
+
+		</h:panelGrid>
+
+		<h:panelGrid id="showAliasSrcPanel" columns="1"
+			style="margin-left: auto; margin-right: auto; text-align: center; width: 100%;">
+
+			<h:outputText
+				value="#{Session.nonpublicEntities.browseBean.resultSummaryMsg}"
+				rendered="#{!empty Session.nonpublicEntities.browseBean.resultSummaryMsg}"
+				styleClass="summaryMsg" />
+
+			<h:column
+				rendered="#{!empty Session.nonpublicEntities.browseBean.entities}">
+				<h:outputText value="go to page" styleClass="sumaryMsg" />
+				<h:inputText value="#{Session.nonpublicEntities.browseBean.page}"
+					size="4" />
+				<h:commandButton value="submit"
+					actionListener="#{Session.nonpublicEntities.browseBean.actionGoToPageAdvancedResult}" />
+				<h:outputText value=" #{Session.nonpublicEntities.browseBean.pageMsg}"
+					rendered="#{!empty Session.nonpublicEntities.browseBean.pageMsg}"
+					style="color:red" />
+			</h:column>
+
+
+			<h:column
+				rendered="#{!empty Session.nonpublicEntities.browseBean.entities}">
+				<h:panelGroup>
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-first.gif"
+						style="border:none;" title="First Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedFirst}" />
+
+					<h:commandButton image="/resources/css/xp/css-images/arrow-fr.gif"
+						style="border:none;" title="Fast Backwards"
+						action="#{Session.nonpublicEntities.browseBean.advancedFastRewind}" />
+
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-previous.gif"
+						style="border:none;" title="Previous Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedPrevious}" />
+
+					<h:outputText
+						value="#{Session.nonpublicEntities.browseBean.advancedPaginator.recordStatus}"
+						styleClass="sumaryMsg" />
+
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-next.gif"
+						style="border:none;" title="Next Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedNext}" />
+
+					<h:commandButton image="/resources/css/xp/css-images/arrow-ff.gif"
+						style="border:none;" title="Fast Forward"
+						action="#{Session.nonpublicEntities.browseBean.advancedFastForward}" />
+
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-last.gif"
+						style="border:none;" title="Last Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedLast}" />
+				</h:panelGroup>
+			</h:column>
+
+			<rich:dataTable id="aliasSrcDataTable" rows="30"
+				value="#{Session.nonpublicEntities.browseBean.currentEntities}"
+				rendered="#{!empty Session.nonpublicEntities.browseBean.currentEntities}"
+				var="entity" styleClass="rsPanel" columnClasses="rsPanelColumn">
+				<h:column style="text-align:left">
+                    <f:facet name="header">Text</f:facet>
+                    <h:outputLink target="_blank"
+                        value="#{ApplicationBean1.root}/browse/entityDetails.xhtml?eid=#{entity.id}">
+                        <h:outputText
+                            value="#{entity.ownValue} [#{entity.id}]" />
+                    </h:outputLink>
+					<h:commandButton
+						action="#{Session.nonpublicEntities.browseBean.actionEdit}"
+						rendered="#{Session.canEdit}"
+						image="/resources/css/xp/css-images/edit16.gif"
+						title="Edit this entity" />
+				</h:column>
+                <h:column style="text-align:left">
+                    <f:facet name="header">State</f:facet>
+                    <h:outputText value="#{entity.privacity}" />
+                </h:column>
+			</rich:dataTable>
+
+			<h:column
+				rendered="#{!empty Session.nonpublicEntities.browseBean.entities}">
+				<h:panelGroup>
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-first.gif"
+						style="border:none;" title="First Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedFirst}" />
+
+					<h:commandButton image="/resources/css/xp/css-images/arrow-fr.gif"
+						style="border:none;" title="Fast Backwards"
+						action="#{Session.nonpublicEntities.browseBean.advancedFastRewind}" />
+
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-previous.gif"
+						style="border:none;" title="Previous Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedPrevious}" />
+
+					<h:outputText
+						value="#{Session.nonpublicEntities.browseBean.advancedPaginator.recordStatus}"
+						styleClass="sumaryMsg" />
+
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-next.gif"
+						style="border:none;" title="Next Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedNext}" />
+
+					<h:commandButton image="/resources/css/xp/css-images/arrow-ff.gif"
+						style="border:none;" title="Fast Forward"
+						action="#{Session.nonpublicEntities.browseBean.advancedFastForward}" />
+
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-last.gif"
+						style="border:none;" title="Last Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedLast}" />
+				</h:panelGroup>
+			</h:column>
+
+
+		</h:panelGrid>
+
+		<h:panelGrid columns="3" styleClass="displayPanel" id="aliasSrcPubButton"
+			columnClasses="displayPanelColumn01,displayPanelColumn02">
+
+			<a4j:commandButton value="make all these Aliases public"
+				rendered="#{!empty Session.nonpublicEntities.browseBean.entities}"
+				actionListener="#{Session.nonpublicEntities.actionMakeSelectedEntitiesPublic}"
+				render="showDigiPanel" />
+            <h:outputText/>
+            <h:outputText/>
+
+		</h:panelGrid>
+
+
+	</ui:composition>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/webapp/clean/components/nonpublicAliasTar.xhtml	Thu Dec 20 19:13:34 2018 +0100
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:a4j="http://richfaces.org/a4j"
+	xmlns:rich="http://richfaces.org/rich">
+
+<body>
+	<ui:composition>
+
+        <h2 style="color:black">non-public Aliases targets of public entities</h2>
+
+		<h:panelGrid columns="3" styleClass="displayPanel"
+			columnClasses="displayPanelColumn01,displayPanelColumn02">
+
+            <a4j:commandButton value="show non-public Aliases"
+                actionListener="#{Session.nonpublicEntities.actionFindNonpublicAliasTars}"
+                render="showAliasTarPanel,aliasTarPubButton" />
+            <h:outputText/>
+            <h:outputText/>
+
+		</h:panelGrid>
+
+		<h:panelGrid id="showAliasTarPanel" columns="1"
+			style="margin-left: auto; margin-right: auto; text-align: center; width: 100%;">
+
+			<h:outputText
+				value="#{Session.nonpublicEntities.browseBean.resultSummaryMsg}"
+				rendered="#{!empty Session.nonpublicEntities.browseBean.resultSummaryMsg}"
+				styleClass="summaryMsg" />
+
+			<h:column
+				rendered="#{!empty Session.nonpublicEntities.browseBean.entities}">
+				<h:outputText value="go to page" styleClass="sumaryMsg" />
+				<h:inputText value="#{Session.nonpublicEntities.browseBean.page}"
+					size="4" />
+				<h:commandButton value="submit"
+					actionListener="#{Session.nonpublicEntities.browseBean.actionGoToPageAdvancedResult}" />
+				<h:outputText value=" #{Session.nonpublicEntities.browseBean.pageMsg}"
+					rendered="#{!empty Session.nonpublicEntities.browseBean.pageMsg}"
+					style="color:red" />
+			</h:column>
+
+
+			<h:column
+				rendered="#{!empty Session.nonpublicEntities.browseBean.entities}">
+				<h:panelGroup>
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-first.gif"
+						style="border:none;" title="First Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedFirst}" />
+
+					<h:commandButton image="/resources/css/xp/css-images/arrow-fr.gif"
+						style="border:none;" title="Fast Backwards"
+						action="#{Session.nonpublicEntities.browseBean.advancedFastRewind}" />
+
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-previous.gif"
+						style="border:none;" title="Previous Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedPrevious}" />
+
+					<h:outputText
+						value="#{Session.nonpublicEntities.browseBean.advancedPaginator.recordStatus}"
+						styleClass="sumaryMsg" />
+
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-next.gif"
+						style="border:none;" title="Next Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedNext}" />
+
+					<h:commandButton image="/resources/css/xp/css-images/arrow-ff.gif"
+						style="border:none;" title="Fast Forward"
+						action="#{Session.nonpublicEntities.browseBean.advancedFastForward}" />
+
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-last.gif"
+						style="border:none;" title="Last Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedLast}" />
+				</h:panelGroup>
+			</h:column>
+
+			<rich:dataTable id="aliasTarDataTable" rows="30"
+				value="#{Session.nonpublicEntities.browseBean.currentEntities}"
+				rendered="#{!empty Session.nonpublicEntities.browseBean.currentEntities}"
+				var="entity" styleClass="rsPanel" columnClasses="rsPanelColumn">
+				<h:column style="text-align:left">
+                    <f:facet name="header">Text</f:facet>
+                    <h:outputLink target="_blank"
+                        value="#{ApplicationBean1.root}/browse/entityDetails.xhtml?eid=#{entity.id}">
+                        <h:outputText
+                            value="#{entity.ownValue} [#{entity.id}]" />
+                    </h:outputLink>
+					<h:commandButton
+						action="#{Session.nonpublicEntities.browseBean.actionEdit}"
+						rendered="#{Session.canEdit}"
+						image="/resources/css/xp/css-images/edit16.gif"
+						title="Edit this entity" />
+				</h:column>
+                <h:column style="text-align:left">
+                    <f:facet name="header">State</f:facet>
+                    <h:outputText value="#{entity.privacity}" />
+                </h:column>
+			</rich:dataTable>
+
+			<h:column
+				rendered="#{!empty Session.nonpublicEntities.browseBean.entities}">
+				<h:panelGroup>
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-first.gif"
+						style="border:none;" title="First Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedFirst}" />
+
+					<h:commandButton image="/resources/css/xp/css-images/arrow-fr.gif"
+						style="border:none;" title="Fast Backwards"
+						action="#{Session.nonpublicEntities.browseBean.advancedFastRewind}" />
+
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-previous.gif"
+						style="border:none;" title="Previous Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedPrevious}" />
+
+					<h:outputText
+						value="#{Session.nonpublicEntities.browseBean.advancedPaginator.recordStatus}"
+						styleClass="sumaryMsg" />
+
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-next.gif"
+						style="border:none;" title="Next Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedNext}" />
+
+					<h:commandButton image="/resources/css/xp/css-images/arrow-ff.gif"
+						style="border:none;" title="Fast Forward"
+						action="#{Session.nonpublicEntities.browseBean.advancedFastForward}" />
+
+					<h:commandButton
+						image="/resources/css/xp/css-images/arrow-last.gif"
+						style="border:none;" title="Last Page"
+						action="#{Session.nonpublicEntities.browseBean.advancedLast}" />
+				</h:panelGroup>
+			</h:column>
+
+
+		</h:panelGrid>
+
+		<h:panelGrid columns="3" styleClass="displayPanel" id="aliasTarPubButton"
+			columnClasses="displayPanelColumn01,displayPanelColumn02">
+
+			<a4j:commandButton value="make all these Aliases public"
+				rendered="#{!empty Session.nonpublicEntities.browseBean.entities}"
+				actionListener="#{Session.nonpublicEntities.actionMakeSelectedEntitiesPublic}"
+				render="showDigiPanel" />
+            <h:outputText/>
+            <h:outputText/>
+
+		</h:panelGrid>
+
+
+	</ui:composition>
+</body>
+</html>
--- a/src/main/webapp/clean/nonpublicEntities.xhtml	Fri Dec 14 16:54:05 2018 +0100
+++ b/src/main/webapp/clean/nonpublicEntities.xhtml	Thu Dec 20 19:13:34 2018 +0100
@@ -24,6 +24,14 @@
     				itemChangeListener="#{Session.nonpublicEntities.listenerTabChange}"
 					activeItem="#{Session.nonpublicEntities.selectedTab}">
 				
+                    <rich:tab header="Alias (src)" name="aliasSrc">
+                        <ui:include src="components/nonpublicAliasSrc.xhtml" />
+                    </rich:tab>
+                    
+                    <rich:tab header="Alias (tar)" name="aliasTar">
+                        <ui:include src="components/nonpublicAliasTar.xhtml" />
+                    </rich:tab>
+                    
                     <rich:tab header="Digitalization" name="dig">
                         <ui:include src="components/nonpublicDigitalization.xhtml" />
                     </rich:tab>