
org.sdmlib.models.objects.Generic2Specific Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of SDMLib Show documentation
Show all versions of SDMLib Show documentation
SDMLib is a light weight modeling library. SDMLib intentionally comes without any tool or editor.
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