/*_##########################################################################
_##
_## Copyright (C) 2013 Kaito Yamada
_##
_##########################################################################
*/
package com.github.kaitoy.sneo.giane.action;
import java.util.ArrayList;
import java.util.List;
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 org.apache.struts2.interceptor.validation.SkipValidation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.kaitoy.sneo.giane.action.message.AssociateActionMessage;
import com.github.kaitoy.sneo.giane.action.message.DialogMessage;
import com.github.kaitoy.sneo.giane.action.message.IpV4RouteMessage;
import com.github.kaitoy.sneo.giane.model.AdditionalIpV4Route;
import com.github.kaitoy.sneo.giane.model.AdditionalIpV4RouteGroup;
import com.github.kaitoy.sneo.giane.model.dao.AdditionalIpV4RouteDao;
import com.github.kaitoy.sneo.giane.model.dao.AdditionalIpV4RouteGroupDao;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@ParentPackage("giane-default")
@InterceptorRef("gianeDefaultStack")
public class AssociateAdditionalIpV4RouteGroupWithAdditionalIpV4RoutesAction
extends ActionSupport
implements AssociateActionMessage, IpV4RouteMessage, DialogMessage {
/**
*
*/
private static final long serialVersionUID = -1568203010254123584L;
private static final Logger logger
= LoggerFactory.getLogger(AssociateAdditionalIpV4RouteGroupWithAdditionalIpV4RoutesAction.class);
private AdditionalIpV4RouteDao additionalIpV4RouteDao;
private AdditionalIpV4RouteGroupDao additionalIpV4RouteGroupDao;
private String idList;
private String dialogTitleKey;
private String dialogTextKey;
// for DI
public void setAdditionalIpV4RouteDao(AdditionalIpV4RouteDao additionalIpV4RouteDao) {
this.additionalIpV4RouteDao = additionalIpV4RouteDao;
}
// for DI
public void setAdditionalIpV4RouteGroupDao(AdditionalIpV4RouteGroupDao additionalIpV4RouteGroupDao) {
this.additionalIpV4RouteGroupDao = additionalIpV4RouteGroupDao;
}
public String getIdList() {
return idList;
}
public void setIdList(String idList) {
this.idList = idList;
}
public String getDialogTitleKey() {
return dialogTitleKey;
}
public String getDialogTextKey() {
return dialogTextKey;
}
@Override
@Action(
results = {
@Result(name = "success", location = "dialog.jsp"),
@Result(name = "noChange", location = "dialog.jsp"),
@Result(name = "error", location = "dialog.jsp")
}
)
public String execute() throws Exception {
if (idList.equals("undefined")) {
dialogTitleKey
= "dialog.title.result";
dialogTextKey
= "dialog.text.association.noChange";
return "noChange";
}
try {
List<AdditionalIpV4Route> additionalIpV4Routes = new ArrayList<AdditionalIpV4Route>();
if (idList != null && idList.length() != 0) {
for (String strId: idList.split(",")) {
additionalIpV4Routes.add(additionalIpV4RouteDao.findByKey(Integer.valueOf(strId)));
}
}
Map<String, Object> params = ActionContext.getContext().getParameters();
Integer additionalIpV4RouteGroup_id = Integer.valueOf(((String[])params.get("additionalIpV4RouteGroup_id"))[0]);
AdditionalIpV4RouteGroup additionalIpV4RouteGroup = additionalIpV4RouteGroupDao.findByKey(additionalIpV4RouteGroup_id);
boolean foundAll = true;
for (AdditionalIpV4Route additionalIpV4Route: additionalIpV4Routes) {
boolean found = false;
for (AdditionalIpV4Route other: additionalIpV4RouteGroup.getAdditionalIpV4Routes()) {
if (additionalIpV4Route.getId().equals(other.getId())) {
found = true;
break;
}
}
if (!found) {
foundAll = false;
}
}
if (foundAll && additionalIpV4RouteGroup.getAdditionalIpV4Routes().size() == additionalIpV4Routes.size()) {
dialogTitleKey
= "dialog.title.result";
dialogTextKey
= "dialog.text.association.noChange";
return "noChange";
}
additionalIpV4RouteGroup.setAdditionalIpV4Routes(additionalIpV4Routes);
additionalIpV4RouteGroupDao.update(additionalIpV4RouteGroup);
dialogTitleKey
= "dialog.title.result";
dialogTextKey
= "dialog.text.association.success";
return "success";
} catch (Exception e) {
logger.error("An error occurred: ", e);
dialogTitleKey = "dialog.title.result";
dialogTextKey = "dialog.text.association.error";
return "error";
}
}
@Action(
value = "associate-additional-ip-v4-route-group-with-additional-ip-v4-routes-grid-box",
results = { @Result(name = "grid", location = "associate-additional-ip-v4-route-group-with-additional-ip-v4-routes-grid.jsp")}
)
@SkipValidation
public String associationdGrid() throws Exception {
return "grid";
}
}