package de.cinovo.cloudconductor.server.web.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import de.cinovo.cloudconductor.server.dao.IPackageServerDAO;
import de.cinovo.cloudconductor.server.dao.ITemplateDAO;
import de.cinovo.cloudconductor.server.model.EPackageServer;
import de.cinovo.cloudconductor.server.model.ETemplate;
import de.cinovo.cloudconductor.server.util.exception.FormErrorException;
import de.cinovo.cloudconductor.server.web.CSViewModel;
import de.cinovo.cloudconductor.server.web.helper.AWebPage;
import de.cinovo.cloudconductor.server.web.helper.AjaxAnswer;
import de.cinovo.cloudconductor.server.web.helper.AjaxAnswer.AjaxAnswerType;
import de.cinovo.cloudconductor.server.web.interfaces.IPackageServer;
import de.cinovo.cloudconductor.server.web.interfaces.IWebPath;
import de.taimos.cxf_renderer.model.RenderedUI;
import de.taimos.restutils.RESTAssert;
/**
* Copyright 2014 Cinovo AG<br>
* <br>
*
* @author psigloch
*
*/
public class PackageServerImpl extends AWebPage implements IPackageServer {
@Autowired
private IPackageServerDAO dPckSrv;
@Autowired
private ITemplateDAO dTemplate;
@Override
protected String getTemplateFolder() {
return "servers";
}
@Override
protected void init() {
// nothing to do
}
@Override
protected String getNavElementName() {
return "Package Servers";
}
@Override
public RenderedUI view() {
final CSViewModel modal = this.createModal("mServers");
modal.addModel("servers", this.dPckSrv.findList());
return modal.render();
}
@Override
public RenderedUI addServerView() {
final CSViewModel modal = this.createModal("mModServer");
return modal.render();
}
@Override
public RenderedUI editServerView(Long serverid) {
EPackageServer server = this.dPckSrv.findById(serverid);
RESTAssert.assertNotNull(server);
final CSViewModel modal = this.createModal("mModServer");
modal.addModel("server", server);
return modal.render();
}
@Override
public RenderedUI deleteServerView(Long serverid) {
EPackageServer server = this.dPckSrv.findById(serverid);
RESTAssert.assertNotNull(server);
final CSViewModel modal = this.createModal("mDeleteServer");
modal.addModel("server", server);
return modal.render();
}
@Override
public AjaxAnswer saveServer(Long serverid, String path, String description) throws FormErrorException {
RESTAssert.assertNotNull(serverid);
FormErrorException error = null;
error = this.assertNotEmpty(path, error, "path");
error = this.assertNotEmpty(description, error, "description");
if (error != null) {
// add the currently entered values to the answer
error.addFormParam("path", path);
error.addFormParam("description", description);
if (serverid > 0) {
error.setParentUrl(IPackageServer.ROOT, serverid.toString(), IWebPath.ACTION_EDIT);
} else {
error.setParentUrl(IPackageServer.ROOT, IWebPath.ACTION_ADD);
}
throw error;
}
EPackageServer server = this.dPckSrv.findById(serverid);
if (server == null) {
server = new EPackageServer();
}
server.setDescription(description);
server.setPath(path);
server = this.dPckSrv.save(server);
AjaxAnswer ajaxRedirect = new AjaxAnswer(IWebPath.WEBROOT + IPackageServer.ROOT, AjaxAnswerType.GET);
ajaxRedirect.setInfo("Successfully saved");
return ajaxRedirect;
}
@Override
public AjaxAnswer deleteServer(Long serverid) throws FormErrorException {
RESTAssert.assertNotNull(serverid);
EPackageServer server = this.dPckSrv.findById(serverid);
List<ETemplate> tmplt = this.dTemplate.findByPackageServer(serverid);
if ((tmplt != null) && (tmplt.size() > 0)) {
FormErrorException error = this.createError("The package server is still in use and can't be deleted");
error.setParentUrl(IPackageServer.ROOT);
throw error;
}
this.dPckSrv.delete(server);
AjaxAnswer ajaxRedirect = new AjaxAnswer(IWebPath.WEBROOT + IPackageServer.ROOT, AjaxAnswerType.GET);
ajaxRedirect.setInfo("Successfully deleted");
return ajaxRedirect;
}
}