#!/bin/bash
#
#FM_FileDataChk ver1.1.0	
#
# usage: 
#	FM_FileDataChk filename 
#
# Description: 
#	for check data of the file
#Copyright (C) 2012 NEC Corporation.
#If you tamper with the source, the behavior of the FilterMonitor is not guaranteed.
############################################################################################################

export PATH=${PATH}:"/bin:/sbin:/usr/bin:/usr/bin:/usr/sbin"

SetPath=/etc/FilterMonitor
filename=$1
# HighBall-S
#HWID=$2
SKU=$2
# HighBall-E
SensorNum=$3

IsNum(){

	checkval=`echo -n $1|sed 's/[0-9]//g' `
	if [ -n "$checkval" ]
	then
		return 1
	fi
		return 0

}

File_DataChk(){
	if [ -f "$PATHPREFIX/$SetPath/$filename" ]
	then 
		case $filename in
		"SKUDefine")
				export IFS=","
# HighBall-S
#				SKU=(`echo $sensordata | grep "$HWID,$SensorNum" $PATHPREFIX/$SetPath/$filename`)
				SKU=(`echo $sensordata | grep "$SKU,$SensorNum" $PATHPREFIX/$SetPath/$filename`)
# HighBall-E
				if [ ${#SKU[*]} -lt 10 ]
				then
					return 1
				fi
				AirFlowDetectValue=${SKU[4]}
				AbnormalValue=${SKU[5]}

				IsNum $AirFlowDetectValue
				if [ $? -eq 1 ]
				then
					return 1
				fi
				
				IsNum $AbnormalValue
				if [ $? -eq 1 ]
				then
					return 1
				fi

				return 0
		;;

		"FilterMonitorSetting")
				#Check data from FilterMonitorSetting
				export IFS=","
				read -a Setting < $PATHPREFIX/$SetPath/$filename

				if [ ${#Setting[*]} -lt 16 ]
				then
					return 1
				fi

# HighBall-S
#				HWID=${Setting[0]}
				SKU=${Setting[0]}
# HighBall-E
				AirFlowAbnomalPointMaxNum=${Setting[1]}
				IPMITOOL_RetryNum=${Setting[2]}
				CalibrationRetryNum=${Setting[3]}
				SensorStatus=${Setting[4]}
				DataPath=${Setting[5]}
				LogDirectory=${Setting[6]}
				LogTraceLevel=${Setting[7]}
				Hour=${Setting[8]}
				Minute=${Setting[9]}
				Interval=${Setting[10]}
				DayofWeek1=${Setting[11]}
				DayofWeek2=${Setting[12]}
				CalibDate=${Setting[13]}
				LastAirFlowDate=${Setting[14]}
				Func_RetryNum=${Setting[15]}
				SensorNum=${Setting[16]}

				#HWID is exsit or not 
				export IFS=","
# HighBall-S
#				Ret=(`echo $sensordata | grep -c "$HWID" $PATHPREFIX/$SetPath/"SKUDefine"`)
				Ret=(`echo $sensordata | grep -c "$SKU" $PATHPREFIX/$SetPath/"SKUDefine"`)
# HighBall-E
				if [ $Ret -eq 0 ]
				then
					return 3
				fi
			
				IsNum $AirFlowAbnomalPointMaxNum
				if [ $? -eq 1 ]
				then
					echo "1"
					return 1
				else 
					if [ $AirFlowAbnomalPointMaxNum -lt 0 -o $AirFlowAbnomalPointMaxNum -ge 180 ]
					then		
						echo "2"	
						return 1

					fi
				fi
				IsNum $IPMITOOL_RetryNum
				if [ $? -eq 1 ]
				then
					echo "3"
					return 1

				fi

				IsNum $CalibrationRetryNum
				if [ $? -eq 1 ]
				then
					echo "4"
					return 1

				fi

				SensorStatus_CHECK=`expr $SensorStatus : "\([0-3]\)$"`
				if [ -z $SensorStatus_CHECK ]
				then
					echo "5"
					return 1
				fi

				if [ ! -d $DataPath ]
				then
					return 1

				fi

				if [ ! -d $LogDirectory ]
				then
					return 1

				fi

				LogTraceLevel_CHECK=`expr $LogTraceLevel : "\([0-1]\)$"`
				if [ -z $LogTraceLevel_CHECK ]
				then
					return 1

				fi

				Hour_CHECK=`expr $Hour : "\([0-2][0-9]\)$"`
				if [ -z $Hour_CHECK ]
				then
					return 1

				fi

				Minute_CHECK=`expr $Minute : "\([0-5][0-9]\)$"`
				if [ -z $Minute_CHECK ]
				then
					return 1

				fi

				Interval_CHECK=`expr $Interval : "\([0-4]\)$"`
				if [ -z $Interval_CHECK ]
				then
					return 1

				fi

				DayofWeek1_CHECK=`expr $DayofWeek1 : "\([0-7]\)$"`
				if [ -z $DayofWeek1_CHECK ]
				then
					return 1

				fi

				DayofWeek2_CHECK=`expr $DayofWeek2 : "\([0-7]\)$"`
				if [ -z $DayofWeek2_CHECK ]
				then
					return 1

				fi

				IsNum $CalibDate
				if [ $? -eq 1 ]
				then
					return 1

				fi

				IsNum $LastAirFlowDate
				if [ $? -eq 1 ]
				then
					return 1

				fi

				IsNum $Func_RetryNum
				if [ $? -eq 1 ]
				then
					return 1

				fi			

	#			IsNum $SensorNum
	#			if [ $? -eq 1 ]
	#			then
	#				return 1
	#			fi

				return 0
		;;
		*"_Setting")
				export IFS=","
				read -a Sensorinfo < $PATHPREFIX/$SetPath/$filename
				if [ ${#Sensorinfo[*]} -lt 5 ]
				then
					return 1
				fi
				AirFlowResult=${Sensorinfo[5]}
				AirFlowData=${Sensorinfo[3]}
				PreAirFlowStatus=${Sensorinfo[1]}
				PreAbnormalStatus=${Sensorinfo[0]}
				Refvalue=${Sensorinfo[2]}
				Threasholds=${Sensorinfo[4]}

				IsNum $AirFlowResult
				if [ $? -eq 1 ]
				then
					return 1

				fi

				IsNum $AirFlowData
				if [ $? -eq 1 ]
				then
					return 1

				fi

				IsNum $PreAirFlowStatus
				if [ $? -eq 1 ]
				then
					return 1

				fi

				IsNum $PreAbnormalStatus
				if [ $? -eq 1 ]
				then
					return 1

				fi

				IsNum $Refvalue
				if [ $? -eq 1 ]
				then
					return 1

				fi

				IsNum $Threasholds
				if [ $? -eq 1 ]
				then
					return 1

				fi

				return 0
		;;
		esac

	else
		export IFS=","
		read -a Setting < $PATHPREFIX/$SetPath/"FilterMonitorSetting"
		if [ ${#Setting[*]} -lt 16 ]
		then
			return 1
		fi
		DataPath=${Setting[5]}

		if [ -f "$PATHPREFIX/$DataPath/$filename" ]
		then
			export IFS=","
			read -a Airflowdata < $PATHPREFIX/$DataPath/$filename
			if [ ${#Airflowdata[*]} -lt 7 ]
			then
				return 1
			fi
			AirFlowdate=${Airflowdata[0]}
			AirFlowtime=${Airflowdata[1]}
			AirFlowdata=${Airflowdata[2]}
			RefValue=${Airflowdata[3]}
			Threasholds=${Airflowdata[4]}
			ReduceValue=${Airflowdata[5]}
			Calibdate=${Airflowdata[6]}
			AirFlowInterval=${Airflowdata[7]}

			IsNum $AirFlowdate
			if [ $? -eq 1 ]
			then
				return 1

			fi

			IsNum $AirFlowtime
			if [ $? -eq 1 ]
			then
				return 1

			fi

			IsNum $AirFlowdata
			if [ $? -eq 1 ]
			then
				return 1

			fi

			IsNum $RefValue
			if [ $? -eq 1 ]
			then
				return 1

			fi

			IsNum $Threasholds
			if [ $? -eq 1 ]
			then
				return 1

			fi

			IsNum $ReduceValue
			if [ $? -eq 1 ]
			then
				return 1

			fi

			IsNum $Calibdate
			if [ $? -eq 1 ]
			then
				return 1

			fi

			IsNum $AirFlowInterval
			if [ $? -eq 1 ]
			then
				return 1

			fi

			return 0

		fi
	return 2
	fi
}
# HighBall-S
#File_DataChk $filename $HWID $SensorNum
File_DataChk $filename $SKU $SensorNum
# HighBall-E


