core/src/main/java/com/orientechnologies/orient/core/record/impl/OVertexDelegate.java
public static Object createLink(final ODocument iFromVertex, final OIdentifiable iTo, final String iFieldName) {
    final Object out;
    OType outType = iFromVertex.fieldType(iFieldName);
    Object found = iFromVertex.field(iFieldName);

    final OClass linkClass = ODocumentInternal.getImmutableSchemaClass(iFromVertex);
    if (linkClass == null)
      throw new IllegalArgumentException("Class not found in source vertex: " + iFromVertex);

    final OProperty prop = linkClass.getProperty(iFieldName);
    final OType propType = prop != null && prop.getType() != OType.ANY ? prop.getType() : null;

    if (found == null) {
      if (propType == OType.LINKLIST || (prop != null && "true".equalsIgnoreCase(prop.getCustom("ordered")))) {//TODO constant
        final Collection coll = new ORecordLazyList(iFromVertex);
        coll.add(iTo);
        out = coll;
        outType = OType.LINKLIST;
      } else if (propType == null || propType == OType.LINKBAG) {
        final ORidBag bag = new ORidBag();
        bag.add(iTo);
        out = bag;
        outType = OType.LINKBAG;
      } else if (propType == OType.LINK) {
        out = iTo;
        outType = OType.LINK;
      } else
        throw new ODatabaseException("Type of field provided in schema '" + prop.getType() + "' cannot be used for link creation.");

    } else if (found instanceof OIdentifiable) {
      if (prop != null && propType == OType.LINK)
        throw new ODatabaseException(
            "Type of field provided in schema '" + prop.getType() + "' cannot be used for creation to hold several links.");

      if (prop != null && "true".equalsIgnoreCase(prop.getCustom("ordered"))) {//TODO constant
        final Collection coll = new ORecordLazyList(iFromVertex);
        coll.add(found);
        coll.add(iTo);
        out = coll;
        outType = OType.LINKLIST;
      } else {
        final ORidBag bag = new ORidBag();
        bag.add((OIdentifiable) found);
        bag.add(iTo);
        out = bag;
        outType = OType.LINKBAG;
      }
    } else if (found instanceof ORidBag) {
      // ADD THE LINK TO THE COLLECTION
      out = null;

      ((ORidBag) found).add(iTo.getRecord());

    } else if (found instanceof Collection<?>) {
      // USE THE FOUND COLLECTION
      out = null;
      ((Collection<Object>) found).add(iTo);

    } else
      throw new ODatabaseException("Relationship content is invalid on field " + iFieldName + ". Found: " + found);

    if (out != null)
      // OVERWRITE IT
      iFromVertex.field(iFieldName, out, outType);

    return out;
  }
public static Object createLink(final ODocument iFromVertex, final OIdentifiable iTo, final String iFieldName) {
    final Object out;
    OType outType = iFromVertex.fieldType(iFieldName);
    Object found = iFromVertex.field(iFieldName);

    final OClass linkClass = ODocumentInternal.getImmutableSchemaClass(iFromVertex);
    if (linkClass == null)
      throw new IllegalArgumentException("Class not found in source vertex: " + iFromVertex);

    final OProperty prop = linkClass.getProperty(iFieldName);
    final OType propType = prop != null && prop.getType() != OType.ANY ? prop.getType() : null;

    if (found == null) {
      if (propType == OType.LINKLIST || (prop != null && "true".equalsIgnoreCase(prop.getCustom("ordered")))) {//TODO constant
        final Collection coll = new ORecordLazyList(iFromVertex);
        coll.add(iTo);
        out = coll;
        outType = OType.LINKLIST;
      } else if (propType == null || propType == OType.LINKBAG) {
        final ORidBag bag = new ORidBag();
        bag.add(iTo);
        out = bag;
        outType = OType.LINKBAG;
      } else if (propType == OType.LINK) {
        out = iTo;
        outType = OType.LINK;
      } else
        throw new ODatabaseException("Type of field provided in schema '" + prop.getType() + "' cannot be used for link creation.");

    } else if (found instanceof OIdentifiable) {
      if (prop != null && propType == OType.LINK)
        throw new ODatabaseException(
            "Type of field provided in schema '" + prop.getType() + "' cannot be used for creation to hold several links.");

      if (prop != null && "true".equalsIgnoreCase(prop.getCustom("ordered"))) {//TODO constant
        final Collection coll = new ORecordLazyList(iFromVertex);
        coll.add(found);
        coll.add(iTo);
        out = coll;
        outType = OType.LINKLIST;
      } else {
        final ORidBag bag = new ORidBag();
        bag.add((OIdentifiable) found);
        bag.add(iTo);
        out = bag;
        outType = OType.LINKBAG;
      }
    } else if (found instanceof ORidBag) {
      // ADD THE LINK TO THE COLLECTION
      out = null;

      ((ORidBag) found).add(iTo.getRecord());

    } else if (found instanceof Collection<?>) {
      // USE THE FOUND COLLECTION
      out = null;
      ((Collection<Object>) found).add(iTo);

    } else
      throw new ODatabaseException("Relationship content is invalid on field " + iFieldName + ". Found: " + found);

    if (out != null)
      // OVERWRITE IT
      iFromVertex.field(iFieldName, out, outType);

    return out;
  }
public static Object createLink ( final ODocument iFromVertex , final OIdentifiable iTo , final String iFieldName ) { final Object out ; OType outType = iFromVertex . fieldType ( iFieldName ) ; Object found = iFromVertex . field ( iFieldName ) ; final OClass linkClass = ODocumentInternal . getImmutableSchemaClass ( iFromVertex ) ; if ( linkClass == null ) throw new IllegalArgumentException ( "Class not found in source vertex: " + iFromVertex ) ; final OProperty prop = linkClass . getProperty ( iFieldName ) ; final OType propType = prop != null && prop . getType ( ) != OType . ANY ? prop . getType ( ) : null ; if ( found == null ) { if ( propType == OType . LINKLIST || ( prop != null && "true" . equalsIgnoreCase ( prop . getCustom ( "ordered" ) ) ) ) { //TODO constant final Collection coll = new ORecordLazyList ( iFromVertex ) ; coll . add ( iTo ) ; out = coll ; outType = OType . LINKLIST ; } else if ( propType == null || propType == OType . LINKBAG ) { final ORidBag bag = new ORidBag ( ) ; bag . add ( iTo ) ; out = bag ; outType = OType . LINKBAG ; } else if ( propType == OType . LINK ) { out = iTo ; outType = OType . LINK ; } else throw new ODatabaseException ( "Type of field provided in schema '" + prop . getType ( ) + "' cannot be used for link creation." ) ; } else if ( found instanceof OIdentifiable ) { if ( prop != null && propType == OType . LINK ) throw new ODatabaseException ( "Type of field provided in schema '" + prop . getType ( ) + "' cannot be used for creation to hold several links." ) ; if ( prop != null && "true" . equalsIgnoreCase ( prop . getCustom ( "ordered" ) ) ) { //TODO constant final Collection coll = new ORecordLazyList ( iFromVertex ) ; coll . add ( found ) ; coll . add ( iTo ) ; out = coll ; outType = OType . LINKLIST ; } else { final ORidBag bag = new ORidBag ( ) ; bag . add ( ( OIdentifiable ) found ) ; bag . add ( iTo ) ; out = bag ; outType = OType . LINKBAG ; } } else if ( found instanceof ORidBag ) { // ADD THE LINK TO THE COLLECTION out = null ; ( ( ORidBag ) found ) . add ( iTo . getRecord ( ) ) ; } else if ( found instanceof Collection < ? > ) { // USE THE FOUND COLLECTION out = null ; ( ( Collection < Object > ) found ) . add ( iTo ) ; } else throw new ODatabaseException ( "Relationship content is invalid on field " + iFieldName + ". Found: " + found ) ; if ( out != null ) // OVERWRITE IT iFromVertex . field ( iFieldName , out , outType ) ; return out ; }
(Internal only) Creates a link between a vertices and a Graph Element.
( Internal only ) Creates a link between a vertices and a Graph Element .