package org.ets.ibt.utilities.server.cachemanager; import java.io.IOException; import java.io.PrintWriter; import java.lang.Thread.State; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.ets.ibt.delivery.server.common.paramdata.AdminData; import org.ets.ibt.delivery.server.common.paramdata.PackageAdminData; import org.ets.ibt.delivery.server.model.cache.CacheLoader; import org.ets.ibt.delivery.server.model.cache.CacheManager; import org.ets.ibt.delivery.server.security.IBTSecurityUtil; import org.ets.ibt.delivery.server.utility.ServerProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LoadPackageServlet extends HttpServlet { private static final Logger Log = LoggerFactory.getLogger(LoadPackageServlet.class); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if(this.checkPermission()) { if(this.isLoadNewBlocked(response)) { return; } List packageList = CacheManager.getInstance().getPackageListToLoad(); response.setContentType("text/html; charset=ISO-8859-1"); PrintWriter out = response.getWriter(); out.println(""); out.println("Load Package"); out.println(""); out.println(""); out.println(""); if(packageList.size() == 0) { out.println("

All packages have been loaded!

"); } else { out.println("
"); out.println("
"); out.println("
"); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); int count = 0; boolean isErrorPackage = false; Iterator var8 = packageList.iterator(); String bgcolor; PackageAdminData pkgAdminData; String msg; Iterator var11; while(var8.hasNext()) { pkgAdminData = (PackageAdminData)var8.next(); if(pkgAdminData.isError()) { isErrorPackage = true; } else { if(count % 2 == 0) { bgcolor = "bgcolor=\'#F2F2F2\'"; } else { bgcolor = "bgcolor=\'#DDDDDD\'"; } ++count; msg = ""; AdminData s; for(var11 = pkgAdminData.getAdminList().iterator(); var11.hasNext(); msg = s.getAdjAdminEndDateString()) { s = (AdminData)var11.next(); s.getAdminCode(); s.getAdjAdminStartDateString(); } if(msg.length() > 0) { msg = msg.substring(0, msg.length() - 4); } out.println(""); bgcolor.println(pkgAdminData.getPkgId()); bgcolor.println(pkgAdminData.getLoadDateString()); bgcolor.println(pkgAdminData.getExpirationDateString()); bgcolor.println(msg); bgcolor.println(pkgAdminData.getPreBuiltObjectMode()); bgcolor.println(pkgAdminData.getPkgId()); bgcolor.println(pkgAdminData.getPkgId()); bgcolor.println(pkgAdminData.getPkgId()); out.println(""); } } out.println("
Loadable Package List
PackageLoad DateExpired DateAdminRun ModeCheck eSKMForce DB LoadSelected
"); out.println("
"); if(count > 0) { out.println(" "); } out.println("
"); out.println("

"); if(isErrorPackage) { out.println("
"); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); count = 0; var8 = packageList.iterator(); while(var8.hasNext()) { pkgAdminData = (PackageAdminData)var8.next(); if(pkgAdminData.isError()) { if(count % 2 == 0) { bgcolor = "bgcolor=\'#F2F2F2\'"; } else { bgcolor = "bgcolor=\'#DDDDDD\'"; } ++count; out.println(""); pkgAdminData.getPkgId(); pkgAdminData.getPkgStructure(); pkgAdminData.getDeliveryMethod().println(pkgAdminData.getScoreModule()); msg = ""; String var13; for(var11 = pkgAdminData.getMessageList().iterator(); var11.hasNext(); msg = var13) { var13 = (String)var11.next(); } bgcolor.println(msg); out.println(""); } } out.println("
Un-Loadable Package List
PackageError Message
"); out.println("
"); } } out.println(""); out.flush(); } else { response.getWriter().println("You are not authorized to access this resource"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if(this.checkPermission()) { if(this.isLoadNewBlocked(response)) { return; } boolean isAllowed = CacheManager.getInstance().isAllowSynchronize((String)null, (List)null, (Map)null); try { CacheManager.getInstance().setPollingThreadSuspend(true); CacheManager.getInstance().setAllowSynchronize(false, "Manual Load Package"); response.setContentType("text/html; charset=ISO-8859-1"); PrintWriter out = response.getWriter(); out.println(""); out.println("Load Package"); out.println(""); out.println(""); ArrayList loadedPkgs = new ArrayList(); ArrayList errorPkgs = new ArrayList(); ArrayList errorMessages = new ArrayList(); String[] packageList = request.getParameterValues("check_pkg"); String[] eSKMList = request.getParameterValues("check_eskm"); HashSet eSKMSet = new HashSet(); if(eSKMList != null) { eSKMSet.addAll(Arrays.asList(eSKMList)); } String[] dbLoadList = request.getParameterValues("db_load"); HashSet dbLoadSet = new HashSet(); if(dbLoadList != null) { dbLoadSet.addAll(Arrays.asList(dbLoadList)); } List pkgAdminList = ServerProperties.getPreloadPackage(ServerProperties.getInstanceId(), 1, false, false, new Object[0]); HashMap pkgAdminMap = new HashMap(); Iterator var15 = pkgAdminList.iterator(); while(var15.hasNext()) { PackageAdminData msg = (PackageAdminData)var15.next(); pkgAdminMap.put(msg.getPkgId(), msg); } String[] var26 = packageList; int var27 = packageList.length; for(int var17 = 0; var17 < var27; ++var17) { String pkgId = var26[var17]; try { PackageAdminData e = (PackageAdminData)pkgAdminMap.get(pkgId); if(e != null) { if(eSKMSet.contains(pkgId)) { Log.info("LoadPackageServlet(): checking eSKM for package {}", pkgId); e = ServerProperties.getPackageAdminData(pkgId, 2); } boolean isDBLoad = dbLoadSet.contains(pkgId); Log.info("LoadPackageServlet(): isDBLoad = {} for package {}", Boolean.valueOf(isDBLoad), pkgId); CacheLoader.getInstance().loadPackage(e, ServerProperties.isKeepPackageOnMaster(), (String)null, false, isDBLoad); loadedPkgs.add(pkgId); } } catch (Throwable var24) { errorPkgs.add(pkgId); pkgId.add(var24.toString()); Log.error("LoadPackageServlet", var24); } } String var28; if(loadedPkgs.size() > 0) { CacheManager.getInstance().checkProgramSpecificData("PACKAGE CACHE: checking"); CacheManager.getInstance().checkTestCodeMap("PACKAGE CACHE: checking"); out.println("

The following packages have been successfully loaded into the cache.  Please \"Refresh\" the Cache Management screen for a completed package list.

"); out.println("
    "); var15 = loadedPkgs.iterator(); while(var15.hasNext()) { var28 = (String)var15.next(); out.println(var28); } out.println("
"); } if(errorPkgs.size() > 0) { out.println("

The following packages are not loaded:

"); out.println("
    "); var15 = errorPkgs.iterator(); while(var15.hasNext()) { var28 = (String)var15.next(); out.println(var28); } out.println("
"); } var15 = errorMessages.iterator(); while(var15.hasNext()) { var28 = (String)var15.next(); out.println(var28); } out.println(""); out.flush(); } finally { CacheManager.getInstance().setAllowSynchronize(isAllowed, "Manual Load Package"); CacheManager.getInstance().setPollingThreadSuspend(false); } } else { response.getWriter().println("You are not authorized to access this resource"); } } private boolean isLoadNewBlocked(HttpServletResponse response) throws IOException { Thread pkgPollingThread = CacheManager.getInstance().getCachePollingThread(); Log.info("Package thread state = {}", pkgPollingThread == null?"null":pkgPollingThread.getState()); if(pkgPollingThread != null && !pkgPollingThread.getState().equals(State.TIMED_WAITING)) { response.setContentType("text/html; charset=ISO-8859-1"); PrintWriter isSuspended1 = response.getWriter(); isSuspended1.println(""); isSuspended1.println("Load Package"); isSuspended1.println(""); isSuspended1.println("

Package polling thread is in processing, please retry in few minutes.

"); isSuspended1.println(""); isSuspended1.flush(); return true; } else { boolean isSuspended = CacheManager.getInstance().isPollingThreadSuspend(); if(isSuspended) { response.setContentType("text/html; charset=ISO-8859-1"); PrintWriter out = response.getWriter(); out.println(""); out.println("Load Package"); out.println(""); out.println(""); out.println("

The manual package loading (\"Load New\") is in processing, please retry in few minutes.

"); out.println(""); out.flush(); return true; } else { return false; } } } public boolean checkPermission() { return IBTSecurityUtil.hasPermission("ACCSS_CCHE_MNGMNT", new String[]{"level_4_role"}); } }