diff --git a/src/main/java/cokr/xit/foundation/Access.java b/src/main/java/cokr/xit/foundation/Access.java index a4531a1..d0a3c1f 100644 --- a/src/main/java/cokr/xit/foundation/Access.java +++ b/src/main/java/cokr/xit/foundation/Access.java @@ -1,6 +1,7 @@ package cokr.xit.foundation; import java.util.Locale; +import java.util.Map; /**현재 클라이언트(사용자)의 접근정보를 추출하여 제공하는 클래스. */ @@ -12,6 +13,7 @@ public class Access { sessionID, action, ipAddress; + private Map params; private boolean newSession, mobile, @@ -90,6 +92,22 @@ public class Access { return this; } + /**액션의 파라미터들을 반환한다. + * @return 액션의 파라미터 + */ + public Map getParams() { + return params; + } + + /**액션의 파라미터들을 설정한다. + * @param params 액션의 파라미터 + * @return Access + */ + public Access setParams(Map params) { + this.params = params; + return this; + } + /**현재 스레드의 클라이언트의 Access 정보를 반환한다. * @return 현재 스레드의 클라이언트의 Access */ diff --git a/src/main/java/cokr/xit/foundation/data/DataFormat.java b/src/main/java/cokr/xit/foundation/data/DataFormat.java index a1f6f15..a65a2e1 100644 --- a/src/main/java/cokr/xit/foundation/data/DataFormat.java +++ b/src/main/java/cokr/xit/foundation/data/DataFormat.java @@ -19,14 +19,61 @@ public class DataFormat extends AbstractComponent { return !isEmpty(str) ? str.substring(0, 3) + "-" + str.substring(3, 5) + "-" + str.substring(5) : ""; } + /**yyyyMMdd, 또는 yyMMdd 포맷의 문자열을 yyyy-MM-dd 포맷으로 변환하여 반환한다. + * @param obj yyyyMMdd, 또는 yyMMdd 포맷의 문자열 + * @return yyyy-MM-dd 포맷 문자열 + */ + public static final String yyyy_mm_dd(Object obj) { + if (isEmpty(obj)) return ""; + + String str = obj.toString(); + int length = str.length(), + pos = length - 2; + + String + day = str.substring(pos), + month = str.substring(pos = pos - 2, pos + 2), + year = str.substring(0, pos); + return String.format("%s-%s-%s", year, month, day); + } - /**'-'로 구분된 날짜(yyyy-MM-dd)를 반환한다. - * @param str '-'이 없는 날짜 - * @return '-'로 구분된 날짜 + /**HHmmss 포맷의 문자열을 HH:mm:ss 포맷으로 변환하여 반환한다. + * @param obj HHmmss 포맷의 문자열 + * @return HH:mm:ss 포맷 문자열 */ - public static final String yyyy_mm_dd(String str) { - if (isEmpty(str)) return ""; + public static final String hh_mm_ss(Object obj) { + if (isEmpty(obj)) return ""; + + String str = obj.toString(); + int length = str.length(), + pos = length - 2; + + String + ss = str.substring(pos), + mm = str.substring(pos = pos - 2, pos + 2), + hh = str.substring(0, pos); + return String.format("%s:%s:%s", hh, mm, ss); + } + + /**yyyyMMddHHmmss, 또는 yyMMddHHmmss 포맷의 문자열을 yyyy-MM-dd HH:mm:ss 포맷으로 변환하여 반환한다. + * @param obj yyyyMMddHHmmss, 또는 yyMMddHHmmss 포맷의 문자열 + * @return yyyy-MM-dd HH:mm:ss 포맷 문자열 + */ + public static final String yyyy_MM_dd_HH_mm_ss(Object obj) { + if (isEmpty(obj)) return ""; + + String str = obj.toString(); + int length = str.length(), + pos = length - 6; + + try { + String + date = str.substring(0, pos), + time = str.substring(pos); - return str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6); + return yyyy_mm_dd(date) + " " + hh_mm_ss(time); + } catch (Exception e) { + return str; + } } } \ No newline at end of file diff --git a/src/main/java/cokr/xit/foundation/web/AccessFilter.java b/src/main/java/cokr/xit/foundation/web/AccessFilter.java index af9dd4f..a585f0a 100644 --- a/src/main/java/cokr/xit/foundation/web/AccessFilter.java +++ b/src/main/java/cokr/xit/foundation/web/AccessFilter.java @@ -40,6 +40,7 @@ public class AccessFilter implements Filter { Access access = new Access() .setAction(action) + .setParams(hreq.getParameterMap()) .setNewSession(session == null || session.isNew()) .setMobile(hreq.getHeader("User-Agent").contains("Mobi")) .setSessionID(session != null ? session.getId() : null)