package org.gcube.data.spd.plugin.fwk.writers; import org.gcube.data.spd.plugin.fwk.writers.rswrapper.AbstractWrapper; public abstract class AbstractWriter implements ClosableWriter{ //private Logger logger= LoggerFactory.getLogger(AbstractWriter.class); protected boolean closed; private int links =0; private AbstractWrapper wrapper; protected int wrote; protected AbstractWriter(AbstractWrapper wrapper) { this.wrapper = wrapper; this.wrapper.register(); } protected AbstractWrapper getWrapper() { return wrapper; } public synchronized void register(){ links++; } public synchronized void register(int links){ this.links+=links; } public synchronized void close() { links--; if (links<=0){ if (!closed){ if (!this.wrapper.isClosed())this.wrapper.unregister(); closed=true; } else throw new IllegalStateException("writer already closed"); } } }