package org.jenkins.tools.test.dao;
import com.google.appengine.api.datastore.*;
import org.jenkins.tools.test.model.PluginInfos;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
/**
* @author fcamblor
*/
public enum LogsDAO {
INSTANCE;
private static final Logger log = Logger.getLogger(LogsDAO.class.getName());
public Key persistBuildLog(String buildLogPath, String logContent, Key pluginCompatResult){
Entity logToPersist = Mappings.toEntity(buildLogPath, logContent, pluginCompatResult);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Key resultKey = datastore.put(logToPersist);
log.info("Log stored with key : "+resultKey);
return resultKey;
}
public String getLogContent(String buildPath){
return getLogContentBasedOnCriteria(Mappings.LogProperties.buildLogPath.name(), buildPath);
}
public String getLogContent(Key key){
return getLogContentBasedOnCriteria(Mappings.LogProperties.resultKey.name(), key);
}
private String getLogContentBasedOnCriteria(String property, Object value){
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Query searchLogQuery = new Query(Mappings.LogProperties.KIND)
.addFilter(property, Query.FilterOperator.EQUAL, value);
Entity log = datastore.prepare(searchLogQuery).asSingleEntity();
return Mappings.logContentFromEntity(log);
}
public long purgeResults() {
DatastoreService datastoreService = DatastoreServiceFactory.getDatastoreService();
long deletedLines = 0;
deletedLines += DAOUtils.purgeEntities(Mappings.LogProperties.KIND);
return deletedLines;
}
}