package com.radcortez.wow.auctions.servlet; import com.radcortez.wow.auctions.business.WoWBusiness; import com.radcortez.wow.auctions.entity.AuctionFile; import com.radcortez.wow.auctions.entity.Realm; import javax.batch.operations.JobOperator; import javax.batch.runtime.BatchRuntime; import javax.inject.Inject; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; import java.util.Properties; /** * @author Roberto Cortez */ @WebServlet(urlPatterns = {"/BatchExecutionServlet"}) public class BatchExecutionServlet extends HttpServlet { @Inject private WoWBusiness woWBusiness; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String batch = req.getParameter("batch"); JobOperator jobOperator = BatchRuntime.getJobOperator(); switch (batch) { case "prepare": jobOperator.start("prepare-job", new Properties()); break; case "files": jobOperator.start("files-job", new Properties()); break; case "process": Realm realm = woWBusiness.findRealmByNameOrSlug("grim-batol", Realm.Region.EU).get(); List<AuctionFile> auctionFilesByRealmToProcess = woWBusiness.findAuctionFilesByRealmToProcess(realm.getId()); System.out.println("Grim Batol files " + auctionFilesByRealmToProcess.size()); auctionFilesByRealmToProcess.stream().limit(1).forEach(this::processJob); if (auctionFilesByRealmToProcess.isEmpty()) { realm = woWBusiness.findRealmByNameOrSlug("aggra-portugues", Realm.Region.EU).get(); auctionFilesByRealmToProcess = woWBusiness.findAuctionFilesByRealmToProcess(realm.getId()); System.out.println("Aggra files " + auctionFilesByRealmToProcess.size()); auctionFilesByRealmToProcess.stream().limit(1).forEach(this::processJob); } break; default: throw new UnsupportedOperationException(); } resp.sendRedirect("batchs.html"); } private void processJob(AuctionFile auctionFile) { Properties jobParameters = new Properties(); JobOperator jobOperator = BatchRuntime.getJobOperator(); jobParameters.setProperty("realmId", auctionFile.getRealm().getId().toString()); jobParameters.setProperty("auctionFileId", auctionFile.getId().toString()); jobOperator.start("process-job", jobParameters); } }