Coverage Summary for Class: StructLink (org.kitodo.dataeditor.entities)

Class Class, % Method, % Line, %
StructLink 100% (1/1) 100% (6/6) 100% (24/24)


 /*
  * (c) Kitodo. Key to digital objects e. V. <contact@kitodo.org>
  *
  * This file is part of the Kitodo project.
  *
  * It is licensed under GNU General Public License version 3 or later.
  *
  * For the full copyright and license information, please read the
  * GPL3-License.txt file that was distributed with this source code.
  */
 
 package org.kitodo.dataeditor.entities;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
 import org.kitodo.dataeditor.MetsKitodoObjectFactory;
 import org.kitodo.dataformat.metskitodo.DivType;
 import org.kitodo.dataformat.metskitodo.MetsType;
 import org.kitodo.dataformat.metskitodo.StructLinkType;
 
 public class StructLink extends MetsType.StructLink {
 
     private MetsKitodoObjectFactory objectFactory = new MetsKitodoObjectFactory();
 
     /**
      * Constructor to copy the data from parent class.
      *
      * @param structLink
      *            The MetsType.StructLink object.
      */
     public StructLink(MetsType.StructLink structLink) {
         super.id = structLink.getID();
         super.smLinkOrSmLinkGrp = structLink.getSmLinkOrSmLinkGrp();
     }
 
     /**
      * Adds a smLink to link a logical div to a physical div.
      *
      * @param logicalDiv
      *            The logical DivType object to link from.
      * @param physicalDiv
      *            The physical DivType object to link to.
      */
     private void addSmLink(DivType logicalDiv, DivType physicalDiv) {
         StructLinkType.SmLink smLink = objectFactory.createStructLinkTypeSmLink();
         smLink.setFrom(logicalDiv.getID());
         smLink.setTo(physicalDiv.getID());
         this.getSmLinkOrSmLinkGrp().add(smLink);
     }
 
     /**
      * Adds SmLinks for a list of physical divs to one logical div.
      * 
      * @param logicalDiv
      *            The logical DivType object to link from
      * @param physicalDivs
      *            The list of physical DivType objects to link to.
      */
     public void addSmLinks(DivType logicalDiv, List<DivType> physicalDivs) {
         for (DivType physicalDiv : physicalDivs) {
             addSmLink(logicalDiv, physicalDiv);
         }
     }
 
     /**
      * Removes a smLink which links a logical div to a physical div.
      *
      * @param logicalDiv
      *            The logical DivType object which links from.
      * @param physicalDiv
      *            The physical DivType object which links to.
      */
     public void removeSmLink(DivType logicalDiv, DivType physicalDiv) {
         StructLinkType.SmLink smLinkToDelete = objectFactory.createStructLinkTypeSmLink();
         smLinkToDelete.setFrom(logicalDiv.getID());
         smLinkToDelete.setTo(physicalDiv.getID());
         List<Object> smLinkOrSmLinkGrp = this.getSmLinkOrSmLinkGrp();
         smLinkOrSmLinkGrp.remove(smLinkToDelete);
     }
 
     /**
      * Returns a list of ids of physical div objects which are linked by a given
      * logical div.
      * 
      * @param logicalDiv
      *            The logical div element.
      * @return The list of ids.
      */
     public List<String> getPhysicalDivIdsByLogicalDiv(DivType logicalDiv) {
         List<SmLink> smLinks = getSmLinks();
         List<String> ids = new ArrayList<>();
         for (SmLink smLink : smLinks) {
             if (Objects.equals(smLink.getFrom(), logicalDiv.getID())) {
                 ids.add(smLink.getTo());
             }
         }
         return ids;
     }
 
     /**
      * Returns a list of smLink objects. This method must be modified in case we
      * start to support smLinkGroups in mets structLink section.
      * 
      * @return The list of smLinks.
      */
     @SuppressWarnings("unchecked")
     public List<SmLink> getSmLinks() {
         return (List) getSmLinkOrSmLinkGrp();
     }
 }