private MethodMetadata getFindByParentMethod() {
    if (parentProperty == null) {
      return null;
    }

    JavaSymbolName methodName = new JavaSymbolName("find" + plural + "ByParentId");

    final JavaType idType =
        KEY.equals(identifierField.getFieldType()) ? STRING : identifierField.getFieldType();
    final JavaType[] parameterTypes = {idType};

    final MethodMetadata method = getGovernorMethod(methodName, parameterTypes);
    if (method != null) {
      return method;
    }

    final String idParamName =
        StringUtils.uncapitalize(parentProperty.getFieldType().getSimpleTypeName()) + "Id";
    final List<JavaSymbolName> parameterNames = Arrays.asList(new JavaSymbolName(idParamName));
    final JavaType returnType =
        new JavaType(
            LIST.getFullyQualifiedTypeName(), 0, DataType.TYPE, null, Arrays.asList(domainType));

    final MethodMetadataBuilder methodBuilder =
        new MethodMetadataBuilder(
            getId(),
            PUBLIC_ABSTRACT,
            methodName,
            returnType,
            AnnotatedJavaType.convertFromJavaTypes(parameterTypes),
            parameterNames,
            BODY);

    return methodBuilder.build();
  }
  /** @return the find all method (may return null) */
  private MethodMetadata getFindAllMethod() {
    if ("".equals(crudAnnotationValues.getFindAllMethod())) {
      return null;
    }

    // Method definition to find or build
    final JavaSymbolName methodName =
        new JavaSymbolName(crudAnnotationValues.getFindAllMethod() + plural);
    final JavaType[] parameterTypes = {};
    final List<JavaSymbolName> parameterNames = new ArrayList<JavaSymbolName>();
    final JavaType returnType =
        new JavaType(
            LIST.getFullyQualifiedTypeName(), 0, DataType.TYPE, null, Arrays.asList(destination));

    // Locate user-defined method
    final MethodMetadata userMethod = getGovernorMethod(methodName, parameterTypes);
    if (userMethod != null) {
      Assert.isTrue(
          userMethod.getReturnType().equals(returnType),
          "Method '"
              + methodName
              + "' on '"
              + destination
              + "' must return '"
              + returnType.getNameIncludingTypeParameters()
              + "'");
      return userMethod;
    }

    // Create method
    final List<AnnotationMetadataBuilder> annotations = new ArrayList<AnnotationMetadataBuilder>();
    if (isGaeEnabled) {
      addTransactionalAnnotation(annotations);
    }

    final InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder();
    bodyBuilder.appendFormalLine(
        "return "
            + ENTITY_MANAGER_METHOD_NAME
            + "().createQuery(\"SELECT o FROM "
            + entityName
            + " o\", "
            + destination.getSimpleTypeName()
            + ".class).getResultList();");

    final MethodMetadataBuilder methodBuilder =
        new MethodMetadataBuilder(
            getId(),
            Modifier.PUBLIC | Modifier.STATIC,
            methodName,
            returnType,
            AnnotatedJavaType.convertFromJavaTypes(parameterTypes),
            parameterNames,
            bodyBuilder);
    methodBuilder.setAnnotations(annotations);
    return methodBuilder.build();
  }
Esempio n. 3
0
  private Map<String, Object> createParameters(
      TaskActionInformation info, ActionEvent action, KeyEvaluator keyEvaluator)
      throws TaskHandlerException {
    SortedSet<ActionParameter> actionParameters = action.getActionParameters();
    Map<String, Object> parameters = new HashMap<>(actionParameters.size());

    for (ActionParameter actionParameter : actionParameters) {
      String key = actionParameter.getKey();

      if (info.getValues().containsKey(key)) {
        String template = info.getValues().get(key);

        if (template == null) {
          throw new TaskHandlerException(
              TRIGGER, "task.error.templateNull", key, action.getDisplayName());
        }

        switch (actionParameter.getType()) {
          case LIST:
            parameters.put(key, convertToList((List<String>) LIST.parse(template), keyEvaluator));
            break;
          case MAP:
            parameters.put(key, convertToMap(template, keyEvaluator));
            break;
          default:
            try {
              String userInput = keyEvaluator.evaluateTemplateString(template);
              Object obj = actionParameter.getType().parse(userInput);
              parameters.put(key, obj);
            } catch (MotechException ex) {
              throw new TaskHandlerException(TRIGGER, ex.getMessage(), ex, key);
            }
        }
      } else {
        if (actionParameter.isRequired()) {
          throw new TaskHandlerException(
              TRIGGER, "task.error.taskActionNotContainsField", action.getDisplayName(), key);
        } else if (actionParameter.getType() == MAP) {
          parameters.put(key, new HashMap<>());
        } else if (actionParameter.getType() == LIST) {
          parameters.put(key, new ArrayList<>());
        } else {
          parameters.put(key, null);
        }
      }
    }

    return parameters;
  }
Esempio n. 4
0
 public void lancer(float dirX, float dirY, float x, float y, float angle) {
   dir.set(dirX, dirY).scl(getEnemyStats().getSpeed());
   pos.set(x, y);
   this.angle = angle + 90;
   LIST.add(this);
 }