/**********************************************************************************
 * 프로그램명 : remit_excepted_list.java 프로그램설명 : 정해준 디렉토리 내의 디렉토리이름과 파일 이름순으로 정렬 작 성 자 : 강 원 중 작 성 일 : 2002/3/31 최신변경일 :
 * 2002. 6.29 다운 받은곳 : http://cpost.go.kr/shop/shop/way-board.php?db=sq&j=dn&number=57
 ***********************************************************************************/

package kr.co.kihyun.io;

import java.io.File;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ShortFileList {
        private static final Logger LOG = LoggerFactory.getLogger(ShortFileList.class);
	File file = null;
	File[] children = null;

	public ShortFileList(File file) {
		this.file = file;
	}

	public ShortFileList(String name) {
                //10.자원 삽입(임의 파일 접근)_CWE-99 : Add by KWON,HAN
                LOG.debug("name: {}", name); 
                if(name.contains("..") || name. contains("/")) { // 특수문자열 검증
                    LOG.debug("ShortFileList ShortFileList ===");
                    LOG.debug("10.자원 삽입(임의 파일 접근)_CWE-99 : Not Test {}", name);
                    LOG.debug("===============================");
                    
                    this.file = null;
                    return;
                }
                //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                
                //v2. 4.경로 조작 및 자원 삽입_CWE-22/23/36/99 : Update by KWON,HAN 
//		this.file = new File(name);
                
                String svrFilename = name;
                if (svrFilename != null && !"".equals(svrFilename)) {
                    // 수정 : 외부 입력값 필터링
                    svrFilename = svrFilename.replaceAll("/","");
                    svrFilename = svrFilename.replaceAll("\\","");
                    //svrFilename = svrFilename.replaceAll(".","");
                    //svrFilename = svrFilename.replaceAll("&","");
                    
                    LOG.debug("v2. 4.경로 조작 및 자원 삽입_CWE-22/23/36/99 : ShortFileList.ShortFileList svrFilename={} / Not Test", svrFilename);
                    File file = new File(svrFilename);
                    if (file != null) this.file = file;
                }
                //================================================================
                                
	}

	public File[] shortFileList() throws NullPointerException {
		File[] children = file.listFiles();
		File[] dirB = new File[children.length];
		File[] fileB = new File[children.length];
		int countD = 0;
		int countF = 0;
		int countC = 0;

		// 디렉토리와 파일으 정리함
		for (int i = 0; i < children.length; i++) {
			if (children[i].isDirectory()) {
				dirB[countD] = children[i];
				countD++;
			} else {
				fileB[countF] = children[i];
				countF++;
			}
		}

		for (int i = 0; i < dirB.length; i++) {
			if (dirB[i] != null) {
				children[countC] = dirB[i];
				countC++;
			}
		}

		for (int i = 0; i < fileB.length; i++) {
			if (fileB[i] != null) {
				children[countC] = fileB[i];
				countC++;
			}
		}
		return children;
	}

	/*
	 * public static void main(String[] args){ ShortFileList list = new
	 * ShortFileList("C:\\WEB-Service\\dogtrade\\gallery\\temp_images\\old"); File[] filelist = list.shortFileList();
	 * String filePath = ""; String newFilePath = ""; String newFilePath2 = "";
	 * 
	 * for(int i = 0; i < filelist.length; i++){ filePath = filelist[i].toString(); newFilePath = filePath.substring(0,
	 * filePath.lastIndexOf("_1.gif"))+"_11.gif";
	 * 
	 * System.out.println("NewFilePath = " + newFilePath); ImageInfo.reducer(filePath, newFilePath, 50); } }
	 */
}
