/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.client.impl;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.netflix.astyanax.ColumnListMutation;
import com.netflix.astyanax.model.ColumnFamily;
import com.netflix.astyanax.model.Column;
import com.emc.storageos.db.client.model.*;
public class NamedRelationDbIndex extends DbIndex<IndexColumnName> {
private static final Logger _log = LoggerFactory.getLogger(NamedRelationDbIndex.class);
NamedRelationDbIndex(ColumnFamily<String, IndexColumnName> indexCF) {
super(indexCF);
}
@Override
boolean addColumn(String recordKey, CompositeColumnName column, Object value,
String className, RowMutator mutator, Integer ttl, DataObject obj) {
String name = ((NamedURI) value).getName();
ColumnListMutation<IndexColumnName> indexColList =
mutator.getIndexColumnList(indexCF, getRowKey(column, value));
IndexColumnName indexEntry =
new IndexColumnName(className, name.toLowerCase(), name, recordKey, column.getTimeUUID());
ColumnValue.setColumn(indexColList, indexEntry, null, ttl);
return true;
}
@Override
boolean removeColumn(String recordKey, Column<CompositeColumnName> column,
String className, RowMutator mutator,
Map<String, List<Column<CompositeColumnName>>> fieldColumnMap) {
ColumnListMutation<IndexColumnName> indexColList =
mutator.getIndexColumnList(indexCF, getRowKey(column));
UUID uuid = column.getName().getTimeUUID();
NamedURI namedURI = NamedURI.fromString(column.getStringValue());
String name = namedURI.getName();
IndexColumnName indexEntry =
new IndexColumnName(className, name.toLowerCase(), name, recordKey, uuid);
indexColList.deleteColumn(indexEntry);
return true;
}
String getRowKey(CompositeColumnName column, Object value) {
return ((NamedURI) value).getURI().toString();
}
String getRowKey(Column<CompositeColumnName> column) {
NamedURI namedURI = NamedURI.fromString(column.getStringValue());
return namedURI.getURI().toString();
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder("NamedRelationDbIndex class");
builder.append("\t");
builder.append(super.toString());
builder.append("\n");
return builder.toString();
}
}