module Holumbus.MapReduce.UserInterface
(
runUI
)
where
import Data.Maybe
import Holumbus.Common.Utils ( handleAll )
import Holumbus.Common.FileHandling
import qualified Holumbus.Common.Debug as DEBUG
import qualified Holumbus.Console.Console as Console
import qualified Holumbus.MapReduce.MapReduce as MR
import qualified Holumbus.MapReduce.Types as T
runUI :: (MR.MapReduce mr) => mr -> String -> IO ()
runUI mr version
= do
Console.handleUserInput (createConsole version) mr
createConsole :: (MR.MapReduce mr) => String -> Console.ConsoleData mr
createConsole version =
Console.addConsoleCommand "site" getMySiteId "" $
Console.addConsoleCommand "mrtype" getMapReduceType "" $
Console.addConsoleCommand "startC" startControlling "" $
Console.addConsoleCommand "stopC" stopControlling "" $
Console.addConsoleCommand "isC" isControlling "" $
Console.addConsoleCommand "step" doSingleStep "" $
Console.addConsoleCommand "mrJob" doMapReduceJob "" $
Console.addConsoleCommand "parse" parseJob "" $
Console.addConsoleCommand "debug" printDebug "" $
Console.addConsoleCommand "version" (printVersion version) "prints the version" $
Console.initializeConsole
getMySiteId :: (MR.MapReduce mr) => mr -> [String] -> IO ()
getMySiteId mr _
= handleAll (\e -> putStrLn $ show e) $
do
s <- MR.getMySiteId mr
putStrLn $ show s
getMapReduceType :: (MR.MapReduce mr) => mr -> [String] -> IO ()
getMapReduceType mr _
= handleAll (\e -> putStrLn $ show e) $
do
t <- MR.getMapReduceType mr
putStrLn $ show t
startControlling :: (MR.MapReduce mr) => mr -> [String] -> IO ()
startControlling mr _
= handleAll (\e -> putStrLn $ show e) $
do
MR.startControlling mr
stopControlling :: (MR.MapReduce mr) => mr -> [String] -> IO ()
stopControlling mr _
= handleAll (\e -> putStrLn $ show e) $
do
MR.stopControlling mr
isControlling :: (MR.MapReduce mr) => mr -> [String] -> IO ()
isControlling mr _
= handleAll (\e -> putStrLn $ show e) $
do
b <- MR.isControlling mr
putStrLn $ show b
doSingleStep :: (MR.MapReduce mr) => mr -> [String] -> IO ()
doSingleStep mr _
= handleAll (\e -> putStrLn $ show e) $
do
MR.doSingleStep mr
doMapReduceJob :: (MR.MapReduce mr) => mr -> [String] -> IO ()
doMapReduceJob mr opts
= do
handleAll (\e -> putStrLn $ show e) $
do
(mbName,_) <- Console.nextOption opts
jobInfo <- (loadFromXmlFile (fromJust mbName))::IO T.JobInfo
r <- MR.doMapReduceJob jobInfo mr
putStrLn "RESULT:"
putStrLn $ show r
return ()
parseJob :: (MR.MapReduce mr) => mr -> [String] -> IO ()
parseJob _ opts
= do
handleAll (\e -> putStrLn $ show e) $
do
(mbName,_) <- Console.nextOption opts
jobInfo <- (loadFromXmlFile (fromJust mbName))::IO T.JobInfo
putStrLn $ show jobInfo
return ()
printDebug :: (MR.MapReduce mr) => mr -> [String] -> IO ()
printDebug mr _
= do
handleAll (\e -> putStrLn $ show e) $
do
DEBUG.printDebug mr
printVersion :: (MR.MapReduce mr) => String -> mr -> [String] -> IO ()
printVersion version _ _
= do
putStrLn version