Main Page | Packages | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

JobUtils Class Reference

List of all members.

Detailed Description

Utilities for job submission.
Author:
Jon Butterworth

Definition at line 28 of file JobUtils.java.


Static Public Member Functions

void updateJobs () throws JetWebException
void doJobRequest (ResultSearchPattern pattern, Vector processList, PrintWriter out, String servletPath, String requestingHost) throws JetWebException
void makeCards (JobRequest jreq) throws JetWebException
void makeScript (String scriptname, Generator gen) throws JetWebException
void moveLogs (Enumeration logs, String newDir)
boolean isValidLogName (String name)
String zipIt (String name) throws JetWebException
void removeBadPoints (PredictedPlot plot, LogFile log) throws JetWebException
int countJobs (String batchNum) throws JetWebException
int countCompletedJobs (String batchNum) throws JetWebException
Enumeration selectPendingJobs () throws JetWebException
int submit (JobRequest jreq)
boolean moveAndStore (LogFile log) throws JetWebException
Vector< ModelgetNewData (File root) throws JetWebException
Vector< LogFilegetLogFiles (int rsid) throws JetWebException

Static Private Member Functions

Vector< LogFilegetLogFiles (File dir) throws JetWebException

Member Function Documentation

int countCompletedJobs String  batchNum  )  throws JetWebException [static]
 

Return the number of jobs completed by the given batch number.

Definition at line 568 of file JobUtils.java.

00568                                                                                  {
00569     return DBJobManager.countCompletedJobs(batchNum);
00570     }

int countJobs String  batchNum  )  throws JetWebException [static]
 

Return the number of jobs submitted to the given batch number.

Definition at line 562 of file JobUtils.java.

00562                                                                         {
00563     return DBJobManager.countJobs(batchNum);
00564     }

void doJobRequest ResultSearchPattern  pattern,
Vector  processList,
PrintWriter  out,
String  servletPath,
String  requestingHost
throws JetWebException [static]
 

Try to build a JobRequest, and if it works, submit it.

Definition at line 213 of file JobUtils.java.

References Model.addAllRunSeries(), CutCollection.equals(), RunSeries.getCutCollection(), CutCollection.getCuts(), LogFile.getGenerator(), ResultSearchPattern.getGenerator(), JobRequest.getJobName(), JobRequest.getModel(), Model.getRunSeries(), CutCollection.isWithin(), LogFile.retrieve(), RunSeries.setCuts(), LogFile.setFile(), JobRequest.setJobName(), RunSeries.setMCProcessType(), LogFile.setStatus(), Model.store(), and LogFile.store().

00218                                              {
00219 
00220     JobRequest jreq = null;
00221     Model model = null;
00222 
00223     if (processList.size()==0){
00224         // Must specify at least one process.
00225         HTMLWriter op = new HTMLWriter(out,servletPath);
00226         HTMLUtils.writeJobRequestForm("Please specify a process to generate.",
00227                 pattern,new PlotSelection(),
00228                 out,servletPath);
00229         return;         
00230     }
00231     HashMap<MCProcessType, RunSeries> submittedRunSeries = 
00232         new HashMap<MCProcessType, RunSeries>();
00233     // Build a new job request.
00234     try {
00235 
00236         // Build a Model from the search pattern.
00237         model = new Model(pattern);
00238         model.addAllRunSeries();
00239 
00240         // New logfile row not written at this point
00241 
00242         //LogFile log = new LogFile();
00243 
00244         //Get a list of the already existing runseries that match
00245         //the model to be submitted.
00246         //Vector<RunSeries> existingRunSeries = new Vector<RunSeries>();
00247         
00248         HashMap<MCProcessType, RunSeries> existingRunSeries = 
00249         new HashMap<MCProcessType, RunSeries>();
00250        
00251         for(Enumeration proc = processList.elements(); 
00252         proc.hasMoreElements();){
00253         
00254         for(RunSeries rs: 
00255             model.getRunSeries((MCProcessType)proc.nextElement())){
00256             if(pattern.matches(rs)){
00257 
00258             //need to check cut collection against 
00259             //existing runseries
00260 
00261             CutCollection existingCuts = 
00262                 rs.getCutCollection();
00263 
00264             if(existingCuts!=null &&
00265                (existingCuts.getCuts().size()==0 || 
00266                 existingCuts.isWithin(
00267                 pattern.getGenerator().getCutCollection()))
00268                ){
00269 
00270                 RunSeries exists = existingRunSeries.get
00271                 (rs.getMCProcessType());
00272                 if(exists==null || 
00273                    exists.getCutCollection().
00274                    isWithin(rs.getCutCollection())
00275                    ){
00276                 
00277                 existingRunSeries.put(rs.getMCProcessType(), rs);
00278                 }
00279             }
00280             }
00281         }
00282         }
00283         
00284         // Create a run series if necessary 
00285         // for this submission
00286         
00287         for(Enumeration proc = processList.elements(); 
00288         proc.hasMoreElements();){
00289         
00290         RunSeries tmpRS = new RunSeries(pattern);
00291         MCProcessType tmpProc = (MCProcessType)proc.nextElement();
00292         tmpRS.setMCProcessType(tmpProc);
00293         tmpRS.setCuts();
00294         submittedRunSeries.put(tmpProc,tmpRS);      
00295 
00296         }
00297     
00298         for(Map.Entry entry: existingRunSeries.entrySet()){
00299 
00300         RunSeries tmpRS = (RunSeries) entry.getValue();
00301         MCProcessType tmpProc = (MCProcessType) entry.getKey();
00302         
00303         RunSeries submitted = submittedRunSeries.get(tmpProc);
00304 
00305         if(submitted==null ||
00306            submitted.getCutCollection().isWithin
00307            (tmpRS.getCutCollection()) || 
00308            submitted.getCutCollection().equals
00309             (tmpRS.getCutCollection())){
00310             submittedRunSeries.put
00311             (tmpProc, tmpRS); 
00312 
00313             }
00314         }
00315 
00316         //for(RunSeries rs: existingRunSeries){
00317         //submittedRunSeries.put(rs.getMCProcessType(), rs);
00318         //}
00319             
00320     } catch (JetWebException e) {
00321         // Keep bouncing back if there is not enough information to
00322         // specify the model.
00323         HTMLWriter op = new HTMLWriter(out,servletPath);
00324         HTMLUtils.writeJobRequestForm("Please specify all fields.",
00325                 pattern,new PlotSelection(),
00326                 out,servletPath);
00327         return;         
00328     }
00329 
00330     //No logfile written to DB by this point
00331     StringBuffer jobsDone = new StringBuffer();
00332     Enumeration list = processList.elements();
00333     int status = -1;
00334     while (list.hasMoreElements()){
00335         MCProcessType proc = (MCProcessType)list.nextElement();
00336 
00337         jreq = new JobRequest(model,proc,requestingHost);
00338 
00339         if (jreq==null) {
00340         throw new JetWebException("JobUtils:","No process types were selected!");
00341         }
00342 
00343         // Set the job name here.
00344         jreq.setJobName();
00345 
00346         // Make the files for this job.
00347         makeCards(jreq);
00348         String newFilePath = JetWebConfig.jobOutDirName+"/"+jreq.getJobName();
00349         makeScript(newFilePath,jreq.getModel().getGenerator());
00350 
00351         // Submit it.
00352         status = submit(jreq);
00353 
00354         if (status == 0) {
00355         jobsDone.append("Successfully submitted: "
00356                 +HTMLJobWriter.getDescription(jreq));
00357         RunSeries rs = submittedRunSeries.get(proc);
00358         
00359         LogFile log = new LogFile(rs);
00360 
00361         log.setFile(new JetWebFile(JetWebConfig.jobOutDirName + 
00362                      "/" + 
00363                      jreq.getJobName()));
00364         //retrieve the already reserved logfile name
00365         //doing this sets the log status to reserved
00366         log.retrieve();
00367         log.getGenerator().setCutCollection
00368             (pattern.getGenerator().getCutCollection());
00369         log.setStatus(LogFile.SUBMITTED);
00370 
00371         log.store();
00372         //model.store();
00373         } else {
00374         jobsDone.append("Failed job submission code "+status+"<br/>");
00375         }
00376     }
00377 
00378     if(status == 0 ){
00379         model.addAllRunSeries();
00380         model.store();
00381     }
00382 
00383     HTMLUtils.writeQueryScreen(jobsDone.toString(),
00384                    pattern,new PlotSelection(),
00385                    out,servletPath);
00386     return;         
00387     }           

Vector<LogFile> getLogFiles File  dir  )  throws JetWebException [static, private]
 

Definition at line 766 of file JobUtils.java.

References LogFile.checkStatus(), JetWebLogReader.fillLog(), LogFile.getStatus(), LogFile.getXmlFileName(), LogFile.hasAidaFile(), LogFile.isArchived(), and LogFile.RUN.

00767                           {
00768     
00769     Vector<File> fileList = new Vector<File>();
00770     Vector<LogFile> logFiles = new Vector<LogFile>();
00771     if(dir.isDirectory()){
00772         fileList.add(dir);
00773 
00774         while(fileList.size()>0){
00775         Enumeration<File> list = fileList.elements();
00776         while (list.hasMoreElements()){
00777 
00778             File tmpfile = list.nextElement();
00779 
00780             // First look for directories.
00781             if (tmpfile.isDirectory()){
00782             
00783             File[] array = tmpfile.listFiles();
00784             int n = array.length;
00785             for (int i=0; i<n; i++){
00786                 fileList.addElement(array[i]);
00787             }
00788             
00789             }else{
00790 
00791             // Now look for aida files.
00792             String tmpname = tmpfile.getPath(); 
00793             
00794             if ( JobUtils.isValidLogName(tmpname)) {
00795                 // Now search through to see if it 
00796                 // terminated successfully.
00797                 
00798                 // first, gzip it if necessary.
00799                 tmpname = JobUtils.zipIt(tmpname);
00800                 
00801                 // Instantiate, but don't add to the DB yet.
00802                 LogFile log = new LogFile(tmpname);
00803                 System.out.println
00804                 ("JobUtils: Created log: about to fill.");
00805                 System.out.println("JobUtils: Using xml file name "
00806                            + log.getXmlFileName());
00807                 JetWebLogReader logReader = 
00808                 new JetWebLogReader(log.getXmlFileName());
00809 
00810                 logReader.fillLog(log);
00811                 log.checkStatus();
00812                 if (log.getStatus()==LogFile.RUN){
00813 
00814                 // Now see if an aida file really exists.
00815                 if (log.hasAidaFile()&& 
00816                     !log.isArchived()){
00817                     if(moveAndStore(log)){
00818                     logFiles.add(log);
00819                     }
00820                 }
00821                 }
00822             }
00823             }
00824             
00825             // Now remove this file from the vector.
00826             fileList.remove(tmpfile);
00827         }
00828         }
00829     }
00830     return logFiles;
00831     }

Vector<LogFile> getLogFiles int  rsid  )  throws JetWebException [static]
 

Get the LogFiles associated with the input runSeriesId.

Definition at line 762 of file JobUtils.java.

00762                                                                                {
00763     return DBJobManager.getLogFiles(rsid); 
00764     }

Vector<Model> getNewData File  root  )  throws JetWebException [static]
 

Performs recursive search of directories below root for completed batch jobs. Adds any new data found to the database. Returns a list of all models affected by these new data. Logiles should have a valid name, and should also have an associated aida file.

Parameters:
root the root directory in the filesystem where new data is stored. Search recursively below this for new data.
Returns:
a vector of ids of the affected models (Integers)
Exceptions:
JetWebException 

Definition at line 652 of file JobUtils.java.

References LogFile.checkStatus(), JetWebLogReader.fillLog(), RunSeries.getConsistentModels(), LogFile.getRunSeries(), LogFile.getStatus(), LogFile.getXmlFileName(), LogFile.hasAidaFile(), LogFile.RUN, Model.store(), and LogFile.toString().

00652                                                                              {
00653 
00654     Vector<Model> modelList   = new Vector<Model>();
00655     Vector<File> fileList   = new Vector<File>();
00656 
00657     if (root.isDirectory()) {
00658 
00659         // Add the root directory to the list of files to be checked.
00660         fileList.add(root);
00661 
00662         // Find files ending with .xml in this directory
00663         // and any subdirectories.
00664         while (fileList.size()>0){
00665         
00666         Enumeration<File> list = fileList.elements();
00667 
00668         while (list.hasMoreElements()){
00669             
00670             File tmpfile = list.nextElement();
00671 
00672             // First look for directories.
00673             if (tmpfile.isDirectory()){
00674             System.out.println
00675                 ("JobUtils: Searching in "+tmpfile.getPath());
00676 
00677             File[] array = tmpfile.listFiles();
00678             int n = array.length;
00679             for (int i=0; i<n; i++){
00680                 fileList.addElement(array[i]);
00681             }
00682 
00683             } else {
00684 
00685             // Now look for aida files.
00686             String tmpname = tmpfile.getPath(); 
00687             
00688             if ( JobUtils.isValidLogName(tmpname)) {
00689                 // Now search through to see if it terminated successfully.
00690                 
00691                 // first, gzip it if necessary.
00692                 tmpname = JobUtils.zipIt(tmpname);
00693                 
00694                 // Instantiate, but don't add to the DB yet.
00695                 LogFile log = new LogFile(tmpname);
00696                 System.out.println
00697                 ("JobUtils: Created log: about to fill.");
00698                 System.out.println("JobUtils: Using xml file name "
00699                            + log.getXmlFileName());
00700                 JetWebLogReader logReader = 
00701                 new JetWebLogReader(log.getXmlFileName());
00702 
00703                 logReader.fillLog(log);
00704                 log.checkStatus();
00705                 System.out.println
00706                 ("JobUtils: log status = " + log.getStatus());
00707                 if (log.getStatus()==LogFile.RUN){
00708                 System.out.println("JobUtils:"+log.toString());
00709                 // Now see if an aida file really exists.
00710                 if (log.hasAidaFile()){
00711                     // Move the logfile & add it to the DB.
00712                     if (moveAndStore(log)){
00713                     
00714                     // Get all models which can be constructed from 
00715                     // this runSeries in combination with others. 
00716                     System.out.println
00717                         ("JobUtils: adding models");
00718                     RunSeries rs = log.getRunSeries();
00719                     Vector<Model> mList = 
00720                         rs.getConsistentModels();
00721 
00722                     if (mList.size()==0) {
00723                         // Make a new model with
00724                         // this run series plus
00725                         // default parameters for
00726                         // any not set by the
00727                         // runseries.
00728                         System.out.println
00729                  ("JobUtils: Model: Making a new one for " + 
00730                          log.getXmlFileName());
00731                         Model model = new Model(rs);
00732                         model.store();
00733                         mList.add(model);
00734                     } else {
00735                         System.out.println("JobUtils: Model:Not making a new one for "+log.getXmlFileName());
00736                     }
00737                     modelList.addAll(mList);
00738                     System.out.println("JobUtils: added models");
00739                     
00740                     }
00741                 }
00742                 }
00743             }
00744             }
00745             // Now remove this file from the vector.
00746             fileList.remove(tmpfile);
00747         }
00748 
00749         }
00750         
00751     } else {
00752         System.out.println("Invalid root directory: "+root.getPath());
00753     } 
00754     System.out.println("JobUtils: "+modelList.size()+" Models affected");
00755     return modelList;
00756 
00757     }

boolean isValidLogName String  name  )  [static]
 

Test whether the input String is a valid name for a logfile.

Definition at line 507 of file JobUtils.java.

00507                                                      {
00508 
00509     if (name.equals("CVS")){
00510         return false;
00511     }
00512 
00513     if ( ((name.indexOf(".o")>0) || (name.indexOf(".log")>0)  &&
00514          !(name.indexOf("~")>0) && 
00515           !(name.indexOf("#")>0)) &&
00516          !name.contains(".gz")){
00517         return true;
00518     }
00519     return false;
00520 
00521     }

void makeCards JobRequest  jreq  )  throws JetWebException [static]
 

Class method to make a set of control cards based upon a JobRequest. Will create the directory for the cards to go in if necessary. The actual card writing itself is passed over to the Generator class.

Parameters:
JobRequest 
Exceptions:
JetWebException 

Definition at line 396 of file JobUtils.java.

References MCProcessType.getCollision(), and ResultSearchPattern.getGenerator().

00397                            {
00398 
00399     Model model = jreq.getModel();
00400     MCProcessType proc = jreq.getMCProcessType();
00401     Collision collision = proc.getCollision();
00402     Generator gen = model.getGenerator();
00403     
00404     System.out.println("JobUtils.makecards:"+jreq.getCardName()+" , "+gen);
00405 
00406     File test = new File(JetWebConfig.rootDirectory+jreq.getCardName());
00407     
00408     if (test.exists()) {
00409         throw new JobRequestException("cannot create new card because filename already exists");
00410     }
00411 
00412     try {
00413         BufferedWriter newCards = new BufferedWriter(new FileWriter(jreq.getCardName()) );
00414 
00415         gen.writeSteering(newCards,model,proc);
00416         newCards.newLine();
00417         newCards.close();
00418 
00419     } catch ( IOException e ) {
00420         System.out.println("problem creating new card file:"+e);
00421         throw new JetWebException(e);
00422     } catch ( NullPointerException n ) {
00423         throw new JetWebException(n);
00424     }
00425 
00426     }

void makeScript String  scriptname,
Generator  gen
throws JetWebException [static]
 

Class method to make a job script. Will create the directory for the script to go in if necessary.

Parameters:
scriptname full path+name of the card file (excluding .input) to be built.
Exceptions:
JetWebException 

Definition at line 435 of file JobUtils.java.

00436                            {
00437 
00438     String line;
00439     File test = new File(scriptname);
00440     
00441     if (test.exists()) {
00442         throw new JobRequestException("cannot create new script because filename already exists");
00443     }
00444     
00445     try {
00446         BufferedReader templateScript = 
00447         new BufferedReader( new InputStreamReader( new FileInputStream(SubmitScriptHandler.getTemplate())));
00448         BufferedWriter newScript = new BufferedWriter(new FileWriter(scriptname) );
00449         while((line=templateScript.readLine())!=null){
00450         // Choose executable
00451         if (line.startsWith("PROGRAM=")) {
00452             line = "PROGRAM=" + SubmitScriptHandler.getExecutable(gen);
00453         }
00454         newScript.write(line);
00455         newScript.newLine();
00456         }
00457 
00458         newScript.close();
00459         templateScript.close();
00460 
00461     } catch ( IOException e ) {
00462         System.out.println("problem creating new script file:"+e);
00463         return;
00464     }
00465 
00466     }

boolean moveAndStore LogFile  log  )  throws JetWebException [static]
 

Move histogram and log files from run directory to data directory. Return true if successful.

Parameters:
log file to be moved
Exceptions:
JetWebException 

Definition at line 616 of file JobUtils.java.

References JetWebFile.Archive(), and JetWebFile.Zip().

00616                                                                            {
00617     
00618     JetWebFile logFile = log.getFile();
00619 
00620     String stem = log.getStem();
00621 
00622     JetWebFile file  = new JetWebFile(stem, JetWebFile.AIDA);
00623     file = file.Archive();
00624     file = file.Zip();
00625 
00626     file = new JetWebFile(stem, JetWebFile.XML);
00627     file = file.Archive();
00628     file = file.Zip();
00629 
00630     file = new JetWebFile(stem, JetWebFile.OUT);
00631     file = file.Archive();
00632     file = file.Zip();
00633 
00634     if (log.store()) {
00635         log.setStatus(LogFile.COMPLETED);
00636     }
00637     return true;
00638     }

void moveLogs Enumeration  logs,
String  newDir
[static]
 

Move all LogFiles in the given Enumeration to the directory given by the input String.

Definition at line 472 of file JobUtils.java.

References LogFile.getFile(), and LogFile.getStem().

00472                                                                 {
00473     
00474     String editDir = JetWebConfig.rootDirectory+"/"+newDir+"/";
00475 
00476     while (logs.hasMoreElements()){
00477         
00478         LogFile log = (LogFile)logs.nextElement();
00479 
00480         String xmlName = log.getStem()+".xml";
00481         File xml   = new File(xmlName); 
00482 
00483         String aidaName = log.getStem()+".aida";
00484         File aida   = new File(aidaName); 
00485 
00486         File file  = log.getFile();
00487 
00488         File newFile = new File(editDir+file.getName());
00489         file.renameTo(newFile);
00490 
00491         newFile = new File(editDir+xml.getName());
00492         xml.renameTo(newFile);
00493 
00494         newFile = new File(editDir+aida.getName());
00495         aida.renameTo(newFile);
00496 
00497         // Remove this logfile from the logfile table.
00498         DBJobManager.removeLogFile(log);
00499     }
00500     }

void removeBadPoints PredictedPlot  plot,
LogFile  log
throws JetWebException [static]
 

Set points to zero for runs with known bugs.

Definition at line 540 of file JobUtils.java.

00541                            {
00542     
00543     String logName = log.getFile().getName();
00544     String runLabel = logName.substring(0,1);
00545     int runNumber;
00546     int csnId = plot.getId();
00547     try {
00548         runNumber = Integer.parseInt(logName.substring(1,12));
00549     } catch (Exception e) {
00550         runNumber = 0;
00551         runLabel = "old";
00552     }
00553 
00554     //System.out.println(runSeries+","+runNumber);
00555 
00556     return;
00557     }

Enumeration selectPendingJobs  )  throws JetWebException [static]
 

Return the number of pending jobs completed by the given batch number.

Definition at line 575 of file JobUtils.java.

00575                                                                          {
00576     return DBJobManager.selectPendingJobs();
00577     }

int submit JobRequest  jreq  )  [static]
 

Submit this job. This method copies run script to the spool area for submission, rather than submitting them directly.

Returns:
outcome code
is Ok
invalid jobrequest
user does not have privilege
some other problem

Definition at line 593 of file JobUtils.java.

References JobRequest.getRequestingHost(), and JobRequest.setSubmitScript().

00593                                               { 
00594 
00595     String line;
00596     try {
00597         jreq.setSubmitScript(File.createTempFile("job",".ready."+jreq.getRequestingHost(),
00598                        new File(JetWebConfig.spoolDirName)));
00599     } catch (IOException e){
00600         return SubmitScriptHandler.CANTWRITESCRIPT;
00601     }
00602     
00603     //  pj.setScriptName(submitScript.getName()); // BMW: pj not created
00604 
00605     // make the submit script.
00606     return SubmitScriptHandler.make(jreq);
00607 
00608     }

void updateJobs  )  throws JetWebException [static]
 

Look for recently completed jobs in the run area and add them to the database.

Definition at line 34 of file JobUtils.java.

References Model.addAllRunSeries(), RunSeries.getConsistentModels(), PlotSelection.getFitPlots(), RunSeries.getGenerator(), RunSeries.getMCProcessType(), PlotSelection.getSumPlots(), PlotSelection.restrictCutCollection(), RunSeries.setCuts(), PlotSelection.setFitDefault(), PlotSelection.setFitPlots(), PlotSelection.setFitToBest(), PlotSelection.setSumDefault(), PlotSelection.setSumToBest(), Model.store(), and Fit.update().

00034                                                            {
00035 
00036     // Add all new LogFiles and return a vector of them:
00037 
00038 
00039     System.out.println("=== checking new files ===");
00040 
00041     Vector<LogFile> logFiles = getLogFiles
00042         (new File(JetWebConfig.jobInDirName));
00043 
00044     System.out.println("=== found vector of new files ===");
00045 
00046     // for each logfile find the models that are affected.
00047 
00048     for(LogFile log: logFiles){
00049 
00050         System.out.println("===          ");
00051 
00052         System.out.println("=== getting runseries from file ===");
00053 
00054         RunSeries rs = log.getRunSeries();
00055        
00056         System.out.println("=== found runseries ===");
00057 
00058         //Set the Cuts applied to this runseries
00059 
00060         System.out.println("=== setting cuts on runseries ===");
00061 
00062         rs.getGenerator().setCutCollection
00063         (log.getGenerator().getCutCollection());
00064         
00065         
00066 
00067         //set the smallest cut collection that fits all the plots 
00068         //matched by this runseries
00069 
00070         rs.setCuts();
00071         
00072 
00073         System.out.println("=== cuts set ===");
00074 
00075         System.out.println("=== getting consistent models ===");
00076 
00077         Vector<Model> changedModels = 
00078         rs.getConsistentModels();
00079         //make a new model if there isn't one
00080 
00081         System.out.println("=== got consistent models ===");
00082 
00083         if(changedModels.size()==0){
00084 
00085         System.out.println("JobUtils: Found no consistent Models");
00086 
00087         System.out.println("=== making and storing new model ===");
00088 
00089         Model model  = new Model(rs);
00090         model.store();
00091         changedModels.add(model);
00092 
00093         System.out.println("=== made and stored new model ===");
00094 
00095         }
00096 
00097         for(Model model: changedModels){
00098         
00099         System.out.println
00100             ("=== at start of loop over changed models ===");
00101 
00102         System.out.println("=== adding all runseries to model ===");
00103 
00104         model.addAllRunSeries();
00105 
00106         System.out.println("=== all runseries added ===");
00107 
00108         System.out.println("=== storing model ===");
00109 
00110         model.store();
00111 
00112         System.out.println("=== model stored ===");
00113 
00114         System.out.println("=== making new plotselection ===");
00115 
00116         PlotSelection sel = new PlotSelection();
00117 
00118         System.out.println("=== made new plotselection ===");
00119         System.out.println
00120             ("=== setting default plots in selection ===");
00121 
00122         sel.setFitDefault();
00123         sel.setSumDefault();
00124 
00125         System.out.println("=== default plots set ===");
00126 
00127         System.out.println("=== getting cuts from logfile ===");
00128 
00129         CutCollection phaseSpace = 
00130             log.getGenerator().getCutCollection();
00131 
00132         System.out.println("=== got cuts ===");
00133 
00134         System.out.println("=== restricting plotselection cuts ===");
00135 
00136         sel.restrictCutCollection(rs.getMCProcessType(),phaseSpace);
00137 
00138         System.out.println("=== done restricting cuts ===");
00139 
00140         Fit fit = null;
00141         boolean goodFit = false;
00142 
00143         try {
00144 
00145             System.out.println("=== making new fit ===");
00146 
00147             fit = new Fit(model,sel);
00148             goodFit = true;
00149 
00150             System.out.println("=== made new fit ===");
00151 
00152         } catch (JetWebException jwe) {         
00153             // Failed to build the default fit, so do the best we can.
00154 
00155 
00156             System.out.println("=== setting best plots ===");
00157 
00158             sel.setFitToBest(model);
00159             sel.setSumToBest(model);        
00160             sel.restrictCutCollection(rs.getMCProcessType(),phaseSpace);
00161 
00162             System.out.println("=== set best plots ===");
00163 
00164             if (sel.getFitPlots().size()==0){
00165             
00166             // None of the default fit plots have been simulated,
00167             // so just generate a fit
00168             // using all the plots which the Chi2 is used for.
00169 
00170             System.out.println
00171                 ("=== setting fit plots ===");
00172 
00173             sel.setFitPlots(sel.getSumPlots());
00174 
00175             System.out.println("=== fit plots set ===");
00176             }
00177             if (sel.getFitPlots().size()>0){
00178             try{
00179 
00180                 System.out.println("=== making new fit ===");
00181                 
00182                 fit = new Fit(model,sel);
00183                 goodFit = true;
00184 
00185                 System.out.println("=== new fit made ===");
00186 
00187             }catch (Throwable err){
00188                 System.out.println(err.getMessage());
00189             }
00190             }
00191         }
00192 
00193         if(goodFit){
00194             System.out.println("Now to update the fit and save it");
00195 
00196             System.out.println("=== updating fit ===");
00197             fit.update(false);
00198 
00199             System.out.println("=== fit updated ===");
00200 
00201             System.out.println("back from update");
00202         }
00203         }
00204     }
00205     
00206     return;
00207     }       

String zipIt String  name  )  throws JetWebException [static]
 

See whether the input file is already a zipped name (gzip) and if not, zip it. Return the name of the zipped file.

Definition at line 528 of file JobUtils.java.

References JetWebFile.directory(), JetWebFile.extension(), and JetWebFile.Zip().

00528                                                                    {
00529 
00530     JetWebFile file = new JetWebFile(name);
00531     
00532     file = file.Zip();
00533 
00534     return file.directory() + file + file.extension() + ".gz";
00535     }


The documentation for this class was generated from the following file:

Generated Wed Jan 17 09:14:27 GMT 2007