private void writeIndexCoding(IndexCoding indexCoding, NVariable variable) throws IOException { CfIndexCodingPart.writeIndexCoding(indexCoding, variable); final String[] indexNames = indexCoding.getIndexNames(); final StringBuilder descriptions = new StringBuilder(); for (String indexName : indexNames) { final MetadataAttribute index = indexCoding.getIndex(indexName); if (index != null) { final String description = index.getDescription(); if (description != null) { descriptions.append(description); } } descriptions.append(DESCRIPTION_SEPARATOR); } variable.addAttribute(INDEX_DESCRIPTIONS, descriptions.toString().trim()); variable.addAttribute(INDEX_CODING_NAME, indexCoding.getName()); }
@Test public void testCopyIndexCoding() { final IndexCoding originalIndexCoding = new IndexCoding("sesame street characters"); originalIndexCoding.addIndex("erni", 0, "erni character"); originalIndexCoding.addIndex("bert", 1, "bert character"); final Product product = new Product("S", "S", 0, 0); ProductUtils.copyIndexCoding(originalIndexCoding, product); final ProductNodeGroup<IndexCoding> indexCodingGroup = product.getIndexCodingGroup(); assertNotNull(indexCodingGroup); assertEquals(1, indexCodingGroup.getNodeCount()); final IndexCoding actualIndexCoding = indexCodingGroup.get("sesame street characters"); assertNotNull(actualIndexCoding); assertNotSame(originalIndexCoding, actualIndexCoding); assertMetadataAttributeEqualityInt(originalIndexCoding.getIndex("erni"), actualIndexCoding.getIndex("erni")); assertMetadataAttributeEqualityInt(originalIndexCoding.getIndex("bert"), actualIndexCoding.getIndex("bert")); // try to copy the same coding a second time ProductUtils.copyIndexCoding(originalIndexCoding, product); assertEquals(1, indexCodingGroup.getNodeCount()); }
final String[] indexNames = indexCoding.getIndexNames(); if (rowIndex < indexNames.length) { final int indexValue = indexCoding.getAttributeIndex(indexCoding.getIndex(indexNames[rowIndex])); final double frequency = frequencies[indexValue]; return frequency / stx.getSampleCount();