/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.essar.mes.service.framework.impl;

import com.essar.mes.service.framework.Service;
import com.essar.mes.service.framework.ServiceLogger;
import com.essar.mes.service.framework.ValidationError;
import com.essar.mes.service.framework.annotations.parser.BeanTagParser;
import com.essar.mes.service.framework.dao.ServiceLoggerDao;
import java.util.List;

/**
 *
 * @author dhaval
 */
public class SAPServiceLogger implements ServiceLogger{

    private ServiceLoggerDao loggerDao;
    private BeanTagParser tagParser;

    public void setLoggerDao(ServiceLoggerDao loggerDao) {
        this.loggerDao = loggerDao;
        tagParser = new BeanTagParser();
    }

    public void logService(Service service) {
        System.out.println("[LOG] Service Class Name: " + service.getClassName());
        System.out.println("[LOG] Service Name: " + service.getMethodName());
        System.out.println("[LOG] Service Call Time: " + service.getCallTime());
        System.out.println("[LOG] Arguments: " + service.getArgument().length);

        for(int i=0;i<service.getArgument().length;i++){
            System.out.println("[LOG] ARG-" + i + " Type: " + service.getArgument()[i].getClass().getSimpleName());
            System.out.println("[LOG] ARG-" + i + " Fields: " + tagParser.extractServiceFields(service.getArgument()[i]));
        }

//        loggerDao.saveService(service);
    }

    public void logResult(Service service) {
        System.out.println("[LOG] Result Type: " + service.getResult().getClass().getSimpleName());
        System.out.println("[LOG] Fields: " + tagParser.extractServiceFields(service.getResult()));
        
//        loggerDao.saveResult(service);
    }

    public void logServiceValidation(Service service) {
        List<ValidationError> errors = service.getValidationErrors();
        for(ValidationError error : errors){
            System.out.println("[LOG] Validation Error: " + error);
        }
        
//        loggerDao.saveServiceValidation(service);
    }

    public void logResultValidation(Service service) {
        List<ValidationError> errors = service.getResultValidationErrors();
        for(ValidationError error : errors){
            System.out.println("[LOG] Validation Error: " + error);
        }

//        loggerDao.saveResultValidation(service);
    }
}

    