팡이네

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//숫자 키입력 검사
function isNumberKeyDown(e) {
    e = e || window.event;
    var keyCode = (e.keyCode ? e.keyCode : e.which);
 
    if (keyCode == 8 || keyCode == 9 || keyCode == 27 || keyCode == 46) return true;    //BackSpace, Tab, ESC, Delete
    if (keyCode == 35 || keyCode == 36 || keyCode == 37 || keyCode == 39) return true//Home, End, Left, Right Arrow
    if (e.ctrlKey || e.shiftKey || keyCode == 13) return false; //Enter
 
    return ((keyCode > 47 && keyCode < 58) || (keyCode > 95 && keyCode < 106));
}
 
<input type="text" name="tbTest" onkeydown="return isNumberKeyDown(event);" style="ime-mode:disabled">
 
위와 같이 처리해도 한글은 입력되기 때문에 한글 입력을 방지하기 위해 ime-mode 스타일 추가

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
    TO_CHAR(EXAM_DATE, 'IW') AS WEEK_NO
    ,TO_CHAR(EXAM_DATE, 'YYYYMMDD') AS EXAMDATE
    ,DECODE(TO_CHAR(EXAM_DATE, 'D'), '1', '일', '2', '월', '3', '화', '4', '수', '5', '목', '6', '금', '토') AS WEEK_NAME
FROM
    (
        SELECT
            TO_DATE('20160321', 'YYYYMMDD') + (ROWNUM - 1) AS EXAM_DATE
        FROM
            DICTIONARY
        WHERE
            ROWNUM < 8
    ) A

'Oracle' 카테고리의 다른 글

특정 기간 날짜 모두 SELECT  (0) 2017.05.23
여러 행의 문자열을 한 행으로 표시  (0) 2016.04.20

알프레스코 웹스크립트를 이용한 사이트 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
/**
 * 사이트를 생성한다.
 * @param siteName      사이트명(빈칸, 특수문자 불가)
 * @param title         사이트 제목
 * @param description   사이트 설명
 * @param visibility    공개유형(PUBLIC/PRIVATE/MODERATED)
 * @return
 */
public boolean createSite(String siteName, String title, String description, String visibility)
{
    String doLoginUrl = ALFRESCO_SERVER_URL +"/share/page/dologin";
    String dashboardUrl = ALFRESCO_SERVER_URL +"/share/page/user/admin/dashboard";
    String createSiteUrl = ALFRESCO_SERVER_URL +"/share/service/modules/create-site";
     
    CloseableHttpClient client = getHttpClient();
     
    try
    {
        List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
        params.add(new BasicNameValuePair("username", ALFRESCO_ADMIN_ID));
        params.add(new BasicNameValuePair("password", ALFRESCO_ADMIN_PASS));
     
        HttpPost loginPost = new HttpPost(doLoginUrl);
        loginPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
        loginPost.setEntity(new UrlEncodedFormEntity(params));
         
        CloseableHttpResponse response = client.execute(loginPost);
 
        try
        {
            StatusLine statusLine = response.getStatusLine();
             
            //알프레스코는 로그인 후 Share 페이지로 이동하기 때문에
            //getStatusCode() 리턴값이 SC_OK가 아니라 SC_MOVED_TEMPORARILY
            if (statusLine.getStatusCode() == HttpStatus.SC_MOVED_TEMPORARILY)
            {
                org.apache.http.Header[] headers = loginPost.getAllHeaders();
 
                String JSESSIONID = "";
                String alfUsername3 = "";
                String alfLogin = "";
                 
                //---------------------------------------
                //로그인 쿠키값 추출
                //---------------------------------------
                for (int i = 0; i < headers.length; i++)
                {
                    Integer idxJsession = headers[i].toString().indexOf("JSESSIONID=");
                    if (idxJsession > -1)
                    {
                        JSESSIONID = headers[i].toString().substring(idxJsession +11, idxJsession +11 +32);
                    }
                     
                    Integer idxAlfUsername3 = headers[i].toString().indexOf("alfUsername3=");
                    if (idxAlfUsername3 > -1)
                    {
                        alfUsername3 = headers[i].toString().substring(idxAlfUsername3 +13, idxAlfUsername3 +13 +5);
                    }
                     
                    Integer idxAlfLogin = headers[i].toString().indexOf("alfLogin=");
                    if (idxAlfLogin > -1)
                    {
                        alfLogin = headers[i].toString().substring(idxAlfLogin +9, idxAlfLogin +9 +10);
                    }
                }
                 
                //---------------------------------------
                //데시보드
                //---------------------------------------
                String cookie = "JSESSIONID="+ JSESSIONID +";"
                        + "alfLogin="+ alfLogin +";"
                        + "alfUsername3="+ alfUsername3 +";";
                 
                HttpGet dashboadrGet = new HttpGet(dashboardUrl);
                dashboadrGet.setHeader("Content-Type", "application/json");
                dashboadrGet.setHeader("Accept", "application/json");
                dashboadrGet.setHeader("Cookie", cookie);
                 
                CloseableHttpResponse response2 = client.execute(dashboadrGet);
                 
                try
                {
                    StatusLine statusLine2 = response2.getStatusLine();
                    if (statusLine2.getStatusCode() == HttpStatus.SC_OK)
                    {
                        org.apache.http.Header[] headers2 = dashboadrGet.getAllHeaders();
                         
                        String csrfToken = "";
                     
                        for (int i = 0; i < headers2.length; i++)
                        {
                            Integer idxCsrfToken = headers2[i].toString().indexOf("Alfresco-CSRFToken=");
                            if (idxCsrfToken > -1)
                            {
                                csrfToken = headers2[i].toString().substring(idxCsrfToken +19, idxCsrfToken +19 +50);
                            }
                        }
                         
                        //---------------------------------------
                        //사이트 생성
                        //---------------------------------------
                        String cookie2 = cookie +" Alfresco-CSRFToken="+ csrfToken +";";
                         
                        JSONObject site = new JSONObject();
                        site.put("shortName", siteName);
                        site.put("sitePreset", "site-dashboard");
                        site.put("title", title);
                        site.put("description", description);
                        site.put("visibility", visibility);
 
                        HttpPost createSitePost = new HttpPost(createSiteUrl);
                        createSitePost.setHeader("Content-Type", "application/json");
                        createSitePost.setHeader("Accept", "application/json");
                        createSitePost.setHeader("Cookie", cookie2);
                        createSitePost.setEntity(new StringEntity(site.toString(), ContentType.create("text/plain", Consts.UTF_8)));
                         
                        CloseableHttpResponse response3 = client.execute(createSitePost);
                         
                        try
                        {
                            StatusLine statusLine3 = response3.getStatusLine();
                            if (statusLine3.getStatusCode() == HttpStatus.SC_OK)
                            {
                                logger.info(String.format("★★★ %s Site Created!!!★★★", siteName));
                                return true;
                            }
                            else
                            {
                                logger.error("Method failed createSitePost: "+ response3.getStatusLine());
                            }
                        }
                        catch (Exception e)
                        {
                            logger.error(e.getMessage());
                        }
                        finally
                        {
                            response3.close();
                        }
                    }
                    else
                    {
                        logger.error("Method failed dashboadrGet: "+ response2.getStatusLine());
                    }
                }
                catch (Exception e)
                {
                    logger.error(e.getMessage());
                }
                finally
                {
                    response2.close();
                }
            }
            else
            {
                logger.error("Method failed loginPost: "+ response.getStatusLine());
            }
        }
        catch (Exception e)
        {
            logger.error(e.getMessage());
        }
        finally
        {
            response.close();
        }
    }
    catch (Exception e)
    {
        logger.error(e.getMessage());
    }
     
    return false;
}

사이트 정보 조회

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public HashMap getSite(CloseableHttpClient client, String siteName)
{
    HttpGet method = null;
     
    try
    {
        //  /alfresco/s/api/sites/{shortname}
        String url = String.format("%s/api/sites/%s", ALFRESCO_SERVER_SVC, siteName);
        method = new HttpGet(url);
         
        CloseableHttpResponse response = client.execute(method);
         
        try
        {
            StatusLine statusLine = response.getStatusLine();
             
            if (statusLine.getStatusCode() == HttpStatus.SC_OK)
            {
                return createResponse(response);
            }
            else
            {
                logger.error(statusLine.getStatusCode() +" "+ statusLine.getReasonPhrase());
            }
        }
        finally
        {
            response.close();
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
    finally
    {
        method.releaseConnection();
    }
     
    return null;
}

사이트 존재여부

1
2
3
4
5
6
7
8
9
10
/**
 * 사이트 존재여부
 * @param client
 * @param siteName  사이트명
 * @return
 */
public boolean existSite(CloseableHttpClient client, String siteName)
{
    return (this.getSite(client, siteName) != null);
}

JSON 데이터 변환

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
 * 서버 반환 데이터를 HashMap으로 변환한다.
 * @param response
 * @return
 */
private HashMap createResponse(CloseableHttpResponse response)
{
    try
    {
        HttpEntity entity = response.getEntity();
         
        if (entity != null)
        {
            InputStream instream = entity.getContent();
             
            try
            {
                return createResponse(instream);
            }
            finally
            {
                instream.close();
            }
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
     
    return null;
}