Holumbus-MapReduce-0.0.1: source/Holumbus/MapReduce/UserInterface.hs
-- ----------------------------------------------------------------------------
{- |
Module : Holumbus.MapReduce.UserInterface
Copyright : Copyright (C) 2008 Stefan Schmidt
License : MIT
Maintainer : Stefan Schmidt (stefanschmidt@web.de)
Stability : experimental
Portability: portable
Version : 0.1
-}
-- ----------------------------------------------------------------------------
module Holumbus.MapReduce.UserInterface
(
-- * operations
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
-- ----------------------------------------------------------------------------
-- Operations
-- ----------------------------------------------------------------------------
-- | runs the user interface... just add an fileSystem an a fancy version-number
runUI :: (MR.MapReduce mr) => mr -> String -> IO ()
runUI mr version
= do
-- starts the console with the specified commands
Console.handleUserInput (createConsole version) mr
-- ----------------------------------------------------------------------------
-- private functions
-- ----------------------------------------------------------------------------
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