All Downloads are FREE. Search and download functionalities are using the official Maven repository.

us.ihmc.scs2.sessionVisualizer.jfx.yoComposite.YoComposite Maven / Gradle / Ivy

package us.ihmc.scs2.sessionVisualizer.jfx.yoComposite;

import us.ihmc.yoVariables.registry.YoNamespace;
import us.ihmc.yoVariables.variable.YoVariable;

import java.util.Collections;
import java.util.List;
import java.util.Map;

public class YoComposite implements Comparable
{
   private final YoCompositePattern pattern;
   private final String name;
   private final YoNamespace namespace;
   private final List yoComponents;

   private String uniqueName;
   private String uniqueShortName;

   public YoComposite(YoCompositePattern pattern, YoVariable yoVariable)
   {
      this(pattern, yoVariable.getName(), yoVariable.getNamespace(), Collections.singletonList(yoVariable));
   }

   public YoComposite(YoCompositePattern pattern, String compositeName, YoNamespace compositeNamespace, List yoComponents)
   {
      this.pattern = pattern;
      this.name = compositeName;
      this.namespace = compositeNamespace;
      this.yoComponents = yoComponents;
   }

   public YoCompositePattern getPattern()
   {
      return pattern;
   }

   public String getName()
   {
      return name;
   }

   public YoNamespace getNamespace()
   {
      return namespace;
   }

   public String getUniqueName()
   {
      return uniqueName;
   }

   public String getUniqueShortName()
   {
      return uniqueShortName;
   }

   public String getFullname()
   {
      return namespace.toString() + "." + name;
   }

   public List getYoComponents()
   {
      return yoComponents;
   }

   @Override
   public int compareTo(YoComposite oher)
   {
      return name.compareTo(oher.name);
   }

   @Override
   public String toString()
   {
      return uniqueName != null ? uniqueName : name;
   }

   public static void computeUniqueNames(List yoComposites)
   {
      Map yoCompositeToUniqueNameMap = YoCompositeTools.computeUniqueNames(yoComposites,
                                                                                                yoComposite -> yoComposite.getNamespace().getSubNames(),
                                                                                                YoComposite::getName);
      yoCompositeToUniqueNameMap.forEach((yoComposite, uniqueName) -> yoComposite.uniqueName = uniqueName);
      Map yoCompositeToUniqueShortNameMap = YoCompositeTools.computeUniqueShortNames(yoComposites,
                                                                                                          YoComposite::getName,
                                                                                                          YoComposite::getUniqueName);
      yoCompositeToUniqueShortNameMap.forEach((yoComposite, uniqueShortName) -> yoComposite.uniqueShortName = uniqueShortName);
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy