示例#1
0
  /**
   * Converts a JSIDL pop to a CJSIDL pop transition
   *
   * @param pop - a JSIDL pop
   * @param parentTrans - the parent transition
   * @return - resulting CJSIDL object
   */
  public static popTransition convert(Pop pop, transition parentTrans) {
    CjsidlFactoryImpl factory = new CjsidlFactoryImpl();
    org.jts.eclipse.cjsidl.popTransition output = factory.createpopTransition();
    output.setComment(JSIDLInterpToCJSIDLComment(pop.getInterpretation()));

    EList<org.jts.eclipse.cjsidl.guardParam> paramlist = output.getParam();
    if (pop.getArgument() != null) {
      java.util.List<org.jts.jsidl.binding.Argument> args = pop.getArgument();
      for (org.jts.jsidl.binding.Argument arg : args) {
        guardParam gp = factory.createguardParam();
        if (arg.getValue().contains("'")) {
          gp.setGuardConst(arg.getValue());
        } else {
          if (parentTrans != null) {
            gp.setParameter(
                (transParam)
                    Conversion.referenceHelper.getEObjectFromTransition(
                        arg.getValue(), parentTrans));
          } else {
            Logger.getLogger("CJSIDL").log(Level.SEVERE, "Unexpected parameter found in guard.");
          }
        }

        paramlist.add(gp);
      }
    }

    // need to have the reference set, but the object may not exist yet, so post-process
    String transName = pop.getTransition();
    if (transName != null && !transName.isEmpty()) {
      DefaultState.secondaryTransitionMap.put(transName, output);
    }

    return output;
  }