# -*- coding: utf-8 -*-
#
# This file is subject to the terms and conditions defined in
# file 'LICENSE.txt', which is part of this source code package.
#
"""Factory for handling input and output
"""
from BasicTools.Helpers.Factory import Factory
[docs]def RegisterReaderClass(name, classtype, constructor=None, withError = True):
return ReaderFactory.RegisterClass(name,classtype, constructor=constructor, withError = withError )
[docs]def CreateReader(name,ops=None):
return ReaderFactory.Create(name,ops)
[docs]class ReaderFactory(Factory):
_Catalog = {}
_SetCatalog = set()
def __init__(self):
super(ReaderFactory,self).__init__()
[docs]def GetAvailableReaders():
return list(ReaderFactory._Catalog.keys())
[docs]def InitAllReaders():
import BasicTools.IO.InpReader as InpReader
import BasicTools.IO.AscReader as AscReader
import BasicTools.IO.AnsysReader as AnsysReader
import BasicTools.IO.GeofReader as GeofReader
import BasicTools.IO.GeoReader as GeoReader
import BasicTools.IO.GmshReader as GmshReader
import BasicTools.IO.MeshReader as MeshReader
import BasicTools.IO.GReader as GReader
import BasicTools.IO.FemReader as FemReader
from BasicTools.IO.StlReader import ReadStl
from BasicTools.IO.XdmfReader import ReadXdmf
from BasicTools.IO.PipeIO import PipeReader
from BasicTools.IO.OdbReader import OdbReader
from BasicTools.IO.UtReader import UtReader
from BasicTools.IO.VtkReader import VtkReader
from BasicTools.IO.SamcefReader import DatReader
import BasicTools.IO.SamcefOutputReader
import BasicTools.IO.PickleTools
import BasicTools.IO.CGNSReader
import BasicTools.IO.FemmReader
[docs]def InitAllWriters():
from BasicTools.IO.GeofWriter import GeofWriter
from BasicTools.IO.GmshWriter import GmshWriter
from BasicTools.IO.MeshWriter import MeshWriter
from BasicTools.IO.OdbWriter import OdbWriter
from BasicTools.IO.StlWriter import StlWriter
from BasicTools.IO.XdmfWriter import XdmfWriter
from BasicTools.IO.PipeIO import PipeWriter
from BasicTools.IO.CsvWriter import CsvWriter
import BasicTools.IO.PickleTools
import BasicTools.IO.Catalyst
import BasicTools.IO.InpWriter
import BasicTools.IO.CGNSWriter
[docs]def RegisterWriterClass(name, classtype, constructor=None, withError = True):
WriterFactory.RegisterClass(name,classtype, constructor=constructor, withError = withError )
[docs]def CreateWriter(name,ops=None):
return WriterFactory.Create("."+name.split(".")[-1],ops)
[docs]class WriterFactory(Factory):
_Catalog = {}
_SetCatalog = set()
def __init__(self):
super(WriterFactory,self).__init__()
[docs]def GetAvailableWriter():
return list(WriterFactory._Catalog.keys())
[docs]def CheckIntegrity():
from BasicTools.IO.IOFactory import WriterFactory, ReaderFactory
from BasicTools.IO.IOFactory import GetAvailableReaders, RegisterReaderClass
from BasicTools.IO.IOFactory import GetAvailableWriter
##
InitAllReaders()
class DummyReaderI:
pass
class DummyReaderII:
pass
RegisterReaderClass(".test",DummyReaderI,withError=True)
RegisterReaderClass(".test",DummyReaderII,withError=False)
print("Available Readers : ", GetAvailableReaders())
print("Available Readers for '.test': ", ReaderFactory.GetAvailablesFor(".test"))
print(CreateReader(".test"))
InitAllWriters()
class DummyWriterI:
pass
class DummyWriterII:
pass
RegisterWriterClass(".test",DummyWriterI,withError=True)
RegisterWriterClass(".test",DummyWriterII,withError=False)
print("Available Writers : ", GetAvailableWriter())
print("Available Writers for '.test': ", WriterFactory.GetAvailablesFor(".test"))
print(CreateWriter(".test"))
print("---------------------")
ReaderFactory.PrintAvailable()
print("---------------------")
WriterFactory.PrintAvailable()
ReaderFactory()
WriterFactory()
return "ok"
if __name__ == '__main__':
print(CheckIntegrity())# pragma: no cover