package org.geowebcache.storage; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; public final class BlobStoreListenerList { private List<BlobStoreListener> listeners = new CopyOnWriteArrayList<BlobStoreListener>(); public Iterable<BlobStoreListener> getListeners(){ return new ArrayList<BlobStoreListener>(listeners); } public boolean isEmpty() { return listeners.isEmpty(); } public synchronized void addListener(BlobStoreListener listener) { if (listener != null && !listeners.contains(listener)) { listeners.add(listener); } } public synchronized boolean removeListener(BlobStoreListener listener) { return listeners.remove(listener); } public void sendLayerDeleted(String layerName) { listeners.forEach(listener->{ listener.layerDeleted(layerName); }); } public void sendLayerRenamed(String oldLayerName, String newLayerName) { listeners.forEach(listener->{ listener.layerRenamed(oldLayerName, newLayerName); }); } public void sendGridSubsetDeleted(String layerName, String gridSetId) { listeners.forEach(listener->{ listener.gridSubsetDeleted(layerName, gridSetId); }); } public void sendParametersDeleted(String layerName, String parametersId) { listeners.forEach(listener->{ listener.parametersDeleted(layerName, parametersId); }); } public void sendTileDeleted(String layerName, String gridSetId, String blobFormat, String parametersId, long x, long y, int z, long length) { listeners.forEach(listener->{ listener.tileDeleted(layerName, gridSetId, blobFormat, parametersId, x, y, z, length); }); } public void sendTileDeleted(final TileObject stObj) { final long[] xyz = stObj.getXYZ(); final String layerName = stObj.getLayerName(); final String gridSetId = stObj.getGridSetId(); final String blobFormat = stObj.getBlobFormat(); final String paramsId = stObj.getParametersId(); final int blobSize = stObj.getBlobSize(); sendTileDeleted(layerName, gridSetId, blobFormat, paramsId, xyz[0], xyz[1], (int) xyz[2], blobSize); } public void sendTileStored(String layerName, String gridSetId, String blobFormat, String parametersId, long x, long y, int z, long length) { listeners.forEach(listener->{ listener.tileStored(layerName, gridSetId, blobFormat, parametersId, x, y, z, length); }); } public void sendTileStored(final TileObject stObj) { final long[] xyz = stObj.getXYZ(); final String layerName = stObj.getLayerName(); final String gridSetId = stObj.getGridSetId(); final String blobFormat = stObj.getBlobFormat(); final String paramsId = stObj.getParametersId(); final int blobSize = stObj.getBlobSize(); sendTileStored(layerName, gridSetId, blobFormat, paramsId, xyz[0], xyz[1], (int) xyz[2], blobSize); } public void sendTileUpdated(String layerName, String gridSetId, String blobFormat, String parametersId, long x, long y, int z, long blobSize, long oldSize) { listeners.forEach(listener->{ listener.tileUpdated(layerName, gridSetId, blobFormat, parametersId, x, y, z, blobSize, oldSize); }); } public void sendTileUpdated(final TileObject stObj, final long oldSize) { final long[] xyz = stObj.getXYZ(); final String layerName = stObj.getLayerName(); final String gridSetId = stObj.getGridSetId(); final String blobFormat = stObj.getBlobFormat(); final String paramsId = stObj.getParametersId(); final int blobSize = stObj.getBlobSize(); sendTileUpdated(layerName, gridSetId, blobFormat, paramsId, xyz[0], xyz[1], (int) xyz[2], blobSize, oldSize); } }