List<Integer> defaultKeySet = new ArrayList<>(keySet.size()); for (String key : keySet) { int indexOf = keysList.indexOf(key); if (indexOf >= 0) { defaultKeySet.add(indexOf);
public CoordinateReferenceSystem crs() { final List<Integer> props; final List<Value> vals; switch(data.getDataTypeCase()) { case GEOMETRY: props = data.getGeometry().getCustomPropertiesList(); vals = data.getGeometry().getValuesList(); break; case FEATURE: props = data.getFeature().getCustomPropertiesList(); vals = data.getFeature().getValuesList(); break; case FEATURE_COLLECTION: props = data.getFeatureCollection().getCustomPropertiesList(); vals = data.getFeatureCollection().getValuesList(); break; default: return null; } int i = data.getKeysList().indexOf(CustomKeys.CRS); int p = props.indexOf(i); if (p > -1 && p % 2 == 0) { return Proj.crs((String) decode(vals.get(props.get(p+1)))); } return null; }
static void mergeVariants(Builder destVariant, Variant srcVariant) { // Merge alternates preserving the order of pre-existing alts in the destination. for (String srcAlt : srcVariant.getAlternateBasesList()) { if (!destVariant.getAlternateBasesList().contains(srcAlt)) { destVariant.addAlternateBases(srcAlt); } } // Re-number genotypes and merge calls. for (VariantCall call : srcVariant.getCallsList()) { VariantCall.Builder updatedCall = VariantCall.newBuilder(call); for (int i = 0; i < call.getGenotypeCount(); i++) { if (0 < call.getGenotype(i)) { int updatedGenotype = destVariant.getAlternateBasesList().indexOf( srcVariant.getAlternateBasesList().get(call.getGenotype(i) - 1)) + 1; updatedCall.setGenotype(i, updatedGenotype); } } destVariant.addCalls(updatedCall); } } }