Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/LibreOffice/qadevOOo/runner/helper/   (Office von Apache Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 12 kB image not shown  

Quelle  StreamSimulator.java   Sprache: JAVA

 
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */


package helper;

import com.sun.star.uno.UnoRuntime;


import com.sun.star.ucb.XSimpleFileAccess;

/**
 * It simulates an input and output stream and
 * implements the interfaces XInputStream, XOutputStream.
 * So it can be used for testing loading/saving of documents
 * using streams instead of URLs.
 *
 */

public class StreamSimulator implements com.sun.star.io.XInputStream    ,
                                        com.sun.star.io.XOutputStream   ,
                                        com.sun.star.io.XSeekable
{

    /**
     * @member  m_sFileName     name of the corresponding file on disk
     * @member  m_xInStream     the internal input stream for reading
     * @member  m_xOutStream    the internal input stream for writing
     * @member  m_xSeek         points at runtime to m_xInStream or m_xOutStream and make it seekable
     *
     * @member  //m_aProtocol     the external set protocol object for logging messages
     * @member  m_bInWasUsed    indicates, that the input stream interface was used
     * @member  m_bOutWasUsed   indicates, that the output stream interface was used
     */


    private com.sun.star.io.XInputStream    m_xInStream     ;
    private com.sun.star.io.XOutputStream   m_xOutStream    ;
    private com.sun.star.io.XSeekable       m_xSeek         ;





    /**
     * construct a new instance of this class
     * It set the name of the corresponding file on disk, which
     * should be source or target for the following operations on
     * this object. And it regulate if it should function as
     * input or output stream.
     *
     * @param   sFileName
     *              name of the file on disk
     *              Will be used as source (if param bInput==true)
     *              or as target (if param bInput==false).
     *
     * @param   bInput
     *              it specify, which interface should work at this object.
     *              <TRUE/>  => we simulate an input stream
     *              <FALSE/> => we simulate an output stream
     *
     * @throw   com.sun.star.io.NotConnectedException
     *              in case the internal streams to the file on disk couldn't established.
     *              They are necessary. Otherwise this simulator can't really work.
     */

    public StreamSimulator( String  sFileName , boolean bInput ,
        lib.TestParameters param   ) throws com.sun.star.io.NotConnectedException
    {
        try
        {
            XSimpleFileAccess xHelper = UnoRuntime.queryInterface(XSimpleFileAccess.class,
                param.getMSF().createInstance("com.sun.star.ucb.SimpleFileAccess"));

            if (xHelper == null)
                throw new com.sun.star.io.NotConnectedException("ucb helper not available. Can't create streams.");

            if (bInput)
            {
                m_xInStream = xHelper.openFileRead(sFileName);
                m_xSeek = UnoRuntime.queryInterface(
                            com.sun.star.io.XSeekable.class,
                            m_xInStream);
            }
            else
            {
                m_xOutStream = xHelper.openFileWrite(sFileName);
                m_xSeek = UnoRuntime.queryInterface(
                            com.sun.star.io.XSeekable.class,
                            m_xOutStream);
            }
        }
        catch(com.sun.star.uno.Exception exUno)
        {
            throw new com.sun.star.io.NotConnectedException(exUno);
        }
    }

    /**
     * following methods simulates the XInputStream.
     * The notice all actions inside the internal protocol
     * and try to map all necessary functions to the internal
     * open in-stream.
     */

    public int readBytes( /*OUT*/ byte[][] lData        ,
                          /*IN*/  int      nBytesToRead ) throws com.sun.star.io.NotConnectedException      ,
                                                                 com.sun.star.io.BufferSizeExceededException,
                                                                 com.sun.star.io.IOException
    {
        if (m_xInStream == null)
        {
            throw new com.sun.star.io.NotConnectedException("stream not open");
        }

        int nRead = 0;
        try
        {
            nRead = m_xInStream.readBytes(lData,nBytesToRead);
        }
        catch (com.sun.star.io.NotConnectedException       exConnect) {
        }
        catch (com.sun.star.io.BufferSizeExceededException exBuffer ) {
        }
        catch (com.sun.star.io.IOException                 exIO     ) {
        }
        catch (com.sun.star.uno.RuntimeException           exRuntime) {
        }

        return nRead;
    }



    public int readSomeBytes( /*OUT*/ byte[][] lData           ,
                              /*IN*/  int      nMaxBytesToRead ) throws com.sun.star.io.NotConnectedException       ,
                                                                        com.sun.star.io.BufferSizeExceededException ,
                                                                        com.sun.star.io.IOException
    {
        if (m_xInStream == null)
        {
            throw new com.sun.star.io.NotConnectedException("stream not open");
        }

        int nRead = 0;
        try
        {
            nRead = m_xInStream.readSomeBytes(lData,nMaxBytesToRead);
        }
        catch (com.sun.star.io.NotConnectedException       exConnect) {
        }
        catch (com.sun.star.io.BufferSizeExceededException exBuffer ) {
        }
        catch (com.sun.star.io.IOException                 exIO     ) {
        }
        catch (com.sun.star.uno.RuntimeException           exRuntime) {
        }

        return nRead;
    }



    public void skipBytes( /*IN*/ int nBytesToSkip ) throws com.sun.star.io.NotConnectedException       ,
                                                            com.sun.star.io.BufferSizeExceededException ,
                                                            com.sun.star.io.IOException
    {
        if (m_xInStream == null)
        {
            throw new com.sun.star.io.NotConnectedException("stream not open");
        }

        try
        {
            m_xInStream.skipBytes(nBytesToSkip);
        }
        catch (com.sun.star.io.NotConnectedException       exConnect) {
        }
        catch (com.sun.star.io.BufferSizeExceededException exBuffer ) {
        }
        catch (com.sun.star.io.IOException                 exIO     ) {
        }
        catch (com.sun.star.uno.RuntimeException           exRuntime) {
        }
    }



    public int available() throws com.sun.star.io.NotConnectedException,
                                  com.sun.star.io.IOException
    {
        if (m_xInStream == null)
        {
            throw new com.sun.star.io.NotConnectedException("stream not open");
        }

        int nAvailable = 0;
        try
        {
            nAvailable = m_xInStream.available();
        }
        catch (com.sun.star.io.NotConnectedException exConnect) {
        }
        catch (com.sun.star.io.IOException           exIO     ) {
        }
        catch (com.sun.star.uno.RuntimeException     exRuntime) {
        }

        return nAvailable;
    }



    public void closeInput() throws com.sun.star.io.NotConnectedException,
                                    com.sun.star.io.IOException
    {
        if (m_xInStream == null)
        {
            throw new com.sun.star.io.NotConnectedException("stream not open");
        }

        try
        {
            m_xInStream.closeInput();
        }
        catch (com.sun.star.io.NotConnectedException exConnect) {
        }
        catch (com.sun.star.io.IOException           exIO     ) {
        }
        catch (com.sun.star.uno.RuntimeException     exRuntime) {
        }
    }


    /**
     * following methods simulates the XOutputStream.
     * The notice all actions inside the internal protocol
     * and try to map all necessary functions to the internal
     * open out-stream.
     */

    public void writeBytes( /*IN*/byte[] lData ) throws com.sun.star.io.NotConnectedException       ,
                                                        com.sun.star.io.BufferSizeExceededException ,
                                                        com.sun.star.io.IOException
    {
        if (m_xOutStream == null)
        {
            throw new com.sun.star.io.NotConnectedException("stream not open");
        }

        try
        {
            m_xOutStream.writeBytes(lData);
        }
        catch (com.sun.star.io.NotConnectedException       exConnect) {
        }
        catch (com.sun.star.io.BufferSizeExceededException exBuffer ) {
        }
        catch (com.sun.star.io.IOException                 exIO     ) {
        }
        catch (com.sun.star.uno.RuntimeException           exRuntime) {
        }
    }



    public void flush() throws com.sun.star.io.NotConnectedException        ,
                               com.sun.star.io.BufferSizeExceededException  ,
                               com.sun.star.io.IOException
    {
        if (m_xOutStream == null)
        {
            throw new com.sun.star.io.NotConnectedException("stream not open");
        }

        try
        {
            m_xOutStream.flush();
        }
        catch (com.sun.star.io.NotConnectedException       exConnect) {
        }
        catch (com.sun.star.io.BufferSizeExceededException exBuffer ) {
        }
        catch (com.sun.star.io.IOException                 exIO     ) {
        }
        catch (com.sun.star.uno.RuntimeException           exRuntime) {
        }
    }



    public void closeOutput() throws com.sun.star.io.NotConnectedException      ,
                                     com.sun.star.io.BufferSizeExceededException,
                                     com.sun.star.io.IOException
    {
        if (m_xOutStream == null)
        {
            throw new com.sun.star.io.NotConnectedException("stream not open");
        }

        try
        {
            m_xOutStream.closeOutput();
        }
        catch (com.sun.star.io.NotConnectedException       exConnect) {
        }
        catch (com.sun.star.io.BufferSizeExceededException exBuffer ) {
        }
        catch (com.sun.star.io.IOException                 exIO     ) {
        }
        catch (com.sun.star.uno.RuntimeException           exRuntime) {
        }
    }


    /**
     * following methods simulates the XSeekable.
     * The notice all actions inside the internal protocol
     * and try to map all necessary functions to the internal
     * open stream.
     */

    public void seek( /*IN*/long nLocation ) throws com.sun.star.lang.IllegalArgumentException,
                                                    com.sun.star.io.IOException
    {
        if (m_xSeek == null)
        {
            throw new com.sun.star.io.IOException("stream not seekable");
        }

        try
        {
            m_xSeek.seek(nLocation);
        }
        catch (com.sun.star.lang.IllegalArgumentException exArg    ) {
        }
        catch (com.sun.star.io.IOException                exIO     ) {
        }
        catch (com.sun.star.uno.RuntimeException          exRuntime) {
        }
    }



    public long getPosition() throws com.sun.star.io.IOException
    {
        if (m_xSeek == null)
        {
            throw new com.sun.star.io.IOException("stream not seekable");
        }

        long nPos = 0;
        try
        {
            nPos = m_xSeek.getPosition();
        }
        catch (com.sun.star.io.IOException       exIO     ) {
        }
        catch (com.sun.star.uno.RuntimeException exRuntime) {
        }

        return nPos;
    }



    public long getLength() throws com.sun.star.io.IOException
    {
        if (m_xSeek == null)
        {
            throw new com.sun.star.io.IOException("stream not seekable");
        }

        long nLen = 0;
        try
        {
            nLen = m_xSeek.getLength();
        }
        catch (com.sun.star.io.IOException       exIO     ) {
        }
        catch (com.sun.star.uno.RuntimeException exRuntime) {
        }

        return nLen;
    }
}

Messung V0.5
C=93 H=98 G=95

¤ Dauer der Verarbeitung: 0.5 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.