package com.intrbiz.bergamot.config.model;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import com.intrbiz.bergamot.config.adapter.CSVAdapter;
import com.intrbiz.bergamot.config.adapter.TimeRangeAdapter;
import com.intrbiz.bergamot.config.resolver.ResolveWith;
import com.intrbiz.bergamot.config.resolver.stratergy.Coalesce;
import com.intrbiz.bergamot.config.resolver.stratergy.MergeList;
import com.intrbiz.bergamot.config.resolver.stratergy.MergeSet;
import com.intrbiz.bergamot.model.timeperiod.TimeRange;
@XmlType(name = "time-period")
@XmlRootElement(name = "time-period")
public class TimePeriodCfg extends SecuredObjectCfg<TimePeriodCfg>
{
private static final long serialVersionUID = 1L;
private Set<String> excludes = new LinkedHashSet<String>();
private List<TimeRange> timeRanges = new LinkedList<TimeRange>();
private TimeZoneCfg timeZone = null;
public TimePeriodCfg()
{
super();
}
@XmlJavaTypeAdapter(CSVAdapter.class)
@XmlAttribute(name = "excludes")
@ResolveWith(MergeSet.class)
public Set<String> getExcludes()
{
return excludes;
}
public void setExcludes(Set<String> excludes)
{
this.excludes = excludes;
}
@XmlJavaTypeAdapter(TimeRangeAdapter.class)
@XmlElement(name = "time-range")
@ResolveWith(MergeList.class)
public List<TimeRange> getTimeRanges()
{
return timeRanges;
}
public void setTimeRanges(List<TimeRange> timeRanges)
{
this.timeRanges = timeRanges;
}
@XmlElementRef(type = TimeZoneCfg.class)
@ResolveWith(Coalesce.class)
public TimeZoneCfg getTimeZone()
{
return timeZone;
}
public void setTimeZone(TimeZoneCfg timeZone)
{
this.timeZone = timeZone;
}
public TimeZoneCfg getOrDefaultTimeZone()
{
return this.timeZone == null ? TimeZoneCfg.getSystemDefault() : this.timeZone;
}
public List<TemplatedObjectCfg<?>> getTemplatedChildObjects()
{
List<TemplatedObjectCfg<?>> r = new LinkedList<TemplatedObjectCfg<?>>();
return r;
}
}