001package org.nasdanika.html.flow; 002 003import java.util.List; 004import java.util.function.BiConsumer; 005import java.util.function.Consumer; 006import java.util.stream.Collectors; 007 008import org.eclipse.emf.common.util.EList; 009import org.eclipse.emf.ecore.EObject; 010import org.eclipse.emf.ecore.ETypedElement; 011import org.nasdanika.common.Context; 012import org.nasdanika.common.ProgressMonitor; 013import org.nasdanika.flow.FlowPackage; 014import org.nasdanika.flow.Resource; 015import org.nasdanika.html.model.app.Action; 016import org.nasdanika.ncore.util.NamedElementComparator; 017 018public class ResourceActionBuilder extends ServiceProviderActionBuilder<Resource> { 019 020 public ResourceActionBuilder(Resource value, Context context) { 021 super(value, context); 022 } 023 024 @Override 025 protected Action buildAction( 026 Action action, 027 BiConsumer<EObject, Action> registry, 028 Consumer<org.nasdanika.common.Consumer<org.nasdanika.html.emf.EObjectActionResolver.Context>> resolveConsumer, 029 ProgressMonitor progressMonitor) throws Exception { 030 031 action = super.buildAction(action, registry, resolveConsumer, progressMonitor); 032 EList<EObject> children = action.getChildren(); 033 for (Resource element: getTarget().getChildren().values().stream().sorted(NamedElementComparator.INSTANCE).collect(Collectors.toList())) { 034 children.add(createChildAction(element, registry, resolveConsumer, progressMonitor)); 035 } 036 037 return action; 038 } 039 040 @Override 041 protected List<ETypedElement> getProperties() { 042 List<ETypedElement> properties = super.getProperties(); 043 properties.add(FlowPackage.Literals.RESOURCE__ARTIFACTS); 044 properties.add(FlowPackage.Literals.RESOURCE__USED_BY); 045 properties.add(FlowPackage.Literals.RESOURCE__USED_IN); 046 return properties; 047 } 048 049}