package org.fastcatsearch.http.action.management.collections;
import java.util.ArrayList;
import java.util.List;
import org.fastcatsearch.cluster.ClusterUtils;
import org.fastcatsearch.cluster.NodeJobResult;
import org.fastcatsearch.cluster.NodeService;
import org.fastcatsearch.http.ActionAuthority;
import org.fastcatsearch.http.ActionAuthorityLevel;
import org.fastcatsearch.http.ActionMapping;
import org.fastcatsearch.http.action.ActionRequest;
import org.fastcatsearch.http.action.ActionResponse;
import org.fastcatsearch.http.action.AuthAction;
import org.fastcatsearch.job.Job;
import org.fastcatsearch.job.management.RestoreCollectionToPreviousJob;
import org.fastcatsearch.service.ServiceManager;
import org.fastcatsearch.util.ResponseWriter;
/**
* 이전 시퀀스로 컬렉션을 복원한다.
*
* */
@ActionMapping(value = "/management/collections/restore-to-previous", authority = ActionAuthority.Collections, authorityLevel = ActionAuthorityLevel.WRITABLE)
public class RestoreCollectionToPreviousAction extends AuthAction {
@Override
public void doAuthAction(ActionRequest request, ActionResponse response) throws Exception {
String collectionId = request.getParameter("collectionId");
String nodeIdListString = request.getParameter("nodeList");
List<String> destNodeIdList = new ArrayList<String>();
if (nodeIdListString != null) {
for (String nodeStr : nodeIdListString.split(",")) {
nodeStr = nodeStr.trim();
if (nodeStr.length() > 0) {
destNodeIdList.add(nodeStr);
}
}
}
NodeService nodeService = ServiceManager.getInstance().getService(NodeService.class);
Job job = new RestoreCollectionToPreviousJob(collectionId, null);
NodeJobResult[] jobResultList = ClusterUtils.sendJobToNodeIdList(job, nodeService, destNodeIdList, true);
int successCount = 0;
for(NodeJobResult result : jobResultList){
if(result.isSuccess()){
Object obj = result.result();
successCount++;
}
}
ResponseWriter responseWriter = getDefaultResponseWriter(response.getWriter());
responseWriter.object();
responseWriter.key("success").value(true);
responseWriter.key("result").value("");
responseWriter.endObject();
responseWriter.done();
}
}