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

📄 structureddocumentfactory.java

📁 jxme的一些相关程序,主要是手机上程序开发以及手机和计算机通信的一些程序资料,程序编译需要Ant支持
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     *  by itself.
     *
     *  @since JXTA 1.0
     **/
    private StructuredDocumentFactory() {}

    /**
     *  Registers the pre-defined set of StructuredDocument sub-classes so that
     *  this factory can construct them.
     *
     *  @since JXTA 1.0
     *
     *  @return boolean true if at least one of the StructuredDocument sub-classes could
     *  be registered otherwise false.
     **/
    private boolean doLoadProperty() {
        try {
            return registerFromResources( "net.jxta.impl.config",
            "StructuredDocumentInstanceTypes" );
        }
        catch ( MissingResourceException notFound ) {
            if (LOG.isEnabledFor(Priority.WARN))
                LOG.warn( "Could not find net.jxta.impl.config properties file!" );
            return false;
        }
    }

    /**
     *  Used by ClassFactory methods to get the mapping of Mime Types to
     *  constructors.
     *
     *  @since JXTA 1.0
     *
     *  @return Hastable the hashtable containing the mappings.
     **/
    protected Hashtable getAssocTable() {
        return encodings;
    }

    /**
     * Used by ClassFactory methods to ensure that all keys used with the
     * mapping are of the correct type.
     *
     *  @since JXTA 1.0
     *
     *  @return Class object of the key type.
     **/
    protected Class getClassForKey() {
        return java.lang.String.class;
    }

    /**
     *  Used by ClassFactory methods to ensure that all of the instantiators
     *  which are registered with this factory have the correct interface.
     *
     *  @since JXTA 1.0
     *
     *  @return Class object of the "Factory" type.
     **/
    protected Class getClassOfInstantiators() {
        // our key is the doctype names.
        return Instantiator.class;
    }

    /**
     *  Register a class with the factory from its class name. We override the
     *  standard implementation to get the mime type from the class and
     *  use that as the key to register the class with the factory.
     *
     *  @since JXTA 1.0
     *
     *  @param className The class name which will be regiestered.
     *  @return boolean true if the class was registered otherwise false.
     **/
    protected boolean registerAssoc( String className ) {
        boolean registeredSomething = false;

        //LOG.debug( "Registering : " + className );

        try {
            Class docClass = Class.forName( className );

            Instantiator instantiator = (Instantiator)
            (docClass.getField("INSTANTIATOR").get(null));

            MimeMediaType [] mimeTypes = instantiator.getSupportedMimeTypes();

            for( int eachType = 0; eachType < mimeTypes.length; eachType++ ) {
                //LOG.debug( "   Registering Type : " + mimeTypes[eachType].getMimeMediaType() );

                registeredSomething |= registerInstantiator(
                    mimeTypes[eachType],
                    instantiator );
            }
        }
        catch( Exception all ) {
            if (LOG.isEnabledFor(Priority.WARN))
                LOG.warn( "Failed to register '" + className + "'", all );
        }

        return registeredSomething;
    }

    /**
     *  Returns the prefered extension for a given mime-type. If there is no
     *  mapping or no prefered extension for this mimetype then null is
     *  returned.
     *
     *  @since JXTA 1.0
     *
     *  @param mimetype the MimeMediaType we wish to know the file extension for.
     *  @return String containing the extension or null for mime-types with no
     *  known association.
     **/
    public static String getFileExtensionForMimeType( MimeMediaType mimetype ) {
        return (String) factory.mimeToExt.get( mimetype.getMimeMediaType() );
    }

    /**
     *  Returns the prefered mime-type for a given file extension. If there is
     * no mapping then null is returned.
     *
     *  @since JXTA 1.0
     *
     *  @param extension The extension we wish to know the mime-type for.
     *  @return MimeMediaType associated with this file extension.
     **/
    public static MimeMediaType getMimeTypeForFileExtension( String extension ) {
        MimeMediaType result = null;
        String fromMap = (String) factory.extToMime.get( extension );

        if( null != fromMap )
            result = new MimeMediaType( fromMap );

        return result;
    }

    /**
     * Register an instantiator object a mime-type of documents to be
     * constructed.
     *
     * @since JXTA 1.0
     *
     * @param mimetype   the mime-type associated.
     * @param instantiator the instantiator that wants to be registered..
     * @return boolean true   if the instantiator for this mime-type is now
     * registered. If there was already an instantiator this mime-type then
     * false will be returned.
     * @throws SecurityException   there were permission problems registering
     *  the instantiator.
     **/
    public static boolean registerInstantiator(
    MimeMediaType mimetype,
    Instantiator instantiator ) {
        boolean registered = factory.registerAssoc( mimetype.getMimeMediaType(),
        instantiator );

        if( registered ) {
            Instantiator.ExtensionMapping [] extensions =
            instantiator.getSupportedFileExtensions();

            for( int eachExt = 0; eachExt < extensions.length; eachExt++ ) {
                if( null != extensions[eachExt].getMimeMediaType() ) {
                    factory.extToMime.put(
                    extensions[eachExt].getExtension(),
                    extensions[eachExt].getMimeMediaType().getMimeMediaType() );

                    factory.mimeToExt.put(
                    extensions[eachExt].getMimeMediaType().getMimeMediaType(),
                    extensions[eachExt].getExtension() );
                }
            }
        }

        return registered;
    }

    /**
     * Constructs an instance of {@link StructuredDocument} matching
     * the mime-type specified by the <CODE>mimetype</CODE> parameter. The
     * <CODE>doctype</CODE> parameter identifies the base type of the
     * {@link StructuredDocument}.
     *
     * @since JXTA 1.0
     *
     * @param mimetype Specifies the mime media type to be associated with
     *  the {@link StructuredDocument} to be created.
     * @param doctype Specifies the root type of the {@link StructuredDocument}
     *  to be created.
     * @return StructuredDocument The instance of {@link StructuredDocument}
     *  or null if it could not be created.
     * @throws NoSuchElementException invalid mime-media-type
     **/
    public static StructuredDocument newStructuredDocument( MimeMediaType mimetype,
    String doctype ) {
        if( !factory.loadedProperty )
            factory.loadedProperty = factory.doLoadProperty();

        Instantiator instantiator =
        (Instantiator) factory.getInstantiator( mimetype.getMimeMediaType() );

        return instantiator.newInstance( mimetype, doctype );
    }

    /**
     * Constructs an instance of {@link StructuredDocument} matching
     * the mime-type specified by the <CODE>mimetype</CODE> parameter. The
     * <CODE>doctype</CODE> parameter identifies the base type of the
     * {@link StructuredDocument}. Value supplies a value for the root
     * element.
     *
     * @since JXTA 1.0
     *
     * @param mimetype Specifies the mime media type to be associated with
     *  the {@link StructuredDocument} to be created.
     * @param doctype Specifies the root type of the {@link StructuredDocument}
     *  to be created.
     * @param value Specifies a value for the root element.
     * @return StructuredDocument The instance of {@link StructuredDocument}
     *  or null if it could not be created.
     * @throws NoSuchElementException if the mime-type has not been registerd.
     **/
    public static StructuredDocument newStructuredDocument( MimeMediaType mimetype,
    String doctype,
    String value ) {
        if( !factory.loadedProperty )
            factory.loadedProperty = factory.doLoadProperty();

        Instantiator instantiator =
        (Instantiator) factory.getInstantiator( mimetype.getMimeMediaType() );

        return instantiator.newInstance( mimetype, doctype, value );
    }

    /**
     * Constructs an instance of {@link StructuredDocument} matching
     * the mime-type specified by the <CODE>mimetype</CODE> parameter. The
     * <CODE>doctype</CODE> parameter identifies the base type of the
     * {@link StructuredDocument}.
     *
     * @since JXTA 1.0
     *
     * @param mimetype Specifies the mime media type to be associated with the
     *  {@link StructuredDocument} to be created.
     * @param stream Contains an InputStream from which the document will be
     *  constructed.
     * @return StructuredDocument The instance of {@link StructuredDocument}
     *  or null if it could not be created.
     * @throws IOException If there is a problem reading from the stream.
     * @throws NoSuchElementException if the mime-type has not been registerd.
     **/
    public static StructuredDocument newStructuredDocument( MimeMediaType mimetype,
    InputStream stream )
    throws IOException {
        if( !factory.loadedProperty )
            factory.loadedProperty = factory.doLoadProperty();

        Instantiator instantiator =
        (Instantiator) factory.getInstantiator( mimetype.getMimeMediaType() );

        return instantiator.newInstance( mimetype, stream );
    }
}

⌨️ 快捷键说明

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