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

📄 archiveparser.java

📁 一个java工作流引擎
💻 JAVA
字号:
package org.jbpm.par;

import java.io.*;
import java.util.*;
import java.util.jar.*;
import org.apache.commons.logging.*;
import org.jbpm.*;
import org.jbpm.util.io.*;
import org.jbpm.model.definition.impl.*;
import org.jbpm.persistence.*;

public class ArchiveParser {
  
  private static Log log = LogFactory.getLog(ArchiveParser.class);
  
  private Collection files = new ArrayList();
  private DefinitionImpl definition = null;
  
  public ArchiveParser(JarInputStream processArchiveStream) throws IOException, JpdlException {
    JarEntry entry = processArchiveStream.getNextJarEntry();
    while ( entry != null ) {
      
      if ( "processdefinition.xml".equals( entry.getName() ) ) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        IoUtil.transfer( processArchiveStream, baos );
        definition = DefinitionParser.parse( new ByteArrayInputStream( baos.toByteArray() ) ); 
      } else {
        if ( ! entry.isDirectory() ) {
          FileImpl file = new FileImpl();
          file.setName( entry.getName() );
          file.setBytes( IoUtil.readStream( processArchiveStream ) );
          files.add( file );
        }
      }

      entry = processArchiveStream.getNextJarEntry();
    }
    
    if ( definition == null ) {
      throw new JpdlException( "no processdefinition.xml in process archive" ); 
    }
  }
  
	public DefinitionImpl getDefinition() {
		return definition;
	}

	public Collection getFiles() {
		return files;
	}

  public void storeFiles( Long definitionId, FileMgr fileMgr ) {
    Iterator iter = files.iterator();
    while (iter.hasNext()) {
      FileImpl file = (FileImpl) iter.next();
      file.setDefinitionId( definitionId );
      fileMgr.storeBytes( definitionId, file.getName(), file.getBytes() );
    }
  }
}

⌨️ 快捷键说明

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