Package de.mhus.lib.adb.annotations

Examples of de.mhus.lib.adb.annotations.DbIndex


  @Override
  protected void parseFields() throws Exception {
    for (Method m : getMethods(clazz)) {
      DbPrimaryKey pk = m.getAnnotation(DbPrimaryKey.class);
      DbPersistent p  = m.getAnnotation(DbPersistent.class);
      DbIndex idx = m.getAnnotation(DbIndex.class);
      DbRelation r  = m.getAnnotation(DbRelation.class);

//      for ( Annotation a : m.getAnnotations()) {
//        System.out.println(m.getName() + ": " + a.toString());
//      }
     
      if (pk != null || p != null || r != null ) {
       
        String mName = m.getName();
        Method getter = null;
        Method setter = null;
        if (mName.startsWith("get")) {
          mName = mName.substring(3);
          getter = m;
          try {
            setter = clazz.getMethod("set" + mName,getter.getReturnType());
          } catch (NoSuchMethodException nsme) {}
        } else
        if (mName.startsWith("set")) {
          mName = mName.substring(3);
          setter = m;
          try {
            getter = clazz.getMethod("get" + mName);
          } catch (NoSuchMethodException nsme) {
            getter = clazz.getMethod("is" + mName);
          }
        } else
        if (mName.startsWith("is")) {
          mName = mName.substring(2);
          getter = m;
          setter = clazz.getMethod("set" + mName,getter.getReturnType());
        } else {
          log().d("field is not a getter/setter" + mName);
          continue;
        }
       
        if (getter == null) {
          log().d("getter not found",mName);
          continue;
        }
        if (setter == null && r == null) { // relations do not need setters
          log().d("setter not found",mName);
          continue;
        }
        Class<?> ret = getter.getReturnType();
        if (ret == void.class) {
          log().d("Value type is void - ignore");
          continue;
        }
       
       
        if (fIndex.containsKey(mName.toLowerCase())) {
          log().d("field already defined", mName);
          continue;
        }
       
        if (r != null) {
          log().t("relation",mName);
         
          // check for doubled
          if (getFieldRelation(mName) != null || getField(mName) != null) {
            log().t("double field definition", mName);
            continue;
          }
         
          FieldRelation fr = new FieldRelation(manager, this, mName, setter, getter, ret, r);
          addField(fr);
         
        } else {
          log().t("field",mName);
          IConfig attr = MConfigFactory.getInstance().toConfig(toAttributes(p));
          boolean v = (p !=null && p.virtual());
         
          // check for doubled
          if (getField(mName) != null || getFieldRelation(mName) != null) {
            log().t("double field definition", mName);
            continue;
          }
           
         
          Field field = manager.getSchema().createField(manager, this, mName, pk!=null, v, setter, getter, ret, attr, null);
          if (field != null)
            addField( field );
         
          // indexes
          if (idx != null && field.isPersistent()) {
            addToIndex(idx.value(),field);
          }
        }
      }
    }
  }
View Full Code Here

TOP

Related Classes of de.mhus.lib.adb.annotations.DbIndex

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.