package de.FeatureModellingTool.FeatureModel;
import java.util.Hashtable;
import manager.IllegalParameterException;
import manager.ManagerInterface;
import component.FComponent;
import context.Context;
import de.FeatureModellingTool.Customize.CustomizationModel;
import de.FeatureModellingTool.Customize.CustomizationModelImplementation;
/**
* author: zhangwei
* Date: 2003-5-24
* Time: 19:55:09
*/
public final class Manager implements ManagerInterface{
public static FeatureModel createFeatureModel(String name, String description) {
FeatureModelImplementation fmi = new FeatureModelImplementation();
fmi.getFeatureModelPropertyEditor().setName(name);
fmi.getFeatureModelPropertyEditor().setDescription(description);
return fmi;
}
public static FeatureEditor getFeatureEditor(FeatureModel featureModel) {
if (!FeatureModelImplementation.class.isInstance(featureModel))
return null;
FeatureModelImplementation fmi = (FeatureModelImplementation) featureModel;
return fmi.getFeatureEditor();
}
public static FeatureModelEditor getFeatureModelEditor(FeatureModel featureModel) {
if (!FeatureModelImplementation.class.isInstance(featureModel))
return null;
FeatureModelImplementation fmi = (FeatureModelImplementation) featureModel;
return fmi.getFeatureModelEditor();
}
public static FeatureModelPropertyEditor getFeatureModelPropertyEditor(FeatureModel featureModel) {
if (!FeatureModelImplementation.class.isInstance(featureModel))
return null;
FeatureModelImplementation fmi = (FeatureModelImplementation) featureModel;
return fmi.getFeatureModelPropertyEditor();
}
public static FeatureRelationManager getFeatureRelationManager(FeatureModel featureModel) {
if (!FeatureModelImplementation.class.isInstance(featureModel))
return null;
FeatureModelImplementation fmi = (FeatureModelImplementation) featureModel;
return fmi.getFeatureRelationManager();
}
public static ConstraintModel getConstraintModel(FeatureModel featureModel) {
if (!FeatureModelImplementation.class.isInstance(featureModel))
return null;
return new ConstraintModelImplementation(featureModel);
}
public static ConstraintModelEditor getConstraintModelEditor(ConstraintModel constraintModel) {
if (!ConstraintModelImplementation.class.isInstance(constraintModel))
return null;
ConstraintModelImplementation cmi = (ConstraintModelImplementation) constraintModel;
return cmi.getConstraintModelEditor();
}
public static CompositeConstraintEditor getPLConstraintEditor(ConstraintModel constraintModel) {
if (!ConstraintModelImplementation.class.isInstance(constraintModel))
return null;
ConstraintModelImplementation cmi = (ConstraintModelImplementation) constraintModel;
return cmi.getPLConstraintEditor();
}
public static GroupConstraintEditor getGroupConstraintEditor(ConstraintModel constraintModel) {
if (!ConstraintModelImplementation.class.isInstance(constraintModel))
return null;
ConstraintModelImplementation cmi = (ConstraintModelImplementation) constraintModel;
return cmi.getGroupConstraintEditor();
}
public static VPConstraintEditor getVPConstraintEditor(ConstraintModel constraintModel) {
if (!ConstraintModelImplementation.class.isInstance(constraintModel))
return null;
ConstraintModelImplementation cmi = (ConstraintModelImplementation) constraintModel;
return cmi.getVPConstraintEditor();
}
public static ResourceComponentEditor getResourceComponentEditor(InteractionModel interactionModel){
if (!InteractionModelImplementation.class.isInstance(interactionModel))
return null;
InteractionModelImplementation imi = (InteractionModelImplementation) interactionModel;
return imi.getResourceComponentEditor();
}
public static InteractionModel getInteractionModel(FeatureModel featureModel){
if (!FeatureModelImplementation.class.isInstance(featureModel))
return null;
return new InteractionModelImplementation(featureModel);
}
public static InteractionEditor getInteractionEditor(InteractionModel interactionModel){
if (!InteractionModelImplementation.class.isInstance(interactionModel))
return null;
InteractionModelImplementation imi = (InteractionModelImplementation) interactionModel;
return imi.getInteractionEditor();
}
public static InteractionModelEditor getInteractionModelEditor(InteractionModel interactionModel){
if (!InteractionModelImplementation.class.isInstance(interactionModel))
return null;
InteractionModelImplementation imi = (InteractionModelImplementation) interactionModel;
return imi.getInteractionModelEditor();
}
//gh start
public static CustomizationModel getCustomizationModel(FeatureModel featureModel) {
if (!FeatureModelImplementation.class.isInstance(featureModel))
return null;
return new CustomizationModelImplementation(featureModel);
}
//gh end
public final static String FEATURE_MODEL_NAME = "FeatureModel";
public final static String FEATURE_MODEL_INTERFACE = "FeatureModel";
public final static String FEATURE_EDITOR_INTERFACE = "FeatureEditor";
public final static String FEATURE_MODEL_EDITOR_INTERFACE = "FeatureModelEditor";
public final static String FEATURE_MODEL_PROPERTY_EDITOR_INTERFACE = "FeatureModelPropertyEditor";
public final static String FEATURE_RELATION_MANAGER_INTERFACE = "FeatureRelationManager";
public final static String CONSTRAINT_MODEL_INTERFACE = "ConstraintModel";
public final static String CONSTRAINT_MODEL_EDITOR_INTERFACE = "ConstraintModelEditor";
public final static String PL_CONSTRAINT_EDITOR_INTERFACE = "CompositeConstraintEditor";
public final static String GROUP_CONSTRAINT_EDITOR_INTERFACE = "GroupConstraintEditor";
public final static String VP_CONSTRAINT_EDITOR_INTERFACE = "VPConstraintEditor";
public final static String RESOURCE_COMPONENT_EDITOR_INTERFACE = "ResourceComponentEditor";
public final static String INTERACTION_MODEL_INTERFACE = "InteractionModel";
public final static String INTERACTION_EDITOR_INTERFACE = "InteractionEditor";
public final static String INTERACTION_MODEL_EDITOR_INTERFACE = "InteractionModelEditor";
//gh start
public final static String CUSTOMIZATION_MODEL_INTERFACE = "CustomizationModel";
//gh end
public final static String NAME_CONTEXT = "name";
public final static String DESCRIPTION_CONTEXT = "description";
public static ManagerInterface getInstance(){
return new Manager();
}
protected Context cont = null;
protected Manager(){
if (cont == null) {
try {
cont = (Context) context.Manager.getInstance().getInstance(context.Manager.CONTEXT, Context.class);
} catch (IllegalParameterException ipe) {
//nerver arrive here
}
}
}
public Context getContext() {
return cont;
}
public Object getInstance(String name, Class type) throws IllegalParameterException
{
if((!FEATURE_MODEL_NAME.equals(name))||(!FComponent.class.equals(type)))
throw new IllegalParameterException("IllegalParameterException");
String modelName = (String) getContext().getValue(NAME_CONTEXT);
String modelDesp = (String) getContext().getValue(DESCRIPTION_CONTEXT);
FeatureModel featureModel;
FeatureEditor featureEditor;
FeatureModelEditor featureModelEditor;
FeatureModelPropertyEditor featureModelPropertyEditor;
FeatureRelationManager featureRelationManager;
ConstraintModel constraintModel;
ConstraintModelEditor constraintModelEditor;
CompositeConstraintEditor plConstraintEditor;
GroupConstraintEditor gConstraintEditor;
VPConstraintEditor vpConstraintEditor;
ResourceComponentEditor resourceComponentEditor;
InteractionModel interactionModel;
InteractionEditor interactionEditor;
InteractionModelEditor interactionModelEditor;
featureModel = createFeatureModel(modelName, modelDesp);
featureEditor = getFeatureEditor(featureModel);
featureModelEditor = getFeatureModelEditor(featureModel);
featureModelPropertyEditor = getFeatureModelPropertyEditor(featureModel);
featureRelationManager = getFeatureRelationManager(featureModel);
constraintModel = getConstraintModel(featureModel);
constraintModelEditor = getConstraintModelEditor(constraintModel);
plConstraintEditor = getPLConstraintEditor(constraintModel);
gConstraintEditor = getGroupConstraintEditor(constraintModel);
vpConstraintEditor = getVPConstraintEditor(constraintModel);
interactionModel = getInteractionModel(featureModel);
resourceComponentEditor = getResourceComponentEditor(interactionModel);
interactionEditor = getInteractionEditor(interactionModel);
interactionModelEditor = getInteractionModelEditor(interactionModel);
Hashtable interfaces = new Hashtable();
Hashtable classes = new Hashtable();
interfaces.put(FEATURE_MODEL_INTERFACE, featureModel);
interfaces.put(FEATURE_EDITOR_INTERFACE, featureEditor);
interfaces.put(FEATURE_MODEL_EDITOR_INTERFACE, featureModelEditor);
interfaces.put(FEATURE_MODEL_PROPERTY_EDITOR_INTERFACE, featureModelPropertyEditor);
interfaces.put(FEATURE_RELATION_MANAGER_INTERFACE, featureRelationManager);
interfaces.put(CONSTRAINT_MODEL_INTERFACE, constraintModel);
interfaces.put(CONSTRAINT_MODEL_EDITOR_INTERFACE, constraintModelEditor);
interfaces.put(PL_CONSTRAINT_EDITOR_INTERFACE, plConstraintEditor);
interfaces.put(GROUP_CONSTRAINT_EDITOR_INTERFACE, gConstraintEditor);
interfaces.put(VP_CONSTRAINT_EDITOR_INTERFACE, vpConstraintEditor);
interfaces.put(INTERACTION_MODEL_INTERFACE, interactionModel);
interfaces.put(RESOURCE_COMPONENT_EDITOR_INTERFACE, resourceComponentEditor);
interfaces.put(INTERACTION_EDITOR_INTERFACE, interactionEditor);
interfaces.put(INTERACTION_MODEL_EDITOR_INTERFACE, interactionModelEditor);
classes.put(FEATURE_MODEL_INTERFACE, FeatureModel.class);
classes.put(FEATURE_EDITOR_INTERFACE, FeatureEditor.class);
classes.put(FEATURE_MODEL_EDITOR_INTERFACE, FeatureModelEditor.class);
classes.put(FEATURE_MODEL_PROPERTY_EDITOR_INTERFACE, FeatureModelPropertyEditor.class);
classes.put(FEATURE_RELATION_MANAGER_INTERFACE, FeatureRelationManager.class);
classes.put(CONSTRAINT_MODEL_INTERFACE, ConstraintModel.class);
classes.put(CONSTRAINT_MODEL_EDITOR_INTERFACE, ConstraintModelEditor.class);
classes.put(PL_CONSTRAINT_EDITOR_INTERFACE, CompositeConstraintEditor.class);
classes.put(GROUP_CONSTRAINT_EDITOR_INTERFACE, GroupConstraintEditor.class);
classes.put(VP_CONSTRAINT_EDITOR_INTERFACE, VPConstraintEditor.class);
classes.put(INTERACTION_MODEL_INTERFACE, InteractionModel.class);
classes.put(INTERACTION_EDITOR_INTERFACE, InteractionEditor.class);
classes.put(RESOURCE_COMPONENT_EDITOR_INTERFACE, ResourceComponentEditor.class);
classes.put(INTERACTION_MODEL_EDITOR_INTERFACE, InteractionModelEditor.class);
//gh start
CustomizationModel CustomizationModel = getCustomizationModel(featureModel);
interfaces.put(CUSTOMIZATION_MODEL_INTERFACE, CustomizationModel);
classes.put(CUSTOMIZATION_MODEL_INTERFACE, CustomizationModel.class);
//gh end
ManagerInterface mi = component.Manager.getInstance();
mi.getContext().putValue(component.Manager.INTERFACES, interfaces);
mi.getContext().putValue(component.Manager.CLASSES, classes);
mi.getContext().putValue(component.Manager.NAME, FEATURE_MODEL_NAME);
try {
return (FComponent) mi.getInstance(component.Manager.NGOBJECT, FComponent.class);
}
catch(IllegalParameterException ipe){
return null;
}
}
}