@Override public ConfigurableFactory<PyramidIO> createFactory (ConfigurableFactory<?> parent, List<String> path) { return createFactory(null, parent, path); }
@Override public ConfigurableFactory<PyramidIO> createFactory (String name, ConfigurableFactory<?> parent, List<String> path) { return _constructor.create(parent, path); }
public PyramidIOFactory (String name, ConfigurableFactory<?> parent, List<String> path, List<ConfigurableFactory<? extends PyramidIO>> children) { super(name, PyramidIO.class, parent, path, true, children, FileBasedPyramidIOFactory.NAME); addProperty(INITIALIZATION_DATA); } }
public <T> void copyPyramid (String pyramidId, int minLevel, int maxLevel, TileSerializer<T> serializer, int blockSize) throws IOException { // Parameters 2-4 aren't used except in live tiling, so dummy parameters are fine. _from.initializeForRead(pyramidId, 256, 256, null); _to.initializeForWrite(pyramidId); System.out.println("Writing metadata"); _to.writeMetaData(pyramidId, _from.readMetaData(pyramidId)); for (int level = minLevel; level <= maxLevel; ++level) { System.out.println("Copying level " + level); copyLevel(pyramidId, level, serializer, blockSize); } } public <T> void copyLevel (String pyramidId, int level, TileSerializer<T> serializer, int blockSize) throws IOException {
private <T> void writeAvroTiles (PyramidIO pio, TileSerializer<T> serializer, String pyramidId, ArrayList<TileData<T>> tiles) { try { pio.initializeForWrite(pyramidId); pio.writeTiles(pyramidId, serializer, tiles); } catch (IOException e) { e.printStackTrace(); } }
private void doCopy(List<TileIndex> toCopy) throws IOException { List<TileData<T>> tiles = _source.readTiles(_parameters._sourceId, _serializer, toCopy); _destination.writeTiles(_parameters._destinationId, _serializer, tiles); }
private <T> List<TileData<T>> readAvroTiles (PyramidIO pio, TileSerializer<T> serializer, String pyramidId) { ArrayList<TileIndex> tiles = new ArrayList<TileIndex>(); TileIndex index = new TileIndex(4, 3, 2); tiles.add(index); try { return pio.readTiles(pyramidId, serializer, tiles); } catch (IOException e) { e.printStackTrace(); } return null; }
private static FactoryProvider<PyramidIO> getPyramidIOFactoryProvider () { Set<FactoryProvider<PyramidIO>> subFactories = new HashSet<>(); for (FactoryProvider<PyramidIO> subFactory: DefaultPyramidIOFactoryProvider.values()) subFactories.add(subFactory); final String defaultType = DefaultPyramidIOFactoryProvider.values()[0].name(); return new StandardUberFactoryProvider<PyramidIO>(subFactories) { @Override public ConfigurableFactory<? extends PyramidIO> createFactory(String name, ConfigurableFactory<?> parent, List<String> path) { return new UberFactory<PyramidIO>(name, PyramidIO.class, parent, path, createChildren(parent, path), defaultType); } }; }
@Override public void initializeForRead (String pyramidId, int width, int height, Properties dataDescription) { if (!_basePyramidIOs.containsKey(pyramidId)) { LOGGER.info("Attempt to initialize unknown pyramid" + pyramidId + "'."); } else { _basePyramidIOs.get(pyramidId).initializeForRead(pyramidId, width, height, dataDescription); } }
@Override public String readMetaData (String pyramidId) throws IOException { return getBasePyramidIO(pyramidId).readMetaData(pyramidId); }
@Override public void writeMetaData (String pyramidId, String metaData) throws IOException { String key = getMetaDataKey(pyramidId); _data.put(key, metaData.getBytes()); }
@Override public <T> List<TileData<T>> readTiles (String pyramidId, TileSerializer<T> serializer, Iterable<TileIndex> tiles, JSONObject properties ) throws IOException { return readTiles( pyramidId, serializer, tiles ); }
@Override public ConfigurableFactory<PyramidIO> createFactory (String name, ConfigurableFactory<?> parent, List<String> path) { return new PyramidIOFactory(name, parent, path, createChildren(parent, path)); } }
@Override public <T> InputStream getTileStream (String pyramidId, TileSerializer<T> serializer, TileIndex tile) throws IOException { String key = getTileKey(pyramidId, tile); if (_data.containsKey(key)) { byte[] data = _data.get(key); return new ByteArrayInputStream(data); } else { return null; } }
public void copy (List<TileIndex> rootTiles) throws IOException { _source.initializeForRead(_parameters._sourceId, _parameters._width, _parameters._height, null); _destination.initializeForWrite(_parameters._destinationId); String metaData = _source.readMetaData(_parameters._sourceId); if (null != metaData) _destination.writeMetaData(_parameters._destinationId, metaData); List<TileIndex> toCopy = new ArrayList<>(); for (TileIndex root: rootTiles) { toCopy = copyUp(root, toCopy); toCopy = copyDown(root, toCopy); } doCopy(toCopy); }
private <T> void writeAvroTiles (PyramidIO pio, TileSerializer<T> serializer, String pyramidId, ArrayList<TileData<T>> tiles) { try { pio.initializeForWrite(pyramidId); pio.writeTiles(pyramidId, serializer, tiles); } catch (IOException e) { e.printStackTrace(); } }
private <T> void retrieveAndCopy (String pyramidId, TileSerializer<T> serializer, Iterable<TileIndex> indices) throws IOException { _to.writeTiles(pyramidId, serializer, _from.readTiles(pyramidId, serializer, indices)); }
@Override public ConfigurableFactory<PyramidIO> createFactory (List<String> path) { return createFactory(null, null, path); }
@Override public String readMetaData (String pyramidId) throws IOException { String key = getMetaDataKey(pyramidId); if (_data.containsKey(key)) { byte[] data = _data.get(key); return new String(data); } else { return null; } }
private <T> void writeAvroTiles (PyramidIO pio, TileSerializer<T> serializer, String pyramidId, ArrayList<TileData<T>> tiles) { try { pio.initializeForWrite(pyramidId); pio.writeTiles(pyramidId, serializer, tiles); } catch (IOException e) { e.printStackTrace(); } }