Пример #1
0
        /// <summary>
        /// Registers a writer as the default RDF Dataset Writer for all the given MIME types and updates relevant definitions to include the MIME types and file extensions
        /// </summary>
        /// <param name="writer">RDF Dataset Writer</param>
        /// <param name="mimeTypes">MIME Types</param>
        /// <param name="fileExtensions">File Extensions</param>
        public static void RegisterWriter(IStoreWriter writer, IEnumerable<String> mimeTypes, IEnumerable<String> fileExtensions)
        {
            if (!_init) Init();

            if (!mimeTypes.Any()) throw new RdfException("Cannot register a writer without specifying at least 1 MIME Type");

            //Get any existing defintions that are to be altered
            IEnumerable<MimeTypeDefinition> existing = GetDefinitions(mimeTypes);
            foreach (MimeTypeDefinition def in existing)
            {
                foreach (String type in mimeTypes)
                {
                    def.AddMimeType(type);
                }
                foreach (String ext in fileExtensions)
                {
                    def.AddFileExtension(ext);
                }
                def.RdfDatasetWriterType = writer.GetType();
            }

            //Create any new defintions
            IEnumerable<String> newTypes = mimeTypes.Where(t => !GetDefinitions(t).Any());
            if (newTypes.Any())
            {
                MimeTypeDefinition newDef = new MimeTypeDefinition(String.Empty, newTypes, fileExtensions);
                newDef.RdfDatasetWriterType = writer.GetType();
                AddDefinition(newDef);
            }
        }
Пример #2
0
 /// <summary>
 /// Selects the appropriate File Extension for the given Store Writer
 /// </summary>
 /// <param name="writer">Store Writer</param>
 /// <returns></returns>
 public static String GetFileExtension(IStoreWriter writer)
 {
     if (!_init) Init();
     Type requiredType = writer.GetType();
     foreach (MimeTypeDefinition definition in MimeTypesHelper.Definitions)
     {
         if (requiredType.Equals(definition.RdfDatasetWriterType))
         {
             return definition.CanonicalFileExtension;
         }
     }
         
     throw new RdfException("Unable to determine the appropriate File Extension for the Store Writer '" + writer.GetType().ToString() + "'");
 }