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

org.sdmlib.models.objects.Generic2Specific Maven / Gradle / Ivy

Go to download

SDMLib is a light weight modeling library. SDMLib intentionally comes without any tool or editor.

There is a newer version: 2.3.2341
Show newest version
package org.sdmlib.models.objects;

import java.util.LinkedHashMap;

import de.uniks.networkparser.IdMap;
import de.uniks.networkparser.interfaces.SendableEntityCreator;

public class Generic2Specific
{

   public Object convert(IdMap idMap, String packageName, GenericGraph graph)
   {
      Object result = null; 
      
      // now create specific objects
      LinkedHashMap gen2specObjTable = new LinkedHashMap();
      
      for (GenericObject genericObject : graph.getObjects())
      {
         String type = genericObject.getType();
         
         if (type != null)
         {
            if (packageName != null)
            {
               type = packageName + "." + type;
            }
            
            SendableEntityCreator creatorClass = idMap.getCreator(type, true);
            
            if (creatorClass != null)
            {
               Object specObject = creatorClass.getSendableInstance(false);
               
               gen2specObjTable.put(genericObject, specObject);
               
               if (result == null)
               {
                  result = specObject;
               }
               
               // transfer the attributes
               for (GenericAttribute genericAttribute : genericObject.getAttrs())
               {
                  creatorClass.setValue(specObject, genericAttribute.getName(), genericAttribute.getValue(), "");
               }
            }
         }
      }
      
      // now set up the links
      for (GenericLink genericLink : graph.getLinks())
      {
         GenericObject genericSrc = genericLink.getSrc();
         Object specSrc = gen2specObjTable.get(genericSrc);
         GenericObject genericTgt = genericLink.getTgt();
         Object specTgt = gen2specObjTable.get(genericTgt);

         if (specSrc == null || specTgt == null)
         {
            continue;
         }
         
         if (genericLink.getTgtLabel() != null)
         {
            // use set at source object
            SendableEntityCreator srcCreatorClass = idMap.getCreatorClass(specSrc);
            srcCreatorClass.setValue(specSrc, genericLink.getTgtLabel(), specTgt, "");
         }
         else if (genericLink.getSrcLabel() != null)
         {
            // use set at target object
            SendableEntityCreator tgtCreatorClass = idMap.getCreatorClass(specTgt);
            tgtCreatorClass.setValue(specTgt, genericLink.getSrcLabel(), specSrc, "");
         }
      }
      
      return result;
   }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy