All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.adrninistrator.javacg.dto.call.MethodCallPossibleEntry Maven / Gradle / Ivy

package com.adrninistrator.javacg.dto.call;

import com.adrninistrator.javacg.dto.field.FieldTypeAndName;
import com.adrninistrator.javacg.dto.field.StaticFieldTypeAndName;
import org.apache.commons.lang3.StringUtils;

import java.util.Objects;

/**
 * @author adrninistrator
 * @date 2023/3/12
 * @description: 方法调用中被调用对象、参数的可能的信息
 */
public class MethodCallPossibleEntry {

    // 可能的被调用静态字段
    private StaticFieldTypeAndName staticField;

    // 可能的被调用非静态字段
    private FieldTypeAndName nonStaticField;

    // 可能的类型
    private String type;

    // 可能的值的类型
    private String valueType;

    // 可能的值
    private Object value;

    // 被调用对象或参数是静态字段方法返回值的可能信息
    private String staticFieldMethodCall;

    // 被调用对象或参数变量名称
    private String nameOfVariable;

    // 被调用对象或参数来自方法调用返回,对应的完整方法
    private String methodCallReturnFullMethod;

    // 被调用对象或参数来自方法调用返回,对应的方法调用指令的位置
    private Integer methodCallReturnInstructionPosition;

    // 方法参数的序号
    private Integer methodArgSeq;

    // 被调用对象或参数来自等值转换前的方法调用返回,对应的完整方法
    private String methodCallReturnFullMethodEQC;

    // 被调用对象或参数来自等值转换前的方法调用返回,对应的方法调用指令的位置
    private Integer methodCallReturnInstructionPositionEQC;

    // 等值转换前的方法参数的序号
    private Integer methodArgSeqEQC;

    // catch异常对象对应的catch代码块开始指令偏移量
    private Integer catchExceptionStartPosition;

    // 以上增加字段后需要在compare()方法中增加对应的判断

    // 记录被设置的内容数量
    private int contentNum = 0;

    public StaticFieldTypeAndName getStaticField() {
        return staticField;
    }

    public void setStaticField(StaticFieldTypeAndName staticField) {
        this.staticField = staticField;
        addContentNum();
    }

    /**
     * 比较与另一个需要添加的对象值是否相同
     *
     * @param added
     * @return
     */
    public boolean compare(MethodCallPossibleEntry added) {
        // 当前方法执行前有判断需要添加的对象值是否有内容,这里不需要判断,直接比较内容就可以
        return Objects.equals(staticField, added.staticField)
                && Objects.equals(nonStaticField, added.nonStaticField)
                && StringUtils.equals(type, added.type)
                && Objects.equals(value, added.value)
                && StringUtils.equals(staticFieldMethodCall, added.staticFieldMethodCall)
                && StringUtils.equals(nameOfVariable, added.nameOfVariable)
                && StringUtils.equals(methodCallReturnFullMethod, added.methodCallReturnFullMethod)
                && Objects.equals(methodCallReturnInstructionPosition, added.methodCallReturnInstructionPosition)
                && Objects.equals(methodArgSeq, added.methodArgSeq)
                && Objects.equals(methodCallReturnInstructionPositionEQC, added.methodCallReturnInstructionPositionEQC)
                && Objects.equals(methodArgSeqEQC, added.methodArgSeqEQC)
                && Objects.equals(catchExceptionStartPosition, added.catchExceptionStartPosition);
    }

    public boolean hasContent() {
        return contentNum > 0;
    }

    private void addContentNum() {
        contentNum++;
    }

    public FieldTypeAndName getNonStaticField() {
        return nonStaticField;
    }

    public void setNonStaticField(FieldTypeAndName nonStaticField) {
        this.nonStaticField = nonStaticField;
        addContentNum();
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
        addContentNum();
    }

    public String getValueType() {
        return valueType;
    }

    public void setValueType(String valueType) {
        this.valueType = valueType;
    }

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
        addContentNum();
    }

    public String getStaticFieldMethodCall() {
        return staticFieldMethodCall;
    }

    public void setStaticFieldMethodCall(String staticFieldMethodCall) {
        this.staticFieldMethodCall = staticFieldMethodCall;
        addContentNum();
    }

    public String getNameOfVariable() {
        return nameOfVariable;
    }

    public void setNameOfVariable(String nameOfVariable) {
        this.nameOfVariable = nameOfVariable;
        addContentNum();
    }

    public String getMethodCallReturnFullMethod() {
        return methodCallReturnFullMethod;
    }

    public void setMethodCallReturnFullMethod(String methodCallReturnFullMethod) {
        this.methodCallReturnFullMethod = methodCallReturnFullMethod;
        // 不增加内容数量
    }

    public Integer getMethodCallReturnInstructionPosition() {
        return methodCallReturnInstructionPosition;
    }

    public void setMethodCallReturnInstructionPosition(Integer methodCallReturnInstructionPosition) {
        this.methodCallReturnInstructionPosition = methodCallReturnInstructionPosition;
        addContentNum();
    }

    public Integer getMethodArgSeq() {
        return methodArgSeq;
    }

    public void setMethodArgSeq(Integer methodArgSeq) {
        this.methodArgSeq = methodArgSeq;
        addContentNum();
    }

    public String getMethodCallReturnFullMethodEQC() {
        return methodCallReturnFullMethodEQC;
    }

    public void setMethodCallReturnFullMethodEQC(String methodCallReturnFullMethodEQC) {
        this.methodCallReturnFullMethodEQC = methodCallReturnFullMethodEQC;
        // 不增加内容数量
    }

    public Integer getMethodCallReturnInstructionPositionEQC() {
        return methodCallReturnInstructionPositionEQC;
    }

    public void setMethodCallReturnInstructionPositionEQC(Integer methodCallReturnInstructionPositionEQC) {
        this.methodCallReturnInstructionPositionEQC = methodCallReturnInstructionPositionEQC;
        addContentNum();
    }

    public Integer getMethodArgSeqEQC() {
        return methodArgSeqEQC;
    }

    public void setMethodArgSeqEQC(Integer methodArgSeqEQC) {
        this.methodArgSeqEQC = methodArgSeqEQC;
        addContentNum();
    }

    public Integer getCatchExceptionStartPosition() {
        return catchExceptionStartPosition;
    }

    public void setCatchExceptionStartPosition(Integer catchExceptionStartPosition) {
        this.catchExceptionStartPosition = catchExceptionStartPosition;
        addContentNum();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy