package org.opennms.web.controller.ncs; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.opennms.netmgt.model.ncs.NCSBuilder; import org.opennms.netmgt.model.ncs.NCSComponent; import org.opennms.netmgt.model.ncs.NCSComponent.DependencyRequirements; import org.opennms.netmgt.model.ncs.NCSComponentRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; @Controller @RequestMapping("ncs/ncs-type.htm") public class NCSTypeListController { @Autowired NCSComponentRepository m_componentDao; @RequestMapping(method=RequestMethod.GET) public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { String type = request.getParameter("type"); String foreignSource = request.getParameter("foreignSource"); String foreignId = request.getParameter("foreignId"); NCSComponent component = null; String treeView = "<br/><p>No Components To View, Please check the type, foreign source and foreign id are correct</p>"; if(!type.equals("null") && !foreignSource.equals("null") && !foreignId.equals("null")) { component = m_componentDao.findByTypeAndForeignIdentity(type, foreignSource, foreignId); treeView = "<ul class=\"TreeView\" id=\"TreeView\">\n" + getComponentHTML(component) + "</ul>"; } ModelAndView modelAndView = new ModelAndView("ncs/ncs-type"); modelAndView.addObject("treeView", treeView); return modelAndView; } private String getComponentHTML(NCSComponent component) { StringBuffer buffer = new StringBuffer(); if(component != null) { Set<NCSComponent> subcomponents = component.getSubcomponents(); if(subcomponents.size() > 0) { buffer.append("<li class=\"Expanded\">"); buffer.append(component.getName()); buffer.append("<ul>\n"); for(NCSComponent c : subcomponents) { buffer.append(getComponentHTML(c)); } buffer.append("</ul>"); }else { buffer.append("<li>"); buffer.append(component.getName()); } buffer.append("</li>\n"); } return buffer.toString(); } //Used for testing the controller view private NCSComponent getTestComponent() { return new NCSBuilder("Service", "NA-Service", "123") .setName("CokeP2P") .pushComponent("ServiceElement", "NA-ServiceElement", "8765") .setName("PE1:SE1") .setNodeIdentity("space", "1111-PE1") .pushComponent("ServiceElementComponent", "NA-SvcElemComp", "8765:jnxVpnIf") .setName("jnxVpnIf") .setUpEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnIfUp") .setDownEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnIfDown") .setAttribute("jnxVpnIfVpnType", "5") .setAttribute("jnxVpnIfVpnName", "ge-1/0/2.50") .pushComponent("ServiceElementComponent", "NA-SvcElemComp", "8765:link") .setName("link") .setUpEventUei("uei.opennms.org/vendor/Juniper/traps/linkUp") .setDownEventUei("uei.opennms.org/vendor/Juniper/traps/linkDown") .setAttribute("linkName", "ge-1/0/2") .popComponent() .popComponent() .pushComponent("ServiceElementComponent", "NA-SvcElemComp", "8765:jnxVpnPw-vcid(50)") .setName("jnxVpnPw-vcid(50)") .setUpEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnPwUp") .setDownEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnPwDown") .setAttribute("jnxVpnPwVpnType", "5") .setAttribute("jnxVpnPwVpnName", "ge-1/0/2.50") .setDependenciesRequired(DependencyRequirements.ANY) .pushComponent("ServiceElementComponent", "NA-SvcElemComp", "8765:lspA-PE1-PE2") .setName("lspA-PE1-PE2") .setUpEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathUp") .setDownEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathDown") .setAttribute("mplsLspName", "lspA-PE1-PE2") .popComponent() .pushComponent("ServiceElementComponent", "NA-SvcElemComp", "8765:lspB-PE1-PE2") .setName("lspB-PE1-PE2") .setUpEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathUp") .setDownEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathDown") .setAttribute("mplsLspName", "lspB-PE1-PE2") .popComponent() .popComponent() .popComponent() .pushComponent("ServiceElement", "NA-ServiceElement", "9876") .setName("PE2:SE1") .setNodeIdentity("space", "2222-PE2") .pushComponent("ServiceElementComponent", "NA-SvcElemComp", "9876:jnxVpnIf") .setName("jnxVpnIf") .setUpEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnIfUp") .setDownEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnIfDown") .setAttribute("jnxVpnIfVpnType", "5") .setAttribute("jnxVpnIfVpnName", "ge-3/1/4.50") .pushComponent("ServiceElementComponent", "NA-SvcElemComp", "9876:link") .setName("link") .setUpEventUei("uei.opennms.org/vendor/Juniper/traps/linkUp") .setDownEventUei("uei.opennms.org/vendor/Juniper/traps/linkDown") .setAttribute("linkName", "ge-3/1/4") .popComponent() .popComponent() .pushComponent("ServiceElementComponent", "NA-SvcElemComp", "9876:jnxVpnPw-vcid(50)") .setName("jnxVpnPw-vcid(50)") .setUpEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnPwUp") .setDownEventUei("uei.opennms.org/vendor/Juniper/traps/jnxVpnPwDown") .setAttribute("jnxVpnPwVpnType", "5") .setAttribute("jnxVpnPwVpnName", "ge-3/1/4.50") .setDependenciesRequired(DependencyRequirements.ANY) .pushComponent("ServiceElementComponent", "NA-SvcElemComp", "9876:lspA-PE2-PE1") .setName("lspA-PE2-PE1") .setUpEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathUp") .setDownEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathDown") .setAttribute("mplsLspName", "lspA-PE2-PE1") .popComponent() .pushComponent("ServiceElementComponent", "NA-SvcElemComp", "9876:lspB-PE2-PE1") .setName("lspB-PE2-PE1") .setUpEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathUp") .setDownEventUei("uei.opennms.org/vendor/Juniper/traps/mplsLspPathDown") .setAttribute("mplsLspName", "lspB-PE2-PE1") .popComponent() .popComponent() .popComponent() .get(); } }