package jetbrains.mps.make.facets; /*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.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.DResource; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.vfs.FileSystem; import jetbrains.mps.vfs.IFile; import jetbrains.mps.internal.make.runtime.util.DeltaReconciler; import jetbrains.mps.internal.collections.runtime.ITranslator2; import jetbrains.mps.make.delta.IDelta; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import jetbrains.mps.make.delta.IInternalDelta; import jetbrains.mps.internal.make.runtime.util.FilesDelta; 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.make.facet.ITargetEx; import jetbrains.mps.smodel.resources.CleanupActivityResource; import jetbrains.mps.make.script.IConfigMonitor; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; import java.util.Map; import jetbrains.mps.internal.collections.runtime.MapSequence; public class Make_Facet extends IFacet.Stub { private List<ITarget> targets = ListSequence.fromList(new ArrayList<ITarget>()); private IFacet.Name name = new IFacet.Name("jetbrains.mps.make.facets.Make"); public Make_Facet() { ListSequence.fromList(targets).addElement(new Make_Facet.Target_reconcile()); ListSequence.fromList(targets).addElement(new Make_Facet.Target_cleanup()); ListSequence.fromList(targets).addElement(new Make_Facet.Target_make()); } public Iterable<ITarget> targets() { return targets; } public Iterable<IFacet.Name> optional() { return null; } public Iterable<IFacet.Name> required() { return null; } public Iterable<IFacet.Name> extended() { return null; } public IFacet.Name getName() { return this.name; } public IPropertiesPersistence propertiesPersistence() { return new Make_Facet.TargetProperties(); } public static class Target_reconcile implements ITargetEx2 { private static final ITarget.Name name = new ITarget.Name("jetbrains.mps.make.facets.Make.reconcile"); public Target_reconcile() { } 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_pm9z_a0a = null; final Iterable<DResource> input = (Iterable<DResource>) (Iterable) rawInput; switch (0) { case 0: if (Boolean.TRUE.equals(vars(pa.global()).skipReconcile())) { _output_pm9z_a0a = Sequence.fromIterable(_output_pm9z_a0a).concat(Sequence.fromIterable(input)); return new IResult.SUCCESS(_output_pm9z_a0a); } progressMonitor.start("Reconciling", 1); try { FileSystem.getInstance().runWriteTransaction(new Runnable() { public void run() { final List<IFile> writtenFiles = ListSequence.fromList(new ArrayList<IFile>()); DeltaReconciler reconciler = new DeltaReconciler(Sequence.fromIterable(input).translate(new ITranslator2<DResource, IDelta>() { public Iterable<IDelta> translate(DResource res) { return res.delta(); } }).where(new IWhereFilter<IDelta>() { public boolean accept(IDelta d) { return !(d instanceof IInternalDelta); } })); reconciler.reconcileAll(); reconciler.visitAll(new FilesDelta.Visitor() { @Override public boolean acceptWritten(IFile file) { ListSequence.fromList(writtenFiles).addElement(file); return true; } }); DeltaReconciler internalReconciler = new DeltaReconciler(Sequence.fromIterable(input).translate(new ITranslator2<DResource, IDelta>() { public Iterable<IDelta> translate(DResource res) { return res.delta(); } }).where(new IWhereFilter<IDelta>() { public boolean accept(IDelta d) { return d instanceof IInternalDelta; } })); internalReconciler.reconcileAll(); internalReconciler.visitAll(new FilesDelta.Visitor() { @Override public boolean acceptWritten(IFile file) { ListSequence.fromList(writtenFiles).addElement(file); return true; } }); FileSystem.getInstance().scheduleUpdateForWrittenFiles(writtenFiles); } }); _output_pm9z_a0a = Sequence.fromIterable(_output_pm9z_a0a).concat(Sequence.fromIterable(input)); } finally { progressMonitor.done(); } default: progressMonitor.done(); return new IResult.SUCCESS(_output_pm9z_a0a); } } }; } public IConfig createConfig() { return null; } public Iterable<ITarget.Name> notAfter() { return null; } public Iterable<ITarget.Name> after() { return null; } public Iterable<ITarget.Name> notBefore() { return null; } public Iterable<ITarget.Name> before() { return null; } 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(DResource.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._1) t).assign((Tuples._1) copyFrom); } return t; } public int workEstimate() { return 200; } public static Make_Facet.Target_reconcile.Parameters vars(IPropertiesPool ppool) { return ppool.properties(name, Make_Facet.Target_reconcile.Parameters.class); } public static class Parameters extends MultiTuple._1<Boolean> { public Parameters() { super(); } public Parameters(Boolean skipReconcile) { super(skipReconcile); } public Boolean skipReconcile(Boolean value) { return super._0(value); } public Boolean skipReconcile() { return super._0(); } } } public static class Target_cleanup implements ITargetEx { private static final ITarget.Name name = new ITarget.Name("jetbrains.mps.make.facets.Make.cleanup"); public Target_cleanup() { } 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_pm9z_a0b = null; final Iterable<CleanupActivityResource> input = (Iterable<CleanupActivityResource>) (Iterable) rawInput; switch (0) { case 0: for (CleanupActivityResource activity : Sequence.fromIterable(input)) { activity.run(); } default: progressMonitor.done(); return new IResult.SUCCESS(_output_pm9z_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.make.facets.Make.reconcile")}); } 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.make")}); } public ITarget.Name getName() { return name; } public boolean isOptional() { return true; } public boolean requiresInput() { return true; } public boolean producesOutput() { return false; } public Iterable<Class<? extends IResource>> expectedInput() { List<Class<? extends IResource>> rv = ListSequence.fromList(new ArrayList<Class<? extends IResource>>()); ListSequence.fromList(rv).addElement(CleanupActivityResource.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 static class Target_make implements ITargetEx2 { private static final ITarget.Name name = new ITarget.Name("jetbrains.mps.make.facets.Make.make"); public Target_make() { } 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_pm9z_a0c = null; final Iterable<IResource> input = (Iterable<IResource>) (Iterable) rawInput; switch (0) { case 0: default: progressMonitor.done(); return new IResult.SUCCESS(_output_pm9z_a0c); } } }; } public IConfig createConfig() { return new IConfig.Stub() { @Override public boolean configure(final IConfigMonitor cmonitor, final IPropertiesAccessor pa) { switch (0) { case 0: if (vars(pa.global()).pathToFile() == null) { vars(pa.global()).pathToFile(new _FunctionTypes._return_P1_E0<IFile, String>() { public IFile invoke(String p) { return FileSystem.getInstance().getFileByPath(p); } }); } default: return true; } } }; } public Iterable<ITarget.Name> notAfter() { return null; } public Iterable<ITarget.Name> after() { return Sequence.fromArray(new ITarget.Name[]{new ITarget.Name("jetbrains.mps.make.facets.Make.reconcile"), new ITarget.Name("jetbrains.mps.make.facets.Make.cleanup")}); } public Iterable<ITarget.Name> notBefore() { return null; } public Iterable<ITarget.Name> before() { return null; } public ITarget.Name getName() { return name; } public boolean isOptional() { return false; } public boolean requiresInput() { return true; } public boolean producesOutput() { return false; } public Iterable<Class<? extends IResource>> expectedInput() { List<Class<? extends IResource>> rv = ListSequence.fromList(new ArrayList<Class<? extends IResource>>()); ListSequence.fromList(rv).addElement(IResource.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._1) t).assign((Tuples._1) copyFrom); } return t; } public int workEstimate() { return 1; } public static Make_Facet.Target_make.Parameters vars(IPropertiesPool ppool) { return ppool.properties(name, Make_Facet.Target_make.Parameters.class); } public static class Parameters extends MultiTuple._1<_FunctionTypes._return_P1_E0<? extends IFile, ? super String>> { public Parameters() { super(); } public Parameters(_FunctionTypes._return_P1_E0<? extends IFile, ? super String> pathToFile) { super(pathToFile); } public _FunctionTypes._return_P1_E0<? extends IFile, ? super String> pathToFile(_FunctionTypes._return_P1_E0<? extends IFile, ? super String> value) { return super._0(value); } public _FunctionTypes._return_P1_E0<? extends IFile, ? super String> pathToFile() { return super._0(); } } } public static class TargetProperties implements IPropertiesPersistence { public TargetProperties() { } public void storeValues(Map<String, String> store, IPropertiesPool properties) { { ITarget.Name name = new ITarget.Name("jetbrains.mps.make.facets.Make.reconcile"); if (properties.hasProperties(name)) { Make_Facet.Target_reconcile.Parameters props = properties.properties(name, Make_Facet.Target_reconcile.Parameters.class); MapSequence.fromMap(store).put("jetbrains.mps.make.facets.Make.reconcile.skipReconcile", String.valueOf(props.skipReconcile())); } } { ITarget.Name name = new ITarget.Name("jetbrains.mps.make.facets.Make.make"); if (properties.hasProperties(name)) { Make_Facet.Target_make.Parameters props = properties.properties(name, Make_Facet.Target_make.Parameters.class); MapSequence.fromMap(store).put("jetbrains.mps.make.facets.Make.make.pathToFile", null); } } } public void loadValues(Map<String, String> store, IPropertiesPool properties) { try { { ITarget.Name name = new ITarget.Name("jetbrains.mps.make.facets.Make.reconcile"); Make_Facet.Target_reconcile.Parameters props = properties.properties(name, Make_Facet.Target_reconcile.Parameters.class); if (MapSequence.fromMap(store).containsKey("jetbrains.mps.make.facets.Make.reconcile.skipReconcile")) { props.skipReconcile(Boolean.valueOf(MapSequence.fromMap(store).get("jetbrains.mps.make.facets.Make.reconcile.skipReconcile"))); } } { ITarget.Name name = new ITarget.Name("jetbrains.mps.make.facets.Make.make"); Make_Facet.Target_make.Parameters props = properties.properties(name, Make_Facet.Target_make.Parameters.class); if (MapSequence.fromMap(store).containsKey("jetbrains.mps.make.facets.Make.make.pathToFile")) { props.pathToFile(null); } } } catch (RuntimeException re) { } } } }