package com.linkedin.thirdeye.dashboard.resources.v2.rootcause;
import com.linkedin.thirdeye.client.DAORegistry;
import com.linkedin.thirdeye.dashboard.resources.v2.RootCauseEntityFormatter;
import com.linkedin.thirdeye.dashboard.resources.v2.pojo.RootCauseEntity;
import com.linkedin.thirdeye.datalayer.bao.EventManager;
import com.linkedin.thirdeye.datalayer.bao.MergedAnomalyResultManager;
import com.linkedin.thirdeye.datalayer.dto.EventDTO;
import com.linkedin.thirdeye.rootcause.Entity;
import com.linkedin.thirdeye.rootcause.impl.EventEntity;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class HolidayFormatter extends RootCauseEntityFormatter {
private static final DateTimeFormatter DATE_FORMAT = DateTimeFormat.forStyle("S-");
private static final String TYPE_HOLIDAY = "HOLIDAY";
private final EventManager eventDAO;
public HolidayFormatter(EventManager eventDAO) {
this.eventDAO = eventDAO;
}
public HolidayFormatter() {
this.eventDAO = DAORegistry.getInstance().getEventDAO();
}
@Override
public boolean applies(Entity entity) {
return entity.getUrn().startsWith(EventEntity.TYPE.getPrefix() + TYPE_HOLIDAY + ":");
}
@Override
public RootCauseEntity format(Entity entity) {
EventEntity e = EventEntity.fromURN(entity.getUrn(), entity.getScore());
String label = formatHolidayLabel(e);
String link = String.format("https://www.google.com/search?q=%s", label);
return makeRootCauseEntity(entity, TYPE_HOLIDAY, label, link);
}
private String formatHolidayLabel(EventEntity e) {
EventDTO dto = this.eventDAO.findById(e.getId());
if(dto == null)
return "Unknown";
return String.format("(%s) %s", DATE_FORMAT.print(dto.getStartTime()), dto.getName());
}
}