gcube-cms-suite/use-cases/src/test/java/org/gcube/application/cms/usecases/PublishSubmitted.java

50 lines
1.9 KiB
Java

package org.gcube.application.cms.usecases;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.gcube.application.cms.tests.TokenSetter;
import org.gcube.application.geoportal.common.model.document.Project;
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
import org.gcube.application.geoportal.common.model.rest.StepExecutionRequest;
import org.gcube.application.geoportal.common.rest.Projects;
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
import java.rmi.RemoteException;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicLong;
import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.projects;
@Slf4j
public class PublishSubmitted {
public static void main(String[] args) throws RemoteException {
TokenSetter.set(GCubeTest.getContext());
Projects<Project> client=projects("profiledConcessioni").build();
QueryRequest query = new QueryRequest();
query.setFilter(Document.parse("{\"_lifecycleInformation._lastOperationStatus\":{\"$eq\":\"OK\"},\"_lifecycleInformation._phase\":{\"$eq\":\"Pending Approval\"}}"));
AtomicLong count=new AtomicLong();
final StepExecutionRequest step = new StepExecutionRequest();
step.setStepID("APPROVE-SUBMITTED");
HashMap<String,String> errors = new HashMap<>();
client.query(query).forEachRemaining(project -> {
try{
log.info("Publishing N {}, ID {} ",count.incrementAndGet(),project.getId());
client.performStep(project.getId(), step);
}catch(Throwable t){
t.printStackTrace(System.err);
errors.put(project.getId(),t.getMessage());
}
});
System.out.println("Performed OP on "+count.get()+" projects.");
System.out.println("Errors count : "+errors.size());
errors.forEach((k,v) -> System.err.println(k+"\t"+v));
}
}