
org.sdmlib.models.CreatorMap 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;
import de.uniks.networkparser.interfaces.SendableEntity;
import de.uniks.networkparser.interfaces.SendableEntityCreator;
import de.uniks.networkparser.list.SimpleKeyValueList;
import org.sdmlib.storyboards.GenericCreator;
import java.util.ArrayList;
import java.util.Map;
public class CreatorMap
{
Map creatorMap = new SimpleKeyValueList();
private ArrayList packageNames;
public CreatorMap(String packageName)
{
ArrayList packageNames = new ArrayList<>();
packageNames.add(packageName);
this.packageNames = packageNames;
}
public CreatorMap(ArrayList packageNames)
{
this.packageNames = packageNames;
}
public SendableEntityCreator getCreator(Object newObject)
{
String simpleName = newObject.getClass().getSimpleName();
return getCreator(simpleName);
}
public SendableEntityCreator getCreator(String clazzName)
{
// already known?
SendableEntityCreator creator = creatorMap.get(clazzName);
if (creator != null)
{
return creator;
}
// try reflection
String creatorName = null;
for (String packageName : packageNames)
{
String fullCreatorName = packageName + ".util." + clazzName + "Creator";
try
{
Class> creatorClass = Class.forName(fullCreatorName);
creator = (SendableEntityCreator) creatorClass.newInstance();
if (creator != null)
{
creatorMap.put(clazzName, creator);
return creator;
}
}
catch (Exception e)
{
creator = null;
}
}
// GenericCreator?
for (String packageName : packageNames)
{
String fullClassName = packageName + "." + clazzName;
try
{
Class> theClass = Class.forName(fullClassName);
if (theClass != null)
{
creator = new GenericCreator().withClassName(fullClassName);
creatorMap.put(clazzName, creator);
return creator;
}
}
catch (Exception e)
{
creator = null;
}
}
return creator;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy