package onlinefrontlines.countryedit.web;
import onlinefrontlines.game.*;
import java.util.ArrayList;
import org.apache.log4j.Logger;
import onlinefrontlines.taglib.CacheTag;
import onlinefrontlines.web.*;
import com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException;
/**
* This action creates a new (empty) country config in the database based on the name that the user supplied.
*
* @author jorrit
*
* Copyright (C) 2009-2013 Jorrit Rouwe
*
* This file is part of Online Frontlines.
*
* Online Frontlines is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Online Frontlines is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Online Frontlines. If not, see <http://www.gnu.org/licenses/>.
*/
public class CountryCreateAction extends WebAction
{
private static final Logger log = Logger.getLogger(CountryCreateAction.class);
/**
* Name for the country config deployment
*/
public String countryConfigName;
/**
* Execute the action
*/
protected WebView execute() throws Exception
{
// Validate country config name
if (countryConfigName == null || countryConfigName.isEmpty())
{
addFieldError("countryConfigName", getText("countryConfigNameRequired"));
return getInputView();
}
// Validate max length
if (countryConfigName.length() > 32)
{
addFieldError("countryConfigName", getText("nameTooLong"));
return getInputView();
}
// Create new empty country config
CountryConfig config = new CountryConfig();
config.creatorUserId = user.id;
config.name = countryConfigName;
// Select initial map
ArrayList<MapConfig> m = MapConfigDAO.list(user.id);
if (m.size() == 0)
{
addActionError(getText("noMapConfig"));
return getInputView();
}
config.mapId = m.get(0).id;
// Select initial deployment
ArrayList<DeploymentConfig> d = DeploymentConfigDAO.list(user.id);
if (d.size() == 0)
{
addActionError(getText("noDeploymentConfig"));
return getInputView();
}
config.deploymentConfigId[0] = d.get(0).id;
config.deploymentConfigId[1] = d.get(0).id;
log.info("User '" + user.id + "' creating country");
// Insert it in the database
try
{
CountryConfigDAO.create(config);
CountryConfigCache.getInstance().put(config.id, config);
CacheTag.purgeAll();
}
catch (MySQLIntegrityConstraintViolationException e)
{
addActionError(getText("countryConfigAlreadyExists"));
return getInputView();
}
return new WebViewRedirect("CountryEdit.do?countryConfigId=" + config.id);
}
}