private List build()

in extension/storage/storage-mysql/src/main/java/com/alibaba/smart/framework/engine/persister/database/service/RelationshipDatabaseVariableInstanceStorage.java [111:157]


    private List<VariableInstance> build(VariablePersister variablePersister, List<VariableInstanceEntity> list) {
        List<VariableInstance> variableInstanceList;
        variableInstanceList = new ArrayList<VariableInstance>(list.size());
        for (VariableInstanceEntity variableInstanceEntity : list) {
            VariableInstance variableInstance = new DefaultVariableInstance();
            variableInstance.setInstanceId(variableInstanceEntity.getId().toString());
            variableInstance.setStartTime(variableInstanceEntity.getGmtCreate());
            variableInstance.setCompleteTime(variableInstanceEntity.getGmtModified());
            variableInstance.setProcessInstanceId(variableInstanceEntity.getProcessInstanceId().toString());
            variableInstance.setExecutionInstanceId(variableInstanceEntity.getExecutionInstanceId().toString());

            variableInstance.setFieldKey(variableInstanceEntity.getFieldKey());
            String fieldType1 = variableInstanceEntity.getFieldType();

            //TUNE CACHE
            try {
                Class<?> fieldType = Class.forName(fieldType1);
                variableInstance.setFieldType(fieldType);

                if (isAssignableFromString(fieldType)) {
                    variableInstance.setFieldValue(variableInstanceEntity.getFieldStringValue());
                } else if (isAssignableFromBoolean(fieldType)) {
                    variableInstance.setFieldValue(Boolean.valueOf(variableInstanceEntity.getFieldStringValue()));
                } else if (isAssignableFromInteger(fieldType)) {
                    variableInstance.setFieldValue(variableInstanceEntity.getFieldLongValue().intValue());
                } else if (isAssignableFromShort(fieldType)) {
                    variableInstance.setFieldValue(variableInstanceEntity.getFieldLongValue().shortValue());
                } else if (isAssignableFromLong(fieldType)) {
                    variableInstance.setFieldValue(variableInstanceEntity.getFieldLongValue());
                } else if (isAssignableFromFloat(fieldType)) {
                    variableInstance.setFieldValue(variableInstanceEntity.getFieldDoubleValue().floatValue());
                } else if (isAssignableFromDouble(fieldType)) {
                    variableInstance.setFieldValue(variableInstanceEntity.getFieldDoubleValue());
                } else {
                    //ASSUME the others are all pojos.
                    Object serializedValue =  variablePersister.deserialize(variableInstanceEntity.getFieldKey(),variableInstanceEntity
                            .getFieldType(),variableInstanceEntity.getFieldStringValue());
                    variableInstance.setFieldValue(serializedValue);
                }

            } catch (ClassNotFoundException e) {
                LOGGER.error(e.getMessage(), e);
            }
            variableInstanceList.add(variableInstance);
        }
        return variableInstanceList;
    }