001package org.biopax.paxtools.io.sif.level3;
002
003import org.apache.commons.logging.Log;
004import org.apache.commons.logging.LogFactory;
005import org.biopax.paxtools.model.BioPAXElement;
006import org.biopax.paxtools.model.level3.EntityReference;
007import org.biopax.paxtools.model.level3.SimplePhysicalEntity;
008
009import java.util.Map;
010
011/**
012 * @author Emek Demir // todo annotate
013 */
014public class GroupMap 
015{
016    private Log log= LogFactory.getLog(GroupMap.class);
017    private Map<BioPAXElement, Group> map;
018
019    public GroupMap(Map<BioPAXElement, Group> element2GroupMap) 
020    {
021        this.map = element2GroupMap;
022    }
023
024    protected BioPAXElement getEntityReferenceOrGroup(BioPAXElement bpe)
025    {
026
027        BioPAXElement entity = map.get(bpe);
028        if (entity == null)
029        {
030            if (bpe instanceof EntityReference)
031            {
032                entity = bpe;
033            } else if (bpe instanceof SimplePhysicalEntity)
034            {
035                EntityReference er = ((SimplePhysicalEntity) bpe).getEntityReference();
036                if (er != null)
037                {
038                    entity = map.get(er);
039                    if (entity == null) entity = er;
040                } else
041                {
042                    if (log.isWarnEnabled())
043                        log.warn("SimplePhysicalEntity with ID " + bpe.getRDFId() + " has NULL EntityReference");
044                }
045            }
046        }
047        return entity;
048    }
049
050
051    public Map<BioPAXElement, Group> getMap()
052    {
053        return map;
054    }
055}