package org.opennaas.gui.vcpe.controllers;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.opennaas.gui.vcpe.bos.VCPENetworkBO;
import org.opennaas.gui.vcpe.entities.LogicalInfrastructure;
import org.opennaas.gui.vcpe.entities.PhysicalInfrastructure;
import org.opennaas.gui.vcpe.services.rest.RestServiceException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
/**
* @author Jordi
*/
@Controller
public abstract class VCPENetworkController {
private static final Logger LOGGER = Logger.getLogger(VCPENetworkController.class);
@Autowired
protected VCPENetworkBO vcpeNetworkBO;
@Autowired
protected ReloadableResourceBundleMessageSource messageSource;
/**
* Redirect to the physical view
*
* @param templateType
* @param model
* @param locale
* @return
*/
public String getPhysicalForm(String templateType, Model model, Locale locale) {
LOGGER.debug("get the Physical Form");
String view = "physicalForm";
try {
model.addAttribute("physicalInfrastructure", vcpeNetworkBO.getPhysicalInfrastructure(templateType));
} catch (RestServiceException e) {
view = "home";
model.addAttribute("errorMsg", messageSource
.getMessage("vcpenetwork.list.message.error", null, locale));
}
return view;
}
/**
* Redirect to the form to create a VCPENetwork
*
* @param physical
* @param model
* @param locale
* @return
*/
public String getLogicalForm(PhysicalInfrastructure physical, Model model, Locale locale) {
LOGGER.debug("form to create a VCPENetwork");
String view = "logicalForm";
try {
model.addAttribute("logicalInfrastructure", vcpeNetworkBO.getLogicalInfrastructure(physical));
model.addAttribute("usersNOC", getUsersNOC());
model.addAttribute("usersClient", getUsersClient());
model.addAttribute("action", new String("create"));
} catch (RestServiceException e) {
view = "physicalForm";
model.addAttribute("errorMsg", messageSource
.getMessage("vcpenetwork.create.message.error", null, locale) + ": " + e.getMessage());
}
return view;
}
/**
* Create a VCPE Network
*
* @param logicalInfrastructure
* @param result
* @param model
* @param locale
* @return
*/
protected String create(LogicalInfrastructure logicalInfrastructure, BindingResult result, Model model, Locale locale, HttpSession session) {
LOGGER.debug("add entity: " + logicalInfrastructure);
try {
if (!result.hasErrors()) {
String vcpeNetworkId = vcpeNetworkBO.create(logicalInfrastructure);
model.addAttribute("logicalInfrastructure", vcpeNetworkBO.getById(vcpeNetworkId));
model.addAttribute("infoMsg", messageSource.getMessage("vcpenetwork.create.message.info", null, locale));
model.addAttribute("action", new String("update"));
session.setAttribute("vcpeNetworkList", vcpeNetworkBO.getAllVCPENetworks());
} else {
model.addAttribute("errorMsg", messageSource.getMessage("vcpenetwork.create.message.error.fields", null, locale));
model.addAttribute("action", new String("create"));
}
} catch (RestServiceException e) {
model.addAttribute("errorMsg", messageSource.getMessage("vcpenetwork.create.message.error", null, locale) + ": " + e.getMessage());
model.addAttribute("action", new String("create"));
} finally {
model.addAttribute("usersNOC", getUsersNOC());
model.addAttribute("usersClient", getUsersClient());
}
return "logicalForm";
}
/**
* Edit a VCPE Network
*
* @param vcpeNetworkId
* @param model
* @param locale
* @return
*/
protected String edit(String vcpeNetworkId, Model model, Locale locale) {
LOGGER.debug("edit entity with id: " + vcpeNetworkId);
try {
model.addAttribute("logicalInfrastructure", vcpeNetworkBO.getById(vcpeNetworkId));
} catch (RestServiceException e) {
model.addAttribute("errorMsg", messageSource
.getMessage("vcpenetwork.edit.message.error", null, locale));
} finally {
model.addAttribute("usersNOC", getUsersNOC());
model.addAttribute("usersClient", getUsersClient());
model.addAttribute("action", new String("update"));
}
return "logicalForm";
}
/**
* Update a VCPE Network
*
* @param logicalInfrastructure
* @param result
* @param model
* @param locale
* @return
*/
protected String update(LogicalInfrastructure logicalInfrastructure, BindingResult result, Model model, Locale locale, HttpSession session) {
LOGGER.debug("update entity: " + logicalInfrastructure);
try {
if (!result.hasErrors()) {
LOGGER.debug("update the vcpe");
String vcpeNetworkId = vcpeNetworkBO.update(logicalInfrastructure);
session.setAttribute("vcpeNetworkList", vcpeNetworkBO.getAllVCPENetworks());
model.addAttribute("logicalInfrastructure", vcpeNetworkBO.getById(vcpeNetworkId));
model.addAttribute("infoMsg", messageSource.getMessage("vcpenetwork.update.message.info", null, locale));
} else {
LOGGER.info("invalid request: " + result);
model.addAttribute("errorMsg", messageSource
.getMessage("vcpenetwork.update.message.error.fields", null, locale));
}
} catch (RestServiceException e) {
model.addAttribute("errorMsg", messageSource
.getMessage("vcpenetwork.update.message.error", null, locale) + ": " + e.getMessage());
} finally {
model.addAttribute("usersNOC", getUsersNOC());
model.addAttribute("usersClient", getUsersClient());
model.addAttribute("action", new String("update"));
}
return "logicalForm";
}
/**
* Delete a VCPE Network
*
* @param vcpeNetworkId
* @param model
* @param locale
* @return
*/
protected String delete(String vcpeNetworkId, Model model, Locale locale, HttpSession session) {
LOGGER.debug("delete entity with id: " + vcpeNetworkId);
try {
vcpeNetworkBO.delete(vcpeNetworkId);
session.setAttribute("vcpeNetworkList", vcpeNetworkBO.getAllVCPENetworks());
model.addAttribute("infoMsg", messageSource
.getMessage("vcpenetwork.delete.message.info", null, locale));
} catch (RestServiceException e) {
model.addAttribute("errorMsg", messageSource
.getMessage("vcpenetwork.delete.message.error", null, locale));
}
return "home";
}
/**
* @return all the users Client
*/
private Map<String, String> getUsersClient() {
Map<String, String> clients = new LinkedHashMap<String, String>();
clients.put("client1", "Client 1");
clients.put("client2", "Client 2");
return clients;
}
/**
* @return all the users NOC
*/
private Map<String, String> getUsersNOC() {
Map<String, String> nocs = new LinkedHashMap<String, String>();
nocs.put("noc1", "NOC 1");
nocs.put("noc2", "NOC 2");
nocs.put("noc3", "NOC 3");
return nocs;
}
}