#!/bin/bash
[ "$4" == "" ] && exec echo "Usage: $0 <Mission/World/Zone> <DATE (YYYYMMDD)> <SET_ID> <FILTER (CHAR_ID)>"

SERVER=$1
DATE=$2
SET_ID=$3
FILTER=$4

case ${SERVER} in
        Mission)
                mkdir /tmp/s${SET_ID}_${DATE}_${FILTER}; cd /tmp/s${SET_ID}_${DATE}_${FILTER}; for server in MS; do for set in ${SET_ID}; do mkdir -p /tmp/s${SET_ID}_${DATE}_${FILTER}/${server}${set}; done; done

                cd $HOME/servers${SET_ID}/Log/${DATE};
                for dir in $(ls -d MissionServer${SET_ID}); do server="MS"; cd $HOME/servers${SET_ID}/Log/${DATE}/${dir}; for file in $(ls *xz); do output_file=$(echo ${file}|sed 's/.xz//'); echo "xzcat $HOME/servers${SET_ID}/Log/${DATE}/${dir}/${file} | grep ${FILTER} > /tmp/s${SET_ID}_${DATE}_${FILTER}/${server}${SET_ID}/${output_file}_${FILTER}"; xzcat $HOME/servers${SET_ID}/Log/${DATE}/${dir}/${file} | grep ${FILTER} > /tmp/s${SET_ID}_${DATE}_${FILTER}/${server}${SET_ID}/${output_file}_${FILTER}; done; done

                cd /tmp/s${SET_ID}_${DATE}_${FILTER};
                for file in $(ls MS${SET_ID}/*level*.log*); do echo ${file}; tmp_file=$(echo ${file}|sed 's/$/_tmp/'); mv ${file} ${tmp_file}; cat ${tmp_file} | twolevel_comma > ${file}; rm -rf ${tmp_file}; done
                find . -type f -size 0 -delete
                ;;

        World)
                mkdir /tmp/s${SET_ID}_${DATE}_${FILTER}; cd /tmp/s${SET_ID}_${DATE}_${FILTER}; for server in WS; do for set in ${SET_ID}; do for id in $(seq 1 8); do mkdir -p /tmp/s${SET_ID}_${DATE}_${FILTER}/${server}${set}0${id}; done; done; done

                cd $HOME/servers${SET_ID}/Log/${DATE};
                for dir in $(ls -d WorldServer*); do server="WS"; id=$(echo ${dir}|sed "s/WorldServer${SET_ID}0//"); cd $HOME/servers${SET_ID}/Log/${DATE}/${dir}; for file in $(ls *xz); do output_file=$(echo ${file}|sed 's/.xz//'); echo "xzcat $HOME/servers${SET_ID}/Log/${DATE}/${dir}/${file} | grep ${FILTER} > /tmp/s${SET_ID}_${DATE}_${FILTER}/${server}${SET_ID}0${id}/${output_file}_${FILTER}"; xzcat $HOME/servers${SET_ID}/Log/${DATE}/${dir}/${file} | grep ${FILTER} > /tmp/s${SET_ID}_${DATE}_${FILTER}/${server}${SET_ID}0${id}/${output_file}_${FILTER}; done; done

                cd /tmp/s${SET_ID}_${DATE}_${FILTER};
                find . -type f -size 0 -delete
                ;;

        Zone)
                mkdir /tmp/s${SET_ID}_${DATE}_${FILTER}; cd /tmp/s${SET_ID}_${DATE}_${FILTER}; for server in ZS; do for set in ${SET_ID}; do for id in $(seq 1 8); do mkdir -p /tmp/s${SET_ID}_${DATE}_${FILTER}/${server}${set}0${id}; done; done; done

                cd $HOME/servers${SET_ID}/Log/${DATE};
                for dir in $(ls -d ZoneServer*); do server="ZS"; id=$(echo ${dir}|sed "s/ZoneServer${SET_ID}0//"); cd $HOME/servers${SET_ID}/Log/${DATE}/${dir}; for file in $(ls *xz); do output_file=$(echo ${file}|sed 's/.xz//'); echo "xzcat $HOME/servers${SET_ID}/Log/${DATE}/${dir}/${file} | grep ${FILTER} > /tmp/s${SET_ID}_${DATE}_${FILTER}/${server}${SET_ID}0${id}/${output_file}_${FILTER}"; xzcat $HOME/servers${SET_ID}/Log/${DATE}/${dir}/${file} | grep ${FILTER} > /tmp/s${SET_ID}_${DATE}_${FILTER}/${server}${SET_ID}0${id}/${output_file}_${FILTER}; done; done

                cd /tmp/s${SET_ID}_${DATE}_${FILTER};
                find . -type f -size 0 -delete
                ;;
        *)
                exec echo "Wrong Server Name Input!"
esac
