private ArrayList<Value> convertInsertValuesType(Table tableDef, ArrayList<String> values) throws Error{
		ArrayList<Value> valueList = new ArrayList<Value>();
		ArrayList<Attribute> attrList = tableDef.getAttrList();
		String tableName = tableDef.getTableName();
		int attrSize = attrList.size();

		if(attrSize != values.size()){
			throw new Error("INSERT: The Number Of Values Not Match, Table " + tableName + " Has " + attrList.size() + " Values");
		}

		for(int i = 0; i < attrSize; i++){
			Attribute attribute = attrList.get(i);
			String strValue = values.get(i);
			try{
				Attribute.Type type = attribute.getType();
				
					if( type == Attribute.Type.INT ){
						int intValue = Integer.parseInt(strValue);
						Value value = new Value(intValue);
						valueList.add(value);
					}
					else if(type == Attribute.Type.CHAR){
						//Check type and length
						if( (attribute.getLength() + 2 < strValue.length()) || strValue.charAt(0) != '"' && strValue.charAt(0) != '\'' ){
							throw new NumberFormatException();
						}
						Value charValue = new Value(strValue);
						valueList.add(charValue);
					}
					
					else if(type == Attribute.Type.DECIMAL){
						double doubleVal = Double.parseDouble(strValue);
						Value doubleValue = new Value(doubleVal);
						valueList.add(doubleValue);
					}
			} catch(NumberFormatException ex){
				throw new Error("INSERT: Value " + strValue + " Has Wrong Type Or Length Exceeded");
			}
		}
		
		return valueList;
	}