package org.traccar.storage; import org.traccar.storage.query.Request; import java.util.List; public abstract class Storage { abstract List getObjects(Class clazz, Request request) throws StorageException; abstract long addObject(T entity, Request request) throws StorageException; abstract void updateObject(T entity, Request request) throws StorageException; abstract void removeObject(Class clazz, Request request) throws StorageException; T getObject(Class clazz, Request request) throws StorageException { var objects = getObjects(clazz, request); if (objects.isEmpty()) { throw new StorageException("No objects found"); } return objects.get(0); } }