public AbstractOMethodDefinition(String methodId, OMethod oMethod){ this.methodId = methodId; this.oMethod = oMethod; behaviors = Arrays.asList(oMethod.behaviors()); } @Override
@Override public BootstrapType getBootstrapType() { return oMethod.bootstrap(); } @Override
@Override public boolean isChangingDisplayMode() { return oMethod.changingDisplayMode(); } @Override
/** * * This method annotated as {@link JavaClassOMethodDefinition} and loaded into {@link JavaClassOMethodDefinitionStorage} * */ @OMethod(filters = { @OFilter(fClass = TestFilter.class, fData = "testData" ) }) public class AnnotatedMethod implements IMethod{ @Override public void init(IMethodDefinition config, IMethodContext envData) { } @Override public Command<?> createCommand(String id) { return null; } }
@Override public boolean isChangingModel() { return oMethod.changingModel(); } @Override
@Override public FAIconType getIcon() { return oMethod.icon(); } @Override
@Override public List<IMethodFilter> getFilters() { if (filters == null){ filters = makeFilters(oMethod.filters()); } return filters; } @Override
/** * Command to save silently current dashboard */ @OMethod(order=3,filters={ @OFilter(fClass = PlaceFilter.class, fData = "DASHBOARD_SETTINGS"), }) public class SilentSaveDashboardCommand extends AjaxCommand<ODocument> { private static final long serialVersionUID = 1L; public SilentSaveDashboardCommand(String id, IModel<ODocument> dashboardDocumentModel) { super(id, "command.save", dashboardDocumentModel); setIcon(FAIconType.save); setChangingDisplayMode(true); } @Override public void onClick(Optional<AjaxRequestTarget> targetOptional) { IDashboardContainer container = findParent(IDashboardContainer.class); DashboardPanel<?> dashboard = container.getCurrentDashboard().getSelfComponent(); dashboard.storeDashboard(); dashboard.getModeModel().setObject(DisplayMode.VIEW); targetOptional.ifPresent(target -> { target.add(container.getSelf().get("pageHeader")); target.add(dashboard); }); } }
@OMethod(order=2,filters={ @OFilter(fClass = PlaceFilter.class, fData = "DASHBOARD_SETTINGS"), })
@OMethod(order=1,filters={ @OFilter(fClass = PlaceFilter.class, fData = "DASHBOARD_SETTINGS"), })
@OMethod( icon = FAIconType.play, bootstrap=BootstrapType.SUCCESS,titleKey="task.command.start", filters={@OFilter(fClass = PlaceFilter.class, fData = "STRUCTURE_TABLE"), @OFilter(fClass = WidgetTypeFilter.class, fData = "parameters"), }, behaviors={} ) public void startNewSession( IMethodContext data){ startNewSession(); } ///////////////////////////////////////////////////////////////////////////////////
@OMethod( order = 20,bootstrap=BootstrapType.WARNING,icon = FAIconType.pause, filters={ @OFilter(fClass = PlaceFilter.class, fData = "STRUCTURE_TABLE"), @OFilter(fClass = WidgetTypeFilter.class, fData = "parameters"), }, behaviors={OIntegrationConfigStopBehavior.class} ) public void suspend(IMethodContext data){ final CamelContext context = getOrMakeContext(data.getCurrentWidget()); new Thread(new Runnable() { @Override public void run() { try { ServiceStatus status = context.getStatus(); if (status.isSuspended()){ context.start(); }else if(status.isStarted()){ context.suspend(); } } catch (Exception e) { LOG.error("Cannot start or suspend Camel Context",e); } } }).start(); waitingRefresh(context); } /////////////////////////////////////////////////////////////////////////////////////////////////////
@OMethod(order=10,filters={ @OFilter(fClass = DisallowFilter.class, fData = ""), // not need to show this method outside development
@OMethod(order=2,filters={ @OFilter(fClass = DisallowFilter.class, fData = ""), // not need to show this method outside development
@OMethod( order = 30,bootstrap=BootstrapType.DANGER,icon = FAIconType.stop, filters={@OFilter(fClass = PlaceFilter.class, fData = "STRUCTURE_TABLE"), @OFilter(fClass = WidgetTypeFilter.class, fData = "parameters"), }, behaviors={OIntegrationConfigStopBehavior.class} ) public void stop(IMethodContext data){ CamelContext context = getOrMakeContextByRid(getDocument().getIdentity().toString(),data.getCurrentWidget()); try { context.stop(); } catch (Exception e) { LOG.error("Cannot stop Camel Context",e); } waitingRefresh(context); } /////////////////////////////////////////////////////////////////////////////////////////////////////
@OMethod( order=10,bootstrap=BootstrapType.SUCCESS,icon = FAIconType.play, filters={
@OMethod( icon = FAIconType.stop, bootstrap=BootstrapType.DANGER, filters={@OFilter(fClass = PlaceFilter.class, fData = "STRUCTURE_TABLE"), @OFilter(fClass = WidgetTypeFilter.class, fData = "parameters"), }, behaviors={OTaskSessionInterruptBehavior.class} ) public void interrupt( IMethodContext data){ try { interrupt(); } catch (Exception e) { AbstractWidget<?> widget = data.getCurrentWidget(); if(widget!=null) { widget.error(widget.getLocalizer().getString("errors.session.cantinterupt", widget, Model.of(e.getMessage()))); } LOG.error("Can't interrupt the session", e); } } ///////////////////////////////////////////////////////////////////////
@OMethod( order=10,bootstrap=BootstrapType.SUCCESS,icon = FAIconType.play, permission="EXECUTE", filters={ @OFilter(fClass = PlaceFilter.class, fData = "STRUCTURE_TABLE"), @OFilter(fClass = WidgetTypeFilter.class, fData = "parameters"), // @OFilter(fClass = PlaceFilter.class, fData = "STRUCTURE_TABLE|DATA_TABLE"), } ) public void run(IMethodContext data){ OTaskSessionRuntime newSession = startNewSession(); AbstractWidgetDisplayModeAwarePage<ODocument> page = new ODocumentPage(new ODocumentModel(newSession.getOTaskSessionPersisted().getDocument())).setModeObject(DisplayMode.VIEW); data.getCurrentWidget().setResponsePage(page); }