private Text getPropertyMetadataColumnQualifierText(
     Property property, Metadata.Entry metadataItem) {
   final String propertyName = property.getName();
   final String propertyKey = property.getKey();
   final String visibilityString = property.getVisibility().getVisibilityString();
   final String metadataKey = metadataItem.getKey();
   //noinspection StringBufferReplaceableByString - for speed we use StringBuilder
   StringBuilder keyBuilder =
       new StringBuilder(
           propertyName.length()
               + propertyKey.length()
               + visibilityString.length()
               + metadataKey.length());
   keyBuilder.append(getNameSubstitutionStrategy().deflate(propertyName));
   keyBuilder.append(getNameSubstitutionStrategy().deflate(propertyKey));
   keyBuilder.append(visibilityString);
   keyBuilder.append(getNameSubstitutionStrategy().deflate(metadataKey));
   String key = keyBuilder.toString();
   Text r = propertyMetadataColumnQualifierTextCache.peek(key);
   if (r == null) {
     r =
         KeyHelper.getColumnQualifierFromPropertyMetadataColumnQualifier(
             propertyName,
             propertyKey,
             visibilityString,
             metadataKey,
             getNameSubstitutionStrategy());
     propertyMetadataColumnQualifierTextCache.put(key, r);
   }
   return r;
 }
  public void addPropertyToMutation(
      AccumuloGraph graph, Mutation m, String rowKey, Property property) {
    Text columnQualifier =
        KeyHelper.getColumnQualifierFromPropertyColumnQualifier(
            property, getNameSubstitutionStrategy());
    ColumnVisibility columnVisibility = visibilityToAccumuloVisibility(property.getVisibility());
    Object propertyValue = property.getValue();
    if (propertyValue instanceof StreamingPropertyValue) {
      propertyValue =
          saveStreamingPropertyValue(rowKey, property, (StreamingPropertyValue) propertyValue);
    }
    if (propertyValue instanceof DateOnly) {
      propertyValue = ((DateOnly) propertyValue).getDate();
    }

    // graph can be null if this is running in Map Reduce. We can just assume the property is
    // already defined.
    if (graph != null) {
      graph.ensurePropertyDefined(property.getName(), propertyValue);
    }

    Value value = new Value(vertexiumSerializer.objectToBytes(propertyValue));
    m.put(
        AccumuloElement.CF_PROPERTY,
        columnQualifier,
        columnVisibility,
        property.getTimestamp(),
        value);
    addPropertyMetadataToMutation(m, property);
  }
 private void addPropertyToKeyValuePairs(
     List<KeyValuePair> results, Text elementRowKey, Property property) {
   Text columnQualifier =
       KeyHelper.getColumnQualifierFromPropertyColumnQualifier(
           property, getNameSubstitutionStrategy());
   ColumnVisibility columnVisibility = visibilityToAccumuloVisibility(property.getVisibility());
   Object propertyValue = property.getValue();
   if (propertyValue instanceof StreamingPropertyValue) {
     throw new VertexiumException("StreamingPropertyValue are not supported");
   }
   if (propertyValue instanceof DateOnly) {
     propertyValue = ((DateOnly) propertyValue).getDate();
   }
   Value value = new Value(vertexiumSerializer.objectToBytes(propertyValue));
   results.add(
       new KeyValuePair(
           new Key(
               elementRowKey,
               AccumuloElement.CF_PROPERTY,
               columnQualifier,
               columnVisibility,
               property.getTimestamp()),
           value));
   addPropertyMetadataToKeyValuePairs(results, elementRowKey, property);
 }
 public void addPropertyDeleteToMutation(Mutation m, PropertyDeleteMutation propertyDelete) {
   Text columnQualifier =
       KeyHelper.getColumnQualifierFromPropertyColumnQualifier(
           propertyDelete.getKey(), propertyDelete.getName(), getNameSubstitutionStrategy());
   ColumnVisibility columnVisibility =
       visibilityToAccumuloVisibility(propertyDelete.getVisibility());
   m.putDelete(
       AccumuloElement.CF_PROPERTY, columnQualifier, columnVisibility, currentTimeMillis());
   addPropertyDeleteMetadataToMutation(m, propertyDelete);
 }
 public void addPropertySoftDeleteToMutation(Mutation m, Property property) {
   Preconditions.checkNotNull(m, "mutation cannot be null");
   Preconditions.checkNotNull(property, "property cannot be null");
   Text columnQualifier =
       KeyHelper.getColumnQualifierFromPropertyColumnQualifier(
           property, getNameSubstitutionStrategy());
   ColumnVisibility columnVisibility = visibilityToAccumuloVisibility(property.getVisibility());
   m.put(
       AccumuloElement.CF_PROPERTY_SOFT_DELETE,
       columnQualifier,
       columnVisibility,
       currentTimeMillis(),
       AccumuloElement.SOFT_DELETE_VALUE);
 }
 public void addPropertySoftDeleteToMutation(
     Mutation m, PropertySoftDeleteMutation propertySoftDelete) {
   Text columnQualifier =
       KeyHelper.getColumnQualifierFromPropertyColumnQualifier(
           propertySoftDelete.getKey(),
           propertySoftDelete.getName(),
           getNameSubstitutionStrategy());
   ColumnVisibility columnVisibility =
       visibilityToAccumuloVisibility(propertySoftDelete.getVisibility());
   m.put(
       AccumuloElement.CF_PROPERTY_SOFT_DELETE,
       columnQualifier,
       columnVisibility,
       currentTimeMillis(),
       AccumuloElement.SOFT_DELETE_VALUE);
 }
 public void addPropertyDeleteToMutation(Mutation m, Property property) {
   Preconditions.checkNotNull(m, "mutation cannot be null");
   Preconditions.checkNotNull(property, "property cannot be null");
   Text columnQualifier =
       KeyHelper.getColumnQualifierFromPropertyColumnQualifier(
           property, getNameSubstitutionStrategy());
   ColumnVisibility columnVisibility = visibilityToAccumuloVisibility(property.getVisibility());
   m.putDelete(
       AccumuloElement.CF_PROPERTY, columnQualifier, columnVisibility, currentTimeMillis());
   for (Metadata.Entry metadataEntry : property.getMetadata().entrySet()) {
     Text metadataEntryColumnQualifier =
         getPropertyMetadataColumnQualifierText(property, metadataEntry);
     ColumnVisibility metadataEntryVisibility =
         visibilityToAccumuloVisibility(metadataEntry.getVisibility());
     addPropertyMetadataItemDeleteToMutation(
         m, metadataEntryColumnQualifier, metadataEntryVisibility);
   }
 }
 private void addPropertySoftDeleteToKeyValuePairs(
     List<KeyValuePair> results,
     Text elementRowKey,
     PropertySoftDeleteMutation propertySoftDeleteMutation) {
   Text columnQualifier =
       KeyHelper.getColumnQualifierFromPropertyColumnQualifier(
           propertySoftDeleteMutation.getKey(),
           propertySoftDeleteMutation.getName(),
           getNameSubstitutionStrategy());
   ColumnVisibility columnVisibility =
       visibilityToAccumuloVisibility(propertySoftDeleteMutation.getVisibility());
   results.add(
       new KeyValuePair(
           new Key(
               elementRowKey,
               AccumuloElement.CF_PROPERTY_SOFT_DELETE,
               columnQualifier,
               columnVisibility,
               currentTimeMillis()),
           AccumuloElement.SOFT_DELETE_VALUE));
 }