예제 #1
0
  private Property makeEntityProperty(
      String propertyName,
      boolean mutable,
      Table table,
      ForeignKey fk,
      ToOne value,
      boolean inverseProperty) {
    AssociationInfo fkei =
        inverseProperty
            ? revengStrategy.foreignKeyToInverseAssociationInfo(fk)
            : revengStrategy.foreignKeyToAssociationInfo(fk);

    String fetchMode = null;
    String cascade = null;
    boolean update = mutable;
    boolean insert = mutable;

    if (fkei != null) {
      cascade = fkei.getCascade();
      if (fkei.getUpdate() != null) {
        update = fkei.getUpdate().booleanValue();
      }
      if (fkei.getInsert() != null) {
        insert = fkei.getInsert().booleanValue();
      }

      fetchMode = fkei.getFetch();
    }

    if (FetchMode.JOIN.toString().equalsIgnoreCase(fetchMode)) {
      value.setFetchMode(FetchMode.JOIN);
    } else if (FetchMode.SELECT.toString().equalsIgnoreCase(fetchMode)) {
      value.setFetchMode(FetchMode.SELECT);
    } else {
      value.setFetchMode(FetchMode.SELECT);
    }

    return makeProperty(
        TableIdentifier.create(table),
        propertyName,
        value,
        insert,
        update,
        value.getFetchMode() != FetchMode.JOIN,
        cascade,
        null);
  }
 private Iterator getSubPropertyIterator(PersistentClass pc, String reducedName) {
   Value value = pc.getRecursiveProperty(reducedName).getValue();
   Iterator parentPropIter;
   if (value instanceof Component) {
     Component comp = (Component) value;
     parentPropIter = comp.getPropertyIterator();
   } else if (value instanceof ToOne) {
     ToOne toOne = (ToOne) value;
     PersistentClass referencedPc = mappings.getClass(toOne.getReferencedEntityName());
     if (toOne.getReferencedPropertyName() != null) {
       try {
         parentPropIter =
             ((Component)
                     referencedPc
                         .getRecursiveProperty(toOne.getReferencedPropertyName())
                         .getValue())
                 .getPropertyIterator();
       } catch (ClassCastException e) {
         throw new MappingException(
             "dotted notation reference neither a component nor a many/one to one", e);
       }
     } else {
       try {
         if (referencedPc.getIdentifierMapper() == null) {
           parentPropIter =
               ((Component) referencedPc.getIdentifierProperty().getValue()).getPropertyIterator();
         } else {
           parentPropIter = referencedPc.getIdentifierMapper().getPropertyIterator();
         }
       } catch (ClassCastException e) {
         throw new MappingException(
             "dotted notation reference neither a component nor a many/one to one", e);
       }
     }
   } else {
     throw new MappingException(
         "dotted notation reference neither a component nor a many/one to one");
   }
   return parentPropIter;
 }