package http.engine;
import http.HTTP;
import http.resource.LoginListResouce;
import http.resource.SignupResouce;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import nebula.data.DataRepos;
import nebula.data.DataStore;
import nebula.data.Entity;
import nebula.data.impl.TypeDatastore;
import nebula.server.Resource;
import nebula.server.ResourceEngine;
public class SystemFunctionResouceEngine implements ResourceEngine {
final private Map<String, Resource> cachedLinks = new HashMap<String, Resource>();
final DataRepos repos;
final TypeDatastore types;
@Inject
public SystemFunctionResouceEngine(DataRepos repos, TypeDatastore types) {
this.repos = repos;
this.types = types;
DataStore<Entity> users = repos.define(String.class, Entity.class, HTTP.Type_User);
DataStore<Entity> userAccessLogs = repos.define(Long.class, Entity.class, HTTP.Type_UserAccessLog);
cachedLinks.put(HTTP.Href_Login, new LoginListResouce(users, userAccessLogs));
cachedLinks.put(HTTP.Href_Signup, new SignupResouce(users, userAccessLogs));
}
@Override
public Resource resolve(String path) {
String[] paths = path.split("/");
String id = null;
if (paths.length > 2) {
id = paths[2];
}
return cachedLinks.get(id);
}
}