{-- TerraHS - Interface between TerraLib and Haskell (c) Sergio Costa (INPE) - Setembro, 2005 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License 2.1 as published by the Free Software Foundation (http://www.opensource.org/licenses/gpl-license.php) --} {-- --} module TerraHS.Algebras.DB.Model --( --) where import TerraHS.TerraLib import TerraHS.TerraLib.TeLayer import TerraHS.Algebras.DB.Databases import TerraHS.TerraLib.TeDatabase import TerraHS.Algebras.Base.Object import TerraHS.TerraLib.TeGeoObject -- class ModelConvert m where toGeoObjects :: m -> [TeGeoObject] fromGeoObjects :: [TeGeoObject] -> m {-- class (ModelConvert m) => ModelPersistence m p where -- operations storeModel :: TeDatabasePtr -> String -> m -> IO Bool retrieveModel :: TeDatabasePtr -> Parameter -> IO m -- axioms storeModel db p m = (store db p (toGeoObjects m) ) retrieveModel db p = ( (retrieve db p)::(IO [TeGeoObject]) ) >>= ( \go -> return (fromGeoObjects go) ) --} class (ModelConvert m) => ModelPersistence m p where -- operations storeModel :: TeDatabasePtr -> p -> m -> IO Bool retrieveModel :: TeDatabasePtr -> p -> IO m instance (ModelConvert m) => ModelPersistence m String where storeModel db p m = (store db p (toGeoObjects m) ) retrieveModel db p = ( (retrieve db p)::(IO [TeGeoObject]) ) >>= ( \go -> return (fromGeoObjects go) ) instance (ModelConvert m) => ModelPersistence m (String,TeProjection) where storeModel db p m = (store db p (toGeoObjects m) )