com.eu.evaluation.server.service.impl.eva.UniqueEvaluate.java Source code

Java tutorial

Introduction

Here is the source code for com.eu.evaluation.server.service.impl.eva.UniqueEvaluate.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.eu.evaluation.server.service.impl.eva;

import com.eu.evaluation.model.EvaluatedData;
import com.eu.evaluation.model.NameEvaluatedData;
import com.eu.evaluation.model.eva.UniqueEvaluateItem;
import com.eu.evaluation.model.eva.history.EvaluateItemHistory;
import com.eu.evaluation.model.eva.history.UniqueEvaluateItemHistory;
import com.eu.evaluation.model.sys.AccessSystem;
import com.eu.evaluation.server.dao.DefaultDAO;
import com.eu.evaluation.server.dao.eva.history.EvaluateItemHistoryDAO;
import com.eu.evaluation.server.service.Evaluating;
import java.text.MessageFormat;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.stereotype.Component;

/**
 *
 * @author dell
 */
@Component
public class UniqueEvaluate implements Evaluating<UniqueEvaluateItem, UniqueEvaluateItemHistory> {

    protected Log logger = LogFactory.getLog(this.getClass());

    private String notPassMessage = "";

    @Autowired
    private EvaluateItemHistoryDAO evaluateItemHistoryDAO;

    @Autowired
    private DefaultDAO defaultDAO;

    public boolean evaluate(String evaluateItemHistoryID, AccessSystem accessSystem, String instanceClass,
            int instanceType, String instanceID) throws Exception {
        String debugInfo = "{0}  = {1} ,  = {2} ,  = {3} , ID = {4}";
        EvaluateItemHistory ev = evaluateItemHistoryDAO.get(evaluateItemHistoryID);//
        logger.debug(MessageFormat.format(debugInfo, new Object[] { "", accessSystem.getName(),
                ev.getObjectDictionary().getDisplayname(), ev.getFieldDictionary().getDisplayname(), instanceID }));

        Object entity = defaultDAO.findEvaluateData(instanceClass, instanceID, ev.getEvaluateVersion().getId(),
                accessSystem);//??
        if (entity == null) {
            notPassMessage = "{0}  {1} ? {2} ? {3} , ID {4}  {5}";
            notPassMessage = MessageFormat.format(notPassMessage,
                    new Object[] { ev.getObjectDictionary().getDisplayname(),
                            ev.getFieldDictionary().getDisplayname(), accessSystem.getName(),
                            ev.getEvaluateVersion().getName(), instanceID,
                            ev.getObjectDictionary().getDisplayname() });
            return false;
        }

        //???
        String field = ev.getFieldDictionary().getPropertyName();
        Object fieldValue = BeanUtils.getProperty(entity, field);

        //sql??
        String jpql = "select count(*) from {0} t where t.{1} = :value and t.evaluateVersion.id = :evID and t.position = :position";
        jpql = MessageFormat.format(jpql, new Object[] { instanceClass, field });

        MapSqlParameterSource params = new MapSqlParameterSource("value", fieldValue);
        params.addValue("evID", ev.getEvaluateVersion().getId());
        params.addValue("position", accessSystem.getCode());

        long count = defaultDAO.executeCount(jpql, params);

        if (count > 1) {//1?
            notPassMessage = getErrorMsg(ev, entity, accessSystem);
        }

        logger.debug(MessageFormat.format(debugInfo, new Object[] { "?", accessSystem.getName(),
                ev.getObjectDictionary().getDisplayname(), ev.getFieldDictionary().getDisplayname(), instanceID }));
        return count <= 1;
    }

    public String notPassedReason(String evaluateItemHistoryID, String instanceClass, int instanceType,
            String instanceID) throws Exception {
        return notPassMessage;
    }

    public void supplementHistory(UniqueEvaluateItem item, UniqueEvaluateItemHistory itemHistory) {
        //??
    }

    private String getErrorMsg(EvaluateItemHistory ev, Object entity, AccessSystem accessSystem) {
        notPassMessage = "{0}  {1} {2}?  {3}? ?";
        String name = ((EvaluatedData) entity).getId();
        if (entity instanceof NameEvaluatedData) {
            name = ((NameEvaluatedData) entity).getName();
        }
        return MessageFormat.format(notPassMessage, new Object[] { accessSystem.getName(),
                ev.getObjectDictionary().getDisplayname(), name, ev.getFieldDictionary().getDisplayname() });
    }
}