X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.structural.synchronization%2Fsrc%2Forg%2Fsimantics%2Fstructural%2Fsynchronization%2Fbase%2FSolverNameUtil.java;fp=bundles%2Forg.simantics.structural.synchronization%2Fsrc%2Forg%2Fsimantics%2Fstructural%2Fsynchronization%2Fbase%2FSolverNameUtil.java;h=70c9ff7ae667e552587112039ffb377d18163ef8;hp=0000000000000000000000000000000000000000;hb=e4007b17057ff4acc2e900c5c811743b74f71f41;hpb=3fe6778c21d6437e90d08987de6dae7bca89bc6d diff --git a/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/SolverNameUtil.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/SolverNameUtil.java new file mode 100644 index 000000000..70c9ff7ae --- /dev/null +++ b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/SolverNameUtil.java @@ -0,0 +1,34 @@ +package org.simantics.structural.synchronization.base; + +import java.util.function.BiConsumer; + +public interface SolverNameUtil { + + String getFreshName(String parentName, String name); + String ensureNameIsVariationOf(String parentName, int id, String name); + + /** + * The name utility can internally keep track of + * suggested name -> generated + * fresh name associations that it has had to perform during its + * lifetime in {@link #getFreshName(String, String)}. If the implementation + * keeps track of these renames, the purpose of this method is to check + * whether at the time of invocation it is possible to rename the solver + * components to their suggested names or not. For every rename that is + * performed, the specified consumer shall be invoked with the arguments + * (previous name, new name) after the rename has been + * performed. + * + *

+ * This method is intended to be invoked right at the end of + * synchronization. + * + * @param callback + * a binary consumer that takes as first argument the previous + * name of the renamed component and as second argument the new + * (current) name of the component or null to skip + * callback invocation + */ + default void applySuggestedNames(BiConsumer callback) {} + +}