From: Tuukka Lehtonen Date: Fri, 24 Jan 2020 21:41:56 +0000 (+0000) Subject: Merge "Optimise performance of job scheduling in QueryListening" X-Git-Tag: v1.43.0~116 X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=commitdiff_plain;h=6fc22b26dc0ade0c5d5fbcc91801e349e84f2743;hp=7d77f64b4f0fba1fd72a89eeb0918db92f4e51b2 Merge "Optimise performance of job scheduling in QueryListening" --- diff --git a/bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/GraphDebugger.java b/bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/GraphDebugger.java index 46d31fabe..559b0e702 100644 --- a/bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/GraphDebugger.java +++ b/bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/GraphDebugger.java @@ -496,7 +496,7 @@ public class GraphDebugger extends Composite { public Browser createBrowser(Composite parent) { try { - browser = new Browser(parent, SWT.MOZILLA); + browser = new Browser(parent, SWT.WEBKIT); } catch (SWTError e) { //System.out.println("Could not instantiate Browser: " + e.getMessage()); browser = new Browser(parent, SWT.NONE); diff --git a/bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/VariableDebugger.java b/bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/VariableDebugger.java index 697a58939..c1f47624d 100644 --- a/bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/VariableDebugger.java +++ b/bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/VariableDebugger.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Association for Decentralized Information Management + * Copyright (c) 2007, 2020 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -65,7 +65,6 @@ import org.simantics.db.Session; import org.simantics.db.common.ResourceArray; import org.simantics.db.common.procedure.adapter.DisposableListener; import org.simantics.db.common.request.UnaryRead; -import org.simantics.db.common.utils.Logger; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.SelectionHints; import org.simantics.db.layer0.request.PossibleURI; @@ -90,6 +89,8 @@ import org.simantics.utils.bytes.Base64; import org.simantics.utils.ui.ErrorLogger; import org.simantics.utils.ui.ISelectionUtils; import org.simantics.utils.ui.PathUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** @@ -98,6 +99,8 @@ import org.simantics.utils.ui.PathUtils; */ public class VariableDebugger extends Composite { + private static final Logger LOGGER = LoggerFactory.getLogger(VariableDebugger.class); + public interface HistoryListener { void historyChanged(); } @@ -166,7 +169,7 @@ public class VariableDebugger extends Composite { @Override public void exception(Throwable t) { - Logger.defaultLogError(t); + LOGGER.error("Page content listener failed unexpectedly", t); } } @@ -261,15 +264,16 @@ public class VariableDebugger extends Composite { @Override public void drop(DropTargetEvent event) { label.setBackground(null); + String uri = null; try { - String uri = parseUri(event); + uri = parseUri(event); if (uri == null) { event.detail = DND.DROP_NONE; return; } changeLocation(uri); } catch (DatabaseException e) { - Logger.defaultLogError(e); + LOGGER.error("Changing location to URI {} failed", uri, e); } } @@ -330,13 +334,14 @@ public class VariableDebugger extends Composite { @Override public void widgetSelected(SelectionEvent e) { + String uri = null; try { - String uri = text.getText(); + uri = text.getText(); // Make sure that URI is resolvable to Variable session.sync(new ResourceURIToVariable(uri)); changeLocation(uri); } catch (DatabaseException e1) { - Logger.defaultLogError(e1); + LOGGER.error("Lookup failed for URI {}", uri, e1); } } @@ -356,7 +361,7 @@ public class VariableDebugger extends Composite { public Browser createBrowser(Composite parent) { try { - browser = new Browser(parent, SWT.MOZILLA); + browser = new Browser(parent, SWT.NONE); } catch (SWTError e) { //System.out.println("Could not instantiate Browser: " + e.getMessage()); browser = new Browser(parent, SWT.NONE); @@ -594,9 +599,9 @@ public class VariableDebugger extends Composite { else return value != null ? getValue(graph, r, value) : "null"; //$NON-NLS-1$ } catch (Throwable e) { try { - Logger.defaultLogError("getValue " + r.getURI(graph), e); //$NON-NLS-1$ + LOGGER.error("getValue({})", r.getURI(graph), e); //$NON-NLS-1$ } catch (DatabaseException e1) { - Logger.defaultLogError(e1); + LOGGER.error("Failed to get URI for problematic value variable", e1); } return e.getMessage(); } @@ -634,7 +639,7 @@ public class VariableDebugger extends Composite { String encoded = Base64.encode(uri.getBytes(utf8)); return encoded; } catch (Exception e) { - Logger.defaultLogError(e); + LOGGER.error("Failed to construct link string for variable", e); //$NON-NLS-1$ return e.getMessage(); } } @@ -681,11 +686,11 @@ public class VariableDebugger extends Composite { String rviString = getRVIString(graph, var); Object node = null; if(var instanceof AbstractChildVariable) { - VariableNode vn = ((AbstractChildVariable)var).node; + VariableNode vn = ((AbstractChildVariable)var).node; if(vn != null) node = vn.node; } if(var instanceof AbstractPropertyVariable) { - VariableNode vn = ((AbstractPropertyVariable)var).node; + VariableNode vn = ((AbstractPropertyVariable)var).node; if(vn != null) node = vn.node; } diff --git a/bundles/org.simantics.desktop.product/splash.svg b/bundles/org.simantics.desktop.product/splash.svg index 8d7aa725b..b984365f4 100644 --- a/bundles/org.simantics.desktop.product/splash.svg +++ b/bundles/org.simantics.desktop.product/splash.svg @@ -401,7 +401,7 @@ id="tspan6235" x="4.0821486" y="291.79337" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.6444446px;font-family:'Cascadia Code';-inkscape-font-specification:'Cascadia Code, Normal';fill:#ffffff;fill-opacity:1;stroke-width:0.26458335px;text-anchor:start;text-align:start;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;">1.42.0 + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.6444446px;font-family:'Cascadia Code';-inkscape-font-specification:'Cascadia Code, Normal';fill:#ffffff;fill-opacity:1;stroke-width:0.26458335px;text-anchor:start;text-align:start;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;">1.43.0 elements); + /** + * Extended interface-method that receives the pick request in addition to the + * picked elements to be sorted. Allows e.g. looking at the pick area in the + * sorter. + * + *

+ * The default implementation just invokes {@link #sort(List)} ignoring the pick + * request. The default implementation also keeps PickSorter API/ABI-compatible. + * + * @param request the original pick request that produced the hits listed in + * elements + * @param elements the element list to sort + * + * @author Tuukka Lehtonen + * @since 1.43.0, 1.35.3 + */ + default void sort(PickRequest request, List elements) { + sort(elements); + } + // public static final PickSorter CONNECTIONS_LAST = new PickSorter() { @Override @@ -204,12 +230,8 @@ public class PickRequest { } return minDistanceSq; } - - @Override - public void sort(List elements) { - if (sorter != null) - sorter.sort(elements); + private void sortConnections(List elements) { List> connections = new ArrayList<>(elements.size()); int tail = 0; for (int i = 0; i < elements.size(); i++) { @@ -217,7 +239,7 @@ public class PickRequest { RouteGraphNode rgn = element.getHint(RouteGraphConnectionClass.KEY_RG_NODE); if (rgn != null) { double distanceSq = getDistanceSqToRouteGraphConnection(rgn, x, y); - connections.add(new Pair(distanceSq, element)); + connections.add(Pair.make(distanceSq, element)); } if (rgn == null || i == elements.size() - 1) { @@ -236,6 +258,20 @@ public class PickRequest { } } } + + @Override + public void sort(PickRequest request, List elements) { + if (sorter != null) + sorter.sort(request, elements); + sortConnections(elements); + } + + @Override + public void sort(List elements) { + if (sorter != null) + sorter.sort(elements); + sortConnections(elements); + } }; } } diff --git a/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/handler/impl/PickContextImpl.java b/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/handler/impl/PickContextImpl.java index 6a77af9b8..5d42cebb8 100644 --- a/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/handler/impl/PickContextImpl.java +++ b/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/handler/impl/PickContextImpl.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2018 Association for Decentralized Information Management + * Copyright (c) 2007, 2020 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,7 +8,7 @@ * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation - * Semantum Oy - gitlab #66 - parallel/spatial optimization + * Semantum Oy - gitlab #60, #454 - parallel/spatial optimization *******************************************************************************/ package org.simantics.g2d.diagram.handler.impl; @@ -97,7 +97,7 @@ public class PickContextImpl implements PickContext { if (!result.isEmpty()) { if (request.pickSorter != null) { List elems = new ArrayList<>(result); - request.pickSorter.sort(elems); + request.pickSorter.sort(request, elems); finalResult.addAll(elems); } else { finalResult.addAll(result); diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/AssignSymbolGroupsDialog.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/AssignSymbolGroupsDialog.java index a85c35628..2af151094 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/AssignSymbolGroupsDialog.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/AssignSymbolGroupsDialog.java @@ -135,7 +135,7 @@ public abstract class AssignSymbolGroupsDialog extends SelectionDialog { Label label = new Label(buttonComposite, SWT.NONE); Button newButton = createButton(buttonComposite, - IDialogConstants.INTERNAL_ID-1, org.simantics.modeling.ui.actions.WorkbenchMessages.AssignSymbolGroupsDialog_New, false); + IDialogConstants.INTERNAL_ID-1, org.simantics.modeling.ui.actions.Messages.AssignSymbolGroupsDialog_New, false); listener = new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { @@ -145,7 +145,7 @@ public abstract class AssignSymbolGroupsDialog extends SelectionDialog { newButton.addSelectionListener(listener); Button removeButton = createButton(buttonComposite, - IDialogConstants.INTERNAL_ID-2, org.simantics.modeling.ui.actions.WorkbenchMessages.AssignSymbolGroupsDialog_Remove, false); + IDialogConstants.INTERNAL_ID-2, org.simantics.modeling.ui.actions.Messages.AssignSymbolGroupsDialog_Remove, false); listener = new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/Messages.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/Messages.java index 2039c105b..6c45308a6 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/Messages.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/Messages.java @@ -16,6 +16,8 @@ public class Messages extends NLS { public static String AssignSymbolGroup_SelectSymbolGroupsTheSelectedSymbolsAreShownIn; public static String AssignSymbolGroup_SymbolGroupAssignments; public static String AssignSymbolGroup_WriteSymbolGroupName; + public static String AssignSymbolGroupsDialog_New; + public static String AssignSymbolGroupsDialog_Remove; public static String CompilePGraphsAction_CompilePGraphs; public static String CompilePGraphsAction_Continue; public static String CompilePGraphsAction_FollowingIssuesFound; diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/WorkbenchMessages.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/WorkbenchMessages.java deleted file mode 100644 index 24e7b8af4..000000000 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/WorkbenchMessages.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.simantics.modeling.ui.actions; - -import org.eclipse.osgi.util.NLS; - -public class WorkbenchMessages extends NLS { - private static final String BUNDLE_NAME = "org.simantics.modeling.ui.actions.messages"; //$NON-NLS-1$ - public static String AssignSymbolGroupsDialog_New; - public static String AssignSymbolGroupsDialog_Remove; - static { - // initialize resource bundle - NLS.initializeMessages(BUNDLE_NAME, WorkbenchMessages.class); - } - - private WorkbenchMessages() { - } -} diff --git a/bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/SCLOsgi.java b/bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/SCLOsgi.java index 2e717f945..90876bbdf 100644 --- a/bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/SCLOsgi.java +++ b/bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/SCLOsgi.java @@ -13,12 +13,16 @@ import org.simantics.scl.compiler.testing.repository.TestRepository; import org.simantics.scl.osgi.internal.Activator; import org.simantics.scl.osgi.internal.ServiceBasedModuleSourceRepository; import org.simantics.scl.osgi.internal.ServiceBasedTestRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import gnu.trove.procedure.TObjectProcedure; public class SCLOsgi { + private static final Logger LOGGER = LoggerFactory.getLogger(SCLOsgi.class); + private SCLOsgi() {} public static ModuleSourceRepository SOURCE_REPOSITORY = new ServiceBasedModuleSourceRepository(Activator.getContext()); @@ -38,21 +42,19 @@ public class SCLOsgi { } }); } - + public static String compileAllModules() { ArrayList modulesWithErrors = new ArrayList(); SCLOsgi.SOURCE_REPOSITORY.forAllModules(new TObjectProcedure() { @Override public boolean execute(String moduleName) { - System.out.print(moduleName); - System.out.print(" - "); Failable module = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName); if(module.didSucceed()) - System.out.println("succeeded"); + LOGGER.trace("{} - {}", moduleName, "succeeded"); else if(module == DoesNotExist.INSTANCE) - System.out.println("does not exist"); // should not happen + LOGGER.trace("{} - {}", moduleName, "does not exist"); // should not happen else { - System.out.println("error"); + LOGGER.trace("{} - {}", moduleName, "error"); modulesWithErrors.add(moduleName); } return true; diff --git a/bundles/org.simantics.structural2/src/org/simantics/structural2/scl/procedural/CompileProceduralComponentTypeRequest.java b/bundles/org.simantics.structural2/src/org/simantics/structural2/scl/procedural/CompileProceduralComponentTypeRequest.java index 871dc1975..3a4801078 100644 --- a/bundles/org.simantics.structural2/src/org/simantics/structural2/scl/procedural/CompileProceduralComponentTypeRequest.java +++ b/bundles/org.simantics.structural2/src/org/simantics/structural2/scl/procedural/CompileProceduralComponentTypeRequest.java @@ -58,6 +58,10 @@ public class CompileProceduralComponentTypeRequest extends AbstractExpressionCom } } + public static Function1 compile(ReadGraph graph, Resource componentType) throws DatabaseException { + return graph.syncRequest(new CompileProceduralComponentTypeRequest(componentType), TransientCacheListener.instance()); + } + @Override protected String getExpressionText(ReadGraph graph) throws DatabaseException { diff --git a/features/org.simantics.sdk.feature/feature.xml b/features/org.simantics.sdk.feature/feature.xml index cd214cf61..0d0bc2f07 100644 --- a/features/org.simantics.sdk.feature/feature.xml +++ b/features/org.simantics.sdk.feature/feature.xml @@ -13,7 +13,7 @@ diff --git a/releng/org.simantics.sdk.build.targetdefinition/simantics.target b/releng/org.simantics.sdk.build.targetdefinition/simantics.target index f35f163fe..67ce33201 100644 --- a/releng/org.simantics.sdk.build.targetdefinition/simantics.target +++ b/releng/org.simantics.sdk.build.targetdefinition/simantics.target @@ -1,7 +1,7 @@ - + diff --git a/releng/org.simantics.sdk.build.targetdefinition/simantics.tpd b/releng/org.simantics.sdk.build.targetdefinition/simantics.tpd index ddb3a1702..1d7588e26 100644 --- a/releng/org.simantics.sdk.build.targetdefinition/simantics.tpd +++ b/releng/org.simantics.sdk.build.targetdefinition/simantics.tpd @@ -1,4 +1,4 @@ -target "Simantics 1.42.0" +target "Simantics 1.43.0" with source allEnvironments diff --git a/releng/org.simantics.sdk.repository/pom.xml b/releng/org.simantics.sdk.repository/pom.xml index 6ca55771e..c636acba4 100644 --- a/releng/org.simantics.sdk.repository/pom.xml +++ b/releng/org.simantics.sdk.repository/pom.xml @@ -2,7 +2,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.simantics.sdk.repository - 1.42.0-SNAPSHOT + 1.43.0-SNAPSHOT eclipse-repository