package pbl2011.model;

import pbl2011.common.CommonConst;

/**
 * 引数
 * <p>
 *
 * @author 10745104 Y.Ishii
 *
 */
public class Parameter implements CommonConst, Cloneable {

//	public Parameter(String line) {
//		String[] tokens = line.split(DELIMITER);
//
//		int i = 1;
//		parameterName = tokens[i++];
//		dataTypeId = tokens[i++];
//
//	}

	public Parameter(String parameterName, String dataTypeId) {
		this.parameterName = parameterName;
		this.dataTypeId = dataTypeId;
	}

	public Parameter(Parameter clone) {
		parameterName = clone.parameterName;
		dataTypeId = clone.dataTypeId;
		delFlag = clone.delFlag;
	}

	/** 引数名 */
	public String parameterName;

	/** 引数型 */
	public String dataTypeId;

	/** 削除フラグ */
	public boolean delFlag;

	public String toString(int classId) {
		return MethodAndAttrType.PARAM.alias() + DELIMITER + parameterName + DELIMITER + dataTypeId;
	}

	public void change(String name, String dataTypeId) {
		this.parameterName = name;
		this.dataTypeId = dataTypeId;

	}

	public Parameter clone() {
		try {
			return new Parameter((Parameter) super.clone());
		} catch (CloneNotSupportedException e) {
			throw new InternalError();
		}
	}
	
	public boolean equals(Object o) {
		
		if (o == null) {
			return false;
		}
		Parameter p = (Parameter)o;
		
		if (!this.parameterName.equals(p.parameterName)) {
			return false;
		}
		
		if (!this.dataTypeId.equals(p.dataTypeId)) {
			return false;
		}
		
		if (this.delFlag != p.delFlag) {
			return false;
		}
		
		return true;
	}
}
