package org.opennms.core.criteria;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.net.InetAddress;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.opennms.core.criteria.Alias.JoinType;
import org.opennms.core.criteria.Fetch.FetchType;
import org.opennms.core.utils.LogUtils;
import org.opennms.netmgt.model.OnmsAlarm;
import org.opennms.netmgt.model.OnmsIpInterface;
import org.opennms.netmgt.model.OnmsMonitoredService;
import org.opennms.netmgt.model.OnmsNode;
import org.opennms.netmgt.model.OnmsOutage;
public class ConcreteObjectTest {
@Before
public void setUp() {
LogUtils.logToConsole();
LogUtils.enableDebugging();
}
@Test
public void testTypes() throws Exception {
final CriteriaBuilder builder = new CriteriaBuilder(OnmsAlarm.class);
builder.distinct();
final Criteria crit = builder.toCriteria();
assertEquals(OnmsNode.class, crit.getType("node"));
assertEquals(Integer.class, crit.getType("node.id"));
assertEquals(String.class, crit.getType("node.label"));
assertNull(crit.getType("monkey"));
assertNull(crit.getType("node.label.foo"));
assertEquals(OnmsIpInterface.class, crit.getType("node.ipInterfaces"));
assertEquals(Map.class, crit.getType("details"));
}
@Test
public void testAliases() throws Exception {
final CriteriaBuilder builder = new CriteriaBuilder(OnmsAlarm.class);
builder.distinct();
builder.fetch("firstEvent", FetchType.EAGER);
builder.fetch("lastEvent", FetchType.EAGER);
builder.alias("node", "node", JoinType.LEFT_JOIN);
builder.alias("node.snmpInterfaces", "snmpInterface", JoinType.LEFT_JOIN);
builder.alias("node.ipInterfaces", "ipInterface", JoinType.LEFT_JOIN);
builder.alias("ipInterface.monitoredServices", "monitoredService", JoinType.LEFT_JOIN);
builder.alias("monitoredService.currentOutages", "currentOutage", JoinType.LEFT_JOIN);
builder.alias("currentOutage.monitoredService", "service", JoinType.LEFT_JOIN);
final Criteria crit = builder.toCriteria();
assertEquals(OnmsIpInterface.class, crit.getType("ipInterface"));
assertEquals(OnmsMonitoredService.class, crit.getType("monitoredService"));
assertEquals(OnmsOutage.class, crit.getType("currentOutage"));
assertEquals(OnmsMonitoredService.class, crit.getType("service"));
}
@Test
public void testNode() throws Exception {
final CriteriaBuilder builder = new CriteriaBuilder(OnmsNode.class);
builder.distinct();
builder.alias("snmpInterfaces", "snmpInterface", JoinType.LEFT_JOIN);
builder.alias("ipInterfaces", "ipInterface", JoinType.LEFT_JOIN);
final Criteria crit = builder.toCriteria();
assertEquals(InetAddress.class, crit.getType("ipInterface.ipAddress"));
}
}