⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jembossauthserver.java

📁 emboss的linux版本的源代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
      matrices.append(dataFile[i]+"\n");    showdbOut.add("codons");    showdbOut.add(matrices.toString());    return showdbOut;  }  /**  *  * Run an emboss application  * @param embossCommand        command line to run  * @param options              options  * @param inFiles              input files  * @param userName             userName  * @param passwd               passwd  * @return 			output files from application run  *  */  public synchronized Vector run_prog(String embossCommand, String options,                            Vector inFiles, String userName, byte[] passwd)  {    tmproot = tmproot.concat(userName+fs);    Ajax aj = new Ajax();    Vector result = new Vector(6,1);    if(!verifyUser(aj,userName,passwd,result))      return result;    String dat = new Date().toString();    dat = dat.replace(':','_');    //disallow multiple command constructions    if(embossCommand.indexOf(";") > -1)     {      String warn = new String(userName+":: "+dat+                               " ERROR: Disallowed command syntax "+                               embossCommand);      appendToLogFile(warn,errorLog);      result.add("msg");      result.add(warn);      result.add("status");      result.add("1");      result.trimToSize();      return result;    }    //trap anything that is trying to write to stdout    int stdIndex = embossCommand.indexOf(" stdout ");    if(stdIndex > -1)    {      String startCmd = embossCommand.substring(0,stdIndex+7);      String endCmd = embossCommand.substring(stdIndex+8);      embossCommand = startCmd.concat("file ");      embossCommand = embossCommand.concat(endCmd);    }    boolean ok = false; // listing of users root directory    try    {       aj.setErrStd();      ok = aj.listDirs(userName,passwd,environ,tmproot);    }    catch(Exception exp){}// create the results directory structure for this user if necessary    if(!ok)    {      try      {        aj.setErrStd();        ok = aj.makeDir(userName,passwd,environ,tmproot);      }      catch(Exception exp){}//    if(ok && aj.getErrStd().equals(""))//    Linux fix - ignore stderr here      if(ok)        appendToLogFile(userName+":: "+dat+" Created directory "+tmproot,errorLog);      else      {        String warnmsg = new String(userName+":: "+dat+" Failed to create dir "+tmproot+                                    "\nSTDERR :"+ aj.getErrStd());        appendToLogFile(warnmsg,errorLog);        result.add("msg");        result.add(warnmsg);        result.add("status");        result.add("1");        result.trimToSize();        return result;      }    }//get a unique project name    String appl = embossCommand.substring(0,embossCommand.indexOf(" "));    Random rnd = new Random();    String project = new String(tmproot + appl + "_" +         dat.replace(' ','_') + "_" + rnd.nextInt(99999));    try    {      aj.setErrStd();      ok = aj.makeDir(userName,passwd,environ,project);    }    catch(Exception exp){}    if(!ok)       return returnError(aj,"run_prog failed to create dir "+                          project,userName);//create description file & input files    StringBuffer descript = new StringBuffer();    descript.append("EMBOSS run details for ");    descript.append(appl);    descript.append(ls);    descript.append(ls);    descript.append("Parameters Used: ");    descript.append(embossCommand);    descript.append(ls);    descript.append("Started: ");    descript.append(dat);    descript.append(ls);    descript.append(ls);    descript.append("Input files:");    descript.append(ls);//write input files to project directory    Vector inFileNames = new Vector();    for(Enumeration e = inFiles.elements() ; e.hasMoreElements() ;)    {      String thiskey = (String)e.nextElement();  // file name      inFileNames.add(thiskey);      descript.append(project);      descript.append(fs);      descript.append(thiskey);      descript.append(ls);      ok = false;      try      {        aj.setErrStd();        ok = aj.putFile(userName,passwd,environ,                 new String(project+fs+thiskey),                 (byte[])e.nextElement());      }      catch(Exception exp){}      if(!ok)        return returnError(aj,"Failed to make file "+                           project+fs+thiskey,userName);    }//write decription file to project directory    ok = false;    try    {      aj.setErrStd();      ok = aj.putFile(userName,passwd,environ,           new String(project + fs + ".desc"),           descript.toString().getBytes());    }    catch(Exception exp){}    if(!ok)      return returnError(aj,"Failed to make file "+                         project+fs+".desc",userName);    new AppendToLogFileThread(userName+":: "+dat+" "+options+                              " "+embossCommand,logFile,true).start();    result.add("cmd");    result.add(embossCommand);    result.add("status");    result.add("0");    File projectDir = new File(project);    if(options.toLowerCase().indexOf("interactive") > -1)    {      ok=true;      try      {        aj.setErrStd();        ok = aj.forkEmboss(userName,passwd,environ,                             embossCommand,project);      }      catch(Exception exp){}  //include any stderr from EMBOSS      result.add("msg");      result.add(aj.getErrStd());//add a finished file      try      {        aj.setErrStd();        ok = aj.putFile(userName,passwd,environ,             new String(project+fs+".finished"),            (new Date()).toString().getBytes());      }      catch(Exception exp){}      if(!ok)        return returnError(aj,"putFile error in run_prog",userName);//get the output files      result = loadFilesContent(aj,userName,passwd,                      projectDir,project,result,inFileNames);      for(int i=0;i<passwd.length;i++)        passwd[i] = '\0';    }    else      //batch or background    {// COMMENT THIS LINE TO USE QUEUEING SOFTWARE      boolean lforkB = aj.forkBatch(userName,passwd,environ,                                    embossCommand,project);// UNCOMMENT ONE OF THESE LINE TO USE QUEUEING SOFTWARE//    runAsBatch(aj,userName,passwd,project,quoteMe(embossCommand));//    runAsGNQSBatch(aj,userName,passwd,project,quoteMe(embossCommand));//    runAsPBSBatch(aj,userName,passwd,project,quoteMe(embossCommand));      result.add("msg");      result.add("");      result.add("job_submitted");      result.add("Job " + projectDir.getName() + "submitted.");      result.add("jobid");      result.add(projectDir.getName());      result.add("description");      result.add(descript+ls+"Application pending"+ls);    }    return result;  }  /**  *  * Quote all tokens ready for shell scripts  * @param s	text to quote  * @return	quoted text  *  */  private String quoteMe(String s)  {    StringBuffer qs = new StringBuffer();    StringTokenizer st = new StringTokenizer(s.trim()," ");    String tok;    while (st.hasMoreTokens())    {      tok = st.nextToken().trim();      if(!tok.equals(" "))      {        qs.append("\"");        qs.append(tok);        qs.append("\" ");      }    }    return qs.toString();  }  /**  *  * Submit to a OpenPBS batch queue. This method creates a script for  * submission to a batch queueing system.  * @param aj			ajax/jni  * @param userName		username  * @param passwd		passwd  * @param project		project directory  * @param embossCommand	emboss command  *  */  private void runAsPBSBatch(Ajax aj, String userName, byte[] passwd,                              String project, String embossCommand)  {    StringBuffer scriptIt = new StringBuffer();    scriptIt.append("#PBS -j oe\n");    scriptIt.append("#PBS -S /bin/sh\n");    scriptIt.append(environ.replace(' ','\n'));    scriptIt.append("\nexport PATH\n");    scriptIt.append("export PLPLOT_LIB\n");    scriptIt.append("export EMBOSS_DATA\n");    scriptIt.append("cd "+project+"\n"+embossCommand+"\n");    scriptIt.append("date > "+project+"/.finished\n");    String scriptFile = new String(project+fs+".scriptfile");    boolean ok = false;    try    {      ok = aj.putFile(userName,passwd,environ,scriptFile,                      scriptIt.toString().getBytes());    }    catch(Exception exp){}    if(!ok)    {      String dat = new Date().toString();      dat = dat.replace(':','_');      appendToLogFile(userName+":: "+dat+                      " Failed to make file "+project+fs+".scriptfile\n"+                      "STDERR "+aj.getErrStd()+"\n"+                      "STDOUT "+aj.getOutStd(),errorLog);    }    boolean lfork=true;    try    {      //EDIT batchCommand      String batchCommand = "/hgmp/local/openpbs/bin/qsub "+scriptFile;      lfork = aj.forkEmboss(userName,passwd,environ,                            batchCommand,project);    }    catch(Exception exp){}    if(!lfork || !aj.getErrStd().equals(""))    {      String dat = new Date().toString();      dat = dat.replace(':','_');      appendToLogFile(userName+":: "+dat+                      " Fork batch process failed "+embossCommand,errorLog);    }    return;  }  /**  *  * Submit to a Generic NQS batch queue. This method creates a script for  * submission to a batch queueing system.  * @param aj                   ajax/jni  * @param userName             username  * @param passwd               passwd  * @param project              project directory  * @param embossCommand        emboss command  *  */  private void runAsGNQSBatch(Ajax aj, String userName, byte[] passwd,                              String project, String embossCommand)  {    String scriptIt = "#QSUB -q jemboss-queue\n";    scriptIt = scriptIt.concat("#QSUB -s /bin/sh\n");    scriptIt = scriptIt.concat("#QSUB -eo -o report.nqs\n");    scriptIt = scriptIt.concat(environ.replace(' ','\n'));    scriptIt = scriptIt.concat("\nexport PATH\n");    scriptIt = scriptIt.concat("export PLPLOT_LIB\n");    scriptIt = scriptIt.concat("export EMBOSS_DATA\n");    scriptIt = scriptIt.concat("cd "+project+"\n"+embossCommand+"\n");    scriptIt = scriptIt.concat("date > "+project+"/.finished\n");    String scriptFile = new String(project+fs+".scriptfile");    boolean ok = false;    try    {      ok = aj.putFile(userName,passwd,environ,scriptFile,                      scriptIt.getBytes());    }    catch(Exception exp){}    if(!ok)    {      String dat = new Date().toString();      dat = dat.replace(':','_');      appendToLogFile(userName+":: "+dat+" Failed to make file "+project+fs+".scriptfile",errorLog);      appendToLogFile(userName+":: "+dat+" STDERR "+aj.getErrStd(),errorLog);      appendToLogFile(userName+":: "+dat+" STDOUT "+aj.getOutStd(),errorLog);    }    boolean lfork=true;    try    {      //EDIT batchCommand      String batchCommand = "/hgmp/local/nqs/bin/qsub "+scriptFile;      lfork = aj.forkEmboss(userName,passwd,environ,                            batchCommand,project);    }    catch(Exception exp){}    if(!lfork || !aj.getErrStd().equals(""))    {      String dat = new Date().toString();      dat = dat.replace(':','_');      appendToLogFile(userName+":: "+dat+                      " Fork batch process failed "+embossCommand,errorLog);    }        return;  }  /**  *  * Submit to a batch queue  * @param aj                   ajax/jni  * @param userName             username  * @param passwd               passwd  * @param project              project directory  * @param embossCommand        emboss command  *  */  private void runAsBatch(Ajax aj, String userName, byte[] passwd,                    String project, String embossCommand)  {    String scriptIt = "#!/bin/sh\n";    scriptIt = scriptIt.concat(environ.replace(' ','\n'));    scriptIt = scriptIt.concat("\nexport PATH\n");    scriptIt = scriptIt.concat("export PLPLOT_LIB\n");    scriptIt = scriptIt.concat("export EMBOSS_DATA\n");    scriptIt = scriptIt.concat("cd "+project+"\n"+embossCommand+"\n");    scriptIt = scriptIt.concat("date > "+project+"/.finished\n");        boolean ok = false;    try    {      ok = aj.putFile(userName,passwd,environ,               new String(project+fs+".scriptfile"),               scriptIt.getBytes());    }    catch(Exception exp){}    if(!ok)    {      String dat = new Date().toString();      dat = dat.replace(':','_');          appendToLogFile(userName+":: "+dat+" Failed to make file "+project+fs+".scriptfile",errorLog);      appendToLogFile(userName+":: "+dat+" STDERR "+aj.getErrStd(),errorLog);      appendToLogFile(userName+":: "+dat+" STDOUT "+aj.getOutStd(),errorLog);    }      boolean lfork=true;    try    {      //EDIT batchCommand       String batchCommand = "/bin/batchQueue.sh " + project +                            "/.scriptfile ";                               lfork = aj.forkEmboss(userName,passwd,environ,                            batchCommand,project);    }    catch(Exception exp){}    if(!lfork || !aj.getErrStd().equals(""))    {      String dat = new Date().toString();      dat = dat.replace(':','_');      appendToLogFile(userName+":: "+dat+                      " Fork batch process failed "+embossCommand,errorLog);    }    return;  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -