
org.sdmlib.models.objects.Generic2Specific Maven / Gradle / Ivy
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, null);
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