728x90
저번 글 1: https://stickode.tistory.com/822
저번 글 2: https://stickode.tistory.com/835
안녕하세요. 저번 시간에 이어서, 오늘은 Configuration코드에 대한 설명을 업로드하겠습니다. 주석으로 설명을 달아두었습니다.
Configuration.java
import java.awt.*;
import java.util.Hashtable;
/**
* 프로그램 구성을 나타내는 클래스입니다. 이 클래스는 구성 매개변수의 읽기를 간소화하기 위한 정적 메서드를 제공합니다.
* 또한 문자열 값을 더 유용한 객체로 변환하는 몇 가지 메서드를 제공합니다.
*
*/
public class Configuration extends Object {
/**
* 내부 구성 속성 값입니다. 이 해시 테이블은 일부 프로그램(applet 등)에서 시스템 속성을 설정할 수 없기 때문에
* 시스템 속성에 구성 매개변수를 설정하는 것을 피하기 위해 사용됩니다.
*/
private static Hashtable config = new Hashtable();
/**
* 구성 매개변수 값을 반환합니다.
*
* @param key 구성 매개변수 키
* @return 구성 매개변수 값. 설정되지 않은 경우 null을 반환합니다.
*/
public static String getValue(String key) {
if (config.containsKey(key)) {
return config.get(key).toString();
} else {
try {
return System.getProperty(key);
} catch (SecurityException ignore) {
return null;
}
}
}
/**
* 구성 매개변수 값을 반환합니다. 구성 매개변수가 설정되지 않은 경우 대신 기본값을 반환합니다.
*
* @param key 구성 매개변수 키
* @param def 기본값
* @return 구성 매개변수 값. 설정되지 않은 경우 기본값을 반환합니다.
*/
public static String getValue(String key, String def) {
String value = getValue(key);
return (value == null) ? def : value;
}
/**
* 구성 매개변수 값을 설정합니다.
*
* @param key 구성 매개변수 키
* @param value 구성 매개변수 값
*/
public static void setValue(String key, String value) {
config.put(key, value);
}
/**
* 지정된 키에 대해 구성된 색상을 반환합니다. 키는 "tetris.color."로 시작하며 값은 시스템 속성에서 읽힙니다.
* 색상 값은 16진수 웹 형식인 "#RRGGBB" 형식으로 지정되어야 합니다.
* 기본 색상이 올바른 형식이 아닌 경우 흰색이 반환됩니다.
*
* @param key 구성 매개변수 키
* @param def 기본값
* @return 구성에서 지정된 색상 또는 기본 색상 값
*/
public static Color getColor(String key, String def) {
String value = getValue("tetris.color." + key, def);
Color color;
color = parseColor(value);
if (color != null) {
return color;
}
color = parseColor(def);
if (color != null) {
return color;
} else {
return Color.white;
}
}
/**
* 웹 색상 문자열을 구문 분석합니다. 색상 값이 올바르게 구문 분석되지 않은 경우 null이 반환됩니다.
*
* @param value 구문 분석할 색상 값
* @return 문자열로 표현된 색상 또는 형식이 잘못된 경우 null
*/
private static Color parseColor(String value) {
if (!value.startsWith("#")) {
return null;
}
try {
return new Color(Integer.parseInt(value.substring(1), 16));
} catch (NumberFormatException ignore) {
return null;
}
}
}
'Java' 카테고리의 다른 글
[Java] awt 테트리스 모듈화 - Game (0) | 2023.07.26 |
---|---|
[Java] Thread와 Swing으로 디지털 시계 만들기 (0) | 2023.07.16 |
[Java] awt 테트리스 - 실전편 (0) | 2023.06.17 |
[Java] 스케줄링 라이브러리, Quartz 사용해 Hello world 출력해보기 (0) | 2023.06.16 |
[JAVA]SHA-256 를 사용한 문자열 암호화(비밀번호 생성) (0) | 2023.06.05 |