package esl.cuenet.source;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import esl.cuenet.source.accessors.*;
import org.apache.log4j.Logger;
import java.io.FileNotFoundException;
import java.io.FileReader;
public class AccessorFactory {
private static AccessorFactory factoryInstance = new AccessorFactory();
private Logger logger = Logger.getLogger(AccessorFactory.class);
private OntModel model = null;
private AccessorFactory() {
model = ModelFactory.createOntologyModel();
try {
model.read(new FileReader("/home/arjun/Documents/Dropbox/Ontologies/cuenet-main/cuenet-main.owl"),
"http://www.semanticweb.org/arjun/cuenet-main.owl");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static AccessorFactory getInstance() {
return factoryInstance;
}
public IAccessor getAccessor(String name) {
if (name.compareTo("yahoo-geocoder") == 0) {
logger.info("Initializing YahooPlaceFinderAPI Accessor");
return new YahooPlaceFinderAPI(model);
}
else if (name.compareTo("places-db") == 0) {
logger.info("Initializing LocalSimpleGeoPlaceDB Accessor");
return new LocalSimpleGeoPlaceDB(model);
}
else if (name.compareTo("google-calendar") == 0) {
logger.info("Initializing GoogleCalendarCollection Accessor");
return new GoogleCalendarCollection(model);
}
else if (name.compareTo("fb-user") == 0) {
logger.info("Initializing FacebookUser Accessor");
return new FacebookUserAccessor(model);
}
else if (name.compareTo("fb-relation") == 0) {
logger.info("Initializing FacebookRelation Accessor");
return new FacebookRelationAccessor(model);
}
else if (name.compareTo("email") == 0) {
logger.info("Initializing Email Accessor");
return new EmailAccessor(model);
}
else if (name.compareTo("conferences") == 0) {
logger.info("Initializing Conference Accessor");
return new ConferenceAccessor(model);
}
else if (name.compareTo("confattendees") == 0) {
logger.info("Initializing Conference Accessor");
return new ConferenceAttendeeAccessor(model);
}
else if (name.compareTo("academix") == 0) {
logger.info("Initializing Academix Relations Accessor");
return new AcademixRelationAccessor(model);
}
else if (name.compareTo("keynotes") == 0) {
logger.info("Initializing Keynote Subevent Relations Accessor");
return new KeynoteAccessor(model);
}
else if (name.compareTo("talks") == 0) {
logger.info("Initializing Talks Subevent Relations Accessor");
return new ConferenceTalkAccessor(model);
}
else if (name.compareTo("sessions") == 0) {
logger.info("Initializing Sessions Subevent Relations Accessor");
return new SessionAccessor(model);
}
else if (name.compareTo("conflunches") == 0) {
logger.info("Initializing Conference Lunch Subevent Relations Accessor");
return new ConferenceLunchAccessor(model);
}
else if (name.compareTo("tweets") == 0) {
logger.info("Initializing Tweet Accessor");
return new ConferenceTweetAccessor(model);
}
else if (name.compareTo("fb-events") == 0) {
logger.info("Initializing Facebook Events Accessor");
return new FacebookEventAccessor(model);
}
return null;
}
}