00001 #ifndef REBECCA_GRAPHBUILDER_H
00002 #define REBECCA_GRAPHBUILDER_H
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 #ifdef _WIN32
00030 #    pragma warning ( push )
00031 #    pragma warning( disable : 4290 )
00032 #endif
00033 
00034 
00035 #include <rebecca/exports.h>
00036 #include <rebecca/StringPimpl.h>
00037 #include <rebecca/CallBacks.h>
00038 #include <rebecca/Exceptions.h>
00039 
00040 namespace rebecca 
00041 {
00042 namespace impl 
00043 {
00044 
00147 class REBECCA_EXPORT GraphBuilder
00148 {
00149     public:
00150 
00176         virtual void addFile(const char * const file) 
00177             throw(FileNotFoundException &, Exception &) = 0;        
00178 
00210         virtual void addDirectory(const char * const directory, const char * const regularExpression = ".*\\.aiml") 
00211             throw(IllegalArgumentException &, DirectoryNotFoundException &, Exception &) = 0;
00212 
00225         virtual void setAIMLSchema(const char * const schema) 
00226             throw(Exception &) = 0;
00227 
00242         virtual void setCommonTypesSchema(const char * const schema) 
00243             throw(Exception &) = 0;
00244 
00261         virtual void setAIMLValidation(bool trueOrFalse = true) 
00262             throw(Exception &) = 0;
00263         
00283         virtual StringPimpl getResponse(const char * const input) 
00284             throw(Exception &) = 0;
00285         
00303         virtual void setThat(const char * const that) 
00304             throw(Exception &) = 0;
00305 
00323         virtual void setTopic(const char * const topic) 
00324             throw(Exception &) = 0;
00325 
00341         virtual StringPimpl getThat() const
00342             throw(Exception &) = 0;
00343 
00359         virtual StringPimpl getTopic() const
00360             throw(Exception &) = 0;
00361 
00379         virtual void createGraph() 
00380             throw(XMLErrorException &, Exception &) = 0;
00381 
00402         virtual bool predicateMatch(const char * const predicateName, const char * const aimlPattern) const
00403             throw(Exception &) = 0;
00404         
00424         virtual void setPredicate(const char * const name, const char * const value) 
00425             throw(Exception &) = 0;
00426 
00445         virtual StringPimpl getPredicate(const char * const name) const
00446             throw(Exception &) = 0;
00447 
00466         virtual StringPimpl getBotPredicate(const char * const name) const
00467             throw(Exception &)  = 0;
00468 
00486         virtual void setBotPredicate(const char * const name, const char * const value) 
00487             throw(Exception &) = 0;
00488         
00506         virtual StringPimpl getPreviousBotResponse(const unsigned int &previousBotResponse, const unsigned int &sentence) const
00507             throw(IllegalArgumentException &, Exception &) = 0;
00508 
00526         virtual StringPimpl getPreviousUserInput(const unsigned int &previousUserInput, const unsigned int &sentence) const
00527             throw(IllegalArgumentException &, Exception &) = 0;
00528         
00552         virtual void setBotConfigurationSchema(const char *const schema) 
00553             throw(Exception &) = 0;
00554 
00573         virtual void setBotConfigurationValidation(const bool trueOrFalse = true) 
00574             throw(Exception &) = 0;
00575 
00601         virtual void parseSubstitutionFile(const char *const fileName) 
00602             throw(XMLErrorException &, FileNotFoundException &, Exception &) = 0;
00603 
00626         virtual void parseSentenceSplitterFile(const char *const fileName) 
00627             throw(XMLErrorException &, FileNotFoundException &, Exception &) = 0;
00628 
00651         virtual void parsePropertiesFile(const char *const fileName)
00652             throw(XMLErrorException &, FileNotFoundException &, Exception &) = 0;
00653         
00669         virtual void setSentenceSplitter(const char *const splitter) 
00670             throw(Exception &) = 0;
00671 
00709         virtual void setInputSubstitution(const char *const find, const char *const replace) 
00710             throw(IllegalArgumentException &, Exception &) = 0;
00711 
00746         virtual void setGenderSubstitution(const char *const find, const char *const replace) 
00747             throw(IllegalArgumentException &, Exception &) = 0;
00748 
00789         virtual void setPersonSubstitution(const char *const find, const char *const replace) 
00790             throw(IllegalArgumentException &, Exception &) = 0;
00791 
00832         virtual void setPerson2Substitution(const char *const find, const char *const replace) 
00833             throw(IllegalArgumentException &, Exception &)  = 0;
00834         
00844         virtual StringPimpl getVersion() const 
00845             throw(Exception &) = 0;
00846         
00854         virtual int getSize() const 
00855             throw(Exception &) = 0;
00856 
00875         virtual void setCallBacks(CallBacks *callBacks) 
00876             throw(Exception &) = 0;
00877 
00891         virtual void storeGossip(const char * const gossip) 
00892             throw(Exception &) = 0;
00893         
00905         virtual StringPimpl getId() const
00906             throw(Exception &) = 0;
00907         
00921         virtual void setId(const char * const id)
00922             throw(Exception &) = 0;
00923 
00948         virtual void addCustomTagLibrary(const char * const library)
00949             throw(FileNotFoundException &, Exception &) = 0;
00950 
00975         virtual void removeCustomTagLibrary(const char * const library)
00976             throw(FileNotFoundException &, Exception &) = 0;
00977 
00981         virtual ~GraphBuilder() { };
00982 };
00983 
00984 } 
00985 
00986 
00987 using rebecca::impl::GraphBuilder;
00988 
00989 } 
00990 
00991 
00992 #ifdef _WIN32
00993 #    pragma warning ( pop )
00994 #endif
00995 
00996 
00997 
00998 
00999 #endif