package org.whole.examples.lang.imp.ui.actions;
import org.whole.examples.lang.imp.reflect.ImpEntityDescriptorEnum;
import org.whole.lang.factories.GenericEntityFactory;
import org.whole.lang.model.IEntity;
import org.whole.lang.ui.requests.CommandFactory;
import org.whole.lang.ui.requests.IFeatureTransformer;
/**
* @author Riccardo Solmi
*/
public class ImpCommandFactory extends CommandFactory {
private static class SingletonHolder {
private static final ImpCommandFactory instance = new ImpCommandFactory();
}
public static ImpCommandFactory instance() {
return SingletonHolder.instance;
}
private class NameNameExpressionTransformer implements IFeatureTransformer {
public IEntity transform(IEntity newFeature) {
IEntity entity = GenericEntityFactory.instance.create(ImpEntityDescriptorEnum.NameExpression);
entity.wSetValue(newFeature.wStringValue());
return entity;
}
}
private ImpCommandFactory() {
// addOverCompositeConstraints(new Class[0][0]);
addOverCompositeConstraints(new Object[][] {
// { ImpVariable.class, Parameters.class },
// { Parameter.class, Parameters.class },
// { ImpAdapterFragment.class, Parameters.class },
// { ImpBaseFragment.class, Parameters.class },
// { ExpressionStatement.class, BlockStatement.class },
// { SaveStatement.class, BlockStatement.class },
// { IfElseStatement.class, BlockStatement.class },
// { FunctionDeclaration.class, BlockStatement.class },
// { DoWhileStatement.class, BlockStatement.class },
// { ForeachStatement.class, BlockStatement.class },
// { ForStatement.class, BlockStatement.class },
// { VariableDeclaration.class, BlockStatement.class },
// { WhileStatement.class, BlockStatement.class },
// { ReturnStatement.class, BlockStatement.class },
// { EmptyStatement.class, BlockStatement.class },
// { PrintlnStatement.class, BlockStatement.class },
// { ImpVariable.class, BlockStatement.class },
// { PrintStatement.class, BlockStatement.class },
{ ImpEntityDescriptorEnum.BlockStatement , ImpEntityDescriptorEnum.BlockStatement, IFeatureTransformer.IDENTITY, false }
// { IfStatement.class, BlockStatement.class },
// { ImpMetaFragment.class, BlockStatement.class },
// { ImpAdapterFragment.class, BlockStatement.class },
// { ImpBaseFragment.class, BlockStatement.class },
// { BooleanLiteral.class, ArrayLiteral.class },
// { ImpVariable.class, ArrayLiteral.class },
// { IntLiteral.class, ArrayLiteral.class },
// { StringLiteral.class, ArrayLiteral.class },
// { ArrayLiteral.class, ArrayLiteral.class },
// { ImpAdapterFragment.class, ArrayLiteral.class },
// { ImpBaseFragment.class, ArrayLiteral.class },
// { RangeLiteral.class, ArrayLiteral.class },
// { Or.class, Arguments.class },
// { SizeExpression.class, Arguments.class },
// { Subtraction.class, Arguments.class },
// { IntLiteral.class, Arguments.class },
// { Multiplication.class, Arguments.class },
// { LessOrEquals.class, Arguments.class },
// { LessThan.class, Arguments.class },
// { StringLiteral.class, Arguments.class },
// { And.class, Arguments.class },
// { Remainder.class, Arguments.class },
// { RunExpression.class, Arguments.class },
// { Addition.class, Arguments.class },
// { NotEquals.class, Arguments.class },
// { ArrayLiteral.class, Arguments.class },
// { Equals.class, Arguments.class },
// { ImpAdapterFragment.class, Arguments.class },
// { LoadExpression.class, Arguments.class },
// { BooleanLiteral.class, Arguments.class },
// { Not.class, Arguments.class },
// { RangeLiteral.class, Arguments.class },
// { ImpVariable.class, Arguments.class },
// { AssignmentExpression.class, Arguments.class },
// { Division.class, Arguments.class },
// { NameExpression.class, Arguments.class },
// { GreaterOrEquals.class, Arguments.class },
// { ImpBaseFragment.class, Arguments.class },
// { ImpMetaFragment.class, Arguments.class },
// { FunctionInvocationExpression.class, Arguments.class },
// { ArrayAccess.class, Arguments.class },
// { GreaterThan.class, Arguments.class }
});
// addOverSimpleConstraints(new Class[0][0]);
addOverSimpleConstraints(new Object[][] {
// { ArrayType.class, Type.class },
// { ImpVariable.class, Type.class },
// { PrimitiveType.class, Type.class },
// { ImpAdapterFragment.class, Type.class },
// { ImpBaseFragment.class, Type.class },
// { ImpVariable.class, IVariableDeclaration.class },
// { VariableDeclaration.class, IVariableDeclaration.class },
// { ImpAdapterFragment.class, IVariableDeclaration.class },
// { ImpBaseFragment.class, IVariableDeclaration.class },
// { ImpVariable.class, IIntLiteral.class },
// { IntLiteral.class, IIntLiteral.class },
// { ImpAdapterFragment.class, IIntLiteral.class },
// { ImpBaseFragment.class, IIntLiteral.class },
// { ImpVariable.class, IImpStringData.class },
// { ImpAdapterFragment.class, IImpStringData.class },
// { ImpBaseFragment.class, IImpStringData.class },
// { ImpStringData.class, IImpStringData.class },
// { ImpVariable.class, IName.class },
// { Name.class, IName.class },
{ ImpEntityDescriptorEnum.Name, ImpEntityDescriptorEnum.NameExpression, new NameNameExpressionTransformer(), true },
// { ImpAdapterFragment.class, IName.class },
// { ImpBaseFragment.class, IName.class },
// { ImpVariable.class, IArguments.class },
// { ImpAdapterFragment.class, IArguments.class },
// { ImpBaseFragment.class, IArguments.class },
// { Arguments.class, IArguments.class },
// { ImpVariable.class, Declaration.class },
// { FunctionDeclaration.class, Declaration.class },
// { VariableDeclaration.class, Declaration.class },
// { ImpAdapterFragment.class, Declaration.class },
// { ImpBaseFragment.class, Declaration.class },
// { ExpressionStatement.class, Statement.class },
// { SaveStatement.class, Statement.class },
// { IfElseStatement.class, Statement.class },
// { FunctionDeclaration.class, Statement.class },
// { DoWhileStatement.class, Statement.class },
// { ForeachStatement.class, Statement.class },
// { ForStatement.class, Statement.class },
// { VariableDeclaration.class, Statement.class },
// { WhileStatement.class, Statement.class },
// { ReturnStatement.class, Statement.class },
// { EmptyStatement.class, Statement.class },
// { PrintlnStatement.class, Statement.class },
// { ImpVariable.class, Statement.class },
// { PrintStatement.class, Statement.class },
{ ImpEntityDescriptorEnum.BlockStatement , ImpEntityDescriptorEnum.Statement, IFeatureTransformer.IDENTITY, false },
// { IfStatement.class, Statement.class },
// { ImpMetaFragment.class, Statement.class },
// { ImpAdapterFragment.class, Statement.class },
// { ImpBaseFragment.class, Statement.class },
// { ImpVariable.class, INameExpression.class },
// { NameExpression.class, INameExpression.class},
// { ImpAdapterFragment.class, INameExpression.class },
// { ImpBaseFragment.class, INameExpression.class },
// { Or.class, Expression.class },
// { SizeExpression.class, Expression.class },
// { Subtraction.class, Expression.class },
// { IntLiteral.class, Expression.class },
// { Multiplication.class, Expression.class },
// { LessOrEquals.class, Expression.class },
// { LessThan.class, Expression.class },
// { StringLiteral.class, Expression.class },
// { And.class, Expression.class },
// { Remainder.class, Expression.class },
// { RunExpression.class, Expression.class },
// { Addition.class, Expression.class },
// { NotEquals.class, Expression.class },
// { ArrayLiteral.class, Expression.class },
// { Equals.class, Expression.class },
// { ImpAdapterFragment.class, Expression.class },
// { LoadExpression.class, Expression.class },
// { BooleanLiteral.class, Expression.class },
// { Not.class, Expression.class },
// { RangeLiteral.class, Expression.class },
// { ImpVariable.class, Expression.class },
// { AssignmentExpression.class, Expression.class },
// { Division.class, Expression.class },
// { NameExpression.class, Expression.class },
// { GreaterOrEquals.class, Expression.class },
// { ImpBaseFragment.class, Expression.class },
// { ImpMetaFragment.class, Expression.class },
// { FunctionInvocationExpression.class, Expression.class },
// { ArrayAccess.class, Expression.class },
// { GreaterThan.class, Expression.class },
// { ImpVariable.class, IParameters.class },
// { Parameters.class, IParameters.class },
// { ImpAdapterFragment.class, IParameters.class },
// { ImpBaseFragment.class, IParameters.class },
// { BooleanLiteral.class, Literal.class },
// { ImpVariable.class, Literal.class },
// { IntLiteral.class, Literal.class },
// { StringLiteral.class, Literal.class },
// { ArrayLiteral.class, Literal.class },
// { ImpAdapterFragment.class, Literal.class },
// { ImpBaseFragment.class, Literal.class },
// { RangeLiteral.class, Literal.class },
// { ImpVariable.class, IPrimitiveType.class },
// { PrimitiveType.class, IPrimitiveType.class },
// { ImpAdapterFragment.class, IPrimitiveType.class },
// { ImpBaseFragment.class, IPrimitiveType.class },
// { ImpVariable.class, IParameter.class },
// { Parameter.class, IParameter.class },
// { ImpAdapterFragment.class, IParameter.class },
// { ImpBaseFragment.class, IParameter.class }
});
}
}