コード例 #1
0
  protected void generateDeriveKeyMethod(SourcePrinter srcWriter) {
    srcWriter.println(
        "protected " + getKeyTypeName() + " getKey(" + getTargetObjectClassName() + " object){");

    srcWriter.print("boolean hasKey = ");
    boolean first = true;
    for (String k : keyPath) {
      if (!first) {
        srcWriter.print(" || ");
      }
      String getterMethod = JClassUtils.getGetterMethod(k, targetObjectType);
      srcWriter.print("object." + getterMethod + "() != null");
      first = false;
    }
    srcWriter.println(";");

    srcWriter.println("if (hasKey){");
    srcWriter.print(getKeyTypeName() + " key");
    if (hasCompositeKey()) {
      srcWriter.println(" = new Object[" + keyPath.length + "];");
      int i = 0;
      for (String k : keyPath) {
        String getterMethod = JClassUtils.getGetterMethod(k, targetObjectType);
        srcWriter.print("key [" + i + "] = object." + getterMethod + "();");
        i++;
      }
    } else {
      srcWriter.println(
          " = object." + JClassUtils.getGetterMethod(keyPath[0], targetObjectType) + "();");
    }
    srcWriter.println("return key;");

    if (autoIncrement) {
      if (!getKeyTypeName().equals("Integer")) {
        throw new CruxGeneratorException("Auto increment keys can only be used on integer keys");
      }
      srcWriter.println("} else {");
      srcWriter.println("return null;");
    } else {
      srcWriter.println("} else {");
      srcWriter.println("reportError(db.messages.objectStoreDeriveKeyError(name));");
      srcWriter.println("return null;");
    }
    srcWriter.println("}");
    srcWriter.println("}");
    srcWriter.println();
  }
コード例 #2
0
 /**
  * @param dataClass
  * @return
  */
 private String[] extractIdentifiers(JClassType dataClass) {
   List<String> ids = new ArrayList<String>();
   JField[] fields = JClassUtils.getDeclaredFields(dataClass);
   for (JField field : fields) {
     if (field.getAnnotation(DataObjectIdentifier.class) != null) {
       if (field.isPublic()) {
         ids.add(field.getName());
       } else {
         ids.add(JClassUtils.getGetterMethod(field.getName(), dataClass) + "()");
       }
     }
   }
   return ids.toArray(new String[ids.size()]);
 }