package net.sf.openrocket.file.openrocket.importt; import java.util.HashMap; import net.sf.openrocket.aerodynamics.Warning; import net.sf.openrocket.aerodynamics.WarningSet; import net.sf.openrocket.rocketcomponent.FlightConfiguration; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.util.Reflection; import net.sf.openrocket.util.Reflection.Method; //// EnumSetter - sets a generic enum type class EnumSetter<T extends Enum<T>> implements Setter { private final Reflection.Method configurationGetter; private final Reflection.Method setter; private final Class<T> enumClass; public EnumSetter(Reflection.Method setter, Class<T> enumClass) { this(null, setter, enumClass); } public EnumSetter(Method configurationGetter, Method setter, Class<T> enumClass) { this.configurationGetter = configurationGetter; this.setter = setter; this.enumClass = enumClass; } @Override public void set(RocketComponent c, String name, HashMap<String, String> attributes, WarningSet warnings) { Enum<?> setEnum = DocumentConfig.findEnum(name, enumClass); if (setEnum == null) { warnings.add(Warning.FILE_INVALID_PARAMETER); return; } if (configurationGetter == null) { setter.invoke(c, setEnum); } else { FlightConfiguration<?> config = (FlightConfiguration<?>) configurationGetter.invoke(c); Object obj = config.getDefault(); setter.invoke(obj, setEnum); } } }