package jetbrains.mps.execution.commands.behavior;
/*Generated by MPS */
import jetbrains.mps.core.aspects.behaviour.BaseBHDescriptor;
import org.jetbrains.mps.openapi.language.SAbstractConcept;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import jetbrains.mps.core.aspects.behaviour.api.BehaviorRegistry;
import jetbrains.mps.smodel.language.ConceptRegistry;
import jetbrains.mps.core.aspects.behaviour.api.SMethod;
import jetbrains.mps.core.aspects.behaviour.SMethodBuilder;
import jetbrains.mps.core.aspects.behaviour.SJavaCompoundTypeImpl;
import jetbrains.mps.core.aspects.behaviour.SModifiersImpl;
import jetbrains.mps.core.aspects.behaviour.AccessPrivileges;
import org.jetbrains.mps.openapi.model.SNode;
import java.util.List;
import java.util.Arrays;
import org.jetbrains.annotations.NotNull;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SConceptOperations;
import org.jetbrains.annotations.NonNls;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.internal.collections.runtime.ISelector;
import jetbrains.mps.internal.collections.runtime.ITranslator2;
import jetbrains.mps.internal.collections.runtime.IWhereFilter;
import java.util.ArrayList;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import jetbrains.mps.core.aspects.behaviour.api.SConstructor;
import org.jetbrains.annotations.Nullable;
import jetbrains.mps.core.aspects.behaviour.api.BHMethodNotFoundException;
import org.jetbrains.mps.openapi.persistence.PersistenceFacade;
import jetbrains.mps.smodel.SModelUtil_new;
public final class CommandDeclaration__BehaviorDescriptor extends BaseBHDescriptor {
private static final SAbstractConcept CONCEPT = MetaAdapterFactory.getConcept(0xf3347d8a0e794f35L, 0x8ac91574f25c986fL, 0xbe3a0d5ba1a2be8L, "jetbrains.mps.execution.commands.structure.CommandDeclaration");
private static final BehaviorRegistry REGISTRY = ConceptRegistry.getInstance().getBehaviorRegistry();
public static final SMethod<Boolean> isDebuggable_idJzCdmU6yOQ = new SMethodBuilder<Boolean>(new SJavaCompoundTypeImpl(Boolean.TYPE)).name("isDebuggable").modifiers(SModifiersImpl.create(0, AccessPrivileges.PUBLIC)).concept(CONCEPT).id("JzCdmU6yOQ").registry(REGISTRY).build();
public static final SMethod<String> getSuffix_idO$iR4JBsSb = new SMethodBuilder<String>(new SJavaCompoundTypeImpl(String.class)).name("getSuffix").modifiers(SModifiersImpl.create(8, AccessPrivileges.PUBLIC)).concept(CONCEPT).id("O$iR4JBsSb").registry(REGISTRY).build();
public static final SMethod<SNode> createType_idhEwJimy = new SMethodBuilder<SNode>(new SJavaCompoundTypeImpl((Class<SNode>) ((Class) Object.class))).name("createType").modifiers(SModifiersImpl.create(8, AccessPrivileges.PUBLIC)).concept(CONCEPT).id("hEwJimy").registry(REGISTRY).build();
public static final SMethod<List<SNode>> getDistinctFieldParameters_id5keEkmeCrcX = new SMethodBuilder<List<SNode>>(new SJavaCompoundTypeImpl((Class<List<SNode>>) ((Class) Object.class))).name("getDistinctFieldParameters").modifiers(SModifiersImpl.create(0, AccessPrivileges.PUBLIC)).concept(CONCEPT).id("5keEkmeCrcX").registry(REGISTRY).build();
public static final SMethod<List<SNode>> getDistinctByNameAndTypeFieldParameters_id3gpm$NHlR4n = new SMethodBuilder<List<SNode>>(new SJavaCompoundTypeImpl((Class<List<SNode>>) ((Class) Object.class))).name("getDistinctByNameAndTypeFieldParameters").modifiers(SModifiersImpl.create(0, AccessPrivileges.PUBLIC)).concept(CONCEPT).id("3gpm$NHlR4n").registry(REGISTRY).build();
/*package*/ static final SMethod<Iterable<SNode>> getFieldParameters_id3gpm$NHlR5N = new SMethodBuilder<Iterable<SNode>>(new SJavaCompoundTypeImpl((Class<Iterable<SNode>>) ((Class) Object.class))).name("getFieldParameters").modifiers(SModifiersImpl.create(0, AccessPrivileges.PRIVATE)).concept(CONCEPT).id("3gpm$NHlR5N").registry(REGISTRY).build();
public static final SMethod<String> getCreateProcessMethodName_idJzCdmU6yOE = new SMethodBuilder<String>(new SJavaCompoundTypeImpl(String.class)).name("getCreateProcessMethodName").modifiers(SModifiersImpl.create(1, AccessPrivileges.PUBLIC)).concept(CONCEPT).id("JzCdmU6yOE").registry(REGISTRY).build();
public static final SMethod<String> getGetDebuggerMethodName_idJzCdmU6yOK = new SMethodBuilder<String>(new SJavaCompoundTypeImpl(String.class)).name("getGetDebuggerMethodName").modifiers(SModifiersImpl.create(1, AccessPrivileges.PUBLIC)).concept(CONCEPT).id("JzCdmU6yOK").registry(REGISTRY).build();
public static final SMethod<String> getGetDebuggerConfidurationMethodName_id5pE1_aqZc7s = new SMethodBuilder<String>(new SJavaCompoundTypeImpl(String.class)).name("getGetDebuggerConfidurationMethodName").modifiers(SModifiersImpl.create(1, AccessPrivileges.PUBLIC)).concept(CONCEPT).id("5pE1_aqZc7s").registry(REGISTRY).build();
private static final List<SMethod<?>> BH_METHODS = Arrays.<SMethod<?>>asList(isDebuggable_idJzCdmU6yOQ, getSuffix_idO$iR4JBsSb, createType_idhEwJimy, getDistinctFieldParameters_id5keEkmeCrcX, getDistinctByNameAndTypeFieldParameters_id3gpm$NHlR4n, getFieldParameters_id3gpm$NHlR5N, getCreateProcessMethodName_idJzCdmU6yOE, getGetDebuggerMethodName_idJzCdmU6yOK, getGetDebuggerConfidurationMethodName_id5pE1_aqZc7s);
private static void ___init___(@NotNull SNode __thisNode__) {
SLinkOperations.setTarget(__thisNode__, MetaAdapterFactory.getContainmentLink(0xf3347d8a0e794f35L, 0x8ac91574f25c986fL, 0xbe3a0d5ba1a2be8L, 0x75aadb0d4e6223baL, "debuggerParameter"), SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0xf3347d8a0e794f35L, 0x8ac91574f25c986fL, 0x75aadb0d4e61a576L, "jetbrains.mps.execution.commands.structure.DebuggerSettingsCommandParameterDeclaration")));
}
/*package*/ static boolean isDebuggable_idJzCdmU6yOQ(@NotNull SNode __thisNode__) {
return (SLinkOperations.getTarget(__thisNode__, MetaAdapterFactory.getContainmentLink(0xf3347d8a0e794f35L, 0x8ac91574f25c986fL, 0xbe3a0d5ba1a2be8L, 0x5b66ff7a6627d632L, "debuggerConfiguration")) != null);
}
@NonNls
/*package*/ static String getSuffix_idO$iR4JBsSb(@NotNull SNode __thisNode__) {
return "Command";
}
/*package*/ static SNode createType_idhEwJimy(@NotNull SNode __thisNode__) {
return createCommandType_5aznw1_a0a2(__thisNode__);
}
/*package*/ static List<SNode> getDistinctFieldParameters_id5keEkmeCrcX(@NotNull SNode __thisNode__) {
// we get all parameters generated into fields and select a list with uniquie names
final Iterable<SNode> parameterDeclarations = CommandDeclaration__BehaviorDescriptor.getFieldParameters_id3gpm$NHlR5N.invoke(__thisNode__);
Iterable<String> fieldNames = Sequence.fromIterable(parameterDeclarations).select(new ISelector<SNode, String>() {
public String select(SNode it) {
return (String) CommandParameterDeclaration__BehaviorDescriptor.getFieldName_id6mJVBGGspQq.invoke(it);
}
}).distinct();
return Sequence.fromIterable(fieldNames).translate(new ITranslator2<String, SNode>() {
public Iterable<SNode> translate(final String it) {
SNode first = Sequence.fromIterable(parameterDeclarations).findFirst(new IWhereFilter<SNode>() {
public boolean accept(SNode decl) {
return eq_f5121k_a0a0a0a0a0a0a0a0a0a0d0u(CommandParameterDeclaration__BehaviorDescriptor.getFieldName_id6mJVBGGspQq.invoke(decl), it);
}
});
if (first == null) {
return new ArrayList<SNode>();
}
return Sequence.<SNode>singleton(first);
}
}).toListSequence();
}
/*package*/ static List<SNode> getDistinctByNameAndTypeFieldParameters_id3gpm$NHlR4n(@NotNull SNode __thisNode__) {
final Iterable<SNode> parameterDeclarations = CommandDeclaration__BehaviorDescriptor.getFieldParameters_id3gpm$NHlR5N.invoke(__thisNode__);
Iterable<String> fieldNames = Sequence.fromIterable(parameterDeclarations).select(new ISelector<SNode, String>() {
public String select(SNode it) {
return (String) CommandParameterDeclaration__BehaviorDescriptor.getSetterLongName_id3gpm$NHlR8F.invoke(it);
}
}).distinct();
return Sequence.fromIterable(fieldNames).translate(new ITranslator2<String, SNode>() {
public Iterable<SNode> translate(final String it) {
SNode first = Sequence.fromIterable(parameterDeclarations).findFirst(new IWhereFilter<SNode>() {
public boolean accept(SNode decl) {
return eq_f5121k_a0a0a0a0a0a0a0a0a0a0c0v(CommandParameterDeclaration__BehaviorDescriptor.getSetterLongName_id3gpm$NHlR8F.invoke(decl), it);
}
});
if (first == null) {
return new ArrayList<SNode>();
}
return Sequence.<SNode>singleton(first);
}
}).toListSequence();
}
/*package*/ static Iterable<SNode> getFieldParameters_id3gpm$NHlR5N(@NotNull SNode __thisNode__) {
return ListSequence.fromList(SLinkOperations.getChildren(__thisNode__, MetaAdapterFactory.getContainmentLink(0xf3347d8a0e794f35L, 0x8ac91574f25c986fL, 0xbe3a0d5ba1a2be8L, 0x550ea9458ea107beL, "executePart"))).translate(new ITranslator2<SNode, SNode>() {
public Iterable<SNode> translate(SNode it) {
return ListSequence.fromList(ExecuteCommandPart__BehaviorDescriptor.getParameters_id5keEkmeCqHW.invoke(it)).where(new IWhereFilter<SNode>() {
public boolean accept(SNode it) {
return (boolean) CommandParameterDeclaration__BehaviorDescriptor.generateField_id7mEQKPeolUk.invoke(it);
}
});
}
});
}
/*package*/ static String getCreateProcessMethodName_idJzCdmU6yOE(@NotNull SAbstractConcept __thisConcept__) {
return "createProcess";
}
/*package*/ static String getGetDebuggerMethodName_idJzCdmU6yOK(@NotNull SAbstractConcept __thisConcept__) {
return "getDebugger";
}
/*package*/ static String getGetDebuggerConfidurationMethodName_id5pE1_aqZc7s(@NotNull SAbstractConcept __thisConcept__) {
return "getDebuggerConfiguration";
}
/*package*/ CommandDeclaration__BehaviorDescriptor() {
super(REGISTRY);
}
@Override
protected void initNode(@NotNull SNode node, @NotNull SConstructor constructor, @Nullable Object[] parameters) {
___init___(node);
}
@Override
protected <T> T invokeSpecial0(@NotNull SNode node, @NotNull SMethod<T> method, @Nullable Object[] parameters) {
int methodIndex = BH_METHODS.indexOf(method);
if (methodIndex < 0) {
throw new BHMethodNotFoundException(this, method);
}
switch (methodIndex) {
case 0:
return (T) ((Boolean) isDebuggable_idJzCdmU6yOQ(node));
case 1:
return (T) ((String) getSuffix_idO$iR4JBsSb(node));
case 2:
return (T) ((SNode) createType_idhEwJimy(node));
case 3:
return (T) ((List<SNode>) getDistinctFieldParameters_id5keEkmeCrcX(node));
case 4:
return (T) ((List<SNode>) getDistinctByNameAndTypeFieldParameters_id3gpm$NHlR4n(node));
case 5:
return (T) ((Iterable<SNode>) getFieldParameters_id3gpm$NHlR5N(node));
default:
throw new BHMethodNotFoundException(this, method);
}
}
@Override
protected <T> T invokeSpecial0(@NotNull SAbstractConcept concept, @NotNull SMethod<T> method, @Nullable Object[] parameters) {
int methodIndex = BH_METHODS.indexOf(method);
if (methodIndex < 0) {
throw new BHMethodNotFoundException(this, method);
}
switch (methodIndex) {
case 6:
return (T) ((String) getCreateProcessMethodName_idJzCdmU6yOE(concept));
case 7:
return (T) ((String) getGetDebuggerMethodName_idJzCdmU6yOK(concept));
case 8:
return (T) ((String) getGetDebuggerConfidurationMethodName_id5pE1_aqZc7s(concept));
default:
throw new BHMethodNotFoundException(this, method);
}
}
@NotNull
@Override
public List<SMethod<?>> getDeclaredMethods() {
return BH_METHODS;
}
@NotNull
@Override
public SAbstractConcept getConcept() {
return CONCEPT;
}
private static SNode createCommandType_5aznw1_a0a2(Object p0) {
PersistenceFacade facade = PersistenceFacade.getInstance();
SNode n1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(0xf3347d8a0e794f35L, 0x8ac91574f25c986fL, 0xbe3a0d5ba1a2bd6L, "jetbrains.mps.execution.commands.structure.CommandType"), null, null, false);
n1.setReferenceTarget(MetaAdapterFactory.getReferenceLink(0x443f4c36fcf54eb6L, 0x95008d06ed259e3eL, 0x118bc7942feL, 0x118bc796c90L, "classifier"), (SNode) p0);
return n1;
}
private static boolean eq_f5121k_a0a0a0a0a0a0a0a0a0a0d0u(Object a, Object b) {
return (a != null ? a.equals(b) : a == b);
}
private static boolean eq_f5121k_a0a0a0a0a0a0a0a0a0a0c0v(Object a, Object b) {
return (a != null ? a.equals(b) : a == b);
}
}