package org.fluxtream.core.facets.extractors;
import org.fluxtream.core.ApiData;
import org.fluxtream.core.connectors.Connector;
import org.fluxtream.core.connectors.ObjectType;
import org.fluxtream.core.connectors.updaters.UpdateInfo;
import org.fluxtream.core.domain.AbstractFacet;
import java.util.List;
public abstract class AbstractFacetExtractor {
protected Connector connector(UpdateInfo updateInfo) {
return updateInfo.apiKey.getConnector();
}
protected void extractCommonFacetData(AbstractFacet facet, ApiData apiData) {
facet.apiKeyId = apiData.updateInfo.apiKey.getId();
facet.guestId = apiData.updateInfo.apiKey.getGuestId();
facet.api = apiData.updateInfo.apiKey.getConnector().value();
facet.timeUpdated = System.currentTimeMillis();
// may be overridden by subclasses, this is just a "first approximation"
// that may of may not be provided by the specialized extractor
if (apiData.start!=-1)
facet.start = apiData.start;
if (apiData.end!=-1)
facet.end = apiData.end;
}
public static String noon(String date) {
return date + "T12:00:00.000";
}
public static String toTimeStorage(int year, int month, int day, int hours,
int minutes, int seconds) {
//yyyy-MM-dd'T'HH:mm:ss.SSS
return (new StringBuilder()).append(year)
.append("-").append(pad(month)).append("-")
.append(pad(day)).append("T").append(pad(hours))
.append(":").append(pad(minutes)).append(":")
.append(pad(seconds)).append(".000").toString();
}
public static String pad(int i) {
return i<10
? (new StringBuilder("0").append(i)).toString()
: String.valueOf(i);
}
public abstract List<AbstractFacet> extractFacets(UpdateInfo updateInfo, ApiData apiData,
ObjectType objectType) throws Exception;
}