view src/main/java/de/mpiwg/itgroup/ismi/merge/MissingRelationsBean.java @ 211:631864bfec2e

add methods for lost misattributions and misidentifications.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Fri, 04 Oct 2019 17:42:27 +0200
parents c1f509c69e9d
children
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.services.utils.AttributeFilter;
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;

public class MissingRelationsBean extends AbstractISMIBean implements Serializable {
	
	private static Logger logger = Logger.getLogger(MissingRelationsBean.class);
	
	private static final long serialVersionUID = 1L;
		
	protected FullEntityRepositoryBean browseBean;

    protected String selectedTab = "aut";
	
	
	public MissingRelationsBean(){
		//logger.info("AdvancedSearchBean");
		this.reset();
	}
	
	public synchronized void reset(){
		logger.info("MissingRelationsBean.reset()");
	    browseBean = new FullEntityRepositoryBean();	    
        logger.info("MissingRelationsBean.reset() Done.");
	}
	
	
	public void actionFindMissingAuthors() {
		logger.debug("Start findMissingAuthors...");
		List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
		/*
		 * find TEXT without was_created_by PERSON relation
		 */
        browseBean = new FullEntityRepositoryBean();
	    browseBean.setObjectClass(TEXT);
	    RelationFilter relFilter = new RelationFilter();
	    relFilter.relObjectClass = "was_created_by";
	    relFilter.tarObjectClass = "PERSON";
	    relFilter.relationMissing = true;
	    relFilters.add(relFilter);
	    try {
            browseBean.searchByRelations(relFilters);
        } catch (Exception e) {
            logger.error(e);
        }
		logger.debug("Done findMissingAuthors.");
	}
	
	public void actionFindMissingTexts() {
		logger.debug("Start findMissingTexts...");
		List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
		/*
		 * find WITNESS without is_exemplar_of TEXT relation
		 */
        browseBean = new FullEntityRepositoryBean();
	    browseBean.setObjectClass(WITNESS);
	    RelationFilter relFilter = new RelationFilter();
	    relFilter.relObjectClass = "is_exemplar_of";
	    relFilter.tarObjectClass = "TEXT";
	    relFilter.relationMissing = true;
	    relFilters.add(relFilter);
	    try {
            browseBean.searchByRelations(relFilters);
        } catch (Exception e) {
            logger.error(e);
        }
		logger.debug("Done findMissingTexts.");
	}
	
	public void actionFindMissingCodices() {
		logger.debug("Start findMissingCodices...");
		List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
		/*
		 * find WITNESS without is_part_of CODEX relation
		 */
		browseBean = new FullEntityRepositoryBean();
	    browseBean.setObjectClass(WITNESS);
	    RelationFilter relFilter = new RelationFilter();
	    relFilter.relObjectClass = "is_part_of";
	    relFilter.tarObjectClass = "CODEX";
	    relFilter.relationMissing = true;
	    relFilters.add(relFilter);
	    try {
            browseBean.searchByRelations(relFilters);
        } catch (Exception e) {
            logger.error(e);
        }
		logger.debug("Done findMissingCodices.");
	}
	
    public void actionFindMissingCollection() {
        logger.debug("Start findMissingCollection...");
        List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
        /*
         * find CODEX without is_part_of COLLECTION relation
         */
        browseBean = new FullEntityRepositoryBean();
        browseBean.setObjectClass(CODEX);
        RelationFilter relFilter = new RelationFilter();
        relFilter.relObjectClass = "is_part_of";
        relFilter.tarObjectClass = "COLLECTION";
        relFilter.relationMissing = true;
        relFilters.add(relFilter);
        try {
            browseBean.searchByRelations(relFilters);
        } catch (Exception e) {
            logger.error(e);
        }
        logger.debug("Done findMissingCollection.");
    }
    
    public void actionFindMissingRepository() {
        logger.debug("Start findMissingRepository...");
        List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
        /*
         * find COLLECTION without is_part_of REPOSITORY relation
         */
        browseBean = new FullEntityRepositoryBean();
        browseBean.setObjectClass(COLLECTION);
        RelationFilter relFilter = new RelationFilter();
        relFilter.relObjectClass = "is_part_of";
        relFilter.tarObjectClass = "REPOSITORY";
        relFilter.relationMissing = true;
        relFilters.add(relFilter);
        try {
            browseBean.searchByRelations(relFilters);
        } catch (Exception e) {
            logger.error(e);
        }
        logger.debug("Done findMissingRepository.");
    }
    
    public void actionFindMissingPlace() {
        logger.debug("Start findMissingPlace...");
        List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
        /*
         * find REPOSITORY without is_part_of PLACE relation
         */
        browseBean = new FullEntityRepositoryBean();
        browseBean.setObjectClass(REPOSITORY);
        RelationFilter relFilter = new RelationFilter();
        relFilter.relObjectClass = "is_in";
        relFilter.tarObjectClass = "PLACE";
        relFilter.relationMissing = true;
        relFilters.add(relFilter);
        try {
            browseBean.searchByRelations(relFilters);
        } catch (Exception e) {
            logger.error(e);
        }
        logger.debug("Done findMissingPlace.");
    }
    
    public void actionFindMissingWitnessCollection() {
        logger.debug("Start findMissingWitnessCollection...");
        List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
        /*
         * find CODEX without is_part_of WITNESS and is_part_of COLLECTION relations
         */
        browseBean = new FullEntityRepositoryBean();
        browseBean.setObjectClass(CODEX);
        RelationFilter relFilter = new RelationFilter();
        relFilter.relObjectClass = "is_part_of";
        relFilter.tarObjectClass = "COLLECTION";
        relFilter.relationMissing = true;
        relFilters.add(relFilter);
        RelationFilter relFilter2 = new RelationFilter();
        relFilter2.relObjectClass = "is_part_of";
        relFilter2.srcObjectClass = "WITNESS";
        relFilter2.relationMissing = true;
        relFilters.add(relFilter2);
        try {
            browseBean.searchByRelations(relFilters);
        } catch (Exception e) {
            logger.error(e);
        }
        logger.debug("Done findMissingWitnessCollection.");
    }

    public void actionFindLostAlias() {
		logger.debug("Start findLostAlias...");
		List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
		/*
		 * find ALIAS without relation
		 */
        browseBean = new FullEntityRepositoryBean();
	    browseBean.setObjectClass(ALIAS);
	    RelationFilter relFilter = new RelationFilter();
	    relFilter.relObjectClass = "*";
	    relFilter.tarObjectClass = "*";
	    relFilter.relationMissing = true;
	    relFilters.add(relFilter);
	    try {
            browseBean.searchByRelations(relFilters);
        } catch (Exception e) {
            logger.error(e);
        }
		logger.debug("Done findLostAlias.");
	}
	
    public void actionFindLostFloruit() {
		logger.debug("Start findLostFloruit...");
		List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
		/*
		 * find FLORUIT_DATE without relation
		 */
        browseBean = new FullEntityRepositoryBean();
	    browseBean.setObjectClass(FLORUIT_DATE);
	    RelationFilter relFilter = new RelationFilter();
	    relFilter.relObjectClass = "*";
	    relFilter.srcObjectClass = "*";
	    relFilter.relationMissing = true;
	    relFilters.add(relFilter);
	    try {
            browseBean.searchByRelations(relFilters);
        } catch (Exception e) {
            logger.error(e);
        }
		logger.debug("Done findLostFloruit.");
	}
	
    public void actionFindLostReference() {
		logger.debug("Start findLostReference...");
		List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
		/*
		 * find REFERENCE without relation
		 */
        browseBean = new FullEntityRepositoryBean();
	    browseBean.setObjectClass(REFERENCE);
	    RelationFilter relFilter = new RelationFilter();
	    relFilter.relObjectClass = "*";
	    relFilter.tarObjectClass = "*";
	    relFilter.relationMissing = true;
	    relFilters.add(relFilter);
	    try {
            browseBean.searchByRelations(relFilters);
        } catch (Exception e) {
            logger.error(e);
        }
		logger.debug("Done findLostReference.");
	}
	
    public void actionFindEmptyReference() {
 		logger.debug("Start findEmptyReference...");
 		ArrayList<AttributeFilter> filters = new ArrayList<AttributeFilter>();
 		/*
 		 * find REFERENCE without endnote-id
 		 */
         browseBean = new FullEntityRepositoryBean();
 	    browseBean.setObjectClass(REFERENCE);
 	    AttributeFilter filter = new AttributeFilter();
 	    filter.entObjectClass = REFERENCE;
 	    filter.name = "endnote-id";
 	    filter.attributeMissing = true;
 	    filters.add(filter);
 	    try {
             browseBean.searchByAttributes2(filters);
         } catch (Exception e) {
             logger.error(e);
         }
 		logger.debug("Done findEmptyReference.");
 	}

    public void actionFindLostMisattribution() {
		logger.debug("Start findLostMisattribution...");
		List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
		/*
		 * find MISATTRIBUTION without relation
		 */
        browseBean = new FullEntityRepositoryBean();
	    browseBean.setObjectClass(MISATTRIBUTION);
	    RelationFilter relFilter1 = new RelationFilter();
	    relFilter1.relObjectClass = "has_author_misattribution";
	    relFilter1.srcObjectClass = TEXT;
	    relFilter1.relationMissing = true;
	    relFilters.add(relFilter1);
	    try {
            browseBean.searchByRelations(relFilters);
        } catch (Exception e) {
            logger.error(e);
        }
		logger.debug("Done findLostMisattribution.");
	}
	
    public void actionFindLostMisidentification() {
		logger.debug("Start findLostMisidentification...");
		List<RelationFilter> relFilters = new ArrayList<RelationFilter>();
		/*
		 * find MISIDENTIFICATION without relation
		 */
        browseBean = new FullEntityRepositoryBean();
	    browseBean.setObjectClass(MISIDENTIFICATION);
	    RelationFilter relFilter1 = new RelationFilter();
	    relFilter1.relObjectClass = "has_misidentification";
	    relFilter1.srcObjectClass = WITNESS;
	    relFilter1.relationMissing = true;
	    relFilters.add(relFilter1);
	    try {
            browseBean.searchByRelations(relFilters);
        } catch (Exception e) {
            logger.error(e);
        }
		logger.debug("Done findLostMisidentification.");
	}
	
    /**
     * Delete the selected Entities.
     * @return
     */
    public String actionDeleteSelectedEntities() {
        logger.info("DELETE SELECTED ENTITIES");
        List<String> textMsg = new ArrayList<String>();
        try {
            List<Entity> entities = browseBean.getEntities();
            if (entities.size() == 0) return null;
            for (Entity ent : entities) {
    			// delete entity
                getWrapper().removeCurrentVersionEntity(ent, this.getUserName());
                textMsg.add("Delete "+ent.getShortString()+"\n");
            }
        } catch (Exception e) {
			printInternalError(e);
			logger.error(e.getMessage() + " Removing entity!", e);
        }
        for (String msg : textMsg) {
            this.addGeneralMsg(msg);
            logger.debug(msg);
        }
        addGeneralMsg(browseBean.getEntities().size() + " Entities were deleted!");            
        // reset EntityRepositoryBean
        browseBean.reset();
        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;
    }


}