Class BslUtil

java.lang.Object
com._1c.g5.v8.dt.bsl.util.BslUtil

public class BslUtil extends Object
Common methods for BSL
  • Field Details

    • TRANSFORMER_FORMAL_PARAM

      public static final com.google.common.base.Function<FormalParam,String> TRANSFORMER_FORMAL_PARAM
      Special Function for transform list of FormalParam to string
    • TRANSFORMER_FORMAL_PARAM_WITH_DEF_VALUES

      public static final com.google.common.base.Function<FormalParam,String> TRANSFORMER_FORMAL_PARAM_WITH_DEF_VALUES
      Special Function for transform list of FormalParam with default values to string
  • Constructor Details

    • BslUtil

      public BslUtil()
  • Method Details

    • isBinaryBslFile

      public static boolean isBinaryBslFile(BufferedInputStream inputStream, String fileName) throws IOException
      Returns whether the provided BSL file content with the provided file name is binary BSL module. The input stream will not be closed by this operation. BufferedInputStream is required to keep input cursor unchanged.
      Parameters:
      inputStream - the module content to check, cannot be null
      filePath - the file name to check, cannot be null
      Returns:
      whether the provided BSL file content with the provided file name is binary BSL module
      Throws:
      IOException - if an I/O error occurred
    • createTypesLineStr

      public static String createTypesLineStr(List<TypeItem> types, boolean isRussian)
      Converts list of TypeItem to string
      Parameters:
      types - list of TypeItem
      Returns:
      corresponding string with name of TypeItem
    • getRuleSemicolonName

      public static String getRuleSemicolonName(BslGrammarAccess grammar)
      Gets name of grammar rule "SEMICOLON"
      See Bsl.xtext
      Parameters:
      grammar - BslGrammarAccess
      Returns:
      rule name
    • intersectTypeItem

      public static boolean intersectTypeItem(List<TypeItem> expectedTypes, List<TypeItem> realTypes, org.eclipse.emf.ecore.EObject context)
      Checks that collections of TypeItem have common item
      Parameters:
      expectedTypes - expected collection of TypeItem, cannot be null
      realTypes - real collection of TypeItem, cannot be null
      context - EObject for resolving proxy checking types, cannot be null
      Returns:
      true if intersection was detected
    • transformToMapOfEvent

      public static Map<CaseInsensitiveString,List<Event>> transformToMapOfEvent(List<Event> events)
      Transforms list of Events to map for fast searching events by name
      Parameters:
      events - all events cannot be null
      Returns:
      special map contains (key - event name, value - list of corresponding events)
    • putEventToMapByName

      public static void putEventToMapByName(String name, Map<CaseInsensitiveString,List<Event>> mapEvents, Event event)
      Adds the Event to special name for fast searching events by name
      Parameters:
      name - name of the Event
      mapEvents - special map contains (key - event name, value - list of corresponding events) cannot be null
      event - processing Event
    • getCorrespondEvent

      public static List<Event> getCorrespondEvent(Method method, Map<CaseInsensitiveString,List<Event>> allEvents)
      Find all appropriate Events for Method
      Parameters:
      method - Method
      allEvents - all allowed Events cannot be null
      Returns:
      collections of appropriate Events cannot be null
    • trasformListTypeNamesToTypeItems

      public static Collection<TypeItem> trasformListTypeNamesToTypeItems(List<String> typesName, org.eclipse.xtext.scoping.IScope scope, org.eclipse.xtext.naming.IQualifiedNameConverter qualifiedNameConverter)
      Transform list of type names to TypeItem
      Parameters:
      typesName - list of types name, cannot be null
      scope - all available scope types, cannot be null
      qualifiedNameConverter - actual IQualifiedNameConverter, cannot be null
      Returns:
      collection of the TypeItem without null elements
    • installModuleEnvironments

      @Deprecated public static void installModuleEnvironments(Module module, org.eclipse.xtext.naming.IQualifiedNameProvider qualifiedNameProvider, Version version, IBslOwnerComputerService ownerComputerService, boolean installIntoMethod)
      Deprecated.
      Installs Environments for Bsl Module and its elements
      Parameters:
      module - processing Module cannot be null
      qualifiedNameProvider - IQualifiedNameProvider
      ownerComputerService - IBslOwnerComputerService
      version - actual Version, cannot be null
      installIntoMethod - if true environments will be computed into method statements
    • installModuleEnvironments

      public static void installModuleEnvironments(Module module, IQualifiedNameFilePathConverter qualifiedNameFilePathConverter, IBslOwnerComputerService ownerComputerService, Version version, boolean installIntoMethod)
      Installs Environments for Bsl Module and its elements
      Parameters:
      module - processing Module cannot be null
      qualifiedNameFilePathConverter - IQualifiedNameFilePathConverter
      ownerComputerService - IBslOwnerComputerService
      version - actual Version, cannot be null
      installIntoMethod - if true environments will be computed into method statements
    • computeEnvironments

      public static Environments computeEnvironments(Environmental environmental, PragmaTarget pragmaTarget, Defines defines)
      Computes Environments for Environmental element of Bsl grammar
      Parameters:
      environmental - Bsl grammar element. If it has own Environments then computing Environments will be intersect with its Environments, can be null
      pragmaTarget - container of actual Pragma, cannot be null
      defines - actual Defines for current Environmental Bsl grammar element, cannot be null
      Returns:
      computed Environments or null if there is no Environments
    • getResolvedTypeByName

      public static Type getResolvedTypeByName(org.eclipse.emf.ecore.resource.Resource resource, String typeName)
      Gets Type by name
      Parameters:
      resource - resource for resolving, cannot be null
      typeName - type name, cannot be null
      Returns:
      found type or null if type wasn't found
    • hasOtherResourceElements

      public static boolean hasOtherResourceElements(org.eclipse.xtext.scoping.IScope scope, org.eclipse.xtext.naming.QualifiedName qName, Environments envs, org.eclipse.emf.common.util.URI resourceUri)
      Checks that scope contains element with name qName
      Parameters:
      scope - IScope
      qName - checking name, cannot be null
      envs - actual element Environments, cannot be null
      resourceUri - uri of the Bsl module resource, cannot be null
      Returns:
      true if element with name qName was found
    • hasGlobalElementsWithTheSameName

      public static boolean hasGlobalElementsWithTheSameName(org.eclipse.xtext.scoping.IScope scope, org.eclipse.xtext.naming.QualifiedName qName)
      Checks that scope contains global element with name qName
      Parameters:
      scope - IScope
      qName - checking name
      Returns:
      true if element with name qName was found
    • getExternalMethodsScope

      public static org.eclipse.xtext.scoping.IScope getExternalMethodsScope(Module module, Method method, Environments envs, org.eclipse.xtext.scoping.IScopeProvider scopeProvider)
      Gets scope of all external methods for module
      Parameters:
      module - current Bsl module
      method - current method
      env - actual Environments
      scopeProvider - actual IScopeProvider
      Returns:
      found scope
    • getExternalVariablesScope

      public static org.eclipse.xtext.scoping.IScope getExternalVariablesScope(Module module, Environments envs, org.eclipse.xtext.scoping.IScopeProvider scopeProvider)
      Gets scope of all external variables for module
      Parameters:
      module - current Bsl module
      env - actual Environments
      scopeProvider - actual IScopeProvider
      Returns:
      found scope
    • findCommentAnnotatedObject

      public static org.eclipse.emf.ecore.EObject findCommentAnnotatedObject(org.eclipse.emf.ecore.EObject source)
      Find object (Statement, DeclareStatement, Method or Preprocessor) for annotating by comment
      Parameters:
      source - source object for searching
      Returns:
      annotated by comment object of Bsl grammar, can be null if annotated object wasn't found
    • isRussian

      public static boolean isRussian(org.eclipse.emf.ecore.EObject object, IV8ProjectManager v8projectManager)
      Returns current ScriptVariant for the provided context BSL model object.
      Parameters:
      object - the context BSL model object, cannot be null
      v8projectManager - the IV8ProjectManager instance, cannot be null
      Returns:
      true if scriptVariant == RUSSIAN, false otherwise
    • isRussian

      public static boolean isRussian(IV8Project v8project)
      Returns current ScriptVariant for the provided IV8Project
      Parameters:
      v8project - current IV8Project, cannot be null
      Returns:
      true if scriptVariant == RUSSIAN, false otherwise
    • transform

      public static <F, T> Collection<T> transform(Collection<F> fromCollection, com.google.common.base.Function<? super F,T> function)
      Returns a collection that applies function to each element of fromCollection. The returned collection is a new collection
      Parameters:
      fromCollection - source collection with elements for transformation, cannot be null
      function - function for transformation elements from source collection, cannot be null
      Returns:
      return new collection with transformed elements from source collection, never null
    • getExecutorService

      public static ForkJoinPool getExecutorService()
      Returns:
      created ForkJoinPool, never null
    • getRealObject

      public static List<FeatureEntry> getRealObject(FeatureAccess featureAccess, Block block, DynamicFeatureAccessComputer dynamicComputer, IBslOwnerComputerService ownerComputerService)
      Computes real objects by semantic Bsl object
      Parameters:
      featureAccess - actual semantic object, cannot be null
      block - actual Block for semantic object, cannot be null
      dynamicComputer - actual DynamicFeatureAccessComputer, cannot be null
      ownerComputerService - actual IBslOwnerComputerService, cannot be null
      Returns:
      lists of FeatureEntry contains computed real objects or empty list, never null
    • getRealObject

      public static List<FeatureEntry> getRealObject(FeatureAccess featureAccess, Block block, DynamicFeatureAccessComputer dynamicComputer, IBslOwnerComputerService ownerComputerService, boolean mockMethodsAllowed)
      Computes real objects by semantic Bsl object
      Parameters:
      featureAccess - actual semantic object, cannot be null
      block - actual Block for semantic object, cannot be null
      dynamicComputer - actual DynamicFeatureAccessComputer, cannot be null
      ownerComputerService - actual IBslOwnerComputerService, cannot be null
      mockMethodsAllowed - true if allowed for FeatureEntry.getFeature() return mock of exported user methods. Mock exported user methods is special Method without resource and container, which contains right name of the export method, right properties: isRetval, isDeprecated, isServerCall, source uri to the real method in module, min parameters count and information about each parameter - out or not
      Returns:
      lists of FeatureEntry contains computed real objects or empty list, never null
    • isCallFromClient

      public static boolean isCallFromClient(org.eclipse.emf.ecore.EObject feature, Invocation inv)
      Checks that object feature is calling from clients environments
      Parameters:
      feature - checking object, cannot be null
      inv - actual semantic grammar element from Bsl language model, cannot be null
      Returns:
      true object feature is calling from clients environments, false otherwise
    • isServerCall

      public static boolean isServerCall(Module module)
      Checks that module allows using server call
      Parameters:
      module - checking bsl module, cannot be null
      Returns:
      true if module allows using server call, false otherwise
    • isGlobal

      public static boolean isGlobal(Module module)
      Checks that is global module
      Parameters:
      module - checking bsl module, cannot be null
      Returns:
      true if module is global module, false otherwise
    • getTypeByName

      public static List<TypeItem> getTypeByName(String typeName, IEObjectProvider typeProvider)
      Gets type by name for BSL element grammar
      Parameters:
      typeName - - type name, cannot be null
      typeProvider - actual IEObjectProvider for type, cannot be null
      Returns:
      list of TypeItem corresponding to typeName, if type with name typeName not found empty collection will be returned, never null
    • getSingleTypeByName

      public static TypeItem getSingleTypeByName(String typeName, IEObjectProvider typeProvider)
      Gets type by name for BSL element grammar
      Parameters:
      typeName - type name, cannot be null
      typeProvider - actual IEObjectProvider for type, cannot be null
      Returns:
      type corresponding to typeName, or null if there is no corresponding type for typeName
    • hasMethodClientDirective

      public static boolean hasMethodClientDirective(Method method)
      Checks that Method has clients directive
      Parameters:
      method - checking method, cannot be null
      Returns:
      true if Method has clients directive, false otherwise
    • hasMethodServerDirective

      public static boolean hasMethodServerDirective(Method method)
      Checks that Method has server directive
      Parameters:
      method - checking method, cannot be null
      Returns:
      true if Method has server directive, false otherwise
    • allMethods

      public static List<Method> allMethods(ContextDef contextDef, Module module, INamingService namingService)
      More faster implementation of ContextDef.allMethods() with replacing proxy reference contextDef for bsl module to real its contextDef
      Parameters:
      contextDef - actual context def for getting all methods, cannot be null
      module - bsl module which contextDef will be used for replacing proxy ContextDef, cannot be null
      namingService - INamingService service reference. May not be null
      Returns:
      all methods from context def, never null
    • allProperties

      public static List<Property> allProperties(ContextDef contextDef, Module module, INamingService namingService)
      More faster implementation of ContextDef.allProperties() with replacing proxy reference contextDef for bsl module to real its contextDef
      Parameters:
      contextDef - actual context def for getting all properties, cannot be null
      module - bsl module which contextDef will be used for replacing proxy ContextDef, cannot be null
      namingService - INamingService service reference. May not be null
      Returns:
      all proeprties from context def, never null
    • getRefContextDefs

      public static List<ContextDef> getRefContextDefs(ContextDef contextDef, Module module, INamingService namingService)
      Gets all references context. Replace proxy contextDef of Bsl module to real contextDef of module
      Parameters:
      contextDef - ContextDef for getting reference contextDefs, cannot be null
      module - bsl module which contextDef will be used for replacing proxy ContextDef, cannot be null
      namingService - INamingService service reference. May not be null
      Returns:
      list of references contextDef, never null
    • setModuleType

      public static void setModuleType(Module module, org.eclipse.xtext.naming.IQualifiedNameProvider qualifiedNameProvider)
      Computes module type by module qualified name
      Parameters:
      module - the module, cannot be null
      qualifiedNameProvider - the IQualifiedNameProvider service, cannot be null
    • setModuleType

      public static void setModuleType(Module module, IQualifiedNameFilePathConverter qualifiedNameFilePathConverter)
      Computes module type by module qualified name
      Parameters:
      module - the module, cannot be null
      qualifiedNameFilePathConverter - the IQualifiedNameFilePathConverter service, cannot be null
    • setModuleOwner

      public static void setModuleOwner(Module module, IBslOwnerComputerService ownerService)
      Computes module owner proxy
      Parameters:
      module - the module, cannot be null
      ownerService - the IBslOwnerComputerService service, cannot be null
    • computeModuleType

      public static ModuleType computeModuleType(Module module, IQualifiedNameFilePathConverter qualifiedNameFilePathConverter)
      Computes module type
      Parameters:
      module - Module, cannot be null
      qualifiedNameFilePathConverter - IQualifiedNameFilePathConverter, cannot be null
      Returns:
      computed module type or null if unknown module type was detected
    • computeModuleType

      public static ModuleType computeModuleType(Module module, org.eclipse.xtext.naming.IQualifiedNameProvider qualifiedNameProvider)
      Computes module type
      Parameters:
      module - Module
      provider - IQualifiedNameProvider
      Returns:
      computed module type or null
    • getDependMethodsTree

      public static Collection<Block> getDependMethodsTree(Method method)
      Gets all Block depending from method
      Parameters:
      method - Method for getting Block depends from it, cannot be null
      Returns:
      all Block depending from method, never null
    • isBuildOperationResourceSet

      public static boolean isBuildOperationResourceSet(org.eclipse.emf.ecore.resource.ResourceSet resourceSet)
      Checks that ResourceSet was created in build operation
      Parameters:
      resourceSet - checking ResourceSet, cannot be null
      Returns:
      true if ResourceSet was created in build operation, false otherwise
    • getMethodSignatureLastNode

      public static org.eclipse.xtext.nodemodel.INode getMethodSignatureLastNode(Method method)
      Gets last INode corresponding to the method signature
      Parameters:
      method - analyzing Method, cannot be null
      Returns:
      last INode corresponding to the method signature or null if node was not found
    • isExternalModuleContextDef

      public static boolean isExternalModuleContextDef(ContextDef refContextDef, Module module, INamingService namingService)
      Checks if the contextDef belongs to another module
      Parameters:
      refContextDef - Reference context def of a module. May not be null
      module - processing Module cannot be null
      namingService - INamingService service reference. May not be null
      Returns:
      True if the contex belongs to another module comparing to a provided one
    • computeTypeNames

      public static Collection<String> computeTypeNames(Collection<TypeItem> types, org.eclipse.emf.ecore.EObject context)
      Computes name of the each type from the specified collection.
      Resulting collection contains for each TypeItem
      Parameters:
      types - collection of TypeItems for computing their names, cannot be null
      context - context EObject for resolving proxy, cannot be null
      Returns:
      collection without null or empty elements containing for each TypeItem from the specified collection . Never null