add domain fast modification

This commit is contained in:
Mengyi Zhou 2016-08-19 14:03:02 +08:00
parent 6fc8400602
commit 6a30599160
2 changed files with 50 additions and 1 deletions

View file

@ -32,6 +32,9 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.*; import javax.ws.rs.*;
import javax.ws.rs.core.*; import javax.ws.rs.core.*;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/** /**
* Created by zhoumy on 2015/8/5. * Created by zhoumy on 2015/8/5.
@ -183,6 +186,46 @@ public class VirtualServerResource {
return responseHandler.handle(virtualServer, hh.getMediaType()); return responseHandler.handle(virtualServer, hh.getMediaType());
} }
@GET
@Path("/vs/addDomain")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Authorize(name = "updateVs")
public Response addDomain(@Context HttpHeaders hh,
@Context HttpServletRequest request,
@QueryParam("vsId") Long vsId,
@TrimmedQueryParam("domain") String domain) throws Exception {
VirtualServer vs = virtualServerRepository.getById(vsId);
for (String d : domain.split(",")) {
vs.addDomain(new Domain().setName(d));
}
vs = virtualServerRepository.update(vs);
return responseHandler.handle(vs, hh.getMediaType());
}
@GET
@Path("vs/removeDomain")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Authorize(name = "updateVs")
public Response removeDomain(@Context HttpHeaders hh,
@Context HttpServletRequest request,
@QueryParam("vsId") Long vsId,
@TrimmedQueryParam("domain") String domain) throws Exception {
VirtualServer vs = virtualServerRepository.getById(vsId);
Set<String> domains = new HashSet<>();
for (String d : domain.split(",")) {
domains.add(d);
}
Iterator<Domain> iter = vs.getDomains().iterator();
while (iter.hasNext()) {
Domain d = iter.next();
if (domains.contains(d.getName())) {
iter.remove();
}
}
vs = virtualServerRepository.update(vs);
return responseHandler.handle(vs, hh.getMediaType());
}
@GET @GET
@Path("/vs/delete") @Path("/vs/delete")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})

View file

@ -111,9 +111,15 @@ public class VirtualServerRepositoryImpl implements VirtualServerRepository {
throw new ValidationException("Slb with id " + virtualServer.getSlbId() + "does not exits."); throw new ValidationException("Slb with id " + virtualServer.getSlbId() + "does not exits.");
} }
Set<String> domains = new HashSet<>();
for (Domain domain : virtualServer.getDomains()) { for (Domain domain : virtualServer.getDomains()) {
domain.setName(domain.getName().toLowerCase()); domains.add(domain.getName().toLowerCase());
} }
virtualServer.getDomains().clear();
for (String d : domains) {
virtualServer.getDomains().add(new Domain().setName(d));
}
Set<Long> retained = new HashSet<>(); Set<Long> retained = new HashSet<>();
for (IdVersion idVersion : virtualServerCriteriaQuery.queryBySlbId(virtualServer.getSlbId())) { for (IdVersion idVersion : virtualServerCriteriaQuery.queryBySlbId(virtualServer.getSlbId())) {
retained.add(idVersion.getId()); retained.add(idVersion.getId());