private void createColumns() { // Create columns if necessary final GeneAssociationTag[] tags = GeneAssociationTag.values(); int index = 0; for (GeneAssociationTag tag : tags) { index++; // Special cases: handled in the last part if (tag == GeneAssociationTag.GO_ID || tag == GeneAssociationTag.EVIDENCE || tag == GeneAssociationTag.DB_REFERENCE || tag == GeneAssociationTag.ASPECT) continue; final String tagString = tag.toString(); if (table.getColumn(tagString) == null) { if (LIST_INDEX.contains(index)) { table.createListColumn(tagString, String.class, false); } else { table.createColumn(tagString, String.class, false); } } } // Create one column per namespace for (String name : NAMESPACE_MAP.keySet()) { table.createListColumn(NAMESPACE_MAP.get(name), String.class, false); table.createListColumn(NAMESPACE_MAP.get(name) + EVIDENCE_SUFFIX, String.class, false); table.createListColumn(NAMESPACE_MAP.get(name) + REFERENCE_SUFFIX, String.class, false); } // Consolidated entry name list table.createListColumn(SYNONYM_COL_NAME, String.class, true); }
private void mapEntry(final String[] entries) { // Set primary key for the table, which is DB Object ID final String primaryKeyValue = entries[DB_OBJ_ID]; final CyRow row = table.getRow(primaryKeyValue); row.set(CyNetwork.NAME, primaryKeyValue); // Check namespace final String namespace = NAMESPACE_MAP.get(entries[ASPECT]); for (int i = 0; i < EXPECTED_COL_COUNT; i++) { final GeneAssociationTag tag = GeneAssociationTag.values()[i]; switch (tag) { // Evidence code and GO ID should be organized by namespace. case GO_ID: String goidString = entries[i]; if (this.termIDList != null) goidString = convertToName(goidString); List<String> currentList = row.getList(namespace, String.class); if (currentList == null) currentList = new ArrayList<String>(); if (currentList.contains(goidString) == false) currentList.add(goidString); row.set(namespace, currentList); break; case EVIDENCE: case DB_REFERENCE: final String value = entries[i]; String columnName = namespace; if (tag == GeneAssociationTag.EVIDENCE) columnName = columnName + EVIDENCE_SUFFIX; else columnName = columnName + REFERENCE_SUFFIX; List<String> valueList = row.getList(columnName, String.class); if (valueList == null) valueList = new ArrayList<String>(); if (valueList.contains(value) == false) valueList.add(value); row.set(columnName, valueList); break; case TAXON: final String taxID = entries[i].split(":")[1]; final String taxName = speciesMap.get(taxID); if (taxName != null) row.set(tag.toString(), taxName); else if (taxID != null) row.set(tag.toString(), taxID); break; case ASPECT: // Ignore these lines break; case DB_OBJECT_ID: case DB_OBJECT_SYMBOL: case DB_OBJECT_SYNONYM: // Create consolidated id list attribute. List<String> synList = row.getList(SYNONYM_COL_NAME, String.class); if (synList == null) synList = new ArrayList<String>(); if (tag == GeneAssociationTag.DB_OBJECT_SYNONYM) { final String[] vals = entries[i].split(LIST_DELIMITER); for (String val : vals) { if (synList.contains(val) == false) synList.add(val); } } else { if (synList.contains(entries[i]) == false) synList.add(entries[i]); } row.set(SYNONYM_COL_NAME, synList); break; default: if (LIST_INDEX.contains(i + 1)) { final String[] vals = entries[i].split(LIST_DELIMITER); List<String> listVals = row.getList(tag.toString(), String.class); if (listVals == null) listVals = new ArrayList<String>(); for (String val : vals) { if (listVals.contains(val) == false) listVals.add(val); } row.set(tag.toString(), listVals); } else row.set(tag.toString(), entries[i]); break; } } }