home *** CD-ROM | disk | FTP | other *** search
- import java.io.BufferedInputStream;
- import java.lang.reflect.Constructor;
- import java.util.Date;
- import java.util.StringTokenizer;
- import java.util.Vector;
- import javax.ejb.EnterpriseBean;
- import javax.ejb.EntityBean;
- import javax.ejb.SessionBean;
-
- public class JDPActiveJob extends Thread {
- JDPSubsystem subsystem;
- JDPJob job;
- JDPActiveJob target;
- // $FF: renamed from: in java.io.BufferedInputStream
- BufferedInputStream field_0;
- BufferedInputStream err;
- BufferedInputStream thisStream;
- Date jobstartdate;
- long jobstarttime;
- StringBuffer inLog;
- StringBuffer errLog;
- boolean monitorFinished = false;
- JDPJagg jaggSQL;
- Object thisInstance;
- boolean entityBean = false;
-
- public JDPActiveJob(JDPSubsystem var1, JDPJob var2) {
- super(var1.thisThreadGroup, var2.getJobName());
- this.subsystem = var1;
- this.job = var2;
- }
-
- public JDPActiveJob(JDPSubsystem var1, JDPJob var2, JDPActiveJob var3, BufferedInputStream var4) {
- super(var1.thisThreadGroup, var2.getJobName() + var4.toString());
- this.subsystem = var1;
- this.job = var2;
- this.target = var3;
- this.thisStream = var4;
- ((Thread)this).start();
- }
-
- public void run() {
- if (this.target != null) {
- this.monitorActiveJob();
- this.monitorFinished = true;
- } else {
- this.initJob();
- boolean var1 = false;
- var1 = this.startRequest();
- if (this.entityBean || this.job.getObjectType().equals("S")) {
- while(!this.subsystem.manager.shutdownRequested) {
- try {
- Thread.sleep(5000L);
- } catch (Exception var2) {
- }
- }
- }
-
- this.completeJob(var1);
- }
- }
-
- public void initJob() {
- Date var1 = new Date();
- long var2 = var1.getTime();
- var1.setHours(0);
- var1.setMinutes(0);
- var1.setSeconds(0);
- this.jobstartdate = var1;
- this.jobstarttime = var2 - var1.getTime();
- var2 -= var1.getTime();
- this.job.setStartDate(var1);
- this.job.setStartTime(var2);
- }
-
- public boolean startRequest() {
- boolean var1 = false;
- if (this.job.getObjectType().equals("J")) {
- this.setupJaggConnection();
- }
-
- var1 = this.runRequest(this.job.getObjectType(), this.job.getObject(), this.job.getObjectConstructor(), this.job.getObjectParm());
- return var1;
- }
-
- public void completeJob(boolean var1) {
- if (this.job.getJobStatus() == 9) {
- var1 = false;
- }
-
- if (this.thisInstance != null && this.thisInstance instanceof EnterpriseBean) {
- this.closeEnterpriseBean();
- }
-
- Date var2 = new Date();
- long var3 = var2.getTime();
- var2.setHours(0);
- var2.setMinutes(0);
- var2.setSeconds(0);
- var3 -= var2.getTime();
- this.job.setEndDate(var2);
- this.job.setEndTime(var3);
- this.subsystem.setJobComplete(this.job);
- int var5 = this.job.getNotifyUser();
- String var6 = this.job.getNotifyOn();
- if (var5 >= 0) {
- if ((var6.equals("S") || var6.equals("B")) && var1) {
- this.job.setNotifyNow(true);
- }
-
- if ((var6.equals("F") || var6.equals("B")) && !var1) {
- this.job.setNotifyNow(true);
- }
- }
-
- String var7 = this.job.getLogEvent();
- if ((var7.equals("F") || var7.equals("B")) && !var1 || (var7.equals("S") || var7.equals("B")) && var1) {
- this.job.setLogEventNow(true);
- }
-
- if (var1) {
- this.job.setJobStatus(10);
- } else {
- this.job.appendJobLog("Job failed");
- this.job.setJobStatus(9);
- }
- }
-
- public boolean runRequest(String var1, String var2, String var3, String var4) {
- boolean var5 = false;
-
- try {
- if (var1.equals("C")) {
- var5 = this.createObject(var2, var3, var4);
- } else if (var1.equals("A")) {
- var5 = this.runApplication(var2, var4);
- } else if (var1.equals("J")) {
- var5 = this.runJobStream(var2);
- }
- } catch (Exception var7) {
- this.job.logException(var7);
- }
-
- return var5;
- }
-
- public boolean createObject(String var1, String var2, String var3) {
- if (var1 != null && !var1.equals("")) {
- if (var2 != null && !var2.equals("")) {
- if (!var2.startsWith("(")) {
- var2 = "(" + var2;
- }
-
- if (!var2.endsWith(")")) {
- var2 = var2 + ")";
- }
-
- var2 = this.job.manager.utils.replace(var2, " ", "");
- Constructor var4 = this.getSelectedConstructor(var1, var2);
- if (var4 == null) {
- this.job.appendJobLog("Unknown constructor: " + var2);
- return false;
- } else {
- Class[] var5 = var4.getParameterTypes();
- int var6 = 0;
- String[] var7 = new String[var5.length];
-
- for(int var15 = 0; var15 < var7.length; ++var15) {
- var7[var15] = "";
- }
-
- StringTokenizer var8 = new StringTokenizer(var3, ",", true);
- var6 = 0;
-
- while(var6 < var7.length && var8.hasMoreTokens()) {
- String var9 = var8.nextToken();
- if (var9.equals(",")) {
- ++var6;
- } else {
- var7[var6] = var9;
- if (var7[var6].startsWith("\"")) {
- for(var7[var6] = var7[var6].substring(1); !var7[var6].endsWith("\""); var7[var6] = var7[var6] + var8.nextToken()) {
- }
-
- var7[var6] = var7[var6].substring(0, var7[var6].length() - 1);
- }
- }
- }
-
- Object[] var10 = new Object[var5.length];
-
- for(int var17 = 0; var17 < var10.length; ++var17) {
- var10[var17] = this.createObject(var5[var17], var7[var17]);
- }
-
- try {
- this.thisInstance = var4.newInstance(var10);
- if (this.thisInstance != null && this.thisInstance instanceof EnterpriseBean) {
- this.handleEnterpriseBean();
- }
-
- return true;
- } catch (Exception var13) {
- this.job.logException(var13);
- if (var10.length > 0) {
- this.job.appendJobLog(" with parameters:");
-
- for(int var12 = 0; var12 < var10.length; ++var12) {
- this.job.appendJobLog(" > " + var10[var12].toString());
- }
- }
-
- return false;
- }
- }
- } else {
- this.job.appendJobLog("Constructor not defined");
- return false;
- }
- } else {
- this.job.appendJobLog("Class name not defined");
- return false;
- }
- }
-
- void handleEnterpriseBean() {
- try {
- if (this.thisInstance instanceof SessionBean) {
- JDPSessionContext var4 = new JDPSessionContext();
- SessionBean var5 = (SessionBean)this.thisInstance;
- var5.setSessionContext(var4);
- var5.ejbActivate();
- return;
- }
-
- if (this.thisInstance instanceof EntityBean) {
- JDPEntityContext var1 = new JDPEntityContext();
- EntityBean var2 = (EntityBean)this.thisInstance;
- var2.setEntityContext(var1);
- var2.ejbLoad();
- this.entityBean = true;
- return;
- }
- } catch (Exception var3) {
- this.job.logException(var3);
- }
-
- }
-
- void closeEnterpriseBean() {
- try {
- if (this.thisInstance instanceof SessionBean) {
- SessionBean var3 = (SessionBean)this.thisInstance;
- var3.ejbPassivate();
- var3.ejbRemove();
- return;
- }
-
- if (this.thisInstance instanceof EntityBean) {
- EntityBean var1 = (EntityBean)this.thisInstance;
- var1.ejbStore();
- var1.ejbRemove();
- return;
- }
- } catch (Exception var2) {
- this.job.logException(var2);
- }
-
- }
-
- public boolean runApplication(String var1, String var2) {
- int var3 = 1;
- String var4 = var1 + " " + var2;
-
- try {
- Runtime var5 = Runtime.getRuntime();
- Process var6 = var5.exec(var4);
- this.field_0 = new BufferedInputStream(var6.getInputStream());
- this.err = new BufferedInputStream(var6.getErrorStream());
- JDPActiveJob var7 = new JDPActiveJob(this.subsystem, this.job, this, this.field_0);
- JDPActiveJob var8 = new JDPActiveJob(this.subsystem, this.job, this, this.err);
- var3 = var6.waitFor();
-
- while(!var7.monitorFinished) {
- try {
- Thread.sleep(100L);
- } catch (Exception var10) {
- }
- }
-
- while(!var8.monitorFinished) {
- try {
- Thread.sleep(100L);
- } catch (Exception var9) {
- }
- }
-
- if (var7.inLog != null) {
- this.job.appendJobLog(var7.inLog.toString());
- }
-
- if (var8.errLog != null) {
- this.job.appendJobLog(var8.errLog.toString());
- }
-
- var6.destroy();
- } catch (Exception var11) {
- this.job.appendJobLog("Could not execute the following command: " + var4);
- this.job.logException(var11);
- }
-
- return var3 == 0;
- }
-
- public boolean runJobStream(String var1) {
- String var3 = this.jaggSQL.getSEP();
- Vector var4 = new Vector();
- String var5 = "SELECT a.Entry, a.ObjectType, a.Object, a.ObjectParm, a.ObjectCons, a.StopIfFail, b.Restart, b.lastEntry, b.lastStatus FROM JDPJobEn a, JDPJobs b WHERE a.JDPSystem = b.JDPSystem AND a.StreamName = b.StreamName AND a.JDPSystem = '" + this.job.getJDPSystem() + "' " + "AND a.StreamName = '" + var1 + "' " + "ORDER BY a.Entry";
- int var6 = this.jaggSQL.execSQL(var5, var4);
- int var7 = 0;
- if (var6 > 0) {
- StringTokenizer var2 = new StringTokenizer((String)var4.elementAt(0), var3);
- Integer.parseInt(var2.nextToken().trim());
- var2.nextToken().trim();
- var2.nextToken().trim();
- var2.nextToken().trim();
- var2.nextToken().trim();
- var2.nextToken().trim();
- String var8 = var2.nextToken().trim();
- int var9 = Integer.parseInt(var2.nextToken().trim());
- String var10 = var2.nextToken().trim();
- if (var10.equals("F")) {
- this.job.appendJobLog("Job stream failed to complete normally on last run");
- if (var8.equals("F")) {
- var7 = 0;
- this.job.appendJobLog("Restarting at first entry in Job Stream");
- } else if (var8.equals("L")) {
- var7 = var9;
- this.job.appendJobLog("Restarting at entry " + Integer.toString(var9) + " in Job Stream");
- } else if (var8.equals("A")) {
- var7 = var9 + 1;
- this.job.appendJobLog("Restarting after entry " + Integer.toString(var9) + " in Job Stream");
- }
- }
- }
-
- String var33 = "S";
- int var34 = 0;
- Date var35 = new Date();
- long var11 = var35.getTime();
- var35.setHours(0);
- var35.setMinutes(0);
- var35.setSeconds(0);
-
- for(int var13 = 0; var13 < var6; ++var13) {
- StringTokenizer var29 = new StringTokenizer((String)var4.elementAt(var13), var3);
- int var14 = Integer.parseInt(var29.nextToken().trim());
- String var15 = var29.nextToken().trim();
- String var16 = var29.nextToken().trim();
- String var17 = var29.nextToken().trim();
- String var18 = var29.nextToken().trim();
- String var19 = var29.nextToken().trim();
- if (var14 >= var7) {
- Date var20 = new Date();
- long var21 = var20.getTime();
- var20.setHours(0);
- var20.setMinutes(0);
- var20.setSeconds(0);
- int var23 = this.job.getJobLogBuffer().length();
- String var24 = "Starting ";
- if (var15.equals("C")) {
- var24 = var24 + "Class ";
- }
-
- if (var15.equals("A")) {
- var24 = var24 + "Application ";
- }
-
- if (var15.equals("J")) {
- var24 = var24 + "JobStream ";
- }
-
- var24 = var24 + var16;
- var24 = var24 + " (entry " + Integer.toString(var14) + " of jobstream " + var1.trim() + ")...";
- this.job.appendJobLog(var24);
- boolean var25 = this.runRequest(var15, var16, var18, var17);
- if (!var25) {
- var35 = new Date();
- long var26 = var35.getTime() - var21;
- var11 = var35.getTime();
- var35.setHours(0);
- var35.setMinutes(0);
- var35.setSeconds(0);
- var5 = "UPDATE JDPJobEn SET LastStatus = 'F', Duration = " + Long.toString(var26) + ", " + "LastJobLog = '" + this.job.getJobLog().substring(var23) + "' " + "WHERE JDPSystem = '" + this.job.getJDPSystem() + "' " + "AND StreamName = '" + var1 + "' " + "AND Entry = " + Integer.toString(var14);
- Vector var28 = new Vector();
- this.jaggSQL.execSQL(var5, var28);
- if (var19.equals("Y")) {
- var33 = "F";
- var34 = var14;
- var13 = var6 + 1;
- }
- } else {
- long var39 = (new Date()).getTime() - var21;
- var5 = "UPDATE JDPJobEn SET LastStatus = 'S', Duration = " + Long.toString(var39) + ", " + "LastJobLog = '" + this.job.getJobLog().substring(var23) + "' " + "WHERE JDPSystem = '" + this.job.getJDPSystem() + "' " + "AND StreamName = '" + var1 + "' " + "AND Entry = " + Integer.toString(var14);
- Vector var40 = new Vector();
- this.jaggSQL.execSQL(var5, var40);
- }
- }
- }
-
- var5 = "UPDATE JDPJobs SET LastStatus = '" + var33 + "', " + "LastEntry = " + Integer.toString(var34) + ", " + "ActualStrt = " + JDPDate.formatForSql(this.jobstartdate, JDPSubsystemMgr.dbtype) + ", " + "StartTime = " + Long.toString(this.jobstarttime) + ", " + "ActualEnd = " + JDPDate.formatForSql(var35, JDPSubsystemMgr.dbtype) + ", " + "EndTime = " + Long.toString(var11 - var35.getTime()) + " " + "WHERE JDPSystem = '" + this.job.getJDPSystem() + "' " + "AND StreamName = '" + var1 + "' ";
- Vector var36 = new Vector();
- this.jaggSQL.execSQL(var5, var36);
- return true;
- }
-
- public Constructor getSelectedConstructor(String var1, String var2) {
- try {
- Class var3 = null;
- if (var1.equals("int")) {
- var3 = Integer.TYPE;
- }
-
- if (var1.equals("boolean")) {
- var3 = Boolean.TYPE;
- }
-
- if (var1.equals("char")) {
- var3 = Character.TYPE;
- }
-
- if (var1.equals("byte")) {
- var3 = Byte.TYPE;
- }
-
- if (var1.equals("short")) {
- var3 = Short.TYPE;
- }
-
- if (var1.equals("long")) {
- var3 = Long.TYPE;
- }
-
- if (var1.equals("float")) {
- var3 = Float.TYPE;
- }
-
- if (var1.equals("double")) {
- var3 = Double.TYPE;
- }
-
- if (var1.equals("void")) {
- var3 = Void.TYPE;
- }
-
- if (var3 == null) {
- var3 = Class.forName(var1);
- }
-
- Constructor[] var4 = var3.getConstructors();
-
- for(int var5 = 0; var5 < var4.length; ++var5) {
- String var6 = "(";
- Class[] var7 = var4[var5].getParameterTypes();
-
- for(int var8 = 0; var8 < var7.length; ++var8) {
- if (var8 > 0) {
- var6 = var6 + ",";
- }
-
- var6 = var6 + this.convertParm(var7[var8].getName());
- }
-
- var6 = var6 + ")";
- if (var6.equals(var2)) {
- return var4[var5];
- }
- }
- } catch (Exception var9) {
- this.job.logException(var9);
- }
-
- return null;
- }
-
- public String convertParm(String var1) {
- try {
- if (var1.indexOf("[[L") >= 0) {
- var1 = var1.substring(3, var1.length() - 1) + "[][]";
- } else if (var1.indexOf("[I") >= 0) {
- var1 = "int[]";
- } else if (var1.indexOf("[Z") >= 0) {
- var1 = "boolean[]";
- } else if (var1.indexOf("[C") >= 0) {
- var1 = "char[]";
- } else if (var1.indexOf("[B") >= 0) {
- var1 = "byte[]";
- } else if (var1.indexOf("[") >= 0) {
- var1 = var1.substring(2, var1.length() - 1) + "[]";
- }
-
- if (var1.startsWith("java")) {
- int var2 = var1.lastIndexOf(".");
- if (var2 > 0) {
- var1 = var1.substring(var2 + 1);
- }
- }
- } catch (Exception var3) {
- System.out.println("Parm value: " + var1);
- this.job.logException(var3);
- }
-
- return var1;
- }
-
- Object createObject(Class var1, String var2) {
- try {
- String var3 = var1.getName();
- if (var3.equals("java.lang.String")) {
- return var2;
- }
-
- if (var3.equals("int")) {
- if (var2.equals("")) {
- var2 = "0";
- }
-
- return new Integer(var2);
- }
-
- if (var3.equals("boolean")) {
- if (var2.equals("true")) {
- return new Boolean(true);
- }
-
- return new Boolean(false);
- }
-
- if (var3.equals("char")) {
- return new Character(var2.charAt(0));
- }
-
- if (var3.equals("byte")) {
- return new Byte(var2);
- }
-
- if (var2.equals("")) {
- var2 = "0";
- }
-
- if (var3.equals("short")) {
- return new Short(var2);
- }
-
- if (var3.equals("long")) {
- return new Long(var2);
- }
-
- if (var3.equals("float")) {
- return new Float(var2);
- }
-
- if (var3.equals("double")) {
- return new Double(var2);
- }
-
- if (var2.equals("JDPSubsystemMgr")) {
- return this.subsystem.manager;
- }
-
- if (var2.equals("JDPActiveJob")) {
- return this;
- }
-
- if (var2.equals("JDPJob")) {
- return this.job;
- }
-
- Constructor[] var4 = var1.getConstructors();
- Object var5 = null;
- Object[] var6 = new Object[]{var2};
-
- for(int var7 = 0; var7 < var4.length; ++var7) {
- Class[] var11 = var4[var7].getParameterTypes();
- if (var11.length == 1) {
- try {
- Object var8 = var4[var7].newInstance(var6);
- return var8;
- } catch (Exception var9) {
- this.job.appendJobLog("Failed to instantiate the Object with the given parameters.");
- this.job.appendJobLog("Check the parameters and resubmit the job.");
- this.job.logException(var9);
- }
- }
- }
- } catch (Exception var10) {
- }
-
- return null;
- }
-
- public void monitorActiveJob() {
- char[] var1 = null;
- char[] var2 = var1;
- if (var1 == null) {
- var2 = var1 = new char[128];
- }
-
- int var3 = var2.length;
- int var4 = 0;
- boolean var5 = false;
-
- try {
- for(int var8 = this.thisStream.read(); var8 > -1; var8 = this.thisStream.read()) {
- --var3;
- if (var3 < 0) {
- var2 = new char[var4 + 128];
- var3 = var2.length - var4 - 1;
- System.arraycopy(var1, 0, var2, 0, var4);
- var1 = var2;
- }
-
- var2[var4++] = (char)var8;
- }
-
- if (var4 > 0) {
- this.writeLog(String.copyValueOf(var2, 0, var4));
- }
-
- this.thisStream.close();
- } catch (Exception var7) {
- this.job.logException(var7);
- }
- }
-
- public void writeLog(String var1) {
- if (this.target != null) {
- if (this.thisStream == this.target.field_0) {
- if (this.inLog == null) {
- this.inLog = new StringBuffer();
- }
-
- this.inLog.append(var1);
- return;
- }
-
- if (this.errLog == null) {
- this.errLog = new StringBuffer();
- }
-
- this.errLog.append(var1);
- }
-
- }
-
- public void setupJaggConnection() {
- JDPSubsystemMgr var1 = this.subsystem.manager;
- this.jaggSQL = new JDPJagg(var1.JDPJaggPath);
- this.jaggSQL.setDSN(var1.JDPJaggDSN);
- this.jaggSQL.setCSTR(var1.JDPJaggCSTR);
- this.jaggSQL.setJdbcDriver(var1.JDPJaggJdbcDriver);
- this.jaggSQL.setJdbcPrefix(var1.JDPJaggJdbcPrefix);
- this.jaggSQL.setJdbcSuffix(var1.JDPJaggJdbcSuffix);
- this.jaggSQL.setUID(var1.JDPJaggJdbcUserid);
- this.jaggSQL.setPWD(var1.JDPJaggJdbcPassword);
- }
- }
-