graphdb/src/main/java/com/tinkerpop/blueprints/impls/orient/OrientElement.java
protected <T extends OrientElement> T setPropertiesInternal(final Object... fields) {
    OrientBaseGraph graph = getGraph();
    if (fields != null && fields.length > 0 && fields[0] != null) {
      if (graph != null)
        graph.autoStartTransaction();

      if (fields.length == 1) {
        Object f = fields[0];
        if (f instanceof Map<?, ?>) {
          for (Map.Entry<Object, Object> entry : ((Map<Object, Object>) f).entrySet())
            setPropertyInternal(this, (ODocument) rawElement.getRecord(), entry.getKey().toString(), entry.getValue());

        } else if (f instanceof Collection) {
          for (Object o : (Collection) f) {
            if (!(o instanceof OPair))
              throw new IllegalArgumentException(
                  "Invalid fields: expecting a pairs of fields as String,Object, but found the item: " + o);

            final OPair entry = (OPair) o;
            setPropertyInternal(this, (ODocument) rawElement.getRecord(), entry.getKey().toString(), entry.getValue());
          }

        } else
          throw new IllegalArgumentException(
              "Invalid fields: expecting a pairs of fields as String,Object or a single Map<String,Object>, but found: " + f);
      } else {
        if (fields.length % 2 != 0)
          throw new IllegalArgumentException(
              "Invalid fields: expecting a pairs of fields as String,Object or a single Map<String,Object>, but found: " + Arrays
                  .toString(fields));

        // SET THE FIELDS
        for (int i = 0; i < fields.length; i += 2)
          setPropertyInternal(this, (ODocument) rawElement.getRecord(), fields[i].toString(), fields[i + 1]);
      }
    }
    return (T) this;
  }
protected <T extends OrientElement> T setPropertiesInternal(final Object... fields) {
    OrientBaseGraph graph = getGraph();
    if (fields != null && fields.length > 0 && fields[0] != null) {
      if (graph != null)
        graph.autoStartTransaction();

      if (fields.length == 1) {
        Object f = fields[0];
        if (f instanceof Map<?, ?>) {
          for (Map.Entry<Object, Object> entry : ((Map<Object, Object>) f).entrySet())
            setPropertyInternal(this, (ODocument) rawElement.getRecord(), entry.getKey().toString(), entry.getValue());

        } else if (f instanceof Collection) {
          for (Object o : (Collection) f) {
            if (!(o instanceof OPair))
              throw new IllegalArgumentException(
                  "Invalid fields: expecting a pairs of fields as String,Object, but found the item: " + o);

            final OPair entry = (OPair) o;
            setPropertyInternal(this, (ODocument) rawElement.getRecord(), entry.getKey().toString(), entry.getValue());
          }

        } else
          throw new IllegalArgumentException(
              "Invalid fields: expecting a pairs of fields as String,Object or a single Map<String,Object>, but found: " + f);
      } else {
        if (fields.length % 2 != 0)
          throw new IllegalArgumentException(
              "Invalid fields: expecting a pairs of fields as String,Object or a single Map<String,Object>, but found: " + Arrays
                  .toString(fields));

        // SET THE FIELDS
        for (int i = 0; i < fields.length; i += 2)
          setPropertyInternal(this, (ODocument) rawElement.getRecord(), fields[i].toString(), fields[i + 1]);
      }
    }
    return (T) this;
  }
(Blueprints Extension) Sets multiple properties in one shot against Vertices and Edges without saving the element. This
improves performance avoiding to save the graph element at every property set. Example:
<p>
<code>
vertex.setProperties( "name", "Jill", "age", 33, "city", "Rome", "born", "Victoria, TX" );
</code> You can also pass a Map of values as first argument. In this case all the map entries will be set as element
properties:
<p>
<code>
Map<String,Object> props = new HashMap<String,Object>();
props.put("name", "Jill");
props.put("age", 33);
props.put("city", "Rome");
props.put("born", "Victoria, TX");
vertex.setProperties(props);
</code>

@param fields Odd number of fields to set as repeating pairs of key, value, or if one parameter is received and it's a Map, the Map
entries are used as field key/value pairs.
@param <T>
@return