sys.Configuration.refresh()

Here are the examples of the java api sys.Configuration.refresh() taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

6 Examples 7

17 View Source File : UI.java , License : Apache License 2.0 , Project Creator : occidere
/**
 * 메뉴 8-5 멀티스레딩 모드
 *
 * @param in
 * @throws Exception
 */
private void multiThreadMode(final BufferedReader in) throws Exception {
    int multi = Configuration.getInt("MULTI", 2);
    print.info("다운로드에 할당할 스레드 값 설정합니다(현재: {})\n", multi);
    print.info("* 기본 값은 2이며, 대체로 값이 커질수록 성능은 좋아지나 메모리 사용량이 증가합니다.\n" + " 0: 멀티스레딩을 하지 않습니다 (초저성능)\n" + " 1: 코어 개수의 절반 만큼을 할당합니다 (저성능)\n" + " 2: 코어 개수 만큼을 할당합니다 (기본값, 권장)\n" + " 3: 코어 개수의 2배 만큼을 할당합니다 (고성능)\n" + " 4: 사용할 수 있는 최대한 할당합니다 (초고성능)\n");
    print.info("값 입력(0 ~ 4): ");
    String input = StringUtils.trimToEmpty(in.readLine());
    if (input.matches("[0-4]")) {
        Configuration.setProperty("MULTI", input);
        Configuration.refresh();
        print.info("변경 완료\n");
    } else {
        ErrorHandling.printError("잘못된 값입니다.", false);
    }
}
17 View Source File : UI.java , License : Apache License 2.0 , Project Creator : occidere
/**
 * 메뉴 8-2 저장경로 변경
 *
 * @param in
 * @throws Exception
 */
private void changeSavePath(final BufferedReader in) throws Exception {
    print.info("현재 저장경로: {}\n변경할 경로를 입력하세요: ", SystemInfo.PATH);
    String path = in.readLine().trim();
    File newPath = new File(path);
    /* 입력한 경로가 만든 적이 없는 경로 & 그런데 새로 생성 실패 */
    if (newPath.exists() == false && newPath.mkdirs() == false) {
        ErrorHandling.printError("저장경로 변경 실패", false);
        return;
    }
    /* 생성 가능한 정상적인 경로라면 */
    Configuration.setProperty("PATH", path);
    // store -> load - > apply
    Configuration.refresh();
    print.info("저장경로 변경 완료!\n");
}
16 View Source File : Downloader.java , License : Apache License 2.0 , Project Creator : occidere
/**
 * 순수 이미지 주소가 담긴 {@code List}를 가지고
 * HttpURLConnection을 이용해 실제 다운로드 및 저장을 담당<br>
 * Private Inner Class와 Parallel Stream 을 이용한 멀티 스레딩 다운로드
 *
 * @param archiveAddress 다운받을 만화 아카이브 주소들이 담긴 리스트(ex. 원피스 1화~3화 아카이브주소)
 */
public void download(List<Comic> archiveAddress) {
    // 아카이브 리스트에 담긴 개수 출력
    print.info("총 {}개\n", archiveAddress.size());
    // subFolder = 원피스 3화
    String path, subFolder;
    // http://www.shencomics.com/archives/533456와 같은 아카이브 주소
    for (Comic comic : archiveAddress) {
        print.info("다운로드 시도중...\n");
        // 아카이브주소를 바탕으로 이미지 URL 파싱해 comic객체 내부에 저장
        if (parseImageURL(comic) == false) {
            // 페이지 파싱 실패 -> 건너뛰고 다음 주소 시도
            continue;
        }
        // 아카이브주소에서 파싱한 이미지들의 URL이 담긴 리스트
        List<String> imgList = comic.getImgURL();
        subFolder = (comic.getTitle() + " " + comic.getTitleNo()).trim();
        /* 저장경로 = "기본경로\제목\제목 n화\" = "C:\Marumaru\제목\제목 n화\" 또는,
			 * 저장경로 = "사용자 설정 경로\제목\제목 n화\" = "C:\Marumaru\제목\제목 n화\" */
        path = String.format("%s/%s/%s/", SystemInfo.PATH, comic.getTitle(), subFolder);
        // 매 회차 당 0으로 초기화 필수
        int pageNum = 0;
        // 전체 이미지의 개수
        int numberOfPages = imgList.size();
        // 저장경로 폴더 생성
        SystemInfo.makeDir(path);
        print.info("제목 : {}\n", comic.getTitle());
        print.info("다운로드 폴더 : {}\n", path);
        print.info("다운로드 시작 (전체 {}개)\n", numberOfPages);
        // 다운로드용 inner class 객체
        Worker[] workers = new Worker[numberOfPages];
        // 다운로드 필수 정보들 주입
        for (String imgURL : imgList) {
            workers[pageNum] = new Worker(imgURL, path, subFolder, ++pageNum, numberOfPages);
        }
        // 사용가능한 코어 수. 최소 1개는 보장
        final int CORE_COUNT = Math.max(1, Runtime.getRuntime().availableProcessors());
        // value of MULTI property
        int numberOfThreads, multi = Configuration.getInt("MULTI", 2);
        /* 0: Sequential (Single Thread Download)
			 * 1: Thread count = available core count / 2
			 * 2: Thread count = available core count (DEFAULT)
			 * 3: Thread count = available core count * 2
			 * 4: Thread count = Unlimited (Equal to numberOfPages)
			 */
        if (multi == 0)
            numberOfThreads = 1;
        else if (multi == 1)
            numberOfThreads = CORE_COUNT >>> 1;
        else if (multi == 2)
            numberOfThreads = CORE_COUNT;
        else if (multi == 3)
            numberOfThreads = CORE_COUNT << 1;
        else
            numberOfThreads = numberOfPages;
        // 스레드 개수가 전체 페이지 수를 초과하지 않게 조정
        numberOfThreads = Math.min(numberOfThreads, numberOfPages);
        // 다운로드 스트림
        Stream<Worker> downloadStream = Arrays.stream(workers).parallel();
        // 1: Sequential, N: Parallel
        ForkJoinPool pool = new ForkJoinPool(numberOfThreads);
        try {
            pool.submit(() -> {
                // start() -> run()
                downloadStream.forEach(w -> w.run());
            }).get();
        } catch (Exception e) {
            ErrorHandling.saveErrLog("다운로드 실패", "제목: " + subFolder, e);
        }
        /* 다운받은 만화들을 하나로 합치는 property 값이 true면 합침(기본: false) */
        try {
            Configuration.refresh();
            if (Configuration.getBoolean("MERGE", false)) {
                ImageMerge.mergeAll(path, subFolder);
            }
        } catch (Exception e) {
            ErrorHandling.saveErrLog("이미지 병합 실패", "", e);
        }
        /* 다운받은 만화들을 압축한다. */
        try {
            Configuration.refresh();
            if (Configuration.getBoolean("ZIP", false)) {
                ImageCompress.compress(path);
            }
        } catch (Exception e) {
            ErrorHandling.saveErrLog("다운받은 만화 압축 실패", "", e);
        }
    }
}
15 View Source File : UI.java , License : Apache License 2.0 , Project Creator : occidere
/**
 * 메뉴 8-3 이미지 합치기
 *
 * @param in
 * @throws Exception
 */
private void mergeImage(final BufferedReader in) throws Exception {
    boolean merge = Configuration.getBoolean("MERGE", false);
    print.info("true면 다운받은 만화를 하나의 긴 파일로 합친 파일을 추가로 생성합니다(현재: {})\n", merge);
    print.info("값 입력(true or false): ");
    String input = StringUtils.lowerCase(in.readLine());
    if (StringUtils.containsAny(input, "true", "false")) {
        Configuration.setProperty("MERGE", input);
        Configuration.refresh();
        System.out.println("변경 완료");
    } else {
        ErrorHandling.printError("잘못된 값입니다.", false);
    }
}
15 View Source File : UI.java , License : Apache License 2.0 , Project Creator : occidere
/**
 * 메뉴 8-4 디버깅 모드
 *
 * @param in
 * @throws Exception
 */
private void debugMode(final BufferedReader in) throws Exception {
    boolean debug = Configuration.getBoolean("DEBUG", false);
    print.info("true면 다운로드 과정에 파일의 용량과 메모리 사용량이 같이 출력됩니다(현재: {})\n", debug);
    print.info("값 입력(true or false): ");
    String input = StringUtils.lowerCase(in.readLine());
    if (StringUtils.containsAny(input, "true", "false")) {
        Configuration.setProperty("DEBUG", input);
        Configuration.refresh();
        print.info("변경 완료\n");
    } else {
        ErrorHandling.printError("잘못된 값입니다.", false);
    }
}
15 View Source File : UI.java , License : Apache License 2.0 , Project Creator : occidere
/**
 * 8-6 이미지 압축하기 모드
 *
 * @param in
 * @throws Exception
 */
private void compressImage(final BufferedReader in) throws Exception {
    boolean compress = Configuration.getBoolean("ZIP", false);
    print.info("다운받은 만화들을 압축할 것인지 설정합니다(현재: {})\n", compress);
    print.info("값 입력(true or false): ");
    String input = StringUtils.lowerCase(in.readLine());
    if (StringUtils.containsAny(input, "true", "false")) {
        Configuration.setProperty("ZIP", input);
        Configuration.refresh();
        print.info("변경 완료\n");
    } else {
        ErrorHandling.printError("잘못된 값입니다.", false);
    }
}