#!/bin/sh

#################################
#機能：追加されたソースの行数をチェックする
#作成者：金忠杰
#################################

##PROJECT_NAME="ﾆｭｰｽﾎﾟｰﾀﾙｻｲﾄﾘﾆｭｰｱﾙ対応"
##PROJECT_NAME="2009年下期4Q"
##PROJECT_NAME="ﾆｭｰｽﾎﾟｰﾀﾙｻｲﾄﾘﾆｭｰｱﾙ対応"
##PROJECT_NAME=XXXXXXXXXXXXXXXXXXXXXX
##PROJECT_NAME=XQKAHXXXXXXXXXXXXXXXXX
PROJECT_NAME=XQKAUXXXXXXXXXXXXXXXXX
#PROJECT_NAME=英語原稿プロセス新設
##2009年下期4Q

###ソース作成者名
##LIST_NAME="
##曹
##張
##金
##孫
##"
LIST_NAME="
kin
"


##/NC13/INS/work/kinn/*[cC] \  ##

##LIST_PATH="
##/NC13/INS/work/kinn/source_check/*[cCHh] \
##/NC13/INS/source/src/*[cC] \
##/NC13/INS/source/include/*[Hh] \
##/NC13/INS/source/pc/*[pP][cC] \
##/NC13/INS/source/pc/*[pP][cC] \
##/NC13/INS/plsql/*[sS][qQ][lL] \
##/NC13/INS/parts/src/*[cC] \
##/NC13/INS/parts/include/*[Hh] \
##"


##LIST_PATH="
##/NC/ksv3/source/src/*[cCHh] \
##"
LIST_PATH="
/NC21/KSV1/work/kin/source_check/*[cCHhLl] \
"

##/NC/ksv3/work/kinn/include/*[cCHh] \
##/NC/ksv3/work/kinn/src/*[cCHh] \


function fun_print {

 if (( $# < 3 ))
 then
	 printf "%5s :  %-30s\n" $2 $1
 ##echo "$1 $2"  | awk '{printf "%40s:%-30s\n",$1,$2}'
 else
 	printf "%5s :  %-30s" $2 $1
 	printf "-30s\n" $0
 fi
 
}
fun_allproject_clear_con () {	
	ind=0
	##"${#con[*]}"con_name in con[1-3]
	while (( ind < con_list_ind   )) 
	do
		let ind=ind+1
		inda=0
		con_flag=0
		while (( inda < project_ind )) 
		do
			let inda=inda+1
			if [ "${con_list[${ind}]}" = "${project_list[${inda}]}" ]
			then
				con_flag=1
				break
			fi
		done
		
		if (( ${con_flag} == 1 ))
		then
			let project_list_sum[${inda}]=project_list_sum[${inda}]+con_list_sum[${ind}]
		else
			let inda=inda+1
			project_list[${inda}]="${con_list[${ind}]}"
			let project_list_sum[${inda}]=con_list_sum[${ind}]
			project_ind=${inda}
			##echo "inda-${inda}●${ind}--${con[${ind}]}--${con_sum[${ind}]}"
		fi
	done

	con_list_ind=0
}

fun_clear_con () {	
	ind=0
	con_flag=0
	##"${#con[*]}"con_name in con[1-3]
	while (( ind < con_ind   )) 
	do
		let ind=ind+1
		inda=0
		con_flag=0
		while (( inda < con_list_ind )) 
		do
			let inda=inda+1
			if [ "${con[${ind}]}" = "${con_list[${inda}]}" ]
			then
				con_flag=1
				break
			fi
		done
		
		if (( ${con_flag} == 1 ))
		then
			let con_list_sum[${inda}]=con_list_sum[${inda}]+con_sum[${ind}]
		else
			let inda=inda+1
			con_list[${inda}]="${con[${ind}]}"
			let con_list_sum[${inda}]=con_sum[${ind}]
			con_list_ind=${inda}
			##echo "inda-${inda}●${ind}--${con[${ind}]}--${con_sum[${ind}]}"
		fi
	done
	##echo "★---${con_flag}"
	con_ind=0
	##ind=0
	##while (( ind < ${#con[*]}   )) 
	##do
	##	con_ind=0
	##	let ind=ind+1
	##	con[$ind]="XX"
	##	con_sum[$ind]=0
	##done
}

fun_con_sum () {	
	ind=0
	con_flag=0
	##"${#con[*]}"con_name in con[1-3]
	while (( ind < con_ind   )) 
	do
		let ind=ind+1
		if [ "${con[$ind]}XX" = "${content_old}XX" ]
		then
			con_flag=1
			break
		fi
	done
	##echo "★---${con_flag}"
	if (( ${con_flag} == 1 ))
	then
		let con_sum[$ind]=con_sum[$ind]+sum
	else
		##echo "★★${ind}----${content_old}-"
		let ind=ind+1
		con[$ind]="${content_old}"
		let con_sum[$ind]=sum
		con_ind=${ind}
	fi
	sum=0
}


if [ "${PROJECT_NAME}" = "" ]
then
	if (( $# < 1 ))
	then
		:
		echo "=============機能説明=========="
		echo "1.作成したソースの行数をチェックする"
		echo "2.修正ソース頭と尾の表記をチェックする"
		echo "==============================="
		echo "使い方 [source_count.sh 日付 ] \n \
		例えば [ source_count.sh 2010-00-00 ]"

		exit 0
	    ###echo "[source_count.sh 姓氏 日付 ] \n \
	    ###例えば [ source_count.sh 張 2010-00-00 ]\n \
	    ###或は [ source_count.sh 曹 2010-00-00 ]\n \
	    ###或は [ source_count.sh 金 2010-00-00 ]\n \
	    ###或は [ source_count.sh 孫 2010-00-00 ]"
	    
	###elif [ "$1" != "曹" ] && [ "$1" != "張" ] && [ "$1" != "金" ] && [ "$1" != "孫" ]
	###then
	###    echo "曹 or 張 or 金 or 孫"
	else
		:
	    ##if [ ${2} != [0-9][0-9][0-9][0-9]* ]
	    ##then
	    ##    echo "$2--0000-00-00"
	    ##else
	    ##    echo "ok"
	    ##fi
		PRAM_YEAR=`echo "${1}" | sed 's/\([0-9][0-9][0-9][0-9]\).\([0-9][0-9]\).\([0-9][0-9]\)/\1/g'`
		PRAM_MONTH=`echo "${1}" | sed 's/\([0-9][0-9][0-9][0-9]\).\([0-9][0-9]\).\([0-9][0-9]\)/\2/g'`
		PRAM_DAY=`echo "${1}" | sed 's/\([0-9][0-9][0-9][0-9]\).\([0-9][0-9]\).\([0-9][0-9]\)/\3/g'`

		##echo "${PRAM_YEAR}-----${PRAM_MONTH}---${PRAM_DAY}"

		PRAM_TIME="${PRAM_YEAR}${PRAM_MONTH}${PRAM_DAY}"
	fi
	PROJECT_NAME="[^ 	]+"
else
	PRAM_TIME="00000000"
fi


con_ind=0
con_list_ind=0
project_ind=0
ind=0
##echo "${filepath_old}"

echo "作成したソース行数" 
echo "" 
for CHECK_NAME in  ${LIST_NAME}
do
	sum_all=0
	sum=0
	fileline_old=0
	filepath_old="XXX"
	content_old="XXX"
	se_flag=0
	echo "**********************************" 
	echo "**${CHECK_NAME}:                           **" 
	echo "**********************************"  
	grep -nE "/\*.*[ 	]+R[0-9.]+[ 	]+\[.*\][ 	]+${PROJECT_NAME}[ 	]+[0-9]{4}.[0-9]{2}.[0-9]{2}[ 	]+[ADMOELadmoel]+[ 	]+${CHECK_NAME}[ 	]+\[[SsEe]\].*\*/" ${LIST_PATH} | \
	sed "s/^\([^:]*:[^:]*:\).*\(R[0-9.][0-9.]*\)[ 	][ 	]*\(\[.*\]\)[ 	][ 	]*\(${PROJECT_NAME}\)[ 	][ 	]*\([0-9]\{4\}\).\([0-9][0-9]\).\([0-9][0-9]\)[ 	][ 	]*\([ADMOELadmoel]*[ 	][ 	]*${CHECK_NAME}[ 	][ 	]*\[[sSeE]\]\).*$/\1 \2-\3-\4 \5 \6 \7 \8/g" | \
	sed "s/^\([^:]*\):\([^:]*\):.*\(R[0-9.][0-9.]*-\[.*\]-${PROJECT_NAME}\)[ 	][ 	]*\([0-9]\{4\}\).\([0-9][0-9]\).\([0-9][0-9]\)[ 	][ 	]*\([ADMOELadmoel][ADMOELadmoel]*\)[ 	][ 	]*\(${CHECK_NAME}\)[ 	][ 	]*\[\([sSeE]\)\].*$/\1 \2 \3 \4 \5 \6 \7 \8 \9/g" | \
	while read FILEPATH FILELINE CONTENT YEAR MONTH DAY MOD NAME SE
	do 
	
		##echo "FILEPATH-${FILEPATH}★FILELINE-${FILELINE}★CONTENT-${CONTENT}★YEAR-${YEAR}★MONTH-${MONTH}"
		##echo "content_old-${content_old}★CONTENT-${CONTENT}"
		##echo "filepath_old-${filepath_old}★FILEPATH-${FILEPATH}"
		if [  "${filepath_old}" != "${FILEPATH}" ]
		then
			if (( se_flag == 1  ))
			then
				echo "warning1--PATH:${filepath_old}  行:${fileline_old}  DATE:${time_old}-${mod_old}--${se_old}-"
				se_flag=0
			else
				##echo "filepath_old-${filepath_old}★FILEPATH-${FILEPATH}"
				if [  "${filepath_old}" != "XXX" ]
				then
					##for ind in [1-${#con[*]}]
					##echo "sum-${sum}★"
					if (( sum != 0 ))
					then
						##echo "★---"
						fun_con_sum
					fi
					content_old="XXX"
					ind=0
					##echo "con_ind★---${con_ind}●sum_all-${sum_all}"
					while (( ind < con_ind   )) 
					do
						let ind=ind+1
						let sum_all=sum_all+con_sum[$ind]
					done

					if (( ${sum_all} != 0 ))
					then
						##echo "${filepath_old}:sum=${sum_all}"
						fun_print ${filepath_old}  ${sum_all}
					fi
					
					fun_clear_con
				else
					:
				fi
				sum_all=0
				filepath_old="${FILEPATH}"
			fi
		else
			:	
		fi
		##echo "${content_old}★★★★${CONTENT}-----"
		if [  "${content_old}" != "${CONTENT}"  ]
		then
			##echo "${content_old}★${CONTENT}-----"
			if (( se_flag == 1  ))
			then
				echo "warning2--PATH:${filepath_old}  行:${fileline_old}  DATE:${time_old}-${mod_old}--${se_old}-"
				se_flag=0
			else
				if [ "${content_old}" != "XXX" ]
				then
					fun_con_sum
				fi
				content_old="${CONTENT}"
			fi
		else
			:
		fi	
		TIME="${YEAR}${MONTH}${DAY}"
	    ##echo "TIME--${TIME}--PRAM_TIME- ${PRAM_TIME}"
		if (( ${TIME} >= ${PRAM_TIME} ))
		then
			if [  "${SE}" = "S"   ]
			then
				if (( se_flag == 1  ))
				then
					echo "warning3--PATH:${filepath_old} 行:${fileline_old}  DATE:${time_old}-${mod_old}--${se_old}-"
				else
				##echo "★se_flag1★"
					:
					##content_old="${CONTENT}"
				fi
				se_flag=1
				fileline_old=${FILELINE}
				time_old="${TIME}"
				mod_old="${MOD}"
				se_old="${SE}"
				##echo "########${YEAR}${MONTH}${DAY}--${FILEPATH}- ${FILELINE}---${NAME}-- ${MOD}- ${SE}-"
			elif [  "${SE}" = "E" ]
			then
				##echo "@${se_flag}@@@@mod_old-${mod_old}-MOD-${MOD}@@@content_old@${content_old}-CONTENT-- ${CONTENT}"
				if (( se_flag == 0  ))
				then
					echo "warning4--PATH:${FILEPATH}  行:${FILELINE}  DATE:${TIME}-${MOD}--${SE}-"
				else
					if [  "${time_old}" = "${TIME}"   ]
					then
						###echo "@${se_flag}@@@@${mod_old}--${MOD}@@@@${content_old}- ${CONTENT}"
						if (( se_flag == 2  )) || [  "${mod_old}" != "${MOD}"  ] || [  "${content_old}" != "${CONTENT}"  ]
						then
							echo "warning5--PATH:${FILEPATH}  行:${FILELINE} DATE:${TIME}-${MOD}--${SE}-"
						else
							##echo "★se_flag2★"
							let sum=sum+FILELINE-fileline_old+1
							se_flag=2
						fi
					else
					   echo "warning6--PATH:${FILEPATH}  行:${FILELINE} DATE:${TIME}-${MOD}--${SE}-"
					fi
				fi
			else
				:
			fi

		fi
	done

	if (( se_flag == 1  ))
	then
		echo "warning6--PATH:${filepath_old}  行:${fileline_old}  DATE:${time_old}-${mod_old}--${se_old}-"
	else
		fun_con_sum
		sum=0
		if [  "${filepath_old}" != "XXX" ]
		then
			ind=0
			##for ind in con[1-"${#con[*]}"]
			while (( ind < con_ind   )) 
			do
				let ind=ind+1
				let sum_all=sum_all+con_sum[$ind]
			done
			if (( ${sum_all} != 0 ))
			then
				##echo "${filepath_old}:sum=${sum_all}"
				fun_print "${filepath_old}"  "${sum_all}"
			fi
		fi
	fi
	echo "-------------------------------"
	fun_clear_con
	ind=0
	con_flag=0
	sum_all=0
	while (( ind < con_list_ind )) 
	do
		let ind=ind+1
		let sum_all=sum_all+con_list_sum[${ind}]
		##echo "${con_list[${ind}]}:${con_list_sum[${ind}]}"
		fun_print  "${con_list[${ind}]}" "${con_list_sum[${ind}]}" 
		##printf "%40s" "${con_list[${ind}]}"
		##printf ":%-30s\n" "${con_list_sum[${ind}]}"
	done	
	echo "-------------------------"
	##printf "%40s" "$CHECK_NAME   ALL   SUM"
	##printf ":%-10s\n" ${sum_all}
	fun_print  "$CHECK_NAME[ALL_SUM]" "${sum_all}" 
	echo ""
	sum_all=0
	echo ""
	fun_allproject_clear_con
done
echo "==================================="
ind=0
while (( ind < project_ind )) 
do
	let ind=ind+1
	##echo "${project_list[${ind}]}:${project_list_sum[${ind}]}"
	fun_print "${project_list[${ind}]}"  "${project_list_sum[${ind}]}"
done

exit 0
