public MultiSliceTileView (List<TileData<List<T>>> components) { TileIndex i0 = null; for (TileData<List<T>> component: components) { if (null == i0) i0 = component.getDefinition(); else if (!i0.equals(component.getDefinition())) throw new IllegalArgumentException("Attempt to create a multislice tile view with incompatible components"); } _components = Collections.unmodifiableList(new ArrayList<>(components)); }
@Override public boolean equals (Object obj) { if (this == obj) return true; if (null == obj) return false; if (!(obj instanceof TileAndBinIndices)) return false; TileAndBinIndices tb = (TileAndBinIndices) obj; if (!_tile.equals(tb.getTile())) return false; if (!_bin.equals(tb.getBin())) return false; return true; } }
public static boolean compareTiles( AnnotationTile a, AnnotationTile b, boolean verbose ) { List<Pair<String, Long>> aReferences = a.getAllCertificates(); List<Pair<String, Long>> bReferences = b.getAllCertificates(); if ( !a.getDefinition().equals( b.getDefinition() ) ) { LOGGER.debug( "Bin indices are not equal"); return false; } if ( aReferences.size() != bReferences.size() ) { LOGGER.debug( "Reference counts are not equal"); return false; } for ( Pair<String, Long> aRef : aReferences ) { int foundCount = 0; for ( Pair<String, Long> bRef : bReferences ) { if ( aRef.equals( bRef ) ) { foundCount++; } } if ( foundCount != 1 ) { LOGGER.debug( "Reference lists are not equal"); return false; } } return true; }
private void addDataCertificateToTiles( List<AnnotationTile> tiles, List<TileAndBinIndices> indices, AnnotationData<?> data ) { for ( TileAndBinIndices index : indices ) { // check all existing tiles for matching index boolean found = false; for ( AnnotationTile tile : tiles ) { if ( tile.getDefinition().equals( index.getTile() ) ) { // tile exists already, add data to bin tile.addDataToBin( index.getBin(), data ); found = true; break; } } if ( !found ) { // no tile exists, add tile AnnotationTile tile = new AnnotationTile( index.getTile() ); tile.addDataToBin(index.getBin(), data); tiles.add( tile ); } } }