package sampleFacet.plugin;
/*Generated by MPS */
import jetbrains.mps.make.facet.IFacet;
import java.util.List;
import jetbrains.mps.make.facet.ITarget;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import java.util.ArrayList;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.make.resources.IPropertiesPersistence;
import jetbrains.mps.make.facet.ITargetEx2;
import jetbrains.mps.make.script.IJob;
import jetbrains.mps.make.script.IResult;
import jetbrains.mps.make.resources.IResource;
import jetbrains.mps.make.script.IJobMonitor;
import jetbrains.mps.make.resources.IPropertiesAccessor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.mps.openapi.util.ProgressMonitor;
import jetbrains.mps.smodel.resources.MResource;
import org.jetbrains.mps.openapi.model.SModel;
import jetbrains.mps.lang.core.plugin.Generate_Facet.Target_configure;
import jetbrains.mps.make.script.IConfig;
import jetbrains.mps.baseLanguage.tuples.runtime.Tuples;
import jetbrains.mps.make.script.IPropertiesPool;
import jetbrains.mps.baseLanguage.tuples.runtime.MultiTuple;
import jetbrains.mps.smodel.resources.TResource;
import jetbrains.mps.internal.make.runtime.util.DeltaReconciler;
import jetbrains.mps.internal.make.runtime.util.FilesDelta;
import jetbrains.mps.vfs.IFile;
import jetbrains.mps.make.script.IFeedback;
import java.util.Map;
import jetbrains.mps.internal.collections.runtime.MapSequence;
public class Sample_Facet extends IFacet.Stub {
private List<ITarget> targets = ListSequence.fromList(new ArrayList<ITarget>());
private IFacet.Name name = new IFacet.Name("sampleFacet.Sample");
public Sample_Facet() {
ListSequence.fromList(targets).addElement(new Sample_Facet.Target_readParams());
ListSequence.fromList(targets).addElement(new Sample_Facet.Target_reportFiles());
}
public Iterable<ITarget> targets() {
return targets;
}
public Iterable<IFacet.Name> optional() {
return null;
}
public Iterable<IFacet.Name> required() {
return Sequence.fromArray(new IFacet.Name[]{new IFacet.Name("jetbrains.mps.lang.core.Generate"), new IFacet.Name("jetbrains.mps.lang.core.TextGen")});
}
public Iterable<IFacet.Name> extended() {
return null;
}
public IFacet.Name getName() {
return this.name;
}
public IPropertiesPersistence propertiesPersistence() {
return new Sample_Facet.TargetProperties();
}
public static class Target_readParams implements ITargetEx2 {
private static final ITarget.Name name = new ITarget.Name("sampleFacet.Sample.readParams");
public Target_readParams() {
}
public IJob createJob() {
return new IJob.Stub() {
@Override
public IResult execute(final Iterable<IResource> rawInput, final IJobMonitor monitor, final IPropertiesAccessor pa, @NotNull final ProgressMonitor progressMonitor) {
Iterable<IResource> _output_kf1bs5_a0a = null;
final Iterable<MResource> input = (Iterable<MResource>) (Iterable) rawInput;
switch (0) {
case 0:
for (IResource resource : input) {
MResource mres = (MResource) resource;
String paramVal = vars(pa.forResource(mres)).SomeParam();
Integer countVal = vars(pa.forResource(mres)).Count();
String sarch = vars(pa.forResource(mres)).arch();
for (SModel smd : mres.models()) {
if (paramVal != null) {
Target_configure.vars(pa.global()).parametersProvider().addParameter(smd, "sample.parameter", paramVal);
}
if (countVal != null) {
Target_configure.vars(pa.global()).parametersProvider().addParameter(smd, "count", countVal);
}
if (sarch != null) {
Target_configure.vars(pa.global()).parametersProvider().addParameter(smd, "r:00000000-0000-4000-0000-011c895905f9.GlobalParameters.arch", sarch);
}
}
}
Target_configure.vars(pa.global()).parametersProvider().addParameter("count", 100500);
default:
progressMonitor.done();
return new IResult.SUCCESS(_output_kf1bs5_a0a);
}
}
};
}
public IConfig createConfig() {
return null;
}
public Iterable<ITarget.Name> notAfter() {
return null;
}
public Iterable<ITarget.Name> after() {
return Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("jetbrains.mps.lang.core.Generate.configure")});
}
public Iterable<ITarget.Name> notBefore() {
return null;
}
public Iterable<ITarget.Name> before() {
return Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("jetbrains.mps.lang.core.Generate.generate")});
}
public ITarget.Name getName() {
return name;
}
public boolean isOptional() {
return false;
}
public boolean requiresInput() {
return true;
}
public boolean producesOutput() {
return true;
}
public Iterable<Class<? extends IResource>> expectedInput() {
List<Class<? extends IResource>> rv = ListSequence.fromList(new ArrayList<Class<? extends IResource>>());
ListSequence.fromList(rv).addElement(MResource.class);
return rv;
}
public Iterable<Class<? extends IResource>> expectedOutput() {
return null;
}
public <T> T createParameters(Class<T> cls) {
return cls.cast(new Parameters());
}
public <T> T createParameters(Class<T> cls, T copyFrom) {
T t = createParameters(cls);
if (t != null) {
((Tuples._3) t).assign((Tuples._3) copyFrom);
}
return t;
}
public int workEstimate() {
return 1;
}
public static Sample_Facet.Target_readParams.Parameters vars(IPropertiesPool ppool) {
return ppool.properties(name, Sample_Facet.Target_readParams.Parameters.class);
}
public static class Parameters extends MultiTuple._3<String, Integer, String> {
public Parameters() {
super();
}
public Parameters(String SomeParam, Integer Count, String arch) {
super(SomeParam, Count, arch);
}
public String SomeParam(String value) {
return super._0(value);
}
public Integer Count(Integer value) {
return super._1(value);
}
public String arch(String value) {
return super._2(value);
}
public String SomeParam() {
return super._0();
}
public Integer Count() {
return super._1();
}
public String arch() {
return super._2();
}
}
}
public static class Target_reportFiles implements ITargetEx2 {
private static final ITarget.Name name = new ITarget.Name("sampleFacet.Sample.reportFiles");
public Target_reportFiles() {
}
public IJob createJob() {
return new IJob.Stub() {
@Override
public IResult execute(final Iterable<IResource> rawInput, final IJobMonitor monitor, final IPropertiesAccessor pa, @NotNull final ProgressMonitor progressMonitor) {
Iterable<IResource> _output_kf1bs5_a0b = null;
final Iterable<TResource> input = (Iterable<TResource>) (Iterable) rawInput;
switch (0) {
case 0:
for (IResource resource : input) {
TResource tres = (TResource) resource;
new DeltaReconciler(tres.delta()).visitAll(new FilesDelta.Visitor() {
@Override
public boolean acceptWritten(IFile file) {
monitor.reportFeedback(new IFeedback.INFORMATION(String.valueOf("written file: " + file)));
return true;
}
});
_output_kf1bs5_a0b = Sequence.fromIterable(_output_kf1bs5_a0b).concat(Sequence.fromIterable(Sequence.<IResource>singleton(resource)));
}
default:
progressMonitor.done();
return new IResult.SUCCESS(_output_kf1bs5_a0b);
}
}
};
}
public IConfig createConfig() {
return null;
}
public Iterable<ITarget.Name> notAfter() {
return null;
}
public Iterable<ITarget.Name> after() {
return Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("jetbrains.mps.lang.core.TextGen.textGen")});
}
public Iterable<ITarget.Name> notBefore() {
return null;
}
public Iterable<ITarget.Name> before() {
return Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("jetbrains.mps.make.facets.Make.reconcile")});
}
public ITarget.Name getName() {
return name;
}
public boolean isOptional() {
return false;
}
public boolean requiresInput() {
return true;
}
public boolean producesOutput() {
return true;
}
public Iterable<Class<? extends IResource>> expectedInput() {
List<Class<? extends IResource>> rv = ListSequence.fromList(new ArrayList<Class<? extends IResource>>());
ListSequence.fromList(rv).addElement(TResource.class);
return rv;
}
public Iterable<Class<? extends IResource>> expectedOutput() {
return null;
}
public <T> T createParameters(Class<T> cls) {
return null;
}
public <T> T createParameters(Class<T> cls, T copyFrom) {
T t = createParameters(cls);
return t;
}
public int workEstimate() {
return 1;
}
}
public static class TargetProperties implements IPropertiesPersistence {
public TargetProperties() {
}
public void storeValues(Map<String, String> store, IPropertiesPool properties) {
{
ITarget.Name name = new ITarget.Name("sampleFacet.Sample.readParams");
if (properties.hasProperties(name)) {
Sample_Facet.Target_readParams.Parameters props = properties.properties(name, Sample_Facet.Target_readParams.Parameters.class);
MapSequence.fromMap(store).put("sampleFacet.Sample.readParams.SomeParam", String.valueOf(props.SomeParam()));
MapSequence.fromMap(store).put("sampleFacet.Sample.readParams.Count", String.valueOf(props.Count()));
MapSequence.fromMap(store).put("sampleFacet.Sample.readParams.arch", String.valueOf(props.arch()));
}
}
}
public void loadValues(Map<String, String> store, IPropertiesPool properties) {
try {
{
ITarget.Name name = new ITarget.Name("sampleFacet.Sample.readParams");
Sample_Facet.Target_readParams.Parameters props = properties.properties(name, Sample_Facet.Target_readParams.Parameters.class);
if (MapSequence.fromMap(store).containsKey("sampleFacet.Sample.readParams.SomeParam")) {
props.SomeParam(String.valueOf(MapSequence.fromMap(store).get("sampleFacet.Sample.readParams.SomeParam")));
}
if (MapSequence.fromMap(store).containsKey("sampleFacet.Sample.readParams.Count")) {
props.Count(Integer.valueOf(MapSequence.fromMap(store).get("sampleFacet.Sample.readParams.Count")));
}
if (MapSequence.fromMap(store).containsKey("sampleFacet.Sample.readParams.arch")) {
props.arch(String.valueOf(MapSequence.fromMap(store).get("sampleFacet.Sample.readParams.arch")));
}
}
} catch (RuntimeException re) {
}
}
}
}