package jetbrains.mps.build.pluginSolution.plugin; /*Generated by MPS */ import jetbrains.mps.execution.api.configurations.BaseMpsRunConfiguration; import jetbrains.mps.execution.api.settings.IPersistentConfiguration; import org.apache.log4j.Logger; import org.apache.log4j.LogManager; import org.jetbrains.annotations.NotNull; import jetbrains.mps.execution.lib.NodeByConcept_Configuration; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.ant.execution.AntSettings_Configuration; import jetbrains.mps.execution.api.settings.PersistentConfigurationContext; import com.intellij.execution.configurations.RuntimeConfigurationException; import jetbrains.mps.baseLanguage.closures.runtime.Wrappers; import org.jetbrains.mps.openapi.module.SRepository; import org.jetbrains.mps.openapi.model.SNodeReference; import com.intellij.execution.configurations.RuntimeConfigurationError; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import org.jdom.Element; import com.intellij.openapi.util.WriteExternalException; import com.intellij.util.xmlb.XmlSerializer; import com.intellij.openapi.util.InvalidDataException; import org.apache.log4j.Level; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.Nullable; import com.intellij.execution.configurations.RunProfileState; import com.intellij.execution.Executor; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.ExecutionException; import com.intellij.openapi.options.SettingsEditor; import com.intellij.execution.configurations.ConfigurationPerRunnerSettings; import com.intellij.execution.runners.ProgramRunner; import com.intellij.execution.configurations.ConfigurationInfoProvider; import jetbrains.mps.execution.api.settings.SettingsEditorEx; import jetbrains.mps.ide.project.ProjectHelper; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; public class BuildScript_Configuration extends BaseMpsRunConfiguration implements IPersistentConfiguration { private static final Logger LOG = LogManager.getLogger(BuildScript_Configuration.class); @NotNull private BuildScript_Configuration.MyState myState = new BuildScript_Configuration.MyState(); private NodeByConcept_Configuration myNodePointer = new NodeByConcept_Configuration(MetaAdapterFactory.getConcept(0x798100da4f0a421aL, 0xb99171f8c50ce5d2L, 0x4df58c6f18f84a13L, "jetbrains.mps.build.structure.BuildProject"), new _FunctionTypes._return_P1_E0<Boolean, SNode>() { public Boolean invoke(SNode node) { return true; } }); private AntSettings_Configuration mySettings = new AntSettings_Configuration(); public void checkConfiguration(final PersistentConfigurationContext context) throws RuntimeConfigurationException { final Wrappers._boolean isPackaged = new Wrappers._boolean(); final SRepository repo = context.getProject().getRepository(); NodeByConcept_Configuration nodePointer = this.getNodePointer(); final SNodeReference reference = nodePointer.getNodeRef(); if (reference == null) { throw new RuntimeConfigurationError("The target of the node reference cannot be discovered " + nodePointer); } repo.getModelAccess().runReadAction(new Runnable() { public void run() { SNode node = reference.resolve(repo); isPackaged.value = node != null && SNodeOperations.getModel(node).getModule().isPackaged(); } }); if (isPackaged.value) { throw new RuntimeConfigurationError("Can not execute packaged build script."); } } @Override public void writeExternal(Element element) throws WriteExternalException { element.addContent(XmlSerializer.serialize(myState)); { Element fieldElement = new Element("myNodePointer"); myNodePointer.writeExternal(fieldElement); element.addContent(fieldElement); } { Element fieldElement = new Element("mySettings"); mySettings.writeExternal(fieldElement); element.addContent(fieldElement); } } @Override public void readExternal(Element element) throws InvalidDataException { if (element == null) { throw new InvalidDataException("Cant read " + this + ": element is null."); } XmlSerializer.deserializeInto(myState, (Element) element.getChildren().get(0)); { Element fieldElement = element.getChild("myNodePointer"); if (fieldElement != null) { myNodePointer.readExternal(fieldElement); } else { if (LOG.isDebugEnabled()) { LOG.debug("Element " + "myNodePointer" + " in " + this.getClass().getName() + " was null."); } } } { Element fieldElement = element.getChild("mySettings"); if (fieldElement != null) { mySettings.readExternal(fieldElement); } else { if (LOG.isDebugEnabled()) { LOG.debug("Element " + "mySettings" + " in " + this.getClass().getName() + " was null."); } } } } public NodeByConcept_Configuration getNodePointer() { return myNodePointer; } public AntSettings_Configuration getSettings() { return mySettings; } @Override public BuildScript_Configuration clone() { BuildScript_Configuration clone = null; try { clone = createCloneTemplate(); clone.myState = (BuildScript_Configuration.MyState) myState.clone(); clone.myNodePointer = (NodeByConcept_Configuration) myNodePointer.clone(); clone.mySettings = (AntSettings_Configuration) mySettings.clone(); return clone; } catch (CloneNotSupportedException ex) { if (LOG.isEnabledFor(Level.ERROR)) { LOG.error("", ex); } } return clone; } public class MyState { public MyState() { } @Override public Object clone() throws CloneNotSupportedException { BuildScript_Configuration.MyState state = new BuildScript_Configuration.MyState(); return state; } } public BuildScript_Configuration(Project project, BuildScript_Configuration_Factory factory, String name) { super(project, factory, name); } @Nullable public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment environment) throws ExecutionException { return new BuildScript_Configuration_RunProfileState(this, executor, environment); } @Nullable public SettingsEditor<ConfigurationPerRunnerSettings> getRunnerSettingsEditor(ProgramRunner runner) { return null; } public ConfigurationPerRunnerSettings createRunnerSettings(ConfigurationInfoProvider provider) { return null; } public SettingsEditorEx<BuildScript_Configuration> getConfigurationEditor() { return (SettingsEditorEx<BuildScript_Configuration>) getEditor(); } public BuildScript_Configuration createCloneTemplate() { return (BuildScript_Configuration) super.clone(); } public SettingsEditorEx<? extends IPersistentConfiguration> getEditor() { return new BuildScript_Configuration_Editor(myNodePointer.getEditor(), mySettings.getEditor()); } @Override public void checkConfiguration() throws RuntimeConfigurationException { final jetbrains.mps.project.Project mpsProject = ProjectHelper.fromIdeaProject(getProject()); checkConfiguration(new PersistentConfigurationContext() { public jetbrains.mps.project.Project getProject() { return mpsProject; } }); } @Override public boolean canExecute(String executorId) { return BuildScript_Configuration_RunProfileState.canExecute(executorId); } public Object[] createMakeNodePointersTask() { return new Object[]{ListSequence.fromListAndArray(new ArrayList<SNodeReference>(), this.getNodePointer().getNodeRef())}; } }