X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FMain.hs;h=ed28f919b7e349e782b8e62e4cacc7f2ecfa120c;hb=000318e2a4b56772a9ef219a13e960acea6453b6;hp=06cb22e2e46e385ee61a35e7ea89d69cba0c005d;hpb=9fff5c185dd7a2c8655815f36b72736d61401e41;p=dead%2Fhtsn-import.git diff --git a/src/Main.hs b/src/Main.hs index 06cb22e..ed28f91 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -45,7 +45,8 @@ import TSN.DbImport ( DbImport(..), ImportResult(..) ) import qualified TSN.XML.Heartbeat as Heartbeat ( verify ) import qualified TSN.XML.Injuries as Injuries ( Listing ) import qualified TSN.XML.InjuriesDetail as InjuriesDetail ( PlayerListing ) -import qualified TSN.XML.News as News ( Message ) +import qualified TSN.XML.News as News ( News ) +import qualified TSN.XML.Odds as Odds ( Odds ) import Xml ( DtdName(..), parse_opts ) @@ -111,8 +112,8 @@ import_file cfg path = do -- | An arrow which parses the doctype "SYSTEM" of an 'XmlTree'. -- We use these to determine the parser to use. - doctypeA :: ArrowXml a => a XmlTree DtdName - doctypeA = getAttrl >>> hasName "doctype-SYSTEM" /> getText >>^ DtdName + dtdnameA :: ArrowXml a => a XmlTree DtdName + dtdnameA = getAttrl >>> hasName "doctype-SYSTEM" /> getText >>^ DtdName -- | Combine the arrows above as well as the function below -- (arrowized with 'arr') into an IO action that does everything @@ -123,7 +124,7 @@ import_file cfg path = do -- big one outside of the list. parse_and_import :: IO [ImportResult] parse_and_import = - runX (readA >>> (doctypeA &&& returnA) >>> (arr import_with_dtd)) + runX (readA >>> (dtdnameA &&& returnA) >>> (arr import_with_dtd)) >>= sequence @@ -152,7 +153,9 @@ import_file cfg path = do dbimport (undefined :: InjuriesDetail.PlayerListing) | dtd == "newsxml.dtd" = - dbimport (undefined :: News.Message) + dbimport (undefined :: News.News) + + | dtd == "Odds_XML.dtd" = undefined | otherwise = \_ -> do -- Dummy arg simplifies the other cases. let infomsg = @@ -180,7 +183,7 @@ main = do -- logging before the missing parameter checks below so that we can -- log the errors. let cfg = (def :: Configuration) `merge_optional` opt_config - init_logging (log_file cfg) (log_level cfg) (syslog cfg) + init_logging (log_level cfg) (log_file cfg) (syslog cfg) -- Check the optional config for missing required options. when (null $ OC.xml_files opt_config) $ do @@ -208,7 +211,7 @@ main = do report_info $ "Removed processed file " ++ path ++ "." -- | Try to remove @path@ and potentially try again. - kill try_again path = do + kill try_again path = (remove_and_report path) `catchIOError` exception_handler where -- | A wrapper around threadDelay which takes seconds instead of @@ -225,7 +228,7 @@ main = do report_error (show e) report_error $ "Failed to remove imported file " ++ path ++ "." if try_again then do - report_info $ "Waiting 5 seconds to attempt removal again..." + report_info "Waiting 5 seconds to attempt removal again..." thread_sleep 5 kill False path else