/*_########################################################################## _## _## Copyright (C) 2013 Kaito Yamada _## _########################################################################## */ package com.github.kaitoy.sneo.giane.action; import java.util.Map; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.InterceptorRef; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import com.github.kaitoy.sneo.giane.action.message.DialogMessage; import com.github.kaitoy.sneo.giane.action.message.FormMessage; import com.github.kaitoy.sneo.giane.action.message.NodeMessage; import com.github.kaitoy.sneo.giane.model.AdditionalIpV6RouteGroup; import com.github.kaitoy.sneo.giane.model.Node; import com.github.kaitoy.sneo.giane.model.Simulation; import com.github.kaitoy.sneo.giane.model.dao.SimulationDao; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.conversion.annotations.TypeConversion; import com.opensymphony.xwork2.validator.annotations.ConversionErrorFieldValidator; @ParentPackage("giane-default") @InterceptorRef("gianeDefaultStack") public class SetAdditionalIpV6RouteGroupToNodeAction extends ActionSupport implements FormMessage, NodeMessage, DialogMessage { /** * */ private static final long serialVersionUID = 433422932342221678L; private Node node; private AdditionalIpV6RouteGroup additionalIpV6RouteGroup; private SimulationDao simulationDao; @ConversionErrorFieldValidator( key = "ConversionErrorFieldValidator.error", shortCircuit = true ) @TypeConversion(converter = "com.github.kaitoy.sneo.giane.typeconverter.NodeConverter") public void setNode(Node node) { this.node = node; } @ConversionErrorFieldValidator( key = "ConversionErrorFieldValidator.error", shortCircuit = true ) @TypeConversion( converter = "com.github.kaitoy.sneo.giane.typeconverter.AdditionalIpV6RouteGroupConverter" ) public void setAdditionalIpV6RouteGroup(AdditionalIpV6RouteGroup additionalIpV6RouteGroup) { this.additionalIpV6RouteGroup = additionalIpV6RouteGroup; } // for DI public void setSimulationDao( SimulationDao simulationDao ) { this.simulationDao = simulationDao; } @Override @Action(results = { @Result(name = "success", location = "empty.jsp") }) public String execute() throws Exception { Map<String, Object> params = ActionContext.getContext().getParameters(); Integer simulationId = Integer.valueOf(((String[])params.get("simulation_id"))[0]); Simulation config = simulationDao.findByKey(simulationId); if (additionalIpV6RouteGroup != null) { config.getAdditionalIpV6RouteGroups().put(node, additionalIpV6RouteGroup); } else { config.getAdditionalIpV6RouteGroups().remove(node); } simulationDao.update(config); return "success"; } @Override public void validate() { if (node == null) { addActionError(getText("select.a.row")); } } }