package mypack;

 

import java.io.*;

import java.util.*;

 

import mmexec.utils.*;

import mmexec.evaluator.*;

import mmexec.clang.*;

 

 

public class MyLanguage extends CustomLanguage {

 

  /* Functions */

  private final static int __ReserveProduct = 1;

  private final static int __InformDepot = 2;

  private final static int __AddToCart = 3;

  private final static int __ApplyDiscount = 4;

 

  private static LanguageSyntax lang;

  private MMServletRequest request;

 

  static {

 

    /*

     * Define the syntax of the "MyLanguage"

     */ 

    lang =

      new LanguageSyntax("MyLanguage", new FunctionSyntax[] {

        new FunctionSyntax(__ReserveProduct, "ReserveProduct", new ParameterSyntax[] {

        new ParameterSyntax( ParameterSyntax.PT_INT, "Product Id", true),

        new ParameterSyntax( ParameterSyntax.PT_INT, "Quantity", true),

        new ParameterSyntax( ParameterSyntax.PT_INT, "Duration"true)

      }

      ),

      new FunctionSyntax(__InformDepot, "InformDepot", new ParameterSyntax[] {

        new ParameterSyntax( ParameterSyntax.PT_STRING, "Message", true),

        new ParameterSyntax( ParameterSyntax.PT_INT, "Product Id", true)

      }

      ),

      new FunctionSyntax(__AddToCart, "AddToCart", new ParameterSyntax[] {

        new ParameterSyntax( ParameterSyntax.PT_INT, "Product Id", true),

        new ParameterSyntax( ParameterSyntax.PT_INT, "Quantity", true)

      }

      ),

      new FunctionSyntax(__ApplyDiscount, "ApplyDiscount", new ParameterSyntax[] {

        new ParameterSyntax( ParameterSyntax.PT_INT, "Product Id", true),

        new ParameterSyntax( ParameterSyntax.PT_INT, "Quantity", true),

        new ParameterSyntax( ParameterSyntax.PT_INT, "Customer Id", true)

      }

      )

    }

    );

 

  }

 

  public MyLanguage(MMServletRequest request, int debugLevel) {

    super(request, debugLevel);

    this.request = request;

  }

 

 

  public int execute(String str) throws CLException  {

    return super.execute(str);

  }

 

  public int executeFunction(int funcid, Object[] parms) throws CLException {

 

    int result = 0

 

    try {

      switch (funcid) {

        case __ReserveProduct:

          result = executeReserveProduct( (Integer)parms[0], (Integer)parms[1], (Integer)parms[2]);

          break;

 

        case __InformDepot:

          result = executeInformDepot( (String)parms[0], (Integer)parms[1]);

          break;

 

        case __AddToCart:

          result = executeAddToCart( (Integer)parms[0], (Integer)parms[1] );

          break;

 

        case __ApplyDiscount:

          result = executeApplyDiscount( (Integer)parms[0], (Integer)parms[1]] (Integer)parms[2] );

          break;

      }

    } catch (Exception e) {

      throw new CLException(e);

    }

 

    return 0;

  }

 

  public LanguageSyntax getSyntax() {

    return lang;

  }

 

  private int executeReserveProduct(Integer productId, Integer quantity, Integer duration)

  throws FMLException {

    // ...

    return 0;

  }

 

  private int executeInformDepot(String message, Integer productId)

  throws FMLException {

    // ...

    return 0;

  }

 

  private int executeAddToCart(Integer productId, Integer quantity)

  throws FMLException {

    // ...

    return 0;

  }

 

  private int executeApplyDiscount(Integer productId, Integer quantity, Integer customerId)

  throws FMLException {

    // ...

    return 0;

  }

 

 

}