]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenSectionTask.java
Restructuring for better separation of Tool packages.
[mirror_edk2.git] / Tools / Source / FrameworkTasks / org / tianocore / framework / tasks / GenSectionTask.java
diff --git a/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenSectionTask.java b/Tools/Source/FrameworkTasks/org/tianocore/framework/tasks/GenSectionTask.java
deleted file mode 100644 (file)
index e329c0e..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-/** @file\r
- GenSectionTask class.\r
-\r
- GenSectionTask is to call GenSection.exe to generate Section.\r
\r
- Copyright (c) 2006, Intel Corporation\r
- All rights reserved. This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution.  The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
-**/\r
-\r
-package org.tianocore.framework.tasks;\r
-\r
-import java.io.ByteArrayOutputStream;\r
-import java.io.DataOutputStream;\r
-import java.io.File;\r
-import java.util.ArrayList;\r
-import java.util.Iterator;\r
-import java.util.List;\r
-\r
-import org.apache.tools.ant.BuildException;\r
-import org.apache.tools.ant.Project;\r
-import org.apache.tools.ant.Task;\r
-import org.apache.tools.ant.taskdefs.Execute;\r
-import org.apache.tools.ant.taskdefs.LogStreamHandler;\r
-import org.apache.tools.ant.types.Commandline;\r
-import org.tianocore.common.logger.EdkLog;\r
-\r
-public class GenSectionTask extends Task implements EfiDefine, Section, FfsTypes {\r
-    //\r
-    // Tool name\r
-    // \r
-    private final static String toolName = "GenSection";\r
-    //\r
-    // inputfile name\r
-    //\r
-    private FileArg inputFile = new FileArg();\r
-\r
-    //\r
-    // outputfile name\r
-    //\r
-    private FileArg outputFile = new FileArg();\r
-\r
-    //\r
-    // section type\r
-    //\r
-    private ToolArg sectionType = new ToolArg();\r
-\r
-    //\r
-    // version number\r
-    //\r
-    private ToolArg versionNum = new ToolArg();\r
-\r
-    //\r
-    // interface string\r
-    //\r
-    private ToolArg interfaceString = new ToolArg();\r
-\r
-    //\r
-    // Section file list\r
-    //\r
-    private List<Section> sectFileList = new ArrayList<Section>();\r
-\r
-    //\r
-    // flag indicated the <tool> element\r
-    //\r
-    private boolean haveTool = false;\r
-\r
-    /**\r
-      execute\r
-      \r
-      GenSectionTaks execute is to assemble tool command line & execute tool\r
-      command line.\r
-      \r
-      @throws BuildException\r
-    **/\r
-    public void execute() throws BuildException {\r
-        String command;\r
-        Project project = this.getOwningTarget().getProject();\r
-        //\r
-        // absolute path of efi tools\r
-        //\r
-        String path = project.getProperty("env.FRAMEWORK_TOOLS_PATH");\r
-        if (path == null) {\r
-            command = toolName;\r
-        } else {\r
-            command = path + File.separator + toolName;\r
-        }\r
-        //\r
-        // argument of tools\r
-        //\r
-        String argument = "" + inputFile + outputFile + sectionType + versionNum + interfaceString;\r
-        //\r
-        // return value of gensection execution\r
-        //\r
-        int revl = -1;\r
-\r
-        try {\r
-            Commandline cmdline = new Commandline();\r
-            cmdline.setExecutable(command);\r
-            cmdline.createArgument().setLine(argument);\r
-\r
-            LogStreamHandler streamHandler = new LogStreamHandler(this,\r
-                    Project.MSG_INFO, Project.MSG_WARN);\r
-            Execute runner = new Execute(streamHandler, null);\r
-\r
-            runner.setAntRun(project);\r
-            runner.setCommandline(cmdline.getCommandline());\r
-\r
-            EdkLog.log(this, inputFile.toFileList() + versionNum.getValue() \r
-                + interfaceString.getValue() + " => " + outputFile.toFileList());\r
-            EdkLog.log(this, EdkLog.EDK_VERBOSE, Commandline.toString(cmdline.getCommandline()));\r
-\r
-            revl = runner.execute();\r
-            if (EFI_SUCCESS == revl) {\r
-                EdkLog.log(this, EdkLog.EDK_VERBOSE, toolName + " succeeded!");\r
-            } else {\r
-                //\r
-                // command execution fail\r
-                //\r
-                EdkLog.log(this, EdkLog.EDK_INFO, "ERROR = " + Integer.toHexString(revl));\r
-                throw new BuildException(toolName + " failed!");\r
-            }\r
-        } catch (Exception e) {\r
-            throw new BuildException(e.getMessage());\r
-        }\r
-    }\r
-\r
-    /**\r
-      getInputFile\r
-      \r
-      This function is to get class member "inputFile".\r
-      \r
-      @return                    name of input file\r
-    **/\r
-    public String getInputFile() {\r
-        return this.inputFile.getValue();\r
-    }\r
-\r
-    /**\r
-      setInputFile\r
-      \r
-      This function is to set class member "inputFile".\r
-      \r
-      @param inputFile            name of input file\r
-    **/\r
-    public void setInputFile(String inputFile) {\r
-        this.inputFile.setArg(" -i ", inputFile);\r
-    }\r
-\r
-    /**\r
-      getOutputFile\r
-      \r
-      This function is to get class member "outputFile".\r
-      \r
-      @return                      name of output file\r
-    **/\r
-    public String getOutputFile() {\r
-        return this.outputFile.getValue();\r
-    }\r
-\r
-    /**\r
-      setOutputfile\r
-      \r
-      This function is to set class member "outputFile".\r
-      @param  outputFile            name of output file\r
-    **/\r
-    public void setOutputfile(String outputFile) {\r
-        this.outputFile.setArg(" -o ", outputFile);\r
-    }\r
-\r
-    /**\r
-      getSectionType\r
-      \r
-      This function is to get class member "sectionType".\r
-      \r
-      @return                        sectoin type\r
-    **/\r
-    public String getSectionType() {\r
-        return this.sectionType.getValue();\r
-    }\r
-\r
-    /**\r
-      setSectionType\r
-      \r
-      This function is to set class member "sectionType".\r
-      \r
-      @param sectionType              section type\r
-    **/\r
-    public void setSectionType(String sectionType) {\r
-        this.sectionType.setArg(" -s ", sectionType);\r
-    }\r
-\r
-    /**\r
-      getVersionNum\r
-      \r
-      This function is to get class member "versionNum".\r
-      @return                         version number\r
-    **/\r
-    public String getVersionNum() {\r
-        return this.versionNum.getValue();\r
-    }\r
-\r
-    /**\r
-      setVersionNume\r
-      \r
-      This function is to set class member "versionNum".\r
-      @param versionNum               version number\r
-    **/\r
-    public void setVersionNum(String versionNum) {\r
-        this.versionNum.setArg(" -v ", versionNum);\r
-    }\r
-\r
-    /**\r
-      getInterfaceString\r
-      \r
-      This function is to get class member "interfaceString".\r
-      @return                         interface string\r
-    **/\r
-    public String getInterfaceString() {\r
-        return this.interfaceString.getValue();\r
-    }\r
-\r
-    /**\r
-      setInterfaceString\r
-      \r
-      This funcion is to set class member "interfaceString".\r
-      @param interfaceString            interface string\r
-    **/\r
-    public void setInterfaceString(String interfaceString) {\r
-        this.interfaceString.setArg(" -a ", "\"" + interfaceString + "\"");\r
-    }\r
-    \r
-    /**\r
-      addSectFile\r
-      \r
-      This function is to add sectFile to list.\r
-      \r
-      @param sectFile     instance of sectFile.\r
-    **/\r
-    public void addSectFile(SectFile sectFile){\r
-        this.sectFileList.add(sectFile);\r
-    }\r
-\r
-    /**\r
-      setTool\r
-      \r
-      This function is to set the class member "Tool";\r
-      \r
-      @param tool \r
-    **/\r
-    public void addTool(Tool tool) {\r
-        this.sectFileList.add(tool);\r
-        this.haveTool = true;\r
-    }\r
-    \r
-    /**\r
-      addGenSection\r
-      \r
-      This function is to add GenSectin element to list\r
-      @param task         Instance of genSection\r
-    **/\r
-    public void addGenSection(GenSectionTask task){\r
-        this.sectFileList.add(task);\r
-    }\r
-    \r
-    public void toBuffer(DataOutputStream buffer){\r
-        //\r
-        // Search SectionList find earch section and call it's\r
-        // ToBuffer function.\r
-        //\r
-        if (this.sectionType.getValue().equalsIgnoreCase(\r
-                "EFI_SECTION_COMPRESSION")\r
-                && !this.haveTool) {\r
-            Section sect;\r
-\r
-            //\r
-            // Get section file in compress node.\r
-            //\r
-            try {\r
-                ByteArrayOutputStream bo = new ByteArrayOutputStream();\r
-                DataOutputStream Do = new DataOutputStream(bo);\r
-\r
-                //\r
-                // Get each section which under the compress {};\r
-                // And add it is contains to File;\r
-                //\r
-                Iterator SectionIter = this.sectFileList.iterator();\r
-                while (SectionIter.hasNext()) {\r
-                    sect = (Section) SectionIter.next();\r
-\r
-                    //\r
-                    // Call each section class's toBuffer function.\r
-                    //\r
-                    try {\r
-                        sect.toBuffer(Do);\r
-                    } catch (BuildException e) {\r
-                        System.out.print(e.getMessage());\r
-                        throw new BuildException(\r
-                                "Compress.toBuffer failed at section");\r
-                    } finally {\r
-                        if (Do != null){\r
-                            Do.close();\r
-                        }\r
-                    }\r
-                }\r
-                //\r
-                // Call compress\r
-                //\r
-                byte[] fileBuffer = bo.toByteArray();\r
-\r
-                synchronized (CompressSection.semaphore) {\r
-                    Compress myCompress = new Compress(fileBuffer,\r
-                            fileBuffer.length);\r
-\r
-                    //\r
-                    // Add Compress header\r
-                    //\r
-                    CompressHeader Ch = new CompressHeader();\r
-                    Ch.SectionHeader.Size[0] = (byte) ((myCompress.outputBuffer.length + Ch\r
-                            .GetSize()) & 0xff);\r
-                    Ch.SectionHeader.Size[1] = (byte) (((myCompress.outputBuffer.length + Ch\r
-                            .GetSize()) & 0xff00) >> 8);\r
-                    Ch.SectionHeader.Size[2] = (byte) (((myCompress.outputBuffer.length + Ch\r
-                            .GetSize()) & 0xff0000) >> 16);\r
-                    Ch.SectionHeader.type = (byte) EFI_SECTION_COMPRESSION;\r
-\r
-                    //\r
-                    // Note: The compressName was not efsfective now. Using the\r
-                    // EFI_STANDARD_COMPRSSION for compressType .\r
-                    // That is follow old Genffsfile tools. Some code will be\r
-                    // added for\r
-                    // the different compressName;\r
-                    //\r
-                    Ch.UncompressLen = fileBuffer.length;\r
-                    Ch.CompressType = EFI_STANDARD_COMPRESSION;\r
-\r
-                    //\r
-                    // Change header struct to byte buffer\r
-                    //\r
-                    byte[] headerBuffer = new byte[Ch.GetSize()];\r
-                    Ch.StructToBuffer(headerBuffer);\r
-\r
-                    //\r
-                    // First add CompressHeader to Buffer, then add Compress\r
-                    // data.\r
-                    //\r
-                    buffer.write(headerBuffer);\r
-                    buffer.write(myCompress.outputBuffer);\r
-\r
-                    //\r
-                    // Buffer 4 Byte aligment\r
-                    //\r
-                    int size = Ch.GetSize() + myCompress.outputBuffer.length;\r
-\r
-                    while ((size & 0x03) != 0) {\r
-                        size++;\r
-                        buffer.writeByte(0);\r
-                    }\r
-                }\r
-            } catch (Exception e) {\r
-                throw new BuildException("GenSection<SectionType=EFI_SECTION_COMPRESSION> to Buffer  failed!\n");\r
-            } \r
-        } else {\r
-            Section sect;\r
-            Iterator sectionIter = this.sectFileList.iterator();\r
-            while (sectionIter.hasNext()) {\r
-                sect = (Section) sectionIter.next();\r
-                try {\r
-                    //\r
-                    // The last section don't need 4 byte ffsAligment.\r
-                    //\r
-                    sect.toBuffer(buffer);\r
-                } catch (Exception e) {\r
-                    throw new BuildException(e.getMessage());\r
-                }\r
-            }\r
-        }\r
-    }\r
-}\r