package services;
import helpers.JsonLdConstants;
import models.Resource;
import services.repository.Readable;
import services.repository.Repository;
import services.repository.Writable;
import javax.annotation.Nonnull;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author fo
*/
public class MockResourceRepository extends Repository implements Readable, Writable {
private Map<String, Resource> db = new HashMap<>();
public MockResourceRepository() {
super(null);
}
public void addResource(@Nonnull Resource aResource) throws IOException {
addResource(aResource, new HashMap<>());
}
/**
* Add a new resource to the repository.
*
* @param aResource
* @param aMetadata
*/
@Override
public void addResource(@Nonnull Resource aResource, Map<String, String> aMetadata) throws IOException {
String id = aResource.getAsString(JsonLdConstants.ID);
db.put(id, aResource);
}
/**
* Add a new resource to the repository.
*
* @param aResources
* @param aMetadata
*/
@Override
public void addResources(@Nonnull List<Resource> aResources, Map<String, String> aMetadata) throws IOException {
for (Resource resource : aResources) {
addResource(resource, aMetadata);
}
}
/**
* Get a Resource specified by the given identifier.
*
* @param aId
* @return the Resource
*/
@Override
public Resource getResource(@Nonnull String aId) throws IOException {
return db.get(aId);
}
@Override
public Resource deleteResource(@Nonnull String aId, Map<String, String> aMetadata) {
Resource resource = db.get(aId);
db.remove(aId);
return resource;
}
@Override
public List<Resource> getAll(@Nonnull String aType) {
return new ArrayList<>(db.values());
}
public int size() {
return db.size();
}
public String toString() {
return db.toString();
}
}