Example #1
0
 public Engine(String id, Context context) {
   super();
   if (!context.isFrozen()) {
     throw new CTDApiException(ENGINE_CONTEXT_NOT_FROZEN);
   }
   this.context = context;
   this.id = id;
 }
Example #2
0
 /**
  * Cria um DataContainer a partir de um determinado escopo.
  *
  * @param id O identificador do container dentro da Engine.
  * @param scopeId O identificador do escopo que definirá quais campos serão criados. <B>Use <code>
  *     null</code> para nenhum criar um container com todos os campos.</B>
  * @param parentId Um possível Containerparent. <B>Use <code>null</code> para nenhum.</B>
  * @return Uma instância de <code>DataContainer</code> devidamente montado com os campos do escopo
  *     definido.
  */
 public DataContainer createContainer(String id, String scopeId, String parentId) {
   if (containers.containsKey(id)) {
     throw new CTDApiException(ENGINE_ID_ALREADY_USED + id);
   }
   Scope scope = null;
   if (scopeId != null) {
     scope = context.getScope(scopeId);
     if (scope == null) {
       throw new CTDApiException(ENGINE_SCOPE_NOT_FOUND + scopeId);
     }
   }
   DataContainer parent = null;
   if (parentId != null) {
     parent = containers.get(parentId);
     if (parent == null) {
       throw new CTDApiException(ENGINE_PARENT_NOT_FOUND + parentId);
     }
   }
   DataContainer container =
       new StandardDataContainer(
           id, context.getDataMap(), scope, context.getFieldFactory(), parent);
   return container;
 }
Example #3
0
 /**
  * Avalia e resolve uma expressão com base em um Container.
  *
  * @param container O container com com os dados utilizados na execução.
  * @param expression A expressão a ser avaliada e resolvida.
  * @return O possível resultado da expressão.
  */
 public Object eval(DataContainer container, String expression) {
   return context.getLang().eval(container, expression);
 }
Example #4
0
 /**
  * Chama e executa um objeto "Callable" [executável] (Rule, Event Procedure) pelo seu ID.
  *
  * @param container O Container com os dados sobre os quais o executável irá atuar.
  * @param callableId O ID do objeto a ser chamado.
  */
 public void call(DataContainer container, String callableId) {
   context.getBehaveMap().get(callableId).execute(container);
 }
Example #5
0
 /**
  * Compila e executa um Script contido em Strings agrupadas e ordenadas em um ArrayLIst.
  *
  * @param container O Container com os dados sobre o qual o Script deve atuar.
  * @param script As linhas de um Script que será compilado e executado.
  */
 public void run(DataContainer container, List<String> script) {
   context.getSlang().build(script).execute(container);
 }