Package syslog.business

Source Code of syslog.business.SimpleGraphManager

package syslog.business;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;
import org.apache.log4j.Logger;
import syslog.model.DataObject;
import syslog.database.GraphDao;
import syslog.database.JdbcGraphDao;
import syslog.model.Filter;
import syslog.model.GraphItem;

/**
* @author fero
* @version 1.0
* @created 20-XI-2008 16:22:46
*/
public class SimpleGraphManager implements GraphManager {

        /**
         * Zapisovac do logu
         */
        private static Logger logger = Logger.getLogger("syslog.business.SimpleGraphManager");
   
        /**
         * GraphDao pro komunikaci s datovym ulozistem
         */
  private GraphDao _graphDao;
       
        /**
         * Transformer pro transformaci grafu do textoveho formatu
         */
  private AbstractTransformer _transformer;

       
        /**
         * Konstruktor
         */
  public SimpleGraphManager(){
            this._graphDao = new JdbcGraphDao();
  }

  /**
   * Set Graph Dao
   * @param GraphDao graphDao
   */
  public void setGraphDao(GraphDao graphDao){
            this._graphDao = graphDao;
  }

        /**
         * Get data transformer
         * @return AbstractTransformer
         */
  public AbstractTransformer getTransformer(){
            return this._transformer;
  }

  /**
   * Set data transformer
   * @param AbstractTransformer transformer
         * @return transformer
   */
  public void setTransformer(AbstractTransformer transformer){
            this._transformer = transformer;
  }

        /**
         * Transformuje datovou cast DataObjectu
         * @param DataObject dataObj
         * @return DataObject
         */
        public DataObject transformDataObject(DataObject dataObj) {
            if (this._transformer != null) {
                TransformContext context = new TransformContext();
                context.setData(dataObj.getRawData());
                context.setTransformer(this._transformer);
                try {
                    dataObj.setData( context.transform() );
                } catch (Exception ex) {
                    logger.error("Objekt se nepodarilo transformovat: " + ex.getMessage());
                    dataObj.setData("");
                }
            }
           
            return dataObj;
        }
       
  /**
   * Realizuje graf na zaklade predanych parametru
   * @param Map params
         * @return DataObject
   */
  public DataObject realizeGraph(Map params){
            DataObject dataObj = new DataObject();
            Filter filter = new Filter();
            if (this._graphDao == null) {
                logger.error("Neni definovan DAO objekt");
                return new DataObject(501, "Neni definovan DAO objekt");
            }
           
            /*
             * Nacteni hodnot parametru do objektu Filter
             */
            try {
                if ( params.containsKey("dateFrom") )
                    filter.setRawDateFrom( params.get("dateFrom").toString() );
                if ( params.containsKey("dateTo") )
                    filter.setRawDateTo( params.get("dateTo").toString() );
                if (params.containsKey("facility") && params.get("facility") instanceof Collection )
                    filter.setFacility( new TreeSet((List)params.get("facility")) );
                if (params.containsKey("severity") && params.get("severity") instanceof Collection )
                    filter.setSeverity( new TreeSet((List)params.get("severity")) );
                if (params.containsKey("server") && params.get("server") instanceof Collection )
                    filter.setServer( new TreeSet((List)params.get("server")) );
                if (params.containsKey("application") && params.get("application") instanceof Collection )
                    filter.setApplication( new TreeSet((List)params.get("application")) );
               
                /*
                 * Urceni typu grafu a provedeni realizace
                 */
                if ( params.containsKey("graphType") && !params.get("graphType").toString().equals("") ) {
                   
                    if (params.get("graphType").toString().equals("circle"))
                        dataObj = this.realizeCircleGraph(filter, params);
                    else if (params.get("graphType").toString().equals("bar"))
                        dataObj = this.realizeBarGraph(filter, params);
                    else if (params.get("graphType").toString().equals("sample"))
                        dataObj = this.realizeSampleGraph(filter, params);
                    else {
                        logger.error("Typ grafu obsahuje chybnou hodnotu");
                        return new DataObject(402, "Typ grafu obsahuje chybnou hodnotu");
                    }
                   
                } else {
                    logger.error("Neni definovan parametr typu grafu");
                    return new DataObject(400, "Neni definovan parametr typu grafu");
                }     
               
            } catch (Exception ex) {
                logger.error("Nepodarilo se vytvorit data pro graf: " + ex.getMessage());
                return new DataObject(502, "Chyba v databazove komunikaci");
            }
           
            return dataObj;
  }

        /**
         * Realizuje kolacovy graf podle filtru a predaneho vizualizacniho sloupce
         * @param Filter filter
         * @param Map column
         * @return DataObject
         */
        public DataObject realizeCircleGraph(Filter filter, Map params) {
            DataObject dataObj = new DataObject();
           
            if (this._graphDao == null) {
                logger.error("Neni definovan DAO objekt");
                return new DataObject(501, "Neni definovan DAO objekt");
            }
           
            try {
                String column = "";
                if ( params.containsKey("column") && !params.get("column").toString().equals("") )
                    column = params.get("column").toString();
                else
                    return new DataObject(400, "Neni definovan parametr vizualizovaneho sloupce");

                List<GraphItem> data = this._graphDao.realizeCircleGraph(filter, column);
                dataObj.setCode(0);
                dataObj.setRawData(data);
                dataObj.setMessage("Vysledek realizace kolacoveho grafu obsahuje " + data.size() + " polozek" );
               
                dataObj = this.transformDataObject(dataObj);
               
            } catch (Exception ex) {
                logger.error("Nepodarilo se vytvorit data pro graf: " + ex.getMessage());
                return new DataObject(502, "Chyba v databazove komunikaci");
            }
            return dataObj;
        }
       
        /**
         *
         * @param filter
         * @param params
         * @return
         * @todo Implementovat metodu pro sloupcove grafy nebo sjednotit s kolacem
         */
        public DataObject realizeBarGraph(Filter filter, Map params) {
            logger.fatal("Operace neni implementovana");
            return null;
        }

        /**
         * Realizuje vzorkovany graf podle filtru (vysledek filtru v grafu rozvzorkovany po dnech)
         * @param Filter filter
         * @param Map params
         * @return DataObject
         */
        public DataObject realizeSampleGraph(Filter filter, Map params) {
            DataObject dataObj = new DataObject();
           
            if (this._graphDao == null) {
                logger.error("Neni definovan DAO objekt");
                return new DataObject(501, "Neni definovan DAO objekt");
            }
           
            try {
                List<GraphItem> data = this._graphDao.realizeTimeBasedGraph(filter);
                dataObj.setCode(0);
                dataObj.setRawData(data);
                dataObj.setMessage("Vysledek realizace vzorkoveho grafu obsahuje " + data.size() + " polozek" );
               
                dataObj = this.transformDataObject(dataObj);
               
            } catch (Exception ex) {
                logger.error("Nepodarilo se vytvorit data pro graf: " + ex.getMessage());
                return new DataObject(502, "Chyba v databazove komunikaci");
            }
            return dataObj;
        }
}
TOP

Related Classes of syslog.business.SimpleGraphManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.