.gitignore

This commit is contained in:
KNKIM 2021-07-28 13:23:05 +09:00
parent d45d320c2a
commit 7ab7de6b16
105 changed files with 14912 additions and 15146 deletions

View File

@ -1,42 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v8.5">
<attributes>
<attribute name="owner.project.facets" value="jst.web"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v8.5">
<attributes>
<attribute name="owner.project.facets" value="jst.web"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="src/main/webapp"/>
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
<attributes>
<attribute name="hide" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
<classpathentry kind="output" path=""/>
</classpath>

View File

@ -1,3 +0,0 @@
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/test/java=UTF-8

View File

@ -1,8 +0,0 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.8

File diff suppressed because one or more lines are too long

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="nlib-1.0.0">
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<property name="java-output-path" value="/nlib2/build/classes"/>
<property name="context-root" value="nlib"/>
</wb-module>
</project-modules>

View File

@ -1,12 +0,0 @@
<root>
<facet id="jst.jsf">
<node name="libprov">
<attribute name="provider-id" value="jsf-no-op-library-provider"/>
</node>
</facet>
<facet id="jst.jaxrs">
<node name="libprov">
<attribute name="provider-id" value="jaxrs-no-op-library-provider"/>
</node>
</facet>
</root>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<runtime name="Apache Tomcat v8.5"/>
<fixed facet="wst.jsdt.web"/>
<installed facet="java" version="1.8"/>
<installed facet="jst.web" version="2.5"/>
<installed facet="jst.jsf" version="2.2"/>
<installed facet="jst.jaxrs" version="2.0"/>
<installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>

View File

@ -1 +0,0 @@
org.eclipse.wst.jsdt.launching.baseBrowserLibrary

View File

@ -1 +0,0 @@
Window

View File

@ -1,2 +0,0 @@
disabled=06target
eclipse.preferences.version=1

View File

@ -1,78 +1,78 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_GET.xml -->
<result>
<page>1</page>
<totPages>15</totPages>
<records>125</records>
<results>
<articleNo>1</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>2</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>3</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>4</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>대기</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>5</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>대기</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>6</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>7</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>8</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>9</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>10</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
</result>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_GET.xml -->
<result>
<page>1</page>
<totPages>15</totPages>
<records>125</records>
<results>
<articleNo>1</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>2</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>3</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>4</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>대기</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>5</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>대기</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>6</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>7</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>8</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>9</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
<results>
<articleNo>10</articleNo>
<title>질문있습니다.</title>
<writerName>김길동</writerName>
<replyStatus>답변완료</replyStatus>
<regDate>2021-07-19</regDate>
</results>
</result>

View File

@ -1,41 +1,41 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_GET.xml -->
<result>
<!-- 상세내용 -->
<articleNo>5</articleNo>
<articleType>101</articleType>
<title>공지사항 테스트</title>
<articlePassword>111</articlePassword>
<readCount>15</readCount>
<regDate>2021-07-19</regDate>
<regUserName>김아무</regUserName>
<repStatus>답변완료</repStatus>
<email>myid@digitalship.co.kr</email>
<contentQeust>질문이 있습니다.</contentQeust>
<contentQeustFile>111111=화면캡쳐.jpg;222222=화면캡쳐2.jpg;</contentQeustFile>
<contentReply>이렇게 답변 드립니다.</contentReply>
<contentReplyFile>333333=결과확인.jpg;</contentReplyFile>
<!-- 이전글, 다음글 -->
<page>1</page>
<totPages>1</totPages>
<records>2</records>
<results>
<articleNo>4</articleNo>
<articleType>101</articleType>
<title>이전의 글제목입니다.</title>
<regDate>2021-07-19</regDate>
<regUserName>김아무</regUserName>
<repStatus>답변완료</repStatus>
</results>
<results>
<articleNo>6</articleNo>
<articleType>102</articleType>
<title>다음의 글제목입니다.</title>
<regDate>2021-07-20</regDate>
<regUserName>홍아무</regUserName>
<repStatus>답변완료</repStatus>
</results>
</result>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_GET.xml -->
<result>
<!-- 상세내용 -->
<articleNo>5</articleNo>
<articleType>101</articleType>
<title>공지사항 테스트</title>
<articlePassword>111</articlePassword>
<readCount>15</readCount>
<regDate>2021-07-19</regDate>
<regUserName>김아무</regUserName>
<repStatus>답변완료</repStatus>
<email>myid@digitalship.co.kr</email>
<contentQeust>질문이 있습니다.</contentQeust>
<contentQeustFile>111111=화면캡쳐.jpg;222222=화면캡쳐2.jpg;</contentQeustFile>
<contentReply>이렇게 답변 드립니다.</contentReply>
<contentReplyFile>333333=결과확인.jpg;</contentReplyFile>
<!-- 이전글, 다음글 -->
<page>1</page>
<totPages>1</totPages>
<records>2</records>
<results>
<articleNo>4</articleNo>
<articleType>101</articleType>
<title>이전의 글제목입니다.</title>
<regDate>2021-07-19</regDate>
<regUserName>김아무</regUserName>
<repStatus>답변완료</repStatus>
</results>
<results>
<articleNo>6</articleNo>
<articleType>102</articleType>
<title>다음의 글제목입니다.</title>
<regDate>2021-07-20</regDate>
<regUserName>홍아무</regUserName>
<repStatus>답변완료</repStatus>
</results>
</result>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_POST.xml -->
<result>
<!-- 상세내용 -->
<articleNo>10</articleNo>
</result>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_POST.xml -->
<result>
<!-- 상세내용 -->
<articleNo>10</articleNo>
</result>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_PUT.xml -->
<result>
<!-- 상세내용 -->
<articleNo>10</articleNo>
</result>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_PUT.xml -->
<result>
<!-- 상세내용 -->
<articleNo>10</articleNo>
</result>

View File

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_GET.xml -->
<result>
<records>3</records>
<results>
<code>010</code>
<name>10개씩</name>
</results>
<results>
<code>050</code>
<name>50개씩</name>
</results>
<results>
<code>100</code>
<name>100개씩</name>
</results>
</result>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_GET.xml -->
<result>
<records>3</records>
<results>
<code>010</code>
<name>10개씩</name>
</results>
<results>
<code>050</code>
<name>50개씩</name>
</results>
<results>
<code>100</code>
<name>100개씩</name>
</results>
</result>

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_PUT.xml -->
<result>
<!-- 상세내용 -->
<deptName>마포문화원</deptName>
<logoUrl>https://www.mapocc.or.kr/image/common/logo.gif</logoUrl>
<informContent>
<![CDATA[
마포문화원은 1998년 10월 13일에 개원하였으며 시청각실, 문화강좌실, 생활체육실 등 시설을 갖추고 있다.<br>
또한, 구민 누구나 무료로 이용할 수 있는 각종 전문서적과 비디오, 오디오, 인터넷 시스템을 갖춘 상설정보센터를 운영을 하고 있으며,
지역향토사 관련하여 향토사연구소 운영을 통해 매년 향토사료집 발간을 하고 있다.<br>
2006년 마포향토문화해설사 양성교육을 통하여 초, 중, 고등학교에 지역역사문화탐방을 실시하며 어린이 및 청소년들에게 우리지역 향토역사에 대한 교육도 실시하고 있다.<br>
또한, 각종문화행사시 향토해설사들의 활동을 통하여 구민들에게 알리는 활동도 활발하게 진행되어지고 있다.
]]>
</informContent>
</result>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_PUT.xml -->
<result>
<!-- 상세내용 -->
<deptName>마포문화원</deptName>
<logoUrl>https://www.mapocc.or.kr/image/common/logo.gif</logoUrl>
<informContent>
<![CDATA[
마포문화원은 1998년 10월 13일에 개원하였으며 시청각실, 문화강좌실, 생활체육실 등 시설을 갖추고 있다.<br>
또한, 구민 누구나 무료로 이용할 수 있는 각종 전문서적과 비디오, 오디오, 인터넷 시스템을 갖춘 상설정보센터를 운영을 하고 있으며,
지역향토사 관련하여 향토사연구소 운영을 통해 매년 향토사료집 발간을 하고 있다.<br>
2006년 마포향토문화해설사 양성교육을 통하여 초, 중, 고등학교에 지역역사문화탐방을 실시하며 어린이 및 청소년들에게 우리지역 향토역사에 대한 교육도 실시하고 있다.<br>
또한, 각종문화행사시 향토해설사들의 활동을 통하여 구민들에게 알리는 활동도 활발하게 진행되어지고 있다.
]]>
</informContent>
</result>

View File

@ -1,79 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_PUT.xml -->
<result>
<zipcode>04173</zipcode>
<addr1>서울 마포구 삼개로 16</addr1>
<addr2>근신빌딩</addr2>
<tel>02-1111-2222</tel>
<fax>02-1111-2223</fax>
<!-- * Daum 지도 - 지도퍼가기 -->
<!-- 1. 지도 노드 -->
<div id="daumRoughmapContainer1533889304207" class="root_daum_roughmap root_daum_roughmap_landing"></div>
<!--
2. 설치 스크립트
* 지도 퍼가기 서비스를 2개 이상 넣을 경우, 설치 스크립트는 하나만 삽입합니다.
-->
<script charset="UTF-8" class="daum_roughmap_loader_script" src="https://ssl.daumcdn.net/dmaps/map_js_init/roughmapLoader.js"></script>
<!-- 3. 실행 스크립트 -->
<script charset="UTF-8">
new daum.roughmap.Lander({
"timestamp" : "1533889304207",
"key" : "pguk",
"mapWidth" : "760",
"mapHeight" : "350"
}).render();
</script>
<informContent>
<![CDATA[
<div id="cts106">
<h2>오시는길 상세정보</h2>
<ul class="bu">
<li>주소 : 서울시 마포구 지역문화원로 60(OO동 54-1) (우)11338</li>
<li>전화 : 031) 860-3261~2</li>
<li>팩스 : 031) 860-2568</li>
</ul>
<h2>교통</h2>
<h3>도보로 오실 경우(20~25분 소요)</h3>
<ul class="bu">
<li>마포역 1번 출구에서 나와 OO방향으로 직진, 마포교 다리를 건너 주공아파트쪽으로 직진해서 걸어오시면 오른쪽에 위치한 건물이 마포구립도서관입니다.</li>
</ul>
<h3>대중교통 이용 시</h3>
<h4>OO운수 17번</h4>
<ul class="bu">
<li>OOO주유소 OOO</li>
</ul>
<div class="indent">
<table summary="17번 버스 배차시간 및 소요간격 정보를 제공" class="table_t1">
<caption>17번 버스 배차시간 및 소요간격 안내표</caption>
<thead>
<tr>
<th scope="col">출발지</th>
<th scope="col">출발시간</th>
<th scope="col">소요시간</th>
</tr>
</thead>
<tbody class="text_center">
<tr>
<th scope="row">시립도서관</th>
<td>09:20 / 11:40 / 14:50 / 17:10 / 20:00</td>
<td rowspan="2">약 15분</td>
</tr>
<tr>
<th scope="row">마포역역</th>
<td>07:25 / 08:50 / 11:15 / 14:25 / 16:45 / 19:35</td>
</tr>
</tbody>
</table>
<p>운행상황에 따라 시간오차가 있을 수 있음</p>
</div>
]]>
</informContent>
</result>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_PUT.xml -->
<result>
<zipcode>04173</zipcode>
<addr1>서울 마포구 삼개로 16</addr1>
<addr2>근신빌딩</addr2>
<tel>02-1111-2222</tel>
<fax>02-1111-2223</fax>
<!-- * Daum 지도 - 지도퍼가기 -->
<!-- 1. 지도 노드 -->
<div id="daumRoughmapContainer1533889304207" class="root_daum_roughmap root_daum_roughmap_landing"></div>
<!--
2. 설치 스크립트
* 지도 퍼가기 서비스를 2개 이상 넣을 경우, 설치 스크립트는 하나만 삽입합니다.
-->
<script charset="UTF-8" class="daum_roughmap_loader_script" src="https://ssl.daumcdn.net/dmaps/map_js_init/roughmapLoader.js"></script>
<!-- 3. 실행 스크립트 -->
<script charset="UTF-8">
new daum.roughmap.Lander({
"timestamp" : "1533889304207",
"key" : "pguk",
"mapWidth" : "760",
"mapHeight" : "350"
}).render();
</script>
<informContent>
<![CDATA[
<div id="cts106">
<h2>오시는길 상세정보</h2>
<ul class="bu">
<li>주소 : 서울시 마포구 지역문화원로 60(OO동 54-1) (우)11338</li>
<li>전화 : 031) 860-3261~2</li>
<li>팩스 : 031) 860-2568</li>
</ul>
<h2>교통</h2>
<h3>도보로 오실 경우(20~25분 소요)</h3>
<ul class="bu">
<li>마포역 1번 출구에서 나와 OO방향으로 직진, 마포교 다리를 건너 주공아파트쪽으로 직진해서 걸어오시면 오른쪽에 위치한 건물이 마포구립도서관입니다.</li>
</ul>
<h3>대중교통 이용 시</h3>
<h4>OO운수 17번</h4>
<ul class="bu">
<li>OOO주유소 OOO</li>
</ul>
<div class="indent">
<table summary="17번 버스 배차시간 및 소요간격 정보를 제공" class="table_t1">
<caption>17번 버스 배차시간 및 소요간격 안내표</caption>
<thead>
<tr>
<th scope="col">출발지</th>
<th scope="col">출발시간</th>
<th scope="col">소요시간</th>
</tr>
</thead>
<tbody class="text_center">
<tr>
<th scope="row">시립도서관</th>
<td>09:20 / 11:40 / 14:50 / 17:10 / 20:00</td>
<td rowspan="2">약 15분</td>
</tr>
<tr>
<th scope="row">마포역역</th>
<td>07:25 / 08:50 / 11:15 / 14:25 / 16:45 / 19:35</td>
</tr>
</tbody>
</table>
<p>운행상황에 따라 시간오차가 있을 수 있음</p>
</div>
]]>
</informContent>
</result>

View File

@ -1,78 +1,78 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_PUT.xml -->
<result>
<!-- 상세내용 -->
<informContent>
<![CDATA[
<h2 id="tab0">정기휴관일</h2>
<ul class="bu">
<li>어린이누리실, 책누리실 : 1월1일, 설날연휴, 추석연휴, 법정 공휴일, 매주 월요일</li>
<li>커뮤니티실 및 학습실 : 1월1일, 설날연휴, 추석연휴</li>
</ul>
<h2 id="tab1">이용시간</h2>
<table cellspacing="0" border="1" summary="이용시간" class="table_t1">
<caption>
이용시간
</caption>
<colgroup>
<col width="30%" />
<col />
<col />
<col />
<col />
</colgroup>
<thead>
<tr>
<th scope="col">구분</th>
<th scope="col">월, 법정공휴일(평일,주말)</th>
<th scope="col">화요일~금요일</th>
<th scope="col">토요일~일요일</th>
<th scope="col">비고</th>
</tr>
</thead>
<tbody class="text_center">
<tr>
<td>어린이누리실(1층)<br />
책누리실(2층)<br/>
(정보원문검색코너)</td>
<td>휴실</td>
<td>09:00 ~ 18:00</td>
<td>09:00 ~ 18:00</td>
<td> </td>
</tr>
<tr>
<td>커뮤니티실(3층)</td>
<td>08:00 ~ 18:00</td>
<td>08:00 ~ 22:00</td>
<td>08:00 ~ 18:00</td>
<td> </td>
</tr>
<tr>
<td>학습실(3층)</td>
<td>08:00 ~ 18:00</td>
<td>08:00 ~ 22:00</td>
<td>08:00 ~ 22:00</td>
<td> </td>
</tr>
</tbody>
</table>
<li>※ 현재 코로나19와 관련하여 11.25. ~ 상황변동시까지 단축 운영중입니다.<br>※ 자세한 운영시간은 메인화면 [도서관 이용시간 안내]를 확인하시기 바랍니다.</li>
<h2 id="tab2">도서대출/반납</h2>
<ul class="bu">
<li><strong>대출권수 :</strong> 1인 1회 10권</li>
<li><strong>대출기간 :</strong> 14일(7일 연장 가능-전화)</li>
<li><strong></strong> 책이음 가입 도서관 전체 최대 20권, 스마트도서관 3권</li>
<li><strong>도서연장 :</strong> 홈페이지 로그인 후 신청하거나 모바일 도서관인 리브로피아에서 1회(7일) 연장 가능</li>
<li><strong>책이음 서비스운영 :</strong> 1개의 회원증으로 8개 도서관 (OO시립, 꿈나무정보, 어수정 작은도서관, 종합운동장 지혜의 등대, 소요초등학교 지혜의 등대, 사동초등학교 지혜의 집, 남산모루 작은도서관, 스마트도서관) 대출 가능<br/></li>
<li><strong>대출정지 :</strong> 대출도서의 반납기한이 초과되었을 경우 연체된 일수 만큼 대출이 정지<br/>
※ 연체될 경우 5개 도서관(시립,정보,어수정 작은도서관,종합운동장 지혜의 등대,남산모루 작은도서관) 모두 동일하게 연체일수 적용됨 </li>
<li><strong>도서변상 :</strong> 대출도서의 분실 또는 훼손시에는 동일도서로 변상</li>
<li>OO시 도서관 이용시 반드시 <em class="em_b_orange">본인 명의의 카드</em>를 지참하셔야 대출이 가능합니다.<br />(가족카드이용시에도 지참해야 함)</li>
</ul>
]]>
</informContent>
</result>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_PUT.xml -->
<result>
<!-- 상세내용 -->
<informContent>
<![CDATA[
<h2 id="tab0">정기휴관일</h2>
<ul class="bu">
<li>어린이누리실, 책누리실 : 1월1일, 설날연휴, 추석연휴, 법정 공휴일, 매주 월요일</li>
<li>커뮤니티실 및 학습실 : 1월1일, 설날연휴, 추석연휴</li>
</ul>
<h2 id="tab1">이용시간</h2>
<table cellspacing="0" border="1" summary="이용시간" class="table_t1">
<caption>
이용시간
</caption>
<colgroup>
<col width="30%" />
<col />
<col />
<col />
<col />
</colgroup>
<thead>
<tr>
<th scope="col">구분</th>
<th scope="col">월, 법정공휴일(평일,주말)</th>
<th scope="col">화요일~금요일</th>
<th scope="col">토요일~일요일</th>
<th scope="col">비고</th>
</tr>
</thead>
<tbody class="text_center">
<tr>
<td>어린이누리실(1층)<br />
책누리실(2층)<br/>
(정보원문검색코너)</td>
<td>휴실</td>
<td>09:00 ~ 18:00</td>
<td>09:00 ~ 18:00</td>
<td> </td>
</tr>
<tr>
<td>커뮤니티실(3층)</td>
<td>08:00 ~ 18:00</td>
<td>08:00 ~ 22:00</td>
<td>08:00 ~ 18:00</td>
<td> </td>
</tr>
<tr>
<td>학습실(3층)</td>
<td>08:00 ~ 18:00</td>
<td>08:00 ~ 22:00</td>
<td>08:00 ~ 22:00</td>
<td> </td>
</tr>
</tbody>
</table>
<li>※ 현재 코로나19와 관련하여 11.25. ~ 상황변동시까지 단축 운영중입니다.<br>※ 자세한 운영시간은 메인화면 [도서관 이용시간 안내]를 확인하시기 바랍니다.</li>
<h2 id="tab2">도서대출/반납</h2>
<ul class="bu">
<li><strong>대출권수 :</strong> 1인 1회 10권</li>
<li><strong>대출기간 :</strong> 14일(7일 연장 가능-전화)</li>
<li><strong></strong> 책이음 가입 도서관 전체 최대 20권, 스마트도서관 3권</li>
<li><strong>도서연장 :</strong> 홈페이지 로그인 후 신청하거나 모바일 도서관인 리브로피아에서 1회(7일) 연장 가능</li>
<li><strong>책이음 서비스운영 :</strong> 1개의 회원증으로 8개 도서관 (OO시립, 꿈나무정보, 어수정 작은도서관, 종합운동장 지혜의 등대, 소요초등학교 지혜의 등대, 사동초등학교 지혜의 집, 남산모루 작은도서관, 스마트도서관) 대출 가능<br/></li>
<li><strong>대출정지 :</strong> 대출도서의 반납기한이 초과되었을 경우 연체된 일수 만큼 대출이 정지<br/>
※ 연체될 경우 5개 도서관(시립,정보,어수정 작은도서관,종합운동장 지혜의 등대,남산모루 작은도서관) 모두 동일하게 연체일수 적용됨 </li>
<li><strong>도서변상 :</strong> 대출도서의 분실 또는 훼손시에는 동일도서로 변상</li>
<li>OO시 도서관 이용시 반드시 <em class="em_b_orange">본인 명의의 카드</em>를 지참하셔야 대출이 가능합니다.<br />(가족카드이용시에도 지참해야 함)</li>
</ul>
]]>
</informContent>
</result>

View File

@ -1,133 +1,133 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_PUT.xml -->
<result>
<!-- 상세내용 -->
<informContent>
<![CDATA[
<p>OO시 도서관 홈페이지에서는 기본적인 회원 서비스 제공을 위한 필수정보와 정보주체 각각의 기호와 필요에 맞는 서비스를 제공하기 위한 선택정보로 구분하여 다음의 정보를 수집하고 있습니다.
선택정보를 입력하지 않은 경우에도 서비스 이용에는 제한이 없습니다.</p>
<h4>1. 개인정보의 수집항목 및 수집방법</h4>
<h5>가. 수집하는 개인정보의 항목</h5>
<h6>컴퓨터에 의해 자동으로 수집되는 정보</h6>
<p class="indent">홈페이지를 이용할 경우 다음의 정보는 로그인 기록을 통하여 자동적으로 수집ㆍ저장됩니다.</p>
<ul class="bu">
<li>필수항목 : 사용자ID, 비밀번호, 이름</li>
<li>선택항목 : 이메일, 주소, 전화번호, 휴대폰</li>
</ul>
<table summary="개인정보의 수집하는 필수항목,선택항목,본인인증정보,가입정보를 제공" class="table_t1">
<caption>개인정보의 수집ㆍ이용목적 및 보유ㆍ이용기간</caption>
<colgroup>
<col width="50%" />
<col />
</colgroup>
<thead>
<tr>
<th scope="col">필수항목</th>
<th scope="col">선택항목</th>
</tr>
</thead>
<tbody class="text_center">
<tr>
<td>이름, 아이디, 비밀번호</td>
<td>이메일, 주소, 전화번호, 휴대폰</td>
</tr>
</tbody>
</table>
<h5>나. 개인정보 수집방법</h5>
<h6>홈페이지 회원가입을 통한 수집</h6>
<h4>2. 개인정보의 수집ㆍ이용목적 및 보유ㆍ이용기간</h4>
<p>OO시 도서관 홈페이지에서는 정보주체의 회원 가입일로부터 서비스를 제공하는 기간 동안에 한하여 OO시 도서관 홈페이지 서비스를 이용하기 위한 최소한의 개인정보를 보유 및 이용 하게 됩니다. 회원가입 등을 통해 개인정보의 수집ㆍ이용, 제공 등에 대해 동의하신 내용은 언제든지 철회하실 수 있습니다. 회원 탈퇴를 요청하거나 수집/이용목적을 달성하거나 보유/ 이용기간이 종료한 경우, 사업 폐지 등의 사유발생시 당해 개인정보를 지체없이 파기합니다.</p>
<table summary="수집하는 개인정보의 항목,개인정보의 수집ㆍ이용 목적,개인정보의 보유 및 이용기간을 제공" class="table_t1">
<caption>수집하는 개인정보의 항목</caption>
<colgroup>
<col width="27%" />
<col />
<col width="17%" />
</colgroup>
<thead>
<tr>
<th scope="col">수집하는 개인정보의 항목</th>
<th scope="col">개인정보의 수집ㆍ이용 목적</th>
<th>개인정보의 보유 및 이용기간</th>
</tr>
</thead>
<tbody class="text_center">
<tr>
<td>이름</td>
<td>홈페이지 이용에 따른 본인 식별</td>
<!-- <td rowspan="3"><em class="em_b_blue">2년</em></td> -->
<td rowspan="3"><em class="em_b_blue large">회원 탈퇴시까지</em></td>
</tr>
<tr>
<td>아이디, 비밀번호, 가입인증정보 이름(가입자명), 생년월일, 연락처, 이메일주소</td>
<td>홈페이지 서비스 이용 및 회원관리, 불량회원의 부정 이용 방지, 비인가 사용방지, 민원 신청 및 처리, 고지사항 전달, 게시물 등록, 자료 다운로드, 시설물 예약 및 문화강좌 신청결과의 안내, 전자민원, 본인 의사 확인, 원활한 의사소통 경로의 확보, 정기간행물 발송, 도서대출, 공공행사 및 공공서비스 이용 안내, 설문 등의 목적으로 OO시 도서관 패밀리 사이트에서 공동 이용</td>
</tr>
</tbody>
</table>
<p>정보주체는 개인정보의 수집ㆍ이용목적에 대한 동의를 거부할 수 있으며, 동의 거부시 OO시 도서관 홈페이지에 회원가입이 되지 않으며, OO시 도서관 홈페이지 홈페이지에서 제공하는 서비스를 이용할 수 없습니다.</p>
<div class="title"><label for="agree_txt3">수집한 개인정보의 제 3자 제공 동의</label></div>
<p>OO시 도서관 홈페이지에서는 아래의 경우 제3자 제공을 하고 있으며, 개인정보의 취급 위탁은 하지 않습니다. 실명확인 및 공공 I-PIN 인증시에 제공하는 개인정보는 개인정보보호법 제22조 제2항에 따라 정보주체와의 계약체결 등을 위하여 정보주체의 동의 없이 처리할 수 있는 개인정보로 지정 합니다.</p>
<p>OO시 도서관 홈페이지 회원 서비스 제공을 위해 개인정보를 제공하는 기관 아래에 해당하는 개인정보는 회원가입시 실명인증 및 공공 I-PIN 인증시에만 제3자 제공을 하고 있으며 정보주체의 동의 없이는 제공되지 않습니다.</p>
<table summary="개인정보 제3자 제공에 관한 안내로 제공받는 자,제공받는 자의 개인정보 이용 목적,제공하는 개인정보의 항목,제공받는 자의 개인정보 보유 및 이용 기간을 제공" class="table_t1">
<caption>개인정보 제3자 제공</caption>
<colgroup>
<col width="15%" />
<col width="20%" />
<col width="25%" />
<col />
</colgroup>
<thead>
<tr>
<th scope="col">제공받는 자</th>
<th scope="col">제공받는 자의 개인정보 이용 목적</th>
<th scope="col">제공하는 개인정보의 항목</th>
<th scope="col">제공받는 자의 개인정보 보유 및 이용 기간</th>
</tr>
</thead>
<tbody class="text_center">
<tr>
<td class="em_b_blue large">행정안전부</td>
<td class="em_b_blue large">공공 I-PIN 인증</td>
<td>I-PIN(개인식별번호), 법정대리인(I-PIN(개인식별번호))</td>
<td class="em_b_blue large">행정안전부에서는 이미 보유하고 있는 개인정보이기 때문에 별도로 저장하지 않음</td>
</tr>
<tr>
<td class="em_b_blue large">한국모바일인증(주)</td>
<td class="em_b_blue large">실명인증</td>
<td>성명, 휴대폰번호, 생년월일, 성별</td>
<td class="em_b_blue large">신용평가 기관에서 이미 보유하고 있는 개인정보이기 때문에 별도로 저장하지 않음</td>
</tr>
<tr>
<td class="em_b_blue large">LG U+</td>
<td class="em_b_blue large">전자결제</td>
<td>성명, 이메일</td>
<td class="em_b_blue large">전자결제 서비스 계약해지시</td>
</tr>
</tbody>
</table>
<p>단, 다음에 해당하는 경우에는 예외로 제공 할 수 있습니다. [관련근거: 개인정보보호법 제18조 제2항]</p>
<ul class="indent">
<li>1. 정보주체로부터 별도의 동의를 받은 경우</li>
<li>2. 다른 법률에 특별한 규정이 있는 경우</li>
<li>3. 정보주체 또는 그 법정대리인이 의사표시를 할 수 없는 상태에 있거나 주소불명 등으로 사전 동의를 받을 수 없는 경우로서 명백히 정보주체 또는 제3자의 급박한 생명, 신체, 재산의 이익을 위하여 필요하다고 인정되는 경우</li>
<li>4. 통계작성 및 학술연구 등의 목적을 위하여 필요한 경우로서 특정 개인을 알아볼 수 없는 형태로 개인정보를 제공하는 경우</li>
<li>5. 개인정보를 목적 외의 용도로 이용하거나 이를 제3자에게 제공하지 아니하면 다른 법률에서 정하는 소관업무를 수행할 수 없는 경우로서 보호위원회의 심의ㆍ의결을 거친 경우</li>
<li>6. 조약, 그 밖의 국제협정의 이행을 위하여 외국정부 또는 국제기구에 제공하기 위하여 필요한 경우</li>
<li>7. 범죄의 수사와 공소의 제기 및 유지를 위하여 필요한 경우</li>
<li>8. 법원의 재판업무 수행을 위하여 필요한 경우</li>
<li>9. 형(刑) 및 감호, 보호처분의 집행을 위하여 필요한 경우</li>
</ul>
<p>정보주체는 개인정보의 제3자 제공에 대한 동의를 거부할 수 있으며, 동의 거부시 OO시 도서관 홈페이지에 회원가입이 되지 않으며, OO시 도서관 홈페이지에서 제공하는 서비스를 이용할 수 없습니다.</p>
</div>
]]>
</informContent>
</result>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_PUT.xml -->
<result>
<!-- 상세내용 -->
<informContent>
<![CDATA[
<p>OO시 도서관 홈페이지에서는 기본적인 회원 서비스 제공을 위한 필수정보와 정보주체 각각의 기호와 필요에 맞는 서비스를 제공하기 위한 선택정보로 구분하여 다음의 정보를 수집하고 있습니다.
선택정보를 입력하지 않은 경우에도 서비스 이용에는 제한이 없습니다.</p>
<h4>1. 개인정보의 수집항목 및 수집방법</h4>
<h5>가. 수집하는 개인정보의 항목</h5>
<h6>컴퓨터에 의해 자동으로 수집되는 정보</h6>
<p class="indent">홈페이지를 이용할 경우 다음의 정보는 로그인 기록을 통하여 자동적으로 수집ㆍ저장됩니다.</p>
<ul class="bu">
<li>필수항목 : 사용자ID, 비밀번호, 이름</li>
<li>선택항목 : 이메일, 주소, 전화번호, 휴대폰</li>
</ul>
<table summary="개인정보의 수집하는 필수항목,선택항목,본인인증정보,가입정보를 제공" class="table_t1">
<caption>개인정보의 수집ㆍ이용목적 및 보유ㆍ이용기간</caption>
<colgroup>
<col width="50%" />
<col />
</colgroup>
<thead>
<tr>
<th scope="col">필수항목</th>
<th scope="col">선택항목</th>
</tr>
</thead>
<tbody class="text_center">
<tr>
<td>이름, 아이디, 비밀번호</td>
<td>이메일, 주소, 전화번호, 휴대폰</td>
</tr>
</tbody>
</table>
<h5>나. 개인정보 수집방법</h5>
<h6>홈페이지 회원가입을 통한 수집</h6>
<h4>2. 개인정보의 수집ㆍ이용목적 및 보유ㆍ이용기간</h4>
<p>OO시 도서관 홈페이지에서는 정보주체의 회원 가입일로부터 서비스를 제공하는 기간 동안에 한하여 OO시 도서관 홈페이지 서비스를 이용하기 위한 최소한의 개인정보를 보유 및 이용 하게 됩니다. 회원가입 등을 통해 개인정보의 수집ㆍ이용, 제공 등에 대해 동의하신 내용은 언제든지 철회하실 수 있습니다. 회원 탈퇴를 요청하거나 수집/이용목적을 달성하거나 보유/ 이용기간이 종료한 경우, 사업 폐지 등의 사유발생시 당해 개인정보를 지체없이 파기합니다.</p>
<table summary="수집하는 개인정보의 항목,개인정보의 수집ㆍ이용 목적,개인정보의 보유 및 이용기간을 제공" class="table_t1">
<caption>수집하는 개인정보의 항목</caption>
<colgroup>
<col width="27%" />
<col />
<col width="17%" />
</colgroup>
<thead>
<tr>
<th scope="col">수집하는 개인정보의 항목</th>
<th scope="col">개인정보의 수집ㆍ이용 목적</th>
<th>개인정보의 보유 및 이용기간</th>
</tr>
</thead>
<tbody class="text_center">
<tr>
<td>이름</td>
<td>홈페이지 이용에 따른 본인 식별</td>
<!-- <td rowspan="3"><em class="em_b_blue">2년</em></td> -->
<td rowspan="3"><em class="em_b_blue large">회원 탈퇴시까지</em></td>
</tr>
<tr>
<td>아이디, 비밀번호, 가입인증정보 이름(가입자명), 생년월일, 연락처, 이메일주소</td>
<td>홈페이지 서비스 이용 및 회원관리, 불량회원의 부정 이용 방지, 비인가 사용방지, 민원 신청 및 처리, 고지사항 전달, 게시물 등록, 자료 다운로드, 시설물 예약 및 문화강좌 신청결과의 안내, 전자민원, 본인 의사 확인, 원활한 의사소통 경로의 확보, 정기간행물 발송, 도서대출, 공공행사 및 공공서비스 이용 안내, 설문 등의 목적으로 OO시 도서관 패밀리 사이트에서 공동 이용</td>
</tr>
</tbody>
</table>
<p>정보주체는 개인정보의 수집ㆍ이용목적에 대한 동의를 거부할 수 있으며, 동의 거부시 OO시 도서관 홈페이지에 회원가입이 되지 않으며, OO시 도서관 홈페이지 홈페이지에서 제공하는 서비스를 이용할 수 없습니다.</p>
<div class="title"><label for="agree_txt3">수집한 개인정보의 제 3자 제공 동의</label></div>
<p>OO시 도서관 홈페이지에서는 아래의 경우 제3자 제공을 하고 있으며, 개인정보의 취급 위탁은 하지 않습니다. 실명확인 및 공공 I-PIN 인증시에 제공하는 개인정보는 개인정보보호법 제22조 제2항에 따라 정보주체와의 계약체결 등을 위하여 정보주체의 동의 없이 처리할 수 있는 개인정보로 지정 합니다.</p>
<p>OO시 도서관 홈페이지 회원 서비스 제공을 위해 개인정보를 제공하는 기관 아래에 해당하는 개인정보는 회원가입시 실명인증 및 공공 I-PIN 인증시에만 제3자 제공을 하고 있으며 정보주체의 동의 없이는 제공되지 않습니다.</p>
<table summary="개인정보 제3자 제공에 관한 안내로 제공받는 자,제공받는 자의 개인정보 이용 목적,제공하는 개인정보의 항목,제공받는 자의 개인정보 보유 및 이용 기간을 제공" class="table_t1">
<caption>개인정보 제3자 제공</caption>
<colgroup>
<col width="15%" />
<col width="20%" />
<col width="25%" />
<col />
</colgroup>
<thead>
<tr>
<th scope="col">제공받는 자</th>
<th scope="col">제공받는 자의 개인정보 이용 목적</th>
<th scope="col">제공하는 개인정보의 항목</th>
<th scope="col">제공받는 자의 개인정보 보유 및 이용 기간</th>
</tr>
</thead>
<tbody class="text_center">
<tr>
<td class="em_b_blue large">행정안전부</td>
<td class="em_b_blue large">공공 I-PIN 인증</td>
<td>I-PIN(개인식별번호), 법정대리인(I-PIN(개인식별번호))</td>
<td class="em_b_blue large">행정안전부에서는 이미 보유하고 있는 개인정보이기 때문에 별도로 저장하지 않음</td>
</tr>
<tr>
<td class="em_b_blue large">한국모바일인증(주)</td>
<td class="em_b_blue large">실명인증</td>
<td>성명, 휴대폰번호, 생년월일, 성별</td>
<td class="em_b_blue large">신용평가 기관에서 이미 보유하고 있는 개인정보이기 때문에 별도로 저장하지 않음</td>
</tr>
<tr>
<td class="em_b_blue large">LG U+</td>
<td class="em_b_blue large">전자결제</td>
<td>성명, 이메일</td>
<td class="em_b_blue large">전자결제 서비스 계약해지시</td>
</tr>
</tbody>
</table>
<p>단, 다음에 해당하는 경우에는 예외로 제공 할 수 있습니다. [관련근거: 개인정보보호법 제18조 제2항]</p>
<ul class="indent">
<li>1. 정보주체로부터 별도의 동의를 받은 경우</li>
<li>2. 다른 법률에 특별한 규정이 있는 경우</li>
<li>3. 정보주체 또는 그 법정대리인이 의사표시를 할 수 없는 상태에 있거나 주소불명 등으로 사전 동의를 받을 수 없는 경우로서 명백히 정보주체 또는 제3자의 급박한 생명, 신체, 재산의 이익을 위하여 필요하다고 인정되는 경우</li>
<li>4. 통계작성 및 학술연구 등의 목적을 위하여 필요한 경우로서 특정 개인을 알아볼 수 없는 형태로 개인정보를 제공하는 경우</li>
<li>5. 개인정보를 목적 외의 용도로 이용하거나 이를 제3자에게 제공하지 아니하면 다른 법률에서 정하는 소관업무를 수행할 수 없는 경우로서 보호위원회의 심의ㆍ의결을 거친 경우</li>
<li>6. 조약, 그 밖의 국제협정의 이행을 위하여 외국정부 또는 국제기구에 제공하기 위하여 필요한 경우</li>
<li>7. 범죄의 수사와 공소의 제기 및 유지를 위하여 필요한 경우</li>
<li>8. 법원의 재판업무 수행을 위하여 필요한 경우</li>
<li>9. 형(刑) 및 감호, 보호처분의 집행을 위하여 필요한 경우</li>
</ul>
<p>정보주체는 개인정보의 제3자 제공에 대한 동의를 거부할 수 있으며, 동의 거부시 OO시 도서관 홈페이지에 회원가입이 되지 않으며, OO시 도서관 홈페이지에서 제공하는 서비스를 이용할 수 없습니다.</p>
</div>
]]>
</informContent>
</result>

View File

@ -1,114 +1,114 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_PUT.xml -->
<result>
<!-- 상세내용 -->
<informContent>
<![CDATA[
<h4>제 1 장 총칙</h4>
<h5>제 1 조 (목적)</h5>
<p class="indent">본 약관은 OO시 도서관 홈페이지가 제공하는 모든 서비스(이하 "서비스")의 이용조건 및 절차, 이용자와 OO시 도서관 홈페이지의 권리, 의무, 책임사항과 기타 필요한 사항을 규정함을 목적으로 합니다.</p>
<h5>제 2 조 (약관의 효력과 변경)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지는 귀하가 본 약관 내용에 동의하는 경우, OO시 도서관 홈페이지의 서비스 제공 행위 및 귀하의 서비스 사용 행위에 본 약관이 우선적으로 적용됩니다.</li>
<li>2. OO시 도서관 홈페이지는 본 약관을 사전 고지 없이 변경할 수 있고, 변경된 약관은 OO시 도서관 홈페이지 내에 공지하거나 e-mail을 통해 회원에게 공지하며, 공지와 동시에 그 효력이 발생됩니다. 이용자가 변경된 약관에 동의하지 않는 경우, 이용자는 본인의 회원등록을 취소(회원탈퇴)할 수 있으며 계속 사용의 경우는 약관 변경에 대한 동의로 간주됩니다.</li>
</ul>
<h5>제 3 조 (약관 외 준칙)</h5>
<ul class="indent">
<li>1. 본 약관에 명시되지 않은 사항은 전기통신기본법, 전기통신사업법, 정보통신윤리위원회 심의규정, 정보통신 윤리강령, 프로그램보호법 및 기타 관련 법령의 규정에 의합니다.</li>
</ul>
<h5>제 4 조 (용어의 정의)</h5>
<p class="indent">본 약관에서 사용하는 용어의 정의는 다음과 같습니다.</p>
<ul class="indent">
<li>1. 이용자 : 본 약관에 따라 OO시 도서관 홈페이지가 제공하는 서비스를 받는 자.</li>
<li>2. 가입 : OO시 도서관 홈페이지가 제공하는 신청서 양식에 해당 정보를 기입하고, 본 약관에 동의하여 서비스 이용계약을 완료시키는 행위.</li>
<li>3. 회원 : OO시 도서관 홈페이지에 개인 정보를 제공하여 회원 등록을 한 자로서 OO시 도서관 홈페이지가 제공하는 서비스를 이용할 수 있는 자.</li>
<li>4. 비밀번호 : 이용자와 회원ID가 일치하는지를 확인하고 통신상의 자신의 비밀보호를 위하여 이용자 자신이 선정한 문자와 숫자의 조합.</li>
<li>5. 탈퇴 : 회원이 이용계약을 종료시키는 행위.</li>
</ul>
<h4>제 2 장 서비스 제공 및 이용</h4>
<h5>제 5 조 (이용계약의 성립)</h5>
<ul class="indent">
<li>1. 이용계약은 신청자가 온라인으로 OO시 도서관 홈페이지에서 제공하는 소정의 가입신청 양식에서 요구하는 사항을 기록하여 가입을 완료하는 것으로 성립됩니다.</li>
<li>2. OO시 도서관 홈페이지는 다음 각 호에 해당하는 이용계약에 대하여는 가입을 취소할 수 있습니다.
<ul class="indent">
<li>1) 다른 사람의 명의를 사용하여 신청하였을 때</li>
<li>2) 이용계약 신청서의 내용을 허위로 기재하였거나 신청하였을 때</li>
<li>3) 다른 사람의 OO시 도서관 홈페이지 서비스 이용을 방해하거나 그 정보를 도용하는 등의 행위를 하였을 때</li>
<li>4) OO시 도서관 홈페이지를 이용하여 법령과 본 약관이 금지하는 행위를 하는 경우</li>
<li>5) 기타 OO시 도서관 홈페이지가 정한 이용신청요건이 미비 되었을 때</li>
</ul>
</li>
</ul>
<h5>제 6 조 (회원정보 사용에 대한 동의)</h5>
<ul class="indent">
<li>1. 회원의 개인정보는 개인정보보호법에 의해 보호됩니다.</li>
<li>2. OO시 도서관 홈페이지의 회원 정보는 다음과 같이 사용, 관리, 보호됩니다.
<ul class="indent">
<li>1) 개인정보의 사용 : OO시 도서관 홈페이지는 서비스 제공과 관련해서 수집된 회원의 신상 정보를 본인의 승낙 없이 제3자에게 누설, 배포하지 않습니다.<br />
단, 개인정보보호법 등 법률의 규정에 의해 국가기관의 요구가 있는 경우, 범죄에 대한 수사 상의 목적이 있거나 정보통신윤리 위원회의 요청이 있는 경우 또는 기타 관계법령에서 정한 절차에 따른 요청이 있는 경우, 귀하가 OO시 도서관 홈페이지에 제공한 개인정보를 스스로 공개한 경우에는 그러하지 않습니다.</li>
<li>2) 개인정보의 관리 : 귀하는 개인정보의 보호 및 관리를 위하여 서비스의 개인정보관리에서 수시로 귀하의 개인정보를 수정/삭제할 수 있습니다.<br />
단, 자료대출회원가입과 홈페이지 회원가입 조건을 동시에 충족한 정회원인 경우, 홈페이지 관리자에게 수정 및 탈퇴를 요청하시면 처리해드립니다.</li>
<li>3) 개인정보의 보호 : 귀하의 개인정보는 오직 귀하만이 열람/수정/삭제 할 수 있으며, 이는 전적으로 귀하의 ID와 비밀번호에 의해 관리되고 있습니다. 따라서 타인에게 본인의 ID와 비밀번호를 알려주어서는 안되며, 작업 종료시에는 반드시 로그아웃 해주시기 바랍니다.</li>
</ul>
</li>
<li>3. 회원이 본 약관에 따라 이용신청을 하는 것은, OO시 도서관 사이트가 신청서에 기재된 회원 정보를 수집, 이용하는 것에 동의하는 것으로 간주됩니다.</li>
</ul>
<h5>제 7 조 (사용자의 정보 보안)</h5>
<ul class="indent">
<li>1. 가입 신청자가 OO시 도서관 홈페이지 서비스 가입 절차를 완료하는 순간부터 귀하는 입력한 정보의 비밀을 유지할 책임이 있으며, 회원의 ID와 비밀번호를 사용하여 발생하는 모든 결과에 대한 책임은 회원 본인에게 있습니다.</li>
<li>2. ID와 비밀번호에 관한 모든 관리의 책임은 회원에게 있으며, 회원의 ID나 비밀번호가 부정하게 사용되었다는 사실을 발견한 경우에는 즉시 OO시 도서관 홈페이지에 신고하여야 합니다. 신고를 하지 않음으로 인한 모든 책임은 회원 본인에게 있습니다.</li>
<li>3. 이용자는 OO시 도서관 홈페이지 서비스의 사용 종료시 마다 정확히 접속을 종료해야 하며, 정확히 종료하지 아니함으로써 제3자가 귀하에 관한 정보를 이용하게 되는 등의 결과로 인해 발생하는 손해 및 손실에 대하여 OO시 도서관 홈페이지는 책임을 부담하지 아니합니다.</li>
</ul>
<h5>제 8 조 (서비스의 중지)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지는 이용자가 본 약관의 내용에 위배되는 행동을 한 경우, 임의로 서비스 사용을 제한 및 중지할 수 있습니다.</li>
</ul>
<h5>제 9 조 (서비스의 변경 및 해지)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지는 귀하가 서비스를 이용하여 기대하는 손익이나 서비스를 통하여 얻은 자료로 인한 손해에 관하여 책임을 지지 않으며, 회원이 본 서비스에 게재한 정보, 자료, 사실의 신뢰도, 정확성 등 내용에 관하여는 책임을 지지 않습니다.</li>
<li>2. OO시 도서관 홈페이지는 서비스 이용과 관련하여 가입자에게 발생한 손해 중 가입자의 고의, 과실에 의한 손해에 대하여 책임을 부담하지 아니합니다.</li>
</ul>
<h5>제 10 조 (게시물의 저작권)</h5>
<ul class="indent">
<li>1. 귀하가 게시한 게시물의 내용에 대한 권리는 귀하에게 있습니다.</li>
<li>2. OO시 도서관 홈페이지는 게시된 내용을 사전 통지 없이 편집, 이동할 수 있는 권리를 보유하며, 게시판운영원칙에 따라 사전 통지 없이 삭제할 수 있습니다.</li>
<li>3. 귀하의 게시물이 타인의 저작권을 침해함으로써 발생하는 민, 형사상의 책임은 전적으로 귀하가 부담하여야 합니다.</li>
</ul>
<h4>제 3 장 의무 및 책임</h4>
<h5>제 11 조 (OO시 도서관 홈페이지의 의무)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지는 회원의 개인 신상 정보를 본인의 승낙없이 타인에게 누설, 배포하지 않습니다. 다만, 전기통신관련법령 등 관계법령에 의하여 관계 국가기관 등의 요구가 있는 경우에는 그러하지 아니합니다.</li>
</ul>
<h5>제 12 조 (회원의 의무)</h5>
<ul class="indent">
<li>1. 회원 가입시에 요구되는 정보는 정확하게 기입하여야 합니다. 또한 이미 제공된 귀하에 대한 정보가 정확한 정보가 되도록 유지, 갱신하여야 하며, 회원은 자신의 ID 및 비밀번호를 제3자에게 이용하게 해서는 안됩니다.</li>
<li>2. 회원은 OO시 도서관 홈페이지의 사전 승낙 없이 서비스를 이용하여 어떠한 영리행위도 할 수 없습니다.</li>
</ul>
<h4>제 4 장 기타</h4>
<h5>제 13 조 (양도금지)</h5>
<ul class="indent">
<li>1. 회원이 서비스의 이용권한, 기타 이용계약 상 지위를 타인에게 양도, 증여할 수 없습니다.</li>
</ul>
<h5>제 14 조 (손해배상)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지는 무료로 제공되는 서비스와 관련하여 회원에게 어떠한 손해가 발생하더라도 OO시 도서관 홈페이지가 고의로 행한 범죄행위를 제외하고 이에 대하여 책임을 부담하지 아니합니다.</li>
</ul>
<h5>제 15 조 (면책조항)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지는 회원이나 제3자에 의해 표출된 의견을 승인하거나 반대하거나 수정하지 않습니다. OO시 도서관 홈페이지는 어떠한 경우라도 회원이 서비스에 담긴 정보에 의존해 얻은 이득이나 입은 손해에 대해 책임이 없습니다.</li>
<li>2. OO시 도서관 홈페이지는 회원간 또는 회원과 제3자간에 서비스를 매개로 하여 물품거래 혹은 금전적 거래 등과 관련하여 어떠한 책임도 부담하지 아니하고, 회원이 서비스의 이용과 관련하여 기대하는 이익에 관하여 책임을 부담하지 않습니다.</li>
</ul>
<h5>제 16 조 (재판관할)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지와 이용자간에 발생한 서비스 이용에 관한 분쟁에 대하여는 대한민국 법을 적용하며, 본 분쟁으로 인한 소는 대한민국의 법원에 제기합니다.</li>
</ul>
]]>
</informContent>
</result>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.board.qna_PUT.xml -->
<result>
<!-- 상세내용 -->
<informContent>
<![CDATA[
<h4>제 1 장 총칙</h4>
<h5>제 1 조 (목적)</h5>
<p class="indent">본 약관은 OO시 도서관 홈페이지가 제공하는 모든 서비스(이하 "서비스")의 이용조건 및 절차, 이용자와 OO시 도서관 홈페이지의 권리, 의무, 책임사항과 기타 필요한 사항을 규정함을 목적으로 합니다.</p>
<h5>제 2 조 (약관의 효력과 변경)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지는 귀하가 본 약관 내용에 동의하는 경우, OO시 도서관 홈페이지의 서비스 제공 행위 및 귀하의 서비스 사용 행위에 본 약관이 우선적으로 적용됩니다.</li>
<li>2. OO시 도서관 홈페이지는 본 약관을 사전 고지 없이 변경할 수 있고, 변경된 약관은 OO시 도서관 홈페이지 내에 공지하거나 e-mail을 통해 회원에게 공지하며, 공지와 동시에 그 효력이 발생됩니다. 이용자가 변경된 약관에 동의하지 않는 경우, 이용자는 본인의 회원등록을 취소(회원탈퇴)할 수 있으며 계속 사용의 경우는 약관 변경에 대한 동의로 간주됩니다.</li>
</ul>
<h5>제 3 조 (약관 외 준칙)</h5>
<ul class="indent">
<li>1. 본 약관에 명시되지 않은 사항은 전기통신기본법, 전기통신사업법, 정보통신윤리위원회 심의규정, 정보통신 윤리강령, 프로그램보호법 및 기타 관련 법령의 규정에 의합니다.</li>
</ul>
<h5>제 4 조 (용어의 정의)</h5>
<p class="indent">본 약관에서 사용하는 용어의 정의는 다음과 같습니다.</p>
<ul class="indent">
<li>1. 이용자 : 본 약관에 따라 OO시 도서관 홈페이지가 제공하는 서비스를 받는 자.</li>
<li>2. 가입 : OO시 도서관 홈페이지가 제공하는 신청서 양식에 해당 정보를 기입하고, 본 약관에 동의하여 서비스 이용계약을 완료시키는 행위.</li>
<li>3. 회원 : OO시 도서관 홈페이지에 개인 정보를 제공하여 회원 등록을 한 자로서 OO시 도서관 홈페이지가 제공하는 서비스를 이용할 수 있는 자.</li>
<li>4. 비밀번호 : 이용자와 회원ID가 일치하는지를 확인하고 통신상의 자신의 비밀보호를 위하여 이용자 자신이 선정한 문자와 숫자의 조합.</li>
<li>5. 탈퇴 : 회원이 이용계약을 종료시키는 행위.</li>
</ul>
<h4>제 2 장 서비스 제공 및 이용</h4>
<h5>제 5 조 (이용계약의 성립)</h5>
<ul class="indent">
<li>1. 이용계약은 신청자가 온라인으로 OO시 도서관 홈페이지에서 제공하는 소정의 가입신청 양식에서 요구하는 사항을 기록하여 가입을 완료하는 것으로 성립됩니다.</li>
<li>2. OO시 도서관 홈페이지는 다음 각 호에 해당하는 이용계약에 대하여는 가입을 취소할 수 있습니다.
<ul class="indent">
<li>1) 다른 사람의 명의를 사용하여 신청하였을 때</li>
<li>2) 이용계약 신청서의 내용을 허위로 기재하였거나 신청하였을 때</li>
<li>3) 다른 사람의 OO시 도서관 홈페이지 서비스 이용을 방해하거나 그 정보를 도용하는 등의 행위를 하였을 때</li>
<li>4) OO시 도서관 홈페이지를 이용하여 법령과 본 약관이 금지하는 행위를 하는 경우</li>
<li>5) 기타 OO시 도서관 홈페이지가 정한 이용신청요건이 미비 되었을 때</li>
</ul>
</li>
</ul>
<h5>제 6 조 (회원정보 사용에 대한 동의)</h5>
<ul class="indent">
<li>1. 회원의 개인정보는 개인정보보호법에 의해 보호됩니다.</li>
<li>2. OO시 도서관 홈페이지의 회원 정보는 다음과 같이 사용, 관리, 보호됩니다.
<ul class="indent">
<li>1) 개인정보의 사용 : OO시 도서관 홈페이지는 서비스 제공과 관련해서 수집된 회원의 신상 정보를 본인의 승낙 없이 제3자에게 누설, 배포하지 않습니다.<br />
단, 개인정보보호법 등 법률의 규정에 의해 국가기관의 요구가 있는 경우, 범죄에 대한 수사 상의 목적이 있거나 정보통신윤리 위원회의 요청이 있는 경우 또는 기타 관계법령에서 정한 절차에 따른 요청이 있는 경우, 귀하가 OO시 도서관 홈페이지에 제공한 개인정보를 스스로 공개한 경우에는 그러하지 않습니다.</li>
<li>2) 개인정보의 관리 : 귀하는 개인정보의 보호 및 관리를 위하여 서비스의 개인정보관리에서 수시로 귀하의 개인정보를 수정/삭제할 수 있습니다.<br />
단, 자료대출회원가입과 홈페이지 회원가입 조건을 동시에 충족한 정회원인 경우, 홈페이지 관리자에게 수정 및 탈퇴를 요청하시면 처리해드립니다.</li>
<li>3) 개인정보의 보호 : 귀하의 개인정보는 오직 귀하만이 열람/수정/삭제 할 수 있으며, 이는 전적으로 귀하의 ID와 비밀번호에 의해 관리되고 있습니다. 따라서 타인에게 본인의 ID와 비밀번호를 알려주어서는 안되며, 작업 종료시에는 반드시 로그아웃 해주시기 바랍니다.</li>
</ul>
</li>
<li>3. 회원이 본 약관에 따라 이용신청을 하는 것은, OO시 도서관 사이트가 신청서에 기재된 회원 정보를 수집, 이용하는 것에 동의하는 것으로 간주됩니다.</li>
</ul>
<h5>제 7 조 (사용자의 정보 보안)</h5>
<ul class="indent">
<li>1. 가입 신청자가 OO시 도서관 홈페이지 서비스 가입 절차를 완료하는 순간부터 귀하는 입력한 정보의 비밀을 유지할 책임이 있으며, 회원의 ID와 비밀번호를 사용하여 발생하는 모든 결과에 대한 책임은 회원 본인에게 있습니다.</li>
<li>2. ID와 비밀번호에 관한 모든 관리의 책임은 회원에게 있으며, 회원의 ID나 비밀번호가 부정하게 사용되었다는 사실을 발견한 경우에는 즉시 OO시 도서관 홈페이지에 신고하여야 합니다. 신고를 하지 않음으로 인한 모든 책임은 회원 본인에게 있습니다.</li>
<li>3. 이용자는 OO시 도서관 홈페이지 서비스의 사용 종료시 마다 정확히 접속을 종료해야 하며, 정확히 종료하지 아니함으로써 제3자가 귀하에 관한 정보를 이용하게 되는 등의 결과로 인해 발생하는 손해 및 손실에 대하여 OO시 도서관 홈페이지는 책임을 부담하지 아니합니다.</li>
</ul>
<h5>제 8 조 (서비스의 중지)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지는 이용자가 본 약관의 내용에 위배되는 행동을 한 경우, 임의로 서비스 사용을 제한 및 중지할 수 있습니다.</li>
</ul>
<h5>제 9 조 (서비스의 변경 및 해지)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지는 귀하가 서비스를 이용하여 기대하는 손익이나 서비스를 통하여 얻은 자료로 인한 손해에 관하여 책임을 지지 않으며, 회원이 본 서비스에 게재한 정보, 자료, 사실의 신뢰도, 정확성 등 내용에 관하여는 책임을 지지 않습니다.</li>
<li>2. OO시 도서관 홈페이지는 서비스 이용과 관련하여 가입자에게 발생한 손해 중 가입자의 고의, 과실에 의한 손해에 대하여 책임을 부담하지 아니합니다.</li>
</ul>
<h5>제 10 조 (게시물의 저작권)</h5>
<ul class="indent">
<li>1. 귀하가 게시한 게시물의 내용에 대한 권리는 귀하에게 있습니다.</li>
<li>2. OO시 도서관 홈페이지는 게시된 내용을 사전 통지 없이 편집, 이동할 수 있는 권리를 보유하며, 게시판운영원칙에 따라 사전 통지 없이 삭제할 수 있습니다.</li>
<li>3. 귀하의 게시물이 타인의 저작권을 침해함으로써 발생하는 민, 형사상의 책임은 전적으로 귀하가 부담하여야 합니다.</li>
</ul>
<h4>제 3 장 의무 및 책임</h4>
<h5>제 11 조 (OO시 도서관 홈페이지의 의무)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지는 회원의 개인 신상 정보를 본인의 승낙없이 타인에게 누설, 배포하지 않습니다. 다만, 전기통신관련법령 등 관계법령에 의하여 관계 국가기관 등의 요구가 있는 경우에는 그러하지 아니합니다.</li>
</ul>
<h5>제 12 조 (회원의 의무)</h5>
<ul class="indent">
<li>1. 회원 가입시에 요구되는 정보는 정확하게 기입하여야 합니다. 또한 이미 제공된 귀하에 대한 정보가 정확한 정보가 되도록 유지, 갱신하여야 하며, 회원은 자신의 ID 및 비밀번호를 제3자에게 이용하게 해서는 안됩니다.</li>
<li>2. 회원은 OO시 도서관 홈페이지의 사전 승낙 없이 서비스를 이용하여 어떠한 영리행위도 할 수 없습니다.</li>
</ul>
<h4>제 4 장 기타</h4>
<h5>제 13 조 (양도금지)</h5>
<ul class="indent">
<li>1. 회원이 서비스의 이용권한, 기타 이용계약 상 지위를 타인에게 양도, 증여할 수 없습니다.</li>
</ul>
<h5>제 14 조 (손해배상)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지는 무료로 제공되는 서비스와 관련하여 회원에게 어떠한 손해가 발생하더라도 OO시 도서관 홈페이지가 고의로 행한 범죄행위를 제외하고 이에 대하여 책임을 부담하지 아니합니다.</li>
</ul>
<h5>제 15 조 (면책조항)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지는 회원이나 제3자에 의해 표출된 의견을 승인하거나 반대하거나 수정하지 않습니다. OO시 도서관 홈페이지는 어떠한 경우라도 회원이 서비스에 담긴 정보에 의존해 얻은 이득이나 입은 손해에 대해 책임이 없습니다.</li>
<li>2. OO시 도서관 홈페이지는 회원간 또는 회원과 제3자간에 서비스를 매개로 하여 물품거래 혹은 금전적 거래 등과 관련하여 어떠한 책임도 부담하지 아니하고, 회원이 서비스의 이용과 관련하여 기대하는 이익에 관하여 책임을 부담하지 않습니다.</li>
</ul>
<h5>제 16 조 (재판관할)</h5>
<ul class="indent">
<li>1. OO시 도서관 홈페이지와 이용자간에 발생한 서비스 이용에 관한 분쟁에 대하여는 대한민국 법을 적용하며, 본 분쟁으로 인한 소는 대한민국의 법원에 제기합니다.</li>
</ul>
]]>
</informContent>
</result>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.exports.xml -->
<result>
<userId>admin@digitalship.coom</userId>
<userName>홍길동</userName>
<password>XohImNooBHFR0OVvjcYpJ3NgPQ1qq73WKhHvch0VQtg=</password>
<uniqId>100000001</uniqId>
<authorities>ROLE_USER,ROLE_ADMIN</authorities>
</result>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- uac.service.exports.xml -->
<result>
<userId>admin@digitalship.coom</userId>
<userName>홍길동</userName>
<password>XohImNooBHFR0OVvjcYpJ3NgPQ1qq73WKhHvch0VQtg=</password>
<uniqId>100000001</uniqId>
<authorities>ROLE_USER,ROLE_ADMIN</authorities>
</result>

View File

@ -1,265 +1,265 @@
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
</net.java.amateras.uml.model.RootModel>

View File

@ -1,265 +1,265 @@
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
</net.java.amateras.uml.model.RootModel>

View File

@ -1,265 +1,265 @@
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
</net.java.amateras.uml.model.RootModel>

View File

@ -1,265 +1,265 @@
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
</net.java.amateras.uml.model.RootModel>

View File

@ -1,265 +1,265 @@
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
</net.java.amateras.uml.model.RootModel>

View File

@ -1,265 +1,265 @@
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
</net.java.amateras.uml.model.RootModel>

View File

@ -1,265 +1,265 @@
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
<?xml version="1.0" encoding="UTF-8"?>
<net.java.amateras.uml.model.RootModel>
<backgroundColor>
<red>255</red>
<green>255</green>
<blue>206</blue>
</backgroundColor>
<foregroundColor>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foregroundColor>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.model.RootModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<sourceConnections/>
<targetConnections/>
<children>
<net.java.amateras.uml.classdiagram.model.ClassModel>
<backgroundColor reference="../../../backgroundColor"/>
<foregroundColor reference="../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>142</x>
<y>106</y>
</constraint>
<sourceConnections/>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>144</x>
<y>221</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel>
<showIcon>true</showIcon>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.AggregationModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel">
<backgroundColor reference="../../../../../../../../../backgroundColor"/>
<foregroundColor reference="../../../../../../../../../foregroundColor"/>
<showIcon>true</showIcon>
<parent class="net.java.amateras.uml.model.RootModel" reference="../../../../../../../../.."/>
<listeners serialization="custom">
<java.beans.PropertyChangeSupport>
<default>
<source class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../../.."/>
<propertyChangeSupportSerializedDataVersion>2</propertyChangeSupportSerializedDataVersion>
</default>
<null/>
</java.beans.PropertyChangeSupport>
</listeners>
<constraint>
<height>-1</height>
<width>-1</width>
<x>384</x>
<y>213</y>
</constraint>
<sourceConnections>
<net.java.amateras.uml.classdiagram.model.AggregationModel reference="../../.."/>
</sourceConnections>
<targetConnections/>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class17</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class16</name>
<isAbstract>false</isAbstract>
</source>
<target class="net.java.amateras.uml.classdiagram.model.ClassModel" reference="../../.."/>
<bendpoints/>
<stereoType></stereoType>
<fromMultiplicity></fromMultiplicity>
<toMultiplicity></toMultiplicity>
</net.java.amateras.uml.classdiagram.model.AggregationModel>
</targetConnections>
<children/>
<filterProperty/>
<propertyDescriptors>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_stereo_type</id>
<display>Stereo Type</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_simpleEntityName</id>
<display>Simple Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.TextPropertyDescriptor>
<id class="string">_entityName</id>
<display>Name</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.TextPropertyDescriptor>
<org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<id class="string">_background</id>
<display>Background Color</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.ColorPropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_attrs</id>
<display>Attributes...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<org.eclipse.ui.views.properties.PropertyDescriptor>
<id class="string">_operations</id>
<display>Operations...</display>
<incompatible>false</incompatible>
</org.eclipse.ui.views.properties.PropertyDescriptor>
<net.java.amateras.uml.properties.BooleanPropertyDescriptor>
<id class="string">_abstract</id>
<display>abstract</display>
<incompatible>false</incompatible>
</net.java.amateras.uml.properties.BooleanPropertyDescriptor>
</propertyDescriptors>
<stereoType></stereoType>
<name>Class15</name>
<isAbstract>false</isAbstract>
</net.java.amateras.uml.classdiagram.model.ClassModel>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
<net.java.amateras.uml.classdiagram.model.ClassModel reference="../net.java.amateras.uml.classdiagram.model.ClassModel/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source/targetConnections/net.java.amateras.uml.classdiagram.model.AggregationModel/source"/>
</children>
<filterProperty/>
</net.java.amateras.uml.model.RootModel>

View File

@ -1,56 +1,56 @@
package nlib.bbs.service;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
/**
* <pre>
* @Class Name : BoardService.java
*
* @Description : 게시물 관리 클래스
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 19. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 19.
* @version 1.0
*
*/
public interface BoardService
{
public DataApiResVO listNotices(DataApiReqVO reqVO);
public DataApiResVO selectNotice(DataApiReqVO reqVO);
public DataApiResVO listFAQs(DataApiReqVO reqVO);
/**
* 묻고답하기 목록 조회한다.
*
* @param reqVO
* @return
*/
public DataApiResVO listQnAs(DataApiReqVO reqVO);
public DataApiResVO selectQnA(DataApiReqVO reqVO);
public DataApiResVO insertQnA(DataApiReqVO reqVO);
public DataApiResVO verifyWriter(DataApiReqVO reqVO);
public DataApiResVO updateQnA(DataApiReqVO reqVO);
public DataApiResVO deleteQnA(DataApiReqVO reqVO);
package nlib.bbs.service;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
/**
* <pre>
* @Class Name : BoardService.java
*
* @Description : 게시물 관리 클래스
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 19. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 19.
* @version 1.0
*
*/
public interface BoardService
{
public DataApiResVO listNotices(DataApiReqVO reqVO);
public DataApiResVO selectNotice(DataApiReqVO reqVO);
public DataApiResVO listFAQs(DataApiReqVO reqVO);
/**
* 묻고답하기 목록 조회한다.
*
* @param reqVO
* @return
*/
public DataApiResVO listQnAs(DataApiReqVO reqVO);
public DataApiResVO selectQnA(DataApiReqVO reqVO);
public DataApiResVO insertQnA(DataApiReqVO reqVO);
public DataApiResVO verifyWriter(DataApiReqVO reqVO);
public DataApiResVO updateQnA(DataApiReqVO reqVO);
public DataApiResVO deleteQnA(DataApiReqVO reqVO);
}

View File

@ -1,70 +1,70 @@
package nlib.bbs.service.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;
import nlib.cmm.web.MainController;
import nlib.restful.DataApi;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
@Repository("boardDAO")
public class BoardDAO extends DataApi
{
private static final Logger log = LoggerFactory.getLogger(BoardDAO.class);
/**
* 자원의 URI
*/
public static final String RESOURCE_URI = "/uac/service/board/qna";
public DataApiResVO listNotices(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO selectNotice(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO listFAQs(DataApiReqVO reqVO) {
return null;
}
/**
* 묻고답하기 목록 조회한다.
*
* @param reqVO
* @return
*/
public DataApiResVO listQnAs(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/list");
return get(reqVO);
}
public DataApiResVO selectQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI);
return get(reqVO);
}
public DataApiResVO verifyWriter(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO updateQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI);
return post(reqVO);
}
public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO insertQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI);
return put(reqVO);
}
package nlib.bbs.service.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;
import nlib.cmm.web.MainController;
import nlib.restful.DataApi;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
@Repository("boardDAO")
public class BoardDAO extends DataApi
{
private static final Logger log = LoggerFactory.getLogger(BoardDAO.class);
/**
* 자원의 URI
*/
public static final String RESOURCE_URI = "/uac/service/board/qna";
public DataApiResVO listNotices(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO selectNotice(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO listFAQs(DataApiReqVO reqVO) {
return null;
}
/**
* 묻고답하기 목록 조회한다.
*
* @param reqVO
* @return
*/
public DataApiResVO listQnAs(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/list");
return get(reqVO);
}
public DataApiResVO selectQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI);
return get(reqVO);
}
public DataApiResVO verifyWriter(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO updateQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI);
return post(reqVO);
}
public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO insertQnA(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI);
return put(reqVO);
}
}

View File

@ -1,66 +1,66 @@
package nlib.bbs.service.impl;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import nlib.bbs.service.BoardService;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
@Service("boardService")
public class BoardServiceImpl implements BoardService
{
private static final Logger log = LoggerFactory.getLogger(BoardServiceImpl.class);
@Resource(name = "boardDAO")
private BoardDAO boardDAO;
public DataApiResVO listNotices(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO selectNotice(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO listFAQs(DataApiReqVO reqVO) {
return null;
}
/*
* 묻고답하기 목록 조회한다.
*
* (non-Javadoc)
* @see nlib.bbs.service.BoardService#listQnAs(nlib.restful.service.DataApiReqVO)
*/
public DataApiResVO listQnAs(DataApiReqVO reqVO) {
return boardDAO.listQnAs(reqVO);
}
public DataApiResVO selectQnA(DataApiReqVO reqVO) {
return boardDAO.selectQnA(reqVO);
}
public DataApiResVO insertQnA(DataApiReqVO reqVO) {
return boardDAO.insertQnA(reqVO);
}
public DataApiResVO verifyWriter(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO updateQnA(DataApiReqVO reqVO) {
return boardDAO.updateQnA(reqVO);
}
public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
return null;
}
package nlib.bbs.service.impl;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import nlib.bbs.service.BoardService;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
@Service("boardService")
public class BoardServiceImpl implements BoardService
{
private static final Logger log = LoggerFactory.getLogger(BoardServiceImpl.class);
@Resource(name = "boardDAO")
private BoardDAO boardDAO;
public DataApiResVO listNotices(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO selectNotice(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO listFAQs(DataApiReqVO reqVO) {
return null;
}
/*
* 묻고답하기 목록 조회한다.
*
* (non-Javadoc)
* @see nlib.bbs.service.BoardService#listQnAs(nlib.restful.service.DataApiReqVO)
*/
public DataApiResVO listQnAs(DataApiReqVO reqVO) {
return boardDAO.listQnAs(reqVO);
}
public DataApiResVO selectQnA(DataApiReqVO reqVO) {
return boardDAO.selectQnA(reqVO);
}
public DataApiResVO insertQnA(DataApiReqVO reqVO) {
return boardDAO.insertQnA(reqVO);
}
public DataApiResVO verifyWriter(DataApiReqVO reqVO) {
return null;
}
public DataApiResVO updateQnA(DataApiReqVO reqVO) {
return boardDAO.updateQnA(reqVO);
}
public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
return null;
}
}

View File

@ -1,411 +1,411 @@
package nlib.bbs.web;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import nlib.bbs.service.BoardService;
import nlib.cmm.NlibCommonController;
import nlib.cmm.crypto.AriaCrypto;
import nlib.cmm.crypto.NlibPasswordEncoder;
import nlib.cmm.service.CodeService;
import nlib.cmm.service.NlibProperty;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
@Controller
public class BoardController extends NlibCommonController
{
private static final Logger log = LoggerFactory.getLogger(BoardController.class);
static final String DEFUALT_PAGE_SIZE = NlibProperty.getProperty("list.paging.page.size");
@Resource(name = "boardService")
private BoardService boardService;
@Resource(name = "nlibPasswordEncoder")
private NlibPasswordEncoder nlibPasswordEncoder;
@Resource(name = "ariaCrypto")
private AriaCrypto ariaCrypto;
@Resource(name = "codeService")
private CodeService codeService;
@Autowired
private AuthenticationManager authenticationManager;
/**
* 공지사항 목록 조회한다.
*
* @param req
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping("/board/listNotices.do")
public String listNotices(HttpServletRequest req) {
return "nlib/board/listNotices";
}
/**
* 공지사항 상세 내용 조회한다.
* @param req
* @return
*/
@RequestMapping("/board/selectNotice.do")
public String selectNotice(HttpServletRequest req) {
return "nlib/board/selectNotice";
}
/**
* FAQ 목록 조회한다.
*
* @param req
* @return
*/
@RequestMapping("/board/listFAQs.do")
public String listFAQs(HttpServletRequest req) {
return "nlib/board/listFAQs";
}
/**
* 묻고답하기 목록 조회 화면을 구성한다.
*
* @param req
* @return
*/
@RequestMapping("/board/listQnAs.do")
public String listQnAs(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
String searchKeyword = paramMap.get("searchKeyword");
String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
log.debug("listQnAs > pageIndex = " + pageIndex);
log.debug("listQnAs > pageSize = " + pageSize);
log.debug("listQnAs > searchKeyword = " + searchKeyword);
// 페이징 사이즈 코드 목록 조회
DataApiReqVO reqVOforPageSize = new DataApiReqVO();
reqVOforPageSize.setAuthKey(createAuthKey(req, authentication));
reqVOforPageSize.setPageSize(0);
reqVOforPageSize.addInfoItem("codeUpperId", "PAGE_SIZE");
DataApiResVO resVOforPageSize = codeService.listCodes(reqVOforPageSize);
// 반환 정보
model.addAttribute("pageIndex" , pageIndex);
model.addAttribute("pageSize" , pageSize);
model.addAttribute("searchKeyword", searchKeyword);
model.addAttribute("pageSizeCodes", resVOforPageSize.getList());
return "nlib/board/listQnAs";
}
/**
* 묻고답하기 목록 조회한다.
*
* @param req
* @return
*/
@RequestMapping(value="/board/listQnAsAjax.do")
public ResponseEntity<String> listQnAsAjax(HttpServletRequest req,
Authentication authentication, @RequestBody Map<String, String> paramMap) {
String searchKeyword = paramMap.get("searchKeyword");
String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
log.debug("listQnAsAjax > pageIndex = " + pageIndex);
log.debug("listQnAsAjax > pageSize = " + pageSize);
log.debug("listQnAsAjax > searchKeyword = " + searchKeyword);
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
reqVO.addInfoItem("searchKeyword", searchKeyword);
// 요청
DataApiResVO resVO = boardService.listQnAs(reqVO);
//-------------------------------
// JSON변환 응답 처리
//-------------------------------
// JS-GRID 페이징 처리를 포함한 응답값 처리
// {data: [{...}],
// itemsCount: 255
// }
HashMap<String, Object> retMap = new HashMap<String, Object>();
retMap.put("data", resVO.getList());
retMap.put("itemsCount", resVO.getRecordTotCount());
return makeResponseEntityJson(retMap);
}
/**
* 묻고답하기 상세 내용 조회한다.
*
* @param req
* @return
*/
@RequestMapping("/board/selectQnA.do")
public String selectQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
// 목록 이동시 전달할 매개변수
String searchKeyword = paramMap.get("searchKeyword");
String pageIndex = paramMap.get("pageIndex");
String pageSize = paramMap.get("pageSize");
// 게시물 번호
String articleNo = paramMap.get("articleNo");
log.debug("selectQnA > pageIndex = " + pageIndex);
log.debug("selectQnA > pageSize = " + pageSize);
log.debug("selectQnA > searchKeyword = " + searchKeyword);
log.debug("selectQnA > articleNo = " + articleNo);
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
// 추가 정보 설정 : 게시판ID, 게시물번호
HashMap<String, Object> info = new HashMap<String, Object>();
info.put("boardNo", "QNA");
info.put("articleNo", articleNo);
reqVO.setInfo(info);
// 요청
DataApiResVO resVO = boardService.selectQnA(reqVO);
// 반환 정보
model.addAttribute("articleNo" , articleNo);
model.addAttribute("article" , resVO.getInfo());
model.addAttribute("preArticle" , resVO.getList().get(0));
model.addAttribute("nextArticle" , resVO.getList().get(1));
model.addAttribute("pageIndex" , pageIndex);
model.addAttribute("pageSize" , pageSize);
model.addAttribute("searchKeyword", searchKeyword);
return "nlib/board/selectQnA";
}
/**
* 묻고답하기 글작성화면을 표출한다.
*
* @param req
* @return
*/
@RequestMapping("/board/insertQnAForm.do")
public String insertQnAForm(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
NlibLoginVO loginVO = getNlibLoginVO(authentication);
model.addAttribute("regUserName", loginVO.getName());
model.addAttribute("email", loginVO.getEmail());
return "nlib/board/insertQnAForm";
}
@RequestMapping("/board/insertQnA.do")
public String insertQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
NlibLoginVO loginVO = getNlibLoginVO(authentication);
log.debug("paramMap > " + paramMap);
String message = null;
String authKey = createAuthKey(req, authentication);
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(authKey);
reqVO.addInfoItem("boardNo" , "QNA");
reqVO.addInfoItem("title" , paramMap.get("title"));
reqVO.addInfoItem("regUserName" , paramMap.get("regUserName"));
reqVO.addInfoItem("email" , paramMap.get("email"));
reqVO.addInfoItem("contentQeust", paramMap.get("contentQeust"));
// 요청
DataApiResVO resVO = boardService.insertQnA(reqVO);
// 처리결과 확인
if(!resVO.isSuccess()) {
message = resVO.getResultMessage();
return "redirect:/board/insertQnAForm.do";
}
return "redirect:nlib/board/listQnAs";
}
@RequestMapping("/board/verifyWriter.do")
public String verifyWriter(HttpServletRequest req) {
return "nlib/board/verifyWriter";
}
@RequestMapping("/board/updateQnAForm.do")
public String updateQnAForm(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
// 목록 이동시 전달할 매개변수
String searchKeyword = paramMap.get("searchKeyword");
String pageIndex = paramMap.get("pageIndex");
String pageSize = paramMap.get("pageSize");
// 게시물 번호
String articleNo = paramMap.get("articleNo");
String articlePassword = paramMap.get("articlePassword");
log.debug("updateQnAForm > pageIndex = " + pageIndex);
log.debug("updateQnAForm > pageSize = " + pageSize);
log.debug("updateQnAForm > searchKeyword = " + searchKeyword);
log.debug("updateQnAForm > articleNo = " + articleNo);
log.debug("updateQnAForm > articlePassword = " + articlePassword);
if(StringUtil.isEmpty(articlePassword)) {
model.addAttribute("message", "비밀빈호가 올바르지 않습니다.(1)");
return "redirect:/board/selectQnA.do";
}
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
// 추가 정보 설정 : 게시판ID, 게시물번호
HashMap<String, Object> info = new HashMap<String, Object>();
info.put("boardNo", "QNA");
info.put("articleNo", articleNo);
reqVO.setInfo(info);
// 요청
DataApiResVO resVO = boardService.selectQnA(reqVO);
// 비밀번호 확인
HashMap<String, Object> article = resVO.getInfo();
if(!articlePassword.equals(article.get("articlePassword"))) {
model.addAttribute("message", "비밀빈호가 올바르지 않습니다.(1)");
return "redirect:/board/selectQnA.do";
}
// 반환 정보
model.addAttribute("articleNo" , articleNo);
model.addAttribute("article" , resVO.getInfo());
// 게시글 비밀번호 처리
String shaArticlePassword = nlibPasswordEncoder.encode(articlePassword);
String encArticlePassword = ariaCrypto.encode(shaArticlePassword, createAuthKey(req, authentication));
model.addAttribute("encArticlePassword", encArticlePassword);
// 검색 정보
model.addAttribute("pageIndex" , pageIndex);
model.addAttribute("pageSize" , pageSize);
model.addAttribute("searchKeyword", searchKeyword);
return "nlib/board/updateQnAForm";
}
@RequestMapping("/board/updateQnA.do")
public String updateQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
log.debug("paramMap > " + paramMap);
String message = null;
String authKey = createAuthKey(req, authentication);
// 목록 이동시 전달할 매개변수
String searchKeyword = paramMap.get("searchKeyword");
String pageIndex = paramMap.get("pageIndex");
String pageSize = paramMap.get("pageSize");
// 게시물 번호
String articleNo = paramMap.get("articleNo");
String encArticlePassword = paramMap.get("encArticlePassword");
String checkArticlePassword = ariaCrypto.decode(encArticlePassword, authKey);
//-------------------------------
// 비밀번호 유효 체크
//-------------------------------
// 기존 정보 조회
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(authKey);
reqVO.addInfoItem("articleNo", articleNo);
DataApiResVO resVO = boardService.selectQnA(reqVO);
String oldArticlePassword = resVO.getInfoItem("articlePassword");
if(checkArticlePassword == null || !checkArticlePassword.equals(oldArticlePassword)) {
message = "잘못된 접근입니다.";
// TODO 수정화면으로 다시 redirect 시킬것
return "redirect:/board/updateQnAForm.do";
}
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO updateReqVO = new DataApiReqVO();
updateReqVO.setAuthKey(authKey);
updateReqVO.addInfoItem("boardNo" , "QNA");
updateReqVO.addInfoItem("articleNo" , articleNo);
updateReqVO.addInfoItem("title" , paramMap.get("title"));
updateReqVO.addInfoItem("regUserName" , paramMap.get("regUserName"));
updateReqVO.addInfoItem("email" , paramMap.get("email"));
updateReqVO.addInfoItem("contentQeust", paramMap.get("contentQeust"));
// 요청
DataApiResVO updateResVO = boardService.updateQnA(updateReqVO);
// 처리결과 확인
if(!updateResVO.isSuccess()) {
message = updateResVO.getResultMessage();
return "redirect:/board/updateQnAForm.do";
}
// 반환 정보
model.addAttribute("articleNo" , updateResVO.getInfoItem("articleNo")); // 신규등록된 게시물 ID
model.addAttribute("article" , resVO.getInfo());
// 검색 정보
model.addAttribute("pageIndex" , pageIndex);
model.addAttribute("pageSize" , pageSize);
model.addAttribute("searchKeyword", searchKeyword);
return "redirect:nlib/board/selectQnA";
}
@RequestMapping("/board/deleteQnA.do")
public String deleteQnA(HttpServletRequest req) {
return "nlib/board/deleteQnA";
}
package nlib.bbs.web;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import nlib.bbs.service.BoardService;
import nlib.cmm.NlibCommonController;
import nlib.cmm.crypto.AriaCrypto;
import nlib.cmm.crypto.NlibPasswordEncoder;
import nlib.cmm.service.CodeService;
import nlib.cmm.service.NlibProperty;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
@Controller
public class BoardController extends NlibCommonController
{
private static final Logger log = LoggerFactory.getLogger(BoardController.class);
static final String DEFUALT_PAGE_SIZE = NlibProperty.getProperty("list.paging.page.size");
@Resource(name = "boardService")
private BoardService boardService;
@Resource(name = "nlibPasswordEncoder")
private NlibPasswordEncoder nlibPasswordEncoder;
@Resource(name = "ariaCrypto")
private AriaCrypto ariaCrypto;
@Resource(name = "codeService")
private CodeService codeService;
@Autowired
private AuthenticationManager authenticationManager;
/**
* 공지사항 목록 조회한다.
*
* @param req
* @return
*/
@SuppressWarnings("deprecation")
@RequestMapping("/board/listNotices.do")
public String listNotices(HttpServletRequest req) {
return "nlib/board/listNotices";
}
/**
* 공지사항 상세 내용 조회한다.
* @param req
* @return
*/
@RequestMapping("/board/selectNotice.do")
public String selectNotice(HttpServletRequest req) {
return "nlib/board/selectNotice";
}
/**
* FAQ 목록 조회한다.
*
* @param req
* @return
*/
@RequestMapping("/board/listFAQs.do")
public String listFAQs(HttpServletRequest req) {
return "nlib/board/listFAQs";
}
/**
* 묻고답하기 목록 조회 화면을 구성한다.
*
* @param req
* @return
*/
@RequestMapping("/board/listQnAs.do")
public String listQnAs(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
String searchKeyword = paramMap.get("searchKeyword");
String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
log.debug("listQnAs > pageIndex = " + pageIndex);
log.debug("listQnAs > pageSize = " + pageSize);
log.debug("listQnAs > searchKeyword = " + searchKeyword);
// 페이징 사이즈 코드 목록 조회
DataApiReqVO reqVOforPageSize = new DataApiReqVO();
reqVOforPageSize.setAuthKey(createAuthKey(req, authentication));
reqVOforPageSize.setPageSize(0);
reqVOforPageSize.addInfoItem("codeUpperId", "PAGE_SIZE");
DataApiResVO resVOforPageSize = codeService.listCodes(reqVOforPageSize);
// 반환 정보
model.addAttribute("pageIndex" , pageIndex);
model.addAttribute("pageSize" , pageSize);
model.addAttribute("searchKeyword", searchKeyword);
model.addAttribute("pageSizeCodes", resVOforPageSize.getList());
return "nlib/board/listQnAs";
}
/**
* 묻고답하기 목록 조회한다.
*
* @param req
* @return
*/
@RequestMapping(value="/board/listQnAsAjax.do")
public ResponseEntity<String> listQnAsAjax(HttpServletRequest req,
Authentication authentication, @RequestBody Map<String, String> paramMap) {
String searchKeyword = paramMap.get("searchKeyword");
String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
log.debug("listQnAsAjax > pageIndex = " + pageIndex);
log.debug("listQnAsAjax > pageSize = " + pageSize);
log.debug("listQnAsAjax > searchKeyword = " + searchKeyword);
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
reqVO.addInfoItem("searchKeyword", searchKeyword);
// 요청
DataApiResVO resVO = boardService.listQnAs(reqVO);
//-------------------------------
// JSON변환 응답 처리
//-------------------------------
// JS-GRID 페이징 처리를 포함한 응답값 처리
// {data: [{...}],
// itemsCount: 255
// }
HashMap<String, Object> retMap = new HashMap<String, Object>();
retMap.put("data", resVO.getList());
retMap.put("itemsCount", resVO.getRecordTotCount());
return makeResponseEntityJson(retMap);
}
/**
* 묻고답하기 상세 내용 조회한다.
*
* @param req
* @return
*/
@RequestMapping("/board/selectQnA.do")
public String selectQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
// 목록 이동시 전달할 매개변수
String searchKeyword = paramMap.get("searchKeyword");
String pageIndex = paramMap.get("pageIndex");
String pageSize = paramMap.get("pageSize");
// 게시물 번호
String articleNo = paramMap.get("articleNo");
log.debug("selectQnA > pageIndex = " + pageIndex);
log.debug("selectQnA > pageSize = " + pageSize);
log.debug("selectQnA > searchKeyword = " + searchKeyword);
log.debug("selectQnA > articleNo = " + articleNo);
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
// 추가 정보 설정 : 게시판ID, 게시물번호
HashMap<String, Object> info = new HashMap<String, Object>();
info.put("boardNo", "QNA");
info.put("articleNo", articleNo);
reqVO.setInfo(info);
// 요청
DataApiResVO resVO = boardService.selectQnA(reqVO);
// 반환 정보
model.addAttribute("articleNo" , articleNo);
model.addAttribute("article" , resVO.getInfo());
model.addAttribute("preArticle" , resVO.getList().get(0));
model.addAttribute("nextArticle" , resVO.getList().get(1));
model.addAttribute("pageIndex" , pageIndex);
model.addAttribute("pageSize" , pageSize);
model.addAttribute("searchKeyword", searchKeyword);
return "nlib/board/selectQnA";
}
/**
* 묻고답하기 글작성화면을 표출한다.
*
* @param req
* @return
*/
@RequestMapping("/board/insertQnAForm.do")
public String insertQnAForm(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
NlibLoginVO loginVO = getNlibLoginVO(authentication);
model.addAttribute("regUserName", loginVO.getName());
model.addAttribute("email", loginVO.getEmail());
return "nlib/board/insertQnAForm";
}
@RequestMapping("/board/insertQnA.do")
public String insertQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
NlibLoginVO loginVO = getNlibLoginVO(authentication);
log.debug("paramMap > " + paramMap);
String message = null;
String authKey = createAuthKey(req, authentication);
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(authKey);
reqVO.addInfoItem("boardNo" , "QNA");
reqVO.addInfoItem("title" , paramMap.get("title"));
reqVO.addInfoItem("regUserName" , paramMap.get("regUserName"));
reqVO.addInfoItem("email" , paramMap.get("email"));
reqVO.addInfoItem("contentQeust", paramMap.get("contentQeust"));
// 요청
DataApiResVO resVO = boardService.insertQnA(reqVO);
// 처리결과 확인
if(!resVO.isSuccess()) {
message = resVO.getResultMessage();
return "redirect:/board/insertQnAForm.do";
}
return "redirect:nlib/board/listQnAs";
}
@RequestMapping("/board/verifyWriter.do")
public String verifyWriter(HttpServletRequest req) {
return "nlib/board/verifyWriter";
}
@RequestMapping("/board/updateQnAForm.do")
public String updateQnAForm(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
// 목록 이동시 전달할 매개변수
String searchKeyword = paramMap.get("searchKeyword");
String pageIndex = paramMap.get("pageIndex");
String pageSize = paramMap.get("pageSize");
// 게시물 번호
String articleNo = paramMap.get("articleNo");
String articlePassword = paramMap.get("articlePassword");
log.debug("updateQnAForm > pageIndex = " + pageIndex);
log.debug("updateQnAForm > pageSize = " + pageSize);
log.debug("updateQnAForm > searchKeyword = " + searchKeyword);
log.debug("updateQnAForm > articleNo = " + articleNo);
log.debug("updateQnAForm > articlePassword = " + articlePassword);
if(StringUtil.isEmpty(articlePassword)) {
model.addAttribute("message", "비밀빈호가 올바르지 않습니다.(1)");
return "redirect:/board/selectQnA.do";
}
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(pageIndex);
reqVO.setPageSize(pageSize);
// 추가 정보 설정 : 게시판ID, 게시물번호
HashMap<String, Object> info = new HashMap<String, Object>();
info.put("boardNo", "QNA");
info.put("articleNo", articleNo);
reqVO.setInfo(info);
// 요청
DataApiResVO resVO = boardService.selectQnA(reqVO);
// 비밀번호 확인
HashMap<String, Object> article = resVO.getInfo();
if(!articlePassword.equals(article.get("articlePassword"))) {
model.addAttribute("message", "비밀빈호가 올바르지 않습니다.(1)");
return "redirect:/board/selectQnA.do";
}
// 반환 정보
model.addAttribute("articleNo" , articleNo);
model.addAttribute("article" , resVO.getInfo());
// 게시글 비밀번호 처리
String shaArticlePassword = nlibPasswordEncoder.encode(articlePassword);
String encArticlePassword = ariaCrypto.encode(shaArticlePassword, createAuthKey(req, authentication));
model.addAttribute("encArticlePassword", encArticlePassword);
// 검색 정보
model.addAttribute("pageIndex" , pageIndex);
model.addAttribute("pageSize" , pageSize);
model.addAttribute("searchKeyword", searchKeyword);
return "nlib/board/updateQnAForm";
}
@RequestMapping("/board/updateQnA.do")
public String updateQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
log.debug("paramMap > " + paramMap);
String message = null;
String authKey = createAuthKey(req, authentication);
// 목록 이동시 전달할 매개변수
String searchKeyword = paramMap.get("searchKeyword");
String pageIndex = paramMap.get("pageIndex");
String pageSize = paramMap.get("pageSize");
// 게시물 번호
String articleNo = paramMap.get("articleNo");
String encArticlePassword = paramMap.get("encArticlePassword");
String checkArticlePassword = ariaCrypto.decode(encArticlePassword, authKey);
//-------------------------------
// 비밀번호 유효 체크
//-------------------------------
// 기존 정보 조회
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(authKey);
reqVO.addInfoItem("articleNo", articleNo);
DataApiResVO resVO = boardService.selectQnA(reqVO);
String oldArticlePassword = resVO.getInfoItem("articlePassword");
if(checkArticlePassword == null || !checkArticlePassword.equals(oldArticlePassword)) {
message = "잘못된 접근입니다.";
// TODO 수정화면으로 다시 redirect 시킬것
return "redirect:/board/updateQnAForm.do";
}
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO updateReqVO = new DataApiReqVO();
updateReqVO.setAuthKey(authKey);
updateReqVO.addInfoItem("boardNo" , "QNA");
updateReqVO.addInfoItem("articleNo" , articleNo);
updateReqVO.addInfoItem("title" , paramMap.get("title"));
updateReqVO.addInfoItem("regUserName" , paramMap.get("regUserName"));
updateReqVO.addInfoItem("email" , paramMap.get("email"));
updateReqVO.addInfoItem("contentQeust", paramMap.get("contentQeust"));
// 요청
DataApiResVO updateResVO = boardService.updateQnA(updateReqVO);
// 처리결과 확인
if(!updateResVO.isSuccess()) {
message = updateResVO.getResultMessage();
return "redirect:/board/updateQnAForm.do";
}
// 반환 정보
model.addAttribute("articleNo" , updateResVO.getInfoItem("articleNo")); // 신규등록된 게시물 ID
model.addAttribute("article" , resVO.getInfo());
// 검색 정보
model.addAttribute("pageIndex" , pageIndex);
model.addAttribute("pageSize" , pageSize);
model.addAttribute("searchKeyword", searchKeyword);
return "redirect:nlib/board/selectQnA";
}
@RequestMapping("/board/deleteQnA.do")
public String deleteQnA(HttpServletRequest req) {
return "nlib/board/deleteQnA";
}
}

View File

@ -1,178 +1,178 @@
package nlib.cmm;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import nlib.bbs.web.BoardController;
import nlib.cmm.exception.ErrorMessage;
import nlib.restful.service.DataApiResVO;
import nlib.security.SecUserVO;
import nlib.user.service.NlibLoginVO;
/**
* <pre>
* @Class Name : NlibCommonController.java
*
* @Description : 컨트롤러의 공통적인 기능을 제공하는 컨트롤러 상위 클래스
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 23. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 23.
* @version 1.0
*
*/
public class NlibCommonController {
private static final Logger log = LoggerFactory.getLogger(BoardController.class);
/**
* AuthKey 생성 , 로그인하지 않은 사용자의 AuthKey 생성시 사용되는 접두어
*/
static final String ANONYMOUS_AUTH_KEY_PREFIX = "GST-";
/**
* 스프링 시큐리티 Authentication를 통해서 사용자로그인정보 NlibLoginVO를 리턴한다.
*
* @param authentication
* @return
*/
public NlibLoginVO getNlibLoginVO(Authentication authentication) {
if(authentication == null) return null;
return (NlibLoginVO)authentication.getPrincipal();
}
/**
* 스프링 시큐리티 Authentication를 통해서 사용자로그인정보 SecUserVO를 리턴한다.
*
* @param authentication
* @return
*/
public SecUserVO getSecLoginVO(Authentication authentication) {
if(authentication == null) return null;
return (SecUserVO)authentication.getPrincipal();
}
/**
* 통합자료시스템 요청 , 제공할 사용자정보 auth key 생성
* - 로그인 경우 : 사용자ID를 BASE64로 인코딩한
* - 로그인하지 않은 경우 : GST-세션ID
*
* @param request
* @param authentication
* @return
*/
public String createAuthKey(HttpServletRequest request, Authentication authentication) {
String userId = null;
String authKey = null;
if(authentication != null) {
userId = ((NlibLoginVO)authentication.getPrincipal()).getId();
}
if(nlib.util.StringUtil.isEmpty(userId)) {
authKey = ANONYMOUS_AUTH_KEY_PREFIX + request.getSession().getId();
} else {
authKey = Base64.getEncoder().encodeToString(userId.getBytes());
}
log.debug("createAuthKey > " + authKey);
return authKey;
}
public ResponseEntity<String> makeResponseEntityJson(DataApiResVO resVO) {
// Convert Json
ObjectMapper mapper = new ObjectMapper();
String jsonStr = null;
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8");
try {
jsonStr = mapper.writeValueAsString(resVO);
log.debug("RETURN DATA > json:" + jsonStr);
} catch (JsonProcessingException e) {
ErrorMessage eMsg = new ErrorMessage("ERR_JSON_CONVERT", "응답객체를 JSON으로 변환 처리 중 오류가 발생하였습니다. : " + e.toString());
try { jsonStr = mapper.writeValueAsString(eMsg); } catch (JsonProcessingException ee) {}
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).headers(headers).body(jsonStr);
}
return ResponseEntity.ok().headers(headers).body(jsonStr);
}
public ResponseEntity<String> makeResponseEntityJson(List<HashMap<String,String>> list) {
// Convert Json
ObjectMapper mapper = new ObjectMapper();
String jsonStr = null;
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8");
try {
jsonStr = mapper.writeValueAsString(list);
log.debug("RETURN DATA > json:" + jsonStr);
} catch (JsonProcessingException e) {
ErrorMessage eMsg = new ErrorMessage("ERR_JSON_CONVERT", "응답객체를 JSON으로 변환 처리 중 오류가 발생하였습니다. : " + e.toString());
try { jsonStr = mapper.writeValueAsString(eMsg); } catch (JsonProcessingException ee) {}
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).headers(headers).body(jsonStr);
}
return ResponseEntity.ok().headers(headers).body(jsonStr);
}
public ResponseEntity<String> makeResponseEntityJson(HashMap<String,Object> retMap) {
// Convert Json
ObjectMapper mapper = new ObjectMapper();
String jsonStr = null;
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8");
try {
jsonStr = mapper.writeValueAsString(retMap);
log.debug("RETURN DATA > json:" + jsonStr);
} catch (JsonProcessingException e) {
ErrorMessage eMsg = new ErrorMessage("ERR_JSON_CONVERT", "응답객체를 JSON으로 변환 처리 중 오류가 발생하였습니다. : " + e.toString());
try { jsonStr = mapper.writeValueAsString(eMsg); } catch (JsonProcessingException ee) {}
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).headers(headers).body(jsonStr);
}
return ResponseEntity.ok().headers(headers).body(jsonStr);
}
}
package nlib.cmm;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import nlib.bbs.web.BoardController;
import nlib.cmm.exception.ErrorMessage;
import nlib.restful.service.DataApiResVO;
import nlib.security.SecUserVO;
import nlib.user.service.NlibLoginVO;
/**
* <pre>
* @Class Name : NlibCommonController.java
*
* @Description : 컨트롤러의 공통적인 기능을 제공하는 컨트롤러 상위 클래스
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 23. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 23.
* @version 1.0
*
*/
public class NlibCommonController {
private static final Logger log = LoggerFactory.getLogger(BoardController.class);
/**
* AuthKey 생성 , 로그인하지 않은 사용자의 AuthKey 생성시 사용되는 접두어
*/
static final String ANONYMOUS_AUTH_KEY_PREFIX = "GST-";
/**
* 스프링 시큐리티 Authentication를 통해서 사용자로그인정보 NlibLoginVO를 리턴한다.
*
* @param authentication
* @return
*/
public NlibLoginVO getNlibLoginVO(Authentication authentication) {
if(authentication == null) return null;
return (NlibLoginVO)authentication.getPrincipal();
}
/**
* 스프링 시큐리티 Authentication를 통해서 사용자로그인정보 SecUserVO를 리턴한다.
*
* @param authentication
* @return
*/
public SecUserVO getSecLoginVO(Authentication authentication) {
if(authentication == null) return null;
return (SecUserVO)authentication.getPrincipal();
}
/**
* 통합자료시스템 요청 , 제공할 사용자정보 auth key 생성
* - 로그인 경우 : 사용자ID를 BASE64로 인코딩한
* - 로그인하지 않은 경우 : GST-세션ID
*
* @param request
* @param authentication
* @return
*/
public String createAuthKey(HttpServletRequest request, Authentication authentication) {
String userId = null;
String authKey = null;
if(authentication != null) {
userId = ((NlibLoginVO)authentication.getPrincipal()).getId();
}
if(nlib.util.StringUtil.isEmpty(userId)) {
authKey = ANONYMOUS_AUTH_KEY_PREFIX + request.getSession().getId();
} else {
authKey = Base64.getEncoder().encodeToString(userId.getBytes());
}
log.debug("createAuthKey > " + authKey);
return authKey;
}
public ResponseEntity<String> makeResponseEntityJson(DataApiResVO resVO) {
// Convert Json
ObjectMapper mapper = new ObjectMapper();
String jsonStr = null;
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8");
try {
jsonStr = mapper.writeValueAsString(resVO);
log.debug("RETURN DATA > json:" + jsonStr);
} catch (JsonProcessingException e) {
ErrorMessage eMsg = new ErrorMessage("ERR_JSON_CONVERT", "응답객체를 JSON으로 변환 처리 중 오류가 발생하였습니다. : " + e.toString());
try { jsonStr = mapper.writeValueAsString(eMsg); } catch (JsonProcessingException ee) {}
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).headers(headers).body(jsonStr);
}
return ResponseEntity.ok().headers(headers).body(jsonStr);
}
public ResponseEntity<String> makeResponseEntityJson(List<HashMap<String,String>> list) {
// Convert Json
ObjectMapper mapper = new ObjectMapper();
String jsonStr = null;
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8");
try {
jsonStr = mapper.writeValueAsString(list);
log.debug("RETURN DATA > json:" + jsonStr);
} catch (JsonProcessingException e) {
ErrorMessage eMsg = new ErrorMessage("ERR_JSON_CONVERT", "응답객체를 JSON으로 변환 처리 중 오류가 발생하였습니다. : " + e.toString());
try { jsonStr = mapper.writeValueAsString(eMsg); } catch (JsonProcessingException ee) {}
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).headers(headers).body(jsonStr);
}
return ResponseEntity.ok().headers(headers).body(jsonStr);
}
public ResponseEntity<String> makeResponseEntityJson(HashMap<String,Object> retMap) {
// Convert Json
ObjectMapper mapper = new ObjectMapper();
String jsonStr = null;
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8");
try {
jsonStr = mapper.writeValueAsString(retMap);
log.debug("RETURN DATA > json:" + jsonStr);
} catch (JsonProcessingException e) {
ErrorMessage eMsg = new ErrorMessage("ERR_JSON_CONVERT", "응답객체를 JSON으로 변환 처리 중 오류가 발생하였습니다. : " + e.toString());
try { jsonStr = mapper.writeValueAsString(eMsg); } catch (JsonProcessingException ee) {}
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).headers(headers).body(jsonStr);
}
return ResponseEntity.ok().headers(headers).body(jsonStr);
}
}

View File

@ -1,131 +1,131 @@
package nlib.cmm.crypto;
import org.apache.tomcat.util.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
import egovframework.rte.fdl.cryptography.impl.EgovARIACryptoServiceImpl;
import nlib.cmm.service.NlibProperty;
import nlib.sample.web.SampleEncoderController;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : AriaCrypto.java
*
* @Description : 양방향 Aria 알고리즘 암복호화 처리 클래스 (egov Aria 알고리즘 구현체 사용)
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 8. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 8.
* @version 1.0
*
*/
@Component("ariaCrypto")
public class AriaCrypto {
private static final Logger log = LoggerFactory.getLogger(AriaCrypto.class);
/**
* 암호처리 , 기본
*/
private static String ARIA_DEFAULT_KEY = NlibProperty.getProperty("crypto.aria.defaultKey");
/**
* 기본키를 가지고 암호화한다.
*
* @param value
* @return
*/
public static String encode(String value) {
log.info("encode : 암호화에 사용할 키 정보가 없으므로 기본키 정보를 사용합니다 : " + ARIA_DEFAULT_KEY);
return encode(value, ARIA_DEFAULT_KEY);
}
/**
* 전달받은 key(사용자고유번호 혹은 메일주소 salt값) 암호화한다.
*
* @param value
* @param key
* @return
*/
public static String encode(String value, String key) {
if(StringUtil.isEmpty(value)) {
log.error("encode : 암호화할 문자열 정보가 없습니다.");
return null;
}
if(StringUtil.isEmpty(key)) {
log.error("encode : 암호화에 사용할 키 정보가 없습니다.");
return null;
}
EgovPasswordEncoder egovPasswordEncoder = new EgovPasswordEncoder();
String hashedPassword = egovPasswordEncoder.encryptPassword(key);
egovPasswordEncoder.setHashedPassword(hashedPassword);
egovPasswordEncoder.setAlgorithm("SHA-256");
EgovARIACryptoServiceImpl egovARIACryptoServiceImpl = new EgovARIACryptoServiceImpl();
egovARIACryptoServiceImpl.setPasswordEncoder(egovPasswordEncoder);
egovARIACryptoServiceImpl.setBlockSize(1025);
return Base64.encodeBase64String(egovARIACryptoServiceImpl.encrypt(value.getBytes(), key));
}
/**
* 기본키를 가지고 복호화한다.
*
* @param value
* @return
*/
public static String decode(String value) {
log.info("decode : 복호화에 사용할 키 정보가 없으므로 기본키 정보를 사용합니다 : " + ARIA_DEFAULT_KEY);
return decode(value, ARIA_DEFAULT_KEY);
}
/**
* 전달받은 key(사용자고유번호 혹은 메일주소 salt값) 복호화한다.
* @param value
* @param key
* @return
*/
public static String decode(String value, String key) {
if(StringUtil.isEmpty(value)) {
log.error("decode : 복호화할 암호문자열 정보가 없습니다.");
return null;
}
if(StringUtil.isEmpty(key)) {
log.error("decode : 복호화에 사용할 키 정보가 없습니다.");
return null;
}
EgovPasswordEncoder egovPasswordEncoder = new EgovPasswordEncoder();
String hashedPassword = egovPasswordEncoder.encryptPassword(key);
egovPasswordEncoder.setHashedPassword(hashedPassword);
egovPasswordEncoder.setAlgorithm("SHA-256");
EgovARIACryptoServiceImpl egovARIACryptoServiceImpl = new EgovARIACryptoServiceImpl();
egovARIACryptoServiceImpl.setPasswordEncoder(egovPasswordEncoder);
egovARIACryptoServiceImpl.setBlockSize(1025);
return new String(egovARIACryptoServiceImpl.decrypt(Base64.decodeBase64(value), key));
}
}
package nlib.cmm.crypto;
import org.apache.tomcat.util.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
import egovframework.rte.fdl.cryptography.impl.EgovARIACryptoServiceImpl;
import nlib.cmm.service.NlibProperty;
import nlib.sample.web.SampleEncoderController;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : AriaCrypto.java
*
* @Description : 양방향 Aria 알고리즘 암복호화 처리 클래스 (egov Aria 알고리즘 구현체 사용)
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 8. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 8.
* @version 1.0
*
*/
@Component("ariaCrypto")
public class AriaCrypto {
private static final Logger log = LoggerFactory.getLogger(AriaCrypto.class);
/**
* 암호처리 , 기본
*/
private static String ARIA_DEFAULT_KEY = NlibProperty.getProperty("crypto.aria.defaultKey");
/**
* 기본키를 가지고 암호화한다.
*
* @param value
* @return
*/
public static String encode(String value) {
log.info("encode : 암호화에 사용할 키 정보가 없으므로 기본키 정보를 사용합니다 : " + ARIA_DEFAULT_KEY);
return encode(value, ARIA_DEFAULT_KEY);
}
/**
* 전달받은 key(사용자고유번호 혹은 메일주소 salt값) 암호화한다.
*
* @param value
* @param key
* @return
*/
public static String encode(String value, String key) {
if(StringUtil.isEmpty(value)) {
log.error("encode : 암호화할 문자열 정보가 없습니다.");
return null;
}
if(StringUtil.isEmpty(key)) {
log.error("encode : 암호화에 사용할 키 정보가 없습니다.");
return null;
}
EgovPasswordEncoder egovPasswordEncoder = new EgovPasswordEncoder();
String hashedPassword = egovPasswordEncoder.encryptPassword(key);
egovPasswordEncoder.setHashedPassword(hashedPassword);
egovPasswordEncoder.setAlgorithm("SHA-256");
EgovARIACryptoServiceImpl egovARIACryptoServiceImpl = new EgovARIACryptoServiceImpl();
egovARIACryptoServiceImpl.setPasswordEncoder(egovPasswordEncoder);
egovARIACryptoServiceImpl.setBlockSize(1025);
return Base64.encodeBase64String(egovARIACryptoServiceImpl.encrypt(value.getBytes(), key));
}
/**
* 기본키를 가지고 복호화한다.
*
* @param value
* @return
*/
public static String decode(String value) {
log.info("decode : 복호화에 사용할 키 정보가 없으므로 기본키 정보를 사용합니다 : " + ARIA_DEFAULT_KEY);
return decode(value, ARIA_DEFAULT_KEY);
}
/**
* 전달받은 key(사용자고유번호 혹은 메일주소 salt값) 복호화한다.
* @param value
* @param key
* @return
*/
public static String decode(String value, String key) {
if(StringUtil.isEmpty(value)) {
log.error("decode : 복호화할 암호문자열 정보가 없습니다.");
return null;
}
if(StringUtil.isEmpty(key)) {
log.error("decode : 복호화에 사용할 키 정보가 없습니다.");
return null;
}
EgovPasswordEncoder egovPasswordEncoder = new EgovPasswordEncoder();
String hashedPassword = egovPasswordEncoder.encryptPassword(key);
egovPasswordEncoder.setHashedPassword(hashedPassword);
egovPasswordEncoder.setAlgorithm("SHA-256");
EgovARIACryptoServiceImpl egovARIACryptoServiceImpl = new EgovARIACryptoServiceImpl();
egovARIACryptoServiceImpl.setPasswordEncoder(egovPasswordEncoder);
egovARIACryptoServiceImpl.setBlockSize(1025);
return new String(egovARIACryptoServiceImpl.decrypt(Base64.decodeBase64(value), key));
}
}

View File

@ -1,68 +1,68 @@
package nlib.cmm.crypto;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
/**
* <pre>
* @Class Name : NlibPasswordEncoder.java
*
* @Description : 스프링 시큐리티 비밀번호 암호화 처리를 위하여 전자정부 프레임워크의 SHA256 알고리즘 구현체를 사용한 비밀번호 인코더 클래스
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 9. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 9.
* @version 1.0
*
*/
@Component("nlibPasswordEncoder")
public class NlibPasswordEncoder implements PasswordEncoder { /* extends EgovPasswordEncoder */
private static final Logger log = LoggerFactory.getLogger(NlibPasswordEncoder.class);
@Resource(name = "egovEnvPasswordEncoderService")
EgovPasswordEncoder egovPasswordEncoder;
/* 비밀번호를 SHA-256 알고리즘을 사용하여 암호화한다.
*
* (non-Javadoc)
* @see org.springframework.security.crypto.password.PasswordEncoder#encode(java.lang.CharSequence)
*/
@Override
public String encode(CharSequence rawPassword) {
return egovPasswordEncoder.encryptPassword(rawPassword.toString());
}
/* 입력된 비밀번호가 일치하는 확인한다.
* - rawPassword : 입력된 비밀번호로 암호화되지 않은 비밀번호
* - encodedPassword : 암호화된 비밀번호 (사용자DB에서 읽어온 )
*
* (non-Javadoc)
* @see org.springframework.security.crypto.password.PasswordEncoder#matches(java.lang.CharSequence, java.lang.String)
*/
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return egovPasswordEncoder.checkPassword(rawPassword.toString(), encodedPassword);
}
}
package nlib.cmm.crypto;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
/**
* <pre>
* @Class Name : NlibPasswordEncoder.java
*
* @Description : 스프링 시큐리티 비밀번호 암호화 처리를 위하여 전자정부 프레임워크의 SHA256 알고리즘 구현체를 사용한 비밀번호 인코더 클래스
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 9. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 9.
* @version 1.0
*
*/
@Component("nlibPasswordEncoder")
public class NlibPasswordEncoder implements PasswordEncoder { /* extends EgovPasswordEncoder */
private static final Logger log = LoggerFactory.getLogger(NlibPasswordEncoder.class);
@Resource(name = "egovEnvPasswordEncoderService")
EgovPasswordEncoder egovPasswordEncoder;
/* 비밀번호를 SHA-256 알고리즘을 사용하여 암호화한다.
*
* (non-Javadoc)
* @see org.springframework.security.crypto.password.PasswordEncoder#encode(java.lang.CharSequence)
*/
@Override
public String encode(CharSequence rawPassword) {
return egovPasswordEncoder.encryptPassword(rawPassword.toString());
}
/* 입력된 비밀번호가 일치하는 확인한다.
* - rawPassword : 입력된 비밀번호로 암호화되지 않은 비밀번호
* - encodedPassword : 암호화된 비밀번호 (사용자DB에서 읽어온 )
*
* (non-Javadoc)
* @see org.springframework.security.crypto.password.PasswordEncoder#matches(java.lang.CharSequence, java.lang.String)
*/
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return egovPasswordEncoder.checkPassword(rawPassword.toString(), encodedPassword);
}
}

View File

@ -1,186 +1,186 @@
package nlib.cmm.fileupload;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import egovframework.com.cmm.EgovWebUtil;
import egovframework.com.cmm.service.FileVO;
import nlib.cmm.exception.ErrorMessage;
import nlib.cmm.service.NlibProperty;
import nlib.util.FileUtil;
import nlib.util.StringUtil;
import nlib.util.UUID;
/**
* <pre>
* @Class Name : FileUploadController.java
*
* @Description : 파일 업로드를 처리하는 컨트롤러
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 15. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 15.
* @version 1.0
*
*/
@Controller
public class FileUploadController {
private static final Logger log = LoggerFactory.getLogger(FileUploadController.class);
@Resource(name="nlibProperty")
NlibProperty nlibProperty;
/**
* 첨부파일이 저장되는 최상위 위치
*/
@Value("#{properties['fileupload.base.path']}")
private String FILEUPLOAD_BASE_PATH;
/**
* 첨부파일 임시 저장 위치
*/
@Value("#{properties['fileupload.temp.subpath']}")
private String FILEUPLOAD_TEMP_SUBPATH;
@ResponseBody
@RequestMapping(value="/fileupload/uploadFilesAjax.do", produces="application/json")
public ResponseEntity uploadFilesAjax(
final MultipartHttpServletRequest multiRequest
, @RequestParam("subPathKey") String subPathKey
, HttpServletResponse response) {
// TODO : 권한 체크 추가할
List<FileVO> result = new ArrayList<FileVO>();
try {
// 최상위 위치
if(FileUtil.isNotValid(FILEUPLOAD_BASE_PATH)) throw new Exception("첨부파일이 저장되는 최상위 위치값이 적절하지 않습니다.");
// 서브 위치
if(StringUtil.isEmpty(subPathKey)) throw new Exception("첨부파일이 저장되는 위치정보값이 정확하지 않습니다.");
String subPath = nlibProperty.getProperty(subPathKey);
if(FileUtil.isNotValid(subPath)) throw new Exception("첨부파일 서브 위치값이 적절하지 않습니다.");
final Map<String, MultipartFile> files = multiRequest.getFileMap();
log.debug("uploadFilesAjax : 진입 " + (files == null ? " files null " : files.size()));
File dir = new File(FILEUPLOAD_BASE_PATH + subPath);
if(!dir.exists() || !dir.isDirectory()) dir.mkdirs();
if(!files.isEmpty()) {
Iterator<Entry<String, MultipartFile>> itr = files.entrySet().iterator();
MultipartFile file;
String filePath = "";
FileVO fvo;
int fileKey = 1;
while (itr.hasNext()) {
Entry<String, MultipartFile> entry = itr.next();
file = entry.getValue();
String orginFileName = file.getOriginalFilename();
//--------------------------------------
// 파일명이 없는 경우 처리
// (첨부가 되지 않은 input file type)
//--------------------------------------
if ("".equals(orginFileName)) {
continue;
}
////------------------------------------
int index = orginFileName.lastIndexOf(".");
//String fileName = orginFileName.substring(0, index);
String fileExt = orginFileName.substring(index + 1);
//String newName = KeyStr + getTimeStamp() + fileKey;
String newName = UUID.getPhysicalFileName();
long size = file.getSize();
log.debug("FILE UPLOAD : File New Name=" + newName);
if (!"".equals(orginFileName)) {
filePath = FILEUPLOAD_BASE_PATH + subPath + "/" + newName;
log.debug("FILE UPLOAD : filePath=" + filePath);
file.transferTo(new File(EgovWebUtil.filePathBlackList(filePath)));
}
fvo = new FileVO();
fvo.setFileExtsn(fileExt);
//fvo.setFileStreCours(storePathString);
fvo.setFileMg(Long.toString(size));
fvo.setOrignlFileNm(orginFileName);
fvo.setStreFileNm(newName);
//fvo.setAtchFileId(atchFileIdString);
fvo.setFileSn(String.valueOf(fileKey));
result.add(fvo);
fileKey++;
}
}
} catch(Exception e) {
ErrorMessage errorMessage = new ErrorMessage("ERROR", "처리에 실패하였습니다 : " + e.toString());
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorMessage);
}
// Convert Json
ObjectMapper mapper = new ObjectMapper();
String json;
try {
json = mapper.writeValueAsString(result);
log.debug("RETURN DATA > json:" + json);
} catch (JsonProcessingException e) {
json = null;
e.printStackTrace();
}
HttpHeaders responseHeaders = new HttpHeaders();
//responseHeaders.set("Content-Type", "application/json; charset=UTF-8");
ResponseEntity ret = ResponseEntity.ok().headers(responseHeaders).body(json);
return ret;
}
}
package nlib.cmm.fileupload;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import egovframework.com.cmm.EgovWebUtil;
import egovframework.com.cmm.service.FileVO;
import nlib.cmm.exception.ErrorMessage;
import nlib.cmm.service.NlibProperty;
import nlib.util.FileUtil;
import nlib.util.StringUtil;
import nlib.util.UUID;
/**
* <pre>
* @Class Name : FileUploadController.java
*
* @Description : 파일 업로드를 처리하는 컨트롤러
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 15. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 15.
* @version 1.0
*
*/
@Controller
public class FileUploadController {
private static final Logger log = LoggerFactory.getLogger(FileUploadController.class);
@Resource(name="nlibProperty")
NlibProperty nlibProperty;
/**
* 첨부파일이 저장되는 최상위 위치
*/
@Value("#{properties['fileupload.base.path']}")
private String FILEUPLOAD_BASE_PATH;
/**
* 첨부파일 임시 저장 위치
*/
@Value("#{properties['fileupload.temp.subpath']}")
private String FILEUPLOAD_TEMP_SUBPATH;
@ResponseBody
@RequestMapping(value="/fileupload/uploadFilesAjax.do", produces="application/json")
public ResponseEntity uploadFilesAjax(
final MultipartHttpServletRequest multiRequest
, @RequestParam("subPathKey") String subPathKey
, HttpServletResponse response) {
// TODO : 권한 체크 추가할
List<FileVO> result = new ArrayList<FileVO>();
try {
// 최상위 위치
if(FileUtil.isNotValid(FILEUPLOAD_BASE_PATH)) throw new Exception("첨부파일이 저장되는 최상위 위치값이 적절하지 않습니다.");
// 서브 위치
if(StringUtil.isEmpty(subPathKey)) throw new Exception("첨부파일이 저장되는 위치정보값이 정확하지 않습니다.");
String subPath = nlibProperty.getProperty(subPathKey);
if(FileUtil.isNotValid(subPath)) throw new Exception("첨부파일 서브 위치값이 적절하지 않습니다.");
final Map<String, MultipartFile> files = multiRequest.getFileMap();
log.debug("uploadFilesAjax : 진입 " + (files == null ? " files null " : files.size()));
File dir = new File(FILEUPLOAD_BASE_PATH + subPath);
if(!dir.exists() || !dir.isDirectory()) dir.mkdirs();
if(!files.isEmpty()) {
Iterator<Entry<String, MultipartFile>> itr = files.entrySet().iterator();
MultipartFile file;
String filePath = "";
FileVO fvo;
int fileKey = 1;
while (itr.hasNext()) {
Entry<String, MultipartFile> entry = itr.next();
file = entry.getValue();
String orginFileName = file.getOriginalFilename();
//--------------------------------------
// 파일명이 없는 경우 처리
// (첨부가 되지 않은 input file type)
//--------------------------------------
if ("".equals(orginFileName)) {
continue;
}
////------------------------------------
int index = orginFileName.lastIndexOf(".");
//String fileName = orginFileName.substring(0, index);
String fileExt = orginFileName.substring(index + 1);
//String newName = KeyStr + getTimeStamp() + fileKey;
String newName = UUID.getPhysicalFileName();
long size = file.getSize();
log.debug("FILE UPLOAD : File New Name=" + newName);
if (!"".equals(orginFileName)) {
filePath = FILEUPLOAD_BASE_PATH + subPath + "/" + newName;
log.debug("FILE UPLOAD : filePath=" + filePath);
file.transferTo(new File(EgovWebUtil.filePathBlackList(filePath)));
}
fvo = new FileVO();
fvo.setFileExtsn(fileExt);
//fvo.setFileStreCours(storePathString);
fvo.setFileMg(Long.toString(size));
fvo.setOrignlFileNm(orginFileName);
fvo.setStreFileNm(newName);
//fvo.setAtchFileId(atchFileIdString);
fvo.setFileSn(String.valueOf(fileKey));
result.add(fvo);
fileKey++;
}
}
} catch(Exception e) {
ErrorMessage errorMessage = new ErrorMessage("ERROR", "처리에 실패하였습니다 : " + e.toString());
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorMessage);
}
// Convert Json
ObjectMapper mapper = new ObjectMapper();
String json;
try {
json = mapper.writeValueAsString(result);
log.debug("RETURN DATA > json:" + json);
} catch (JsonProcessingException e) {
json = null;
e.printStackTrace();
}
HttpHeaders responseHeaders = new HttpHeaders();
//responseHeaders.set("Content-Type", "application/json; charset=UTF-8");
ResponseEntity ret = ResponseEntity.ok().headers(responseHeaders).body(json);
return ret;
}
}

View File

@ -1,41 +1,41 @@
package nlib.cmm.fileupload;
import java.io.Serializable;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;
public class FileUploadDomain implements Serializable {
private String name;
private String description;
private List<MultipartFile> images;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public List<MultipartFile> getImages() {
return images;
}
public void setImages(List<MultipartFile> images) {
this.images = images;
}
}
package nlib.cmm.fileupload;
import java.io.Serializable;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;
public class FileUploadDomain implements Serializable {
private String name;
private String description;
private List<MultipartFile> images;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public List<MultipartFile> getImages() {
return images;
}
public void setImages(List<MultipartFile> images) {
this.images = images;
}
}

View File

@ -1,28 +1,28 @@
package nlib.cmm.service.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;
import nlib.cmm.web.MainController;
import nlib.restful.DataApi;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
@Repository("codeDAO")
public class CodeDAO extends DataApi
{
private static final Logger log = LoggerFactory.getLogger(CodeDAO.class);
/**
* 자원의 URI
*/
public static final String RESOURCE_URI = "/uac/service/code/list";
public DataApiResVO listCodes(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/" + reqVO.getInfoItem("codeUpperId"));
return get(reqVO);
}
package nlib.cmm.service.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;
import nlib.cmm.web.MainController;
import nlib.restful.DataApi;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
@Repository("codeDAO")
public class CodeDAO extends DataApi
{
private static final Logger log = LoggerFactory.getLogger(CodeDAO.class);
/**
* 자원의 URI
*/
public static final String RESOURCE_URI = "/uac/service/code/list";
public DataApiResVO listCodes(DataApiReqVO reqVO) {
reqVO.setReqUrl(RESOURCE_URI + "/" + reqVO.getInfoItem("codeUpperId"));
return get(reqVO);
}
}

View File

@ -1,87 +1,87 @@
package nlib.cmm.web;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import nlib.cmm.NlibCommonController;
import nlib.cmm.service.CodeService;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.util.StringUtil;
@Controller
public class CodeController extends NlibCommonController {
private static final Logger log = LoggerFactory.getLogger(CodeController.class);
@Resource(name="codeService")
private CodeService codeService;
@RequestMapping(value="/code/listCodesAjax.do")
public ResponseEntity<String> listCodeAjax(HttpServletRequest req,
Authentication authentication, @RequestBody Map<String, String> paramMap) {
String codeSearchKeyword = paramMap.get("codeSearchKeyword");
String codePageIndex = paramMap.get("codePageIndex");
String codePageSize = paramMap.get("codePageSize");
String codeUpperId = paramMap.get("codeUpperId");
log.debug("listCodeAjax > codeSearchKeyword = " + codeSearchKeyword);
log.debug("listCodeAjax > codePageIndex = " + codePageIndex);
log.debug("listCodeAjax > codePageSize = " + codePageSize);
log.debug("listCodeAjax > codeUpperId = " + codeUpperId);
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(codePageIndex);
reqVO.setPageSize(codePageSize);
// 추가 정보 설정
reqVO.addInfoItem("searchKeyword", codeSearchKeyword);
reqVO.addInfoItem("codeUpperId", codeUpperId);
// 요청
DataApiResVO resVO = codeService.listCodes(reqVO);
//-------------------------------
// JSON변환 응답 처리
//-------------------------------
// JS-GRID 페이징 처리를 포함한 응답값 처리
// (1) 페이징을 서버단에서 처리하는 경우 (pagingloading = false)
// {data: [{...}],
// itemsCount: 255
// }
// (2) 페이징을 클라이언트에서 처리하는 경우 (pagingloading = true)
// {data: [{...}],
// itemsCount: 255
// }
// 코드 페이징 사이즈값이 없거나 0인 경우, 서버에서 페이징 처리하지 않고 전체 데이터 전송
if(StringUtil.isEmpty(codePageSize) || Integer.parseInt(codePageSize) <= 0) {
return makeResponseEntityJson(resVO.getList());
}
// 코드 페이징 처리되는 경우
HashMap<String, Object> retMap = new HashMap<String, Object>();
retMap.put("data", resVO.getList());
retMap.put("itemsCount", resVO.getRecordTotCount());
return makeResponseEntityJson(retMap);
}
}
package nlib.cmm.web;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import nlib.cmm.NlibCommonController;
import nlib.cmm.service.CodeService;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.util.StringUtil;
@Controller
public class CodeController extends NlibCommonController {
private static final Logger log = LoggerFactory.getLogger(CodeController.class);
@Resource(name="codeService")
private CodeService codeService;
@RequestMapping(value="/code/listCodesAjax.do")
public ResponseEntity<String> listCodeAjax(HttpServletRequest req,
Authentication authentication, @RequestBody Map<String, String> paramMap) {
String codeSearchKeyword = paramMap.get("codeSearchKeyword");
String codePageIndex = paramMap.get("codePageIndex");
String codePageSize = paramMap.get("codePageSize");
String codeUpperId = paramMap.get("codeUpperId");
log.debug("listCodeAjax > codeSearchKeyword = " + codeSearchKeyword);
log.debug("listCodeAjax > codePageIndex = " + codePageIndex);
log.debug("listCodeAjax > codePageSize = " + codePageSize);
log.debug("listCodeAjax > codeUpperId = " + codeUpperId);
//-------------------------------
// REQ VO 구성
//-------------------------------
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(createAuthKey(req, authentication));
reqVO.setPageIndex(codePageIndex);
reqVO.setPageSize(codePageSize);
// 추가 정보 설정
reqVO.addInfoItem("searchKeyword", codeSearchKeyword);
reqVO.addInfoItem("codeUpperId", codeUpperId);
// 요청
DataApiResVO resVO = codeService.listCodes(reqVO);
//-------------------------------
// JSON변환 응답 처리
//-------------------------------
// JS-GRID 페이징 처리를 포함한 응답값 처리
// (1) 페이징을 서버단에서 처리하는 경우 (pagingloading = false)
// {data: [{...}],
// itemsCount: 255
// }
// (2) 페이징을 클라이언트에서 처리하는 경우 (pagingloading = true)
// {data: [{...}],
// itemsCount: 255
// }
// 코드 페이징 사이즈값이 없거나 0인 경우, 서버에서 페이징 처리하지 않고 전체 데이터 전송
if(StringUtil.isEmpty(codePageSize) || Integer.parseInt(codePageSize) <= 0) {
return makeResponseEntityJson(resVO.getList());
}
// 코드 페이징 처리되는 경우
HashMap<String, Object> retMap = new HashMap<String, Object>();
retMap.put("data", resVO.getList());
retMap.put("itemsCount", resVO.getRecordTotCount());
return makeResponseEntityJson(retMap);
}
}

View File

@ -1,139 +1,139 @@
package nlib.restful.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <pre>
* @Class Name : DataApiReqVO.java
*
* @Description : RESTful API 요청 VO
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
public class DataApiReqVO {
public static final int DEFAULT_PAGE_SIZE = 10;
public static final int DEFAULT_PAGE_INDEX = 1;
/* 처리결과 */
private String authKey; /* 로그인키 */
/* 페이징 정보 */
private int pageIndex = 0; /* 요청 페이지 번호 */
private int pageSize = 0; /* 페이지별 표출할 레코드 수 */
/* 기본정보 */
private HashMap<String, Object> info = null;
public boolean hasInfo() {
return (info != null && info.size() > 0);
}
/* 요청업무ID 및 처리URI */
int reqMethod; /* 요청메소드구분값 */
String reqUrl; /* 요청업무ID에 대한 통합시스템의 응답 처리 프로그램 URI */
// GET/SET
public String getAuthKey() {
return authKey;
}
public void setAuthKey(String authKey) {
this.authKey = authKey;
}
public int getPageIndex() {
return (pageIndex < 1 ? DEFAULT_PAGE_INDEX : pageIndex);
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public void setPageIndex(String pageIndex) {
try {
this.pageIndex = Integer.parseInt(pageIndex);
} catch(Exception e) {
this.pageIndex = DEFAULT_PAGE_INDEX;
}
}
public int getPageSize() {
return (pageSize < 1 ? DEFAULT_PAGE_SIZE : pageSize);
}
public void setPageSize(String pageSize) {
try {
this.pageSize = Integer.parseInt(pageSize);
} catch(Exception e) {
this.pageSize = DEFAULT_PAGE_SIZE;
}
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public HashMap<String, Object> getInfo() {
return info;
}
public void setInfo(HashMap<String, Object> info) {
this.info = info;
}
public String getReqUrl() {
return reqUrl;
}
public void setReqUrl(String reqUrl) {
this.reqUrl = reqUrl;
}
public int getReqMethod() {
return reqMethod;
}
public void setReqMethod(int reqMethod) {
this.reqMethod = reqMethod;
}
public void addInfoItem(String key, String value) {
if(key == null) return;
if(info == null) info = new HashMap<String, Object>();
info.put(key, value);
}
public String getInfoItem(String key) {
if(key == null) return null;
if(info == null) return null;
return (String)info.get(key);
}
public void removeInfoItem(String key) {
if(key == null) return;
if(info == null) return;
info.remove(key);
}
}
package nlib.restful.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <pre>
* @Class Name : DataApiReqVO.java
*
* @Description : RESTful API 요청 VO
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
public class DataApiReqVO {
public static final int DEFAULT_PAGE_SIZE = 10;
public static final int DEFAULT_PAGE_INDEX = 1;
/* 처리결과 */
private String authKey; /* 로그인키 */
/* 페이징 정보 */
private int pageIndex = 0; /* 요청 페이지 번호 */
private int pageSize = 0; /* 페이지별 표출할 레코드 수 */
/* 기본정보 */
private HashMap<String, Object> info = null;
public boolean hasInfo() {
return (info != null && info.size() > 0);
}
/* 요청업무ID 및 처리URI */
int reqMethod; /* 요청메소드구분값 */
String reqUrl; /* 요청업무ID에 대한 통합시스템의 응답 처리 프로그램 URI */
// GET/SET
public String getAuthKey() {
return authKey;
}
public void setAuthKey(String authKey) {
this.authKey = authKey;
}
public int getPageIndex() {
return (pageIndex < 1 ? DEFAULT_PAGE_INDEX : pageIndex);
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public void setPageIndex(String pageIndex) {
try {
this.pageIndex = Integer.parseInt(pageIndex);
} catch(Exception e) {
this.pageIndex = DEFAULT_PAGE_INDEX;
}
}
public int getPageSize() {
return (pageSize < 1 ? DEFAULT_PAGE_SIZE : pageSize);
}
public void setPageSize(String pageSize) {
try {
this.pageSize = Integer.parseInt(pageSize);
} catch(Exception e) {
this.pageSize = DEFAULT_PAGE_SIZE;
}
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public HashMap<String, Object> getInfo() {
return info;
}
public void setInfo(HashMap<String, Object> info) {
this.info = info;
}
public String getReqUrl() {
return reqUrl;
}
public void setReqUrl(String reqUrl) {
this.reqUrl = reqUrl;
}
public int getReqMethod() {
return reqMethod;
}
public void setReqMethod(int reqMethod) {
this.reqMethod = reqMethod;
}
public void addInfoItem(String key, String value) {
if(key == null) return;
if(info == null) info = new HashMap<String, Object>();
info.put(key, value);
}
public String getInfoItem(String key) {
if(key == null) return null;
if(info == null) return null;
return (String)info.get(key);
}
public void removeInfoItem(String key) {
if(key == null) return;
if(info == null) return;
info.remove(key);
}
}

View File

@ -1,134 +1,134 @@
package nlib.restful.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : DataApiResVO.java
*
* @Description : RESTful API 응답 VO
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
public class DataApiResVO {
/**
* 생성자
*/
public DataApiResVO() {
super();
}
/**
* 생성자
*
* @param resultCode
* @param resultMessage
*/
public DataApiResVO(String resultCode, String resultMessage) {
this.resultCode = resultCode;
this.resultMessage = resultMessage;
}
/* 처리결과 */
String resultCode; /* 결과코드 */
String resultMessage; /* 결과내용(오류내용) */
/* 페이징 정보 */
int pageIndex = 0; /* 요청 페이지 번호 (page) */
int pageLastIndex = 0; /* 마지막페이지번호 (totPages) */
/* 기본/추가 정보 */
HashMap<String, Object> info = null;
/* 목록정보 */
int recordTotCount = 0; /* 총 레코드수 (records) */
/**
* 응답 처리결과가 성공인지의 여부를 리턴한다.
* 결과코드(resultCode) 값이 "S" 시작하는 경우 true 리턴한다.
*
* @return
*/
public boolean isSuccess() {
if(StringUtil.isEmpty(resultCode)) return false;
return (resultCode.trim().charAt(0) == 'S');
}
// GET/SET
public String getResultCode() {
return resultCode;
}
public void setResultCode(String resultCode) {
this.resultCode = resultCode;
}
public String getResultMessage() {
return resultMessage;
}
public void setResultMessage(String resultMessage) {
this.resultMessage = resultMessage;
}
public int getPageIndex() {
return pageIndex;
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public int getPageLastIndex() {
return pageLastIndex;
}
public void setPageLastIndex(int pageLastIndex) {
this.pageLastIndex = pageLastIndex;
}
public HashMap<String, Object> getInfo() {
return info;
}
public void setInfo(HashMap<String, Object> info) {
this.info = info;
}
public int getRecordTotCount() {
return recordTotCount;
}
public void setRecordTotCount(int recordTotCount) {
this.recordTotCount = recordTotCount;
}
/**
* 반복되는 목록용 리스트 정보를 가져온다.
* - RESTful API : "<results>"요소로 반복되는 요소를 반환한다.
*
* @return
*/
public List<HashMap<String, String>> getList() {
if(info == null) return null;
return (List<HashMap<String, String>>)info.get("results");
}
public String getInfoItem(String key) {
if(key == null) return null;
if(info == null) return null;
return (String)info.get(key);
}
}
package nlib.restful.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : DataApiResVO.java
*
* @Description : RESTful API 응답 VO
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
public class DataApiResVO {
/**
* 생성자
*/
public DataApiResVO() {
super();
}
/**
* 생성자
*
* @param resultCode
* @param resultMessage
*/
public DataApiResVO(String resultCode, String resultMessage) {
this.resultCode = resultCode;
this.resultMessage = resultMessage;
}
/* 처리결과 */
String resultCode; /* 결과코드 */
String resultMessage; /* 결과내용(오류내용) */
/* 페이징 정보 */
int pageIndex = 0; /* 요청 페이지 번호 (page) */
int pageLastIndex = 0; /* 마지막페이지번호 (totPages) */
/* 기본/추가 정보 */
HashMap<String, Object> info = null;
/* 목록정보 */
int recordTotCount = 0; /* 총 레코드수 (records) */
/**
* 응답 처리결과가 성공인지의 여부를 리턴한다.
* 결과코드(resultCode) 값이 "S" 시작하는 경우 true 리턴한다.
*
* @return
*/
public boolean isSuccess() {
if(StringUtil.isEmpty(resultCode)) return false;
return (resultCode.trim().charAt(0) == 'S');
}
// GET/SET
public String getResultCode() {
return resultCode;
}
public void setResultCode(String resultCode) {
this.resultCode = resultCode;
}
public String getResultMessage() {
return resultMessage;
}
public void setResultMessage(String resultMessage) {
this.resultMessage = resultMessage;
}
public int getPageIndex() {
return pageIndex;
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public int getPageLastIndex() {
return pageLastIndex;
}
public void setPageLastIndex(int pageLastIndex) {
this.pageLastIndex = pageLastIndex;
}
public HashMap<String, Object> getInfo() {
return info;
}
public void setInfo(HashMap<String, Object> info) {
this.info = info;
}
public int getRecordTotCount() {
return recordTotCount;
}
public void setRecordTotCount(int recordTotCount) {
this.recordTotCount = recordTotCount;
}
/**
* 반복되는 목록용 리스트 정보를 가져온다.
* - RESTful API : "<results>"요소로 반복되는 요소를 반환한다.
*
* @return
*/
public List<HashMap<String, String>> getList() {
if(info == null) return null;
return (List<HashMap<String, String>>)info.get("results");
}
public String getInfoItem(String key) {
if(key == null) return null;
if(info == null) return null;
return (String)info.get(key);
}
}

View File

@ -1,239 +1,239 @@
package nlib.restful.service;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import nlib.sample.web.SampleEncoderController;
import nlib.util.StringUtil;
public class XmlConverter {
private static final Logger log = LoggerFactory.getLogger(XmlConverter.class);
public static HashMap<String, Object> convert(String xmlStr) throws Exception {
if(xmlStr == null) return null;
ByteArrayInputStream bIn = new ByteArrayInputStream(xmlStr.getBytes());
HashMap<String, Object> resMap = new HashMap<String, Object>();
try {
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLEventReader eventReader = inputFactory.createXMLEventReader(bIn);
resMap = getElementValue("result", eventReader, null);
log.debug("Converting XML to HashMap : Done >> " + resMap);
} catch (XMLStreamException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return resMap;
}
/**
* @param rootElementName
* @param eventReader
* @param alreadyRootOpened : 부모 요소 찾기 없이 작업 진행할지 여부. false인 경우, rootElementName 요소를 찾아서 이후 추출 수행
* @param startElement
* @return
* @throws Exception
*/
public static HashMap<String, Object> getElementValue(
String rootElementName
, XMLEventReader eventReader
, XMLEvent firstChildElement) throws Exception {
HashMap<String, Object> retMap = new HashMap<String, Object>();
try {
int depth = (firstChildElement == null ? 0 : 1);
StartElement startElement = null;
XMLEvent event = firstChildElement;
String upperElementName = null;
String elementName = null; //(firstChildElement == null ? null : firstChildElement.asStartElement().getName().getLocalPart());
String content = null;
String elementValue = "";
HashMap<String, String> elementValues = null;
boolean hasSubElements = false;
boolean isFirst = true;
while (eventReader.hasNext()) {
// 이벤트가 함께 매개변수로 넘어온 경우, 처음 읽기 생략
if(!isFirst || event == null) {
event = eventReader.nextEvent();
}
if(isFirst) isFirst = false;
// 1 레벨 엘리먼트 찾기
if (depth == 0 && event.isStartElement() && event.asStartElement().getName().getLocalPart().equals(rootElementName)) {
depth++;
continue;
}
// 1 레벨 엘리먼트내의 2 레벨 엘리먼트 찾기
if(depth == 1 && elementName == null && event.isStartElement()) {
elementName = event.asStartElement().getName().getLocalPart();
elementValue = "";
elementValues = null;
hasSubElements = false;
depth++;
continue;
}
// 2 레벨 엘리먼트 내용 찾기
if(depth == 2 && elementName != null && event.isCharacters()) {
content = event.asCharacters().getData();
if(StringUtil.isNotEmpty(content)) {
elementValue += content;
}
continue;
}
// 2 레벨 엘리먼트 종료
if(depth == 2 && elementName != null && event.isEndElement()) {
if(!elementName.equals(event.asEndElement().getName().getLocalPart())) {
throw new Exception("XML문의 요소 시작/종료 태그가 일치하지 않습니다. : " + elementName + " 요소가 " + event.asEndElement().getName().getLocalPart() + "로 종료되었습니다.");
}
addValue(retMap, elementName, elementValue);
//log.debug(elementName + " : -" + elementValue + "_");
elementName = null;
elementValue = "";
depth--;
}
// 2 레벨 엘리먼트 > 하위 엘리먼트 존재하는 경우
if(depth == 2 && elementName != null && event.isStartElement()) {
HashMap<String, Object> subMap = getElementValue(elementName, eventReader, event);
addValue(retMap, elementName, subMap);
depth--;
elementName = null;
}
// 1 레벨 엘리먼트 종료된 경우, 돌아가기
if(depth == 1 && elementName == null && event.isEndElement() && rootElementName.equals(event.asEndElement().getName().getLocalPart())) {
depth--;
return retMap;
}
} // while
} catch (XMLStreamException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("END");
return retMap;
}
public static void addValue(HashMap<String, Object> map, String key, Object value) throws Exception {
if(map == null) throw new Exception("값을 넣을 Map 변수가 초기화되지 않았습니다.");
if(key == null) return;
if(value == null) return;
Object curValObj = map.get(key);
if(curValObj == null) {
map.put(key, value);
return;
}
if(curValObj instanceof String || curValObj instanceof HashMap) {
List<Object> values = new ArrayList<Object>();
values.add(curValObj);
values.add(value);
map.put(key, values);
} else if(curValObj instanceof List) {
((ArrayList<Object>)curValObj).add(value);
}
return;
}
/*
public static void main(String argv[]) throws Exception {
XmlConverter xmlConverter = new XmlConverter();
String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n" +
"<!-- uac.service.board.qna_GET.xml -->\r\n" +
"<result>\r\n" +
" <code>S</code>\r\n" +
" <message>성공적으로 조회되었습니다.</message>\r\n" +
" <records>10</records>\r\n" +
" <page>1</page>\r\n" +
" <totPages>15</totPages>\r\n" +
" <record>\r\n" +
" <noticeNo>1</noticeNo>\r\n" +
" <noticeType>101</noticeType>\r\n" +
" <title>공지사항 테스트</title>\r\n" +
" <readCount>15</readCount>\r\n" +
" <regDate>2021-07-19</regDate>\r\n" +
" </record>\r\n" +
" <record>\r\n" +
" <noticeNo>2</noticeNo>\r\n" +
" <noticeType>101</noticeType>\r\n" +
" <title>공지사항 테스트</title>\r\n" +
" <readCount>55</readCount>\r\n" +
" <regDate>2021-07-19</regDate>\r\n" +
" </record>\r\n" +
" <record>\r\n" +
" <noticeNo>3</noticeNo>\r\n" +
" <noticeType>101</noticeType>\r\n" +
" <title>공지사항 테스트</title>\r\n" +
" <readCount>55</readCount>\r\n" +
" <regDate>2021-07-19</regDate>\r\n" +
" </record>\r\n" +
" <record>\r\n" +
" <noticeNo>4</noticeNo>\r\n" +
" <noticeType>101</noticeType>\r\n" +
" <title>공지사항 테스트</title>\r\n" +
" <readCount>55</readCount>\r\n" +
" <regDate>2021-07-19</regDate>\r\n" +
" </record>\r\n" +
" <record>\r\n" +
" <noticeNo>5</noticeNo>\r\n" +
" <noticeType>101</noticeType>\r\n" +
" <title>공지사항 테스트</title>\r\n" +
" <readCount>55</readCount>\r\n" +
" <regDate>2021-07-19</regDate>\r\n" +
" </record>\r\n" +
" <record>\r\n" +
" <noticeNo>6</noticeNo>\r\n" +
" <noticeType>101</noticeType>\r\n" +
" <title>공지사항 테스트</title>\r\n" +
" <readCount>55</readCount>\r\n" +
" <regDate>2021-07-19</regDate>\r\n" +
" </record>\r\n" +
" <end>3333</end>\r\n" +
"</result>";
HashMap<String, Object> resMap = xmlConverter.convert(xmlStr);
}
*/
}
package nlib.restful.service;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import nlib.sample.web.SampleEncoderController;
import nlib.util.StringUtil;
public class XmlConverter {
private static final Logger log = LoggerFactory.getLogger(XmlConverter.class);
public static HashMap<String, Object> convert(String xmlStr) throws Exception {
if(xmlStr == null) return null;
ByteArrayInputStream bIn = new ByteArrayInputStream(xmlStr.getBytes());
HashMap<String, Object> resMap = new HashMap<String, Object>();
try {
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLEventReader eventReader = inputFactory.createXMLEventReader(bIn);
resMap = getElementValue("result", eventReader, null);
log.debug("Converting XML to HashMap : Done >> " + resMap);
} catch (XMLStreamException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return resMap;
}
/**
* @param rootElementName
* @param eventReader
* @param alreadyRootOpened : 부모 요소 찾기 없이 작업 진행할지 여부. false인 경우, rootElementName 요소를 찾아서 이후 추출 수행
* @param startElement
* @return
* @throws Exception
*/
public static HashMap<String, Object> getElementValue(
String rootElementName
, XMLEventReader eventReader
, XMLEvent firstChildElement) throws Exception {
HashMap<String, Object> retMap = new HashMap<String, Object>();
try {
int depth = (firstChildElement == null ? 0 : 1);
StartElement startElement = null;
XMLEvent event = firstChildElement;
String upperElementName = null;
String elementName = null; //(firstChildElement == null ? null : firstChildElement.asStartElement().getName().getLocalPart());
String content = null;
String elementValue = "";
HashMap<String, String> elementValues = null;
boolean hasSubElements = false;
boolean isFirst = true;
while (eventReader.hasNext()) {
// 이벤트가 함께 매개변수로 넘어온 경우, 처음 읽기 생략
if(!isFirst || event == null) {
event = eventReader.nextEvent();
}
if(isFirst) isFirst = false;
// 1 레벨 엘리먼트 찾기
if (depth == 0 && event.isStartElement() && event.asStartElement().getName().getLocalPart().equals(rootElementName)) {
depth++;
continue;
}
// 1 레벨 엘리먼트내의 2 레벨 엘리먼트 찾기
if(depth == 1 && elementName == null && event.isStartElement()) {
elementName = event.asStartElement().getName().getLocalPart();
elementValue = "";
elementValues = null;
hasSubElements = false;
depth++;
continue;
}
// 2 레벨 엘리먼트 내용 찾기
if(depth == 2 && elementName != null && event.isCharacters()) {
content = event.asCharacters().getData();
if(StringUtil.isNotEmpty(content)) {
elementValue += content;
}
continue;
}
// 2 레벨 엘리먼트 종료
if(depth == 2 && elementName != null && event.isEndElement()) {
if(!elementName.equals(event.asEndElement().getName().getLocalPart())) {
throw new Exception("XML문의 요소 시작/종료 태그가 일치하지 않습니다. : " + elementName + " 요소가 " + event.asEndElement().getName().getLocalPart() + "로 종료되었습니다.");
}
addValue(retMap, elementName, elementValue);
//log.debug(elementName + " : -" + elementValue + "_");
elementName = null;
elementValue = "";
depth--;
}
// 2 레벨 엘리먼트 > 하위 엘리먼트 존재하는 경우
if(depth == 2 && elementName != null && event.isStartElement()) {
HashMap<String, Object> subMap = getElementValue(elementName, eventReader, event);
addValue(retMap, elementName, subMap);
depth--;
elementName = null;
}
// 1 레벨 엘리먼트 종료된 경우, 돌아가기
if(depth == 1 && elementName == null && event.isEndElement() && rootElementName.equals(event.asEndElement().getName().getLocalPart())) {
depth--;
return retMap;
}
} // while
} catch (XMLStreamException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("END");
return retMap;
}
public static void addValue(HashMap<String, Object> map, String key, Object value) throws Exception {
if(map == null) throw new Exception("값을 넣을 Map 변수가 초기화되지 않았습니다.");
if(key == null) return;
if(value == null) return;
Object curValObj = map.get(key);
if(curValObj == null) {
map.put(key, value);
return;
}
if(curValObj instanceof String || curValObj instanceof HashMap) {
List<Object> values = new ArrayList<Object>();
values.add(curValObj);
values.add(value);
map.put(key, values);
} else if(curValObj instanceof List) {
((ArrayList<Object>)curValObj).add(value);
}
return;
}
/*
public static void main(String argv[]) throws Exception {
XmlConverter xmlConverter = new XmlConverter();
String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n" +
"<!-- uac.service.board.qna_GET.xml -->\r\n" +
"<result>\r\n" +
" <code>S</code>\r\n" +
" <message>성공적으로 조회되었습니다.</message>\r\n" +
" <records>10</records>\r\n" +
" <page>1</page>\r\n" +
" <totPages>15</totPages>\r\n" +
" <record>\r\n" +
" <noticeNo>1</noticeNo>\r\n" +
" <noticeType>101</noticeType>\r\n" +
" <title>공지사항 테스트</title>\r\n" +
" <readCount>15</readCount>\r\n" +
" <regDate>2021-07-19</regDate>\r\n" +
" </record>\r\n" +
" <record>\r\n" +
" <noticeNo>2</noticeNo>\r\n" +
" <noticeType>101</noticeType>\r\n" +
" <title>공지사항 테스트</title>\r\n" +
" <readCount>55</readCount>\r\n" +
" <regDate>2021-07-19</regDate>\r\n" +
" </record>\r\n" +
" <record>\r\n" +
" <noticeNo>3</noticeNo>\r\n" +
" <noticeType>101</noticeType>\r\n" +
" <title>공지사항 테스트</title>\r\n" +
" <readCount>55</readCount>\r\n" +
" <regDate>2021-07-19</regDate>\r\n" +
" </record>\r\n" +
" <record>\r\n" +
" <noticeNo>4</noticeNo>\r\n" +
" <noticeType>101</noticeType>\r\n" +
" <title>공지사항 테스트</title>\r\n" +
" <readCount>55</readCount>\r\n" +
" <regDate>2021-07-19</regDate>\r\n" +
" </record>\r\n" +
" <record>\r\n" +
" <noticeNo>5</noticeNo>\r\n" +
" <noticeType>101</noticeType>\r\n" +
" <title>공지사항 테스트</title>\r\n" +
" <readCount>55</readCount>\r\n" +
" <regDate>2021-07-19</regDate>\r\n" +
" </record>\r\n" +
" <record>\r\n" +
" <noticeNo>6</noticeNo>\r\n" +
" <noticeType>101</noticeType>\r\n" +
" <title>공지사항 테스트</title>\r\n" +
" <readCount>55</readCount>\r\n" +
" <regDate>2021-07-19</regDate>\r\n" +
" </record>\r\n" +
" <end>3333</end>\r\n" +
"</result>";
HashMap<String, Object> resMap = xmlConverter.convert(xmlStr);
}
*/
}

View File

@ -1,168 +1,168 @@
package nlib.restful.service.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.restful.service.DataApiInterface;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : DataApiRESTful.java
*
* @Description : 통합자료관리시스템에 RESTful API를 통해 질의/응답을 처리한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
public class DataApiRESTful implements DataApiInterface {
private static final Logger log = LoggerFactory.getLogger(DataApiRESTful.class);
/* DataApi 접속 서버 정보 */
@Value("#{properties['dataapi.server.ip']}")
private String DAPI_SERVER_IP;
@Value("#{properties['dataapi.server.port']}")
private String DAPI_SERVER_PORT;
@Value("#{properties['dataapi.server.protocol']}")
private String DAPI_SERVER_PROTOCOL;
/**
* 조회
*
* @param reqVO
* @return
*/
public DataApiResVO get(DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.GET);
}
/**
* 등록
*
* @param reqVO
* @return
*/
public DataApiResVO put(DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.PUT);
}
/**
* 수정
*
* @param reqVO
* @return
*/
public DataApiResVO post(DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.POST);
}
/**
* 삭제
*
* @param reqVO
* @return
*/
public DataApiResVO delete (DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.DELETE);
}
/**
* 실제 RESTful API 서버로 요청을 전송하고, 응답받은 자료를 응답VO에 담아서 리턴한다.
*
* @param reqVO
* @param method
* @return
*/
public DataApiResVO send(DataApiReqVO reqVO, HttpMethod method) {
DataApiResVO resVO = null;
try {
//-----------------------------------
// 입력값 검증작업
//-----------------------------------
resVO = DataApiInterface.checkReqCommonParams(reqVO);
if(resVO != null) return resVO;
if(method == null) return new DataApiResVO("ERR_NO_METHOD", "HTTP 요청 Method가 유효하지 않습니다.");
//-----------------------------------
// 파라메터 생성 작업
//-----------------------------------
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> parameters = DataApiInterface.makeParamMap(reqVO);
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity(parameters, headers);
//-----------------------------------
// 요청 처리
//-----------------------------------
RestTemplate restTemplate = new RestTemplate();
String url = DAPI_SERVER_PROTOCOL + "://" + DAPI_SERVER_IP + ("80".equals(DAPI_SERVER_PORT) ? "" : ":" + DAPI_SERVER_PORT) + reqVO.getReqUrl();
log.debug("REQ URL : " + reqVO.getReqUrl());
ResponseEntity<String> responseEntity = restTemplate.exchange(url, method, requestEntity, String.class);
//-----------------------------------
// 응답 처리
//-----------------------------------
HttpStatus statusCode = responseEntity.getStatusCode();
log.debug("RES StatusCode : " + statusCode);
String resultXML = "";
resultXML = responseEntity.getBody();
log.debug("RES resultXML : " + resultXML);
// 응답 자료 객체화
resVO = DataApiInterface.convertXmlToResVO(resultXML);
// 처리결과 코드 확인
if(StringUtil.isEmpty(resVO.getResultCode())) {
if (statusCode == HttpStatus.OK) {
resVO.setResultCode("S_HTTP_STATUS_OK");
resVO.setResultMessage("정상처리되었습니다.");
} else {
resVO.setResultCode("E_STATUS_CODE_FAIL");
resVO.setResultMessage(String.format("처리에 실패하였습니다. (HTTP상태코드 : %s)", statusCode.toString()));
}
}
//log.debug("RES resVO : " + resVO);
} catch(Exception e) {
e.printStackTrace();
return DataApiInterface.makeErrorRes("E_REQ_EXCEPTION", e.toString());
}
return resVO;
}
}
package nlib.restful.service.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.restful.service.DataApiInterface;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : DataApiRESTful.java
*
* @Description : 통합자료관리시스템에 RESTful API를 통해 질의/응답을 처리한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
public class DataApiRESTful implements DataApiInterface {
private static final Logger log = LoggerFactory.getLogger(DataApiRESTful.class);
/* DataApi 접속 서버 정보 */
@Value("#{properties['dataapi.server.ip']}")
private String DAPI_SERVER_IP;
@Value("#{properties['dataapi.server.port']}")
private String DAPI_SERVER_PORT;
@Value("#{properties['dataapi.server.protocol']}")
private String DAPI_SERVER_PROTOCOL;
/**
* 조회
*
* @param reqVO
* @return
*/
public DataApiResVO get(DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.GET);
}
/**
* 등록
*
* @param reqVO
* @return
*/
public DataApiResVO put(DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.PUT);
}
/**
* 수정
*
* @param reqVO
* @return
*/
public DataApiResVO post(DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.POST);
}
/**
* 삭제
*
* @param reqVO
* @return
*/
public DataApiResVO delete (DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.DELETE);
}
/**
* 실제 RESTful API 서버로 요청을 전송하고, 응답받은 자료를 응답VO에 담아서 리턴한다.
*
* @param reqVO
* @param method
* @return
*/
public DataApiResVO send(DataApiReqVO reqVO, HttpMethod method) {
DataApiResVO resVO = null;
try {
//-----------------------------------
// 입력값 검증작업
//-----------------------------------
resVO = DataApiInterface.checkReqCommonParams(reqVO);
if(resVO != null) return resVO;
if(method == null) return new DataApiResVO("ERR_NO_METHOD", "HTTP 요청 Method가 유효하지 않습니다.");
//-----------------------------------
// 파라메터 생성 작업
//-----------------------------------
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> parameters = DataApiInterface.makeParamMap(reqVO);
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity(parameters, headers);
//-----------------------------------
// 요청 처리
//-----------------------------------
RestTemplate restTemplate = new RestTemplate();
String url = DAPI_SERVER_PROTOCOL + "://" + DAPI_SERVER_IP + ("80".equals(DAPI_SERVER_PORT) ? "" : ":" + DAPI_SERVER_PORT) + reqVO.getReqUrl();
log.debug("REQ URL : " + reqVO.getReqUrl());
ResponseEntity<String> responseEntity = restTemplate.exchange(url, method, requestEntity, String.class);
//-----------------------------------
// 응답 처리
//-----------------------------------
HttpStatus statusCode = responseEntity.getStatusCode();
log.debug("RES StatusCode : " + statusCode);
String resultXML = "";
resultXML = responseEntity.getBody();
log.debug("RES resultXML : " + resultXML);
// 응답 자료 객체화
resVO = DataApiInterface.convertXmlToResVO(resultXML);
// 처리결과 코드 확인
if(StringUtil.isEmpty(resVO.getResultCode())) {
if (statusCode == HttpStatus.OK) {
resVO.setResultCode("S_HTTP_STATUS_OK");
resVO.setResultMessage("정상처리되었습니다.");
} else {
resVO.setResultCode("E_STATUS_CODE_FAIL");
resVO.setResultMessage(String.format("처리에 실패하였습니다. (HTTP상태코드 : %s)", statusCode.toString()));
}
}
//log.debug("RES resVO : " + resVO);
} catch(Exception e) {
e.printStackTrace();
return DataApiInterface.makeErrorRes("E_REQ_EXCEPTION", e.toString());
}
return resVO;
}
}

View File

@ -1,216 +1,216 @@
package nlib.restful.service.impl;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.util.MultiValueMap;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.restful.service.DataApiServerResponseVO;
import nlib.restful.service.DataApiInterface;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : DataApiTempXml.java
*
* @Description : DataAPI의 요청에 대해서 로컬의 테스트용 XML 파일을 읽어서 응답을 처리한다. (자체 선개발 진행용)
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 9. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 9.
* @version 1.0
*
*/
public class DataApiTempXml implements DataApiInterface {
private static final Logger log = LoggerFactory.getLogger(DataApiTempXml.class);
/* DataApi 접속 서버 정보 */
@Value("#{properties['dataapi.temp.xml.path']}")
private String DAPI_TEMP_XML_PATH;
/**
* 조회
*
* @param reqVO
* @return
*/
public DataApiResVO get(DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.GET);
}
/**
* 등록
*
* @param reqVO
* @return
*/
public DataApiResVO put(DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.PUT);
}
/**
* 수정
*
* @param reqVO
* @return
*/
public DataApiResVO post(DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.POST);
}
/**
* 삭제
*
* @param reqVO
* @return
*/
public DataApiResVO delete (DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.DELETE);
}
/**
* 실제 RESTful API 서버로 요청을 전송하고, 응답받은 자료를 응답VO에 담아서 리턴한다.
*
* @param reqVO
* @param method
* @return
*/
public DataApiResVO send(DataApiReqVO reqVO, HttpMethod method) {
DataApiResVO resVO = null;
try {
//-----------------------------------
// 입력값 검증작업
//-----------------------------------
resVO = DataApiInterface.checkReqCommonParams(reqVO);
if(resVO != null) return resVO;
if(method == null) return new DataApiResVO("ERR_NO_METHOD", "HTTP 요청 Method가 유효하지 않습니다.");
//-----------------------------------
// 파라메터 생성 작업
//-----------------------------------
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> parameters = DataApiInterface.makeParamMap(reqVO);
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity(parameters, headers);
//-----------------------------------
// 응답 처리
//-----------------------------------
HttpStatus statusCode = HttpStatus.OK;
String resultXML = getTempDataFromXmlFile(reqVO, method);
//log.debug("RES resultXML : " + resultXML);
// 응답 자료 객체화
resVO = DataApiInterface.convertXmlToResVO(resultXML);
// 처리결과 코드 확인
if(StringUtil.isEmpty(resVO.getResultCode())) {
if (statusCode == HttpStatus.OK) {
resVO.setResultCode("S_HTTP_STATUS_OK");
resVO.setResultMessage("정상처리되었습니다.");
} else {
resVO.setResultCode("E_STATUS_CODE_FAIL");
resVO.setResultMessage(String.format("처리에 실패하였습니다. (HTTP상태코드 : %s)", statusCode.toString()));
}
}
//log.debug("RES resVO : " + resVO);
} catch(Exception e) {
e.printStackTrace();
return DataApiInterface.makeErrorRes("E_REQ_EXCEPTION", e.toString());
}
return resVO;
}
/**
* 요청 URI와 메소드를 기반으로 임시 응답 XML 파일을 찾아서 내용을 문자열로 리턴한다.
*
* @param reqVO
* @param method
* @return
* @throws Exception
*/
private String getTempDataFromXmlFile(DataApiReqVO reqVO, HttpMethod method) throws Exception {
String fileName = reqVO.getReqUrl().substring(1).replaceAll("/", ".");
String xmlPath = DAPI_TEMP_XML_PATH + "/" + fileName + "_" + method.toString().toUpperCase() + ".xml";
String returnXmlStr = null;
log.info("XML FILE PATH : " + xmlPath);
DataApiServerResponseVO resVO = null;
File xmlFile = new File(xmlPath);
if(!xmlFile.exists()) {
resVO = new DataApiServerResponseVO("-20", String.format("%s 파일을 찾을 수 없습니다.",xmlPath));
XmlMapper mapper = new XmlMapper();
returnXmlStr = mapper.writer().withRootName("result").writeValueAsString(resVO);
}
if(resVO == null && !xmlFile.isFile()) {
resVO = new DataApiServerResponseVO("-21", String.format("%s는 파일이어야 합니다.",xmlPath));
XmlMapper mapper = new XmlMapper();
returnXmlStr = mapper.writer().withRootName("result").writeValueAsString(resVO);
}
if(resVO == null) {
StringBuilder strBd = new StringBuilder();
try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(xmlPath),StandardCharsets.UTF_8))) {
String line;
int i = 0;
while ((line = br.readLine()) != null) {
strBd.append(line + "\n");
}
returnXmlStr = strBd.toString();
} catch (IOException e) {
log.error("XML 파일 읽는 중 오류 발생 : " + e.toString());
e.printStackTrace();
resVO = new DataApiServerResponseVO("-22", String.format("%s 파일을 읽는 중 오류가 발생하였습니다(%s). ",xmlPath, e.toString()));
XmlMapper mapper = new XmlMapper();
returnXmlStr = mapper.writer().withRootName("result").writeValueAsString(resVO);
}
}
log.info("RESUTN XML STR : " + returnXmlStr);
return returnXmlStr;
}
}
package nlib.restful.service.impl;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.util.MultiValueMap;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.restful.service.DataApiServerResponseVO;
import nlib.restful.service.DataApiInterface;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : DataApiTempXml.java
*
* @Description : DataAPI의 요청에 대해서 로컬의 테스트용 XML 파일을 읽어서 응답을 처리한다. (자체 선개발 진행용)
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 9. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 9.
* @version 1.0
*
*/
public class DataApiTempXml implements DataApiInterface {
private static final Logger log = LoggerFactory.getLogger(DataApiTempXml.class);
/* DataApi 접속 서버 정보 */
@Value("#{properties['dataapi.temp.xml.path']}")
private String DAPI_TEMP_XML_PATH;
/**
* 조회
*
* @param reqVO
* @return
*/
public DataApiResVO get(DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.GET);
}
/**
* 등록
*
* @param reqVO
* @return
*/
public DataApiResVO put(DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.PUT);
}
/**
* 수정
*
* @param reqVO
* @return
*/
public DataApiResVO post(DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.POST);
}
/**
* 삭제
*
* @param reqVO
* @return
*/
public DataApiResVO delete (DataApiReqVO reqVO) {
return send(reqVO, HttpMethod.DELETE);
}
/**
* 실제 RESTful API 서버로 요청을 전송하고, 응답받은 자료를 응답VO에 담아서 리턴한다.
*
* @param reqVO
* @param method
* @return
*/
public DataApiResVO send(DataApiReqVO reqVO, HttpMethod method) {
DataApiResVO resVO = null;
try {
//-----------------------------------
// 입력값 검증작업
//-----------------------------------
resVO = DataApiInterface.checkReqCommonParams(reqVO);
if(resVO != null) return resVO;
if(method == null) return new DataApiResVO("ERR_NO_METHOD", "HTTP 요청 Method가 유효하지 않습니다.");
//-----------------------------------
// 파라메터 생성 작업
//-----------------------------------
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> parameters = DataApiInterface.makeParamMap(reqVO);
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity(parameters, headers);
//-----------------------------------
// 응답 처리
//-----------------------------------
HttpStatus statusCode = HttpStatus.OK;
String resultXML = getTempDataFromXmlFile(reqVO, method);
//log.debug("RES resultXML : " + resultXML);
// 응답 자료 객체화
resVO = DataApiInterface.convertXmlToResVO(resultXML);
// 처리결과 코드 확인
if(StringUtil.isEmpty(resVO.getResultCode())) {
if (statusCode == HttpStatus.OK) {
resVO.setResultCode("S_HTTP_STATUS_OK");
resVO.setResultMessage("정상처리되었습니다.");
} else {
resVO.setResultCode("E_STATUS_CODE_FAIL");
resVO.setResultMessage(String.format("처리에 실패하였습니다. (HTTP상태코드 : %s)", statusCode.toString()));
}
}
//log.debug("RES resVO : " + resVO);
} catch(Exception e) {
e.printStackTrace();
return DataApiInterface.makeErrorRes("E_REQ_EXCEPTION", e.toString());
}
return resVO;
}
/**
* 요청 URI와 메소드를 기반으로 임시 응답 XML 파일을 찾아서 내용을 문자열로 리턴한다.
*
* @param reqVO
* @param method
* @return
* @throws Exception
*/
private String getTempDataFromXmlFile(DataApiReqVO reqVO, HttpMethod method) throws Exception {
String fileName = reqVO.getReqUrl().substring(1).replaceAll("/", ".");
String xmlPath = DAPI_TEMP_XML_PATH + "/" + fileName + "_" + method.toString().toUpperCase() + ".xml";
String returnXmlStr = null;
log.info("XML FILE PATH : " + xmlPath);
DataApiServerResponseVO resVO = null;
File xmlFile = new File(xmlPath);
if(!xmlFile.exists()) {
resVO = new DataApiServerResponseVO("-20", String.format("%s 파일을 찾을 수 없습니다.",xmlPath));
XmlMapper mapper = new XmlMapper();
returnXmlStr = mapper.writer().withRootName("result").writeValueAsString(resVO);
}
if(resVO == null && !xmlFile.isFile()) {
resVO = new DataApiServerResponseVO("-21", String.format("%s는 파일이어야 합니다.",xmlPath));
XmlMapper mapper = new XmlMapper();
returnXmlStr = mapper.writer().withRootName("result").writeValueAsString(resVO);
}
if(resVO == null) {
StringBuilder strBd = new StringBuilder();
try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(xmlPath),StandardCharsets.UTF_8))) {
String line;
int i = 0;
while ((line = br.readLine()) != null) {
strBd.append(line + "\n");
}
returnXmlStr = strBd.toString();
} catch (IOException e) {
log.error("XML 파일 읽는 중 오류 발생 : " + e.toString());
e.printStackTrace();
resVO = new DataApiServerResponseVO("-22", String.format("%s 파일을 읽는 중 오류가 발생하였습니다(%s). ",xmlPath, e.toString()));
XmlMapper mapper = new XmlMapper();
returnXmlStr = mapper.writer().withRootName("result").writeValueAsString(resVO);
}
}
log.info("RESUTN XML STR : " + returnXmlStr);
return returnXmlStr;
}
}

View File

@ -1,32 +1,32 @@
package nlib.sample.service;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
/**
* <pre>
* @Class Name : SampleDataApiService.java
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
public interface SampleDataApiService {
public DataApiResVO getSampleInfo(DataApiReqVO reqVO) throws Exception;
}
package nlib.sample.service;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
/**
* <pre>
* @Class Name : SampleDataApiService.java
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
public interface SampleDataApiService {
public DataApiResVO getSampleInfo(DataApiReqVO reqVO) throws Exception;
}

View File

@ -1,47 +1,47 @@
package nlib.sample.service.impl;
import org.springframework.stereotype.Repository;
import nlib.restful.DataApi;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
/**
* <pre>
* @Class Name : SampleDataApiDAO.java
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
@Repository("sampleDataApiDAO")
public class SampleDataApiDAO extends DataApi {
/**
* 자원의 URI
*/
public static final String RESOURCE_URI = "/uac/service/exports";
public DataApiResVO getSampleInfo(DataApiReqVO reqVO) throws Exception {
// URI가 다른 경우, 해당 URI 설정
reqVO.setReqUrl(RESOURCE_URI);
return get(reqVO);
}
}
package nlib.sample.service.impl;
import org.springframework.stereotype.Repository;
import nlib.restful.DataApi;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
/**
* <pre>
* @Class Name : SampleDataApiDAO.java
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
@Repository("sampleDataApiDAO")
public class SampleDataApiDAO extends DataApi {
/**
* 자원의 URI
*/
public static final String RESOURCE_URI = "/uac/service/exports";
public DataApiResVO getSampleInfo(DataApiReqVO reqVO) throws Exception {
// URI가 다른 경우, 해당 URI 설정
reqVO.setReqUrl(RESOURCE_URI);
return get(reqVO);
}
}

View File

@ -1,44 +1,44 @@
package nlib.sample.service.impl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.sample.service.SampleDataApiService;
/**
* <pre>
* @Class Name : SampleDataApiServiceImpl.java
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
@Service("sampleDataApiService")
public class SampleDataApiServiceImpl implements SampleDataApiService {
/** SampleDataApiDAO */
@Resource(name = "sampleDataApiDAO")
private SampleDataApiDAO sampleDataApiDAO;
public DataApiResVO getSampleInfo(DataApiReqVO reqVO) throws Exception {
return sampleDataApiDAO.getSampleInfo(reqVO);
}
}
package nlib.sample.service.impl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.sample.service.SampleDataApiService;
/**
* <pre>
* @Class Name : SampleDataApiServiceImpl.java
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
@Service("sampleDataApiService")
public class SampleDataApiServiceImpl implements SampleDataApiService {
/** SampleDataApiDAO */
@Resource(name = "sampleDataApiDAO")
private SampleDataApiDAO sampleDataApiDAO;
public DataApiResVO getSampleInfo(DataApiReqVO reqVO) throws Exception {
return sampleDataApiDAO.getSampleInfo(reqVO);
}
}

View File

@ -1,104 +1,104 @@
package nlib.sample.web;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.security.access.annotation.Secured;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import nlib.cmm.qrcode.QRCodeUtil;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
@Controller
public class BarcodeController {
private static final Logger log = LoggerFactory.getLogger(BarcodeController.class);
/** QRCodeService */
@Resource(name = "qrCodeService")
private QRCodeUtil qrCodeService;
/**
* 샘플 : 회원정보를 입력받을 있는 폼을 구성하여 표출한다.
*
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value="/sample/barcode/getMemberQRCodeForm.do", produces=MediaType.IMAGE_JPEG_VALUE)
@Secured("ROLE_ADMIN")
public String getMemberQRCodeForm(@ModelAttribute("loginVO") NlibLoginVO loginVO, ModelMap model) throws Exception {
log.debug("getMemberQRCodeForm : loginVO=" + loginVO.toString());
if(StringUtil.isEmpty(loginVO.getUniqId())) loginVO.setUniqId("USER0001-000001");
if(StringUtil.isEmpty(loginVO.getEmail())) loginVO.setEmail("myid@digitalship.co.kr");
if(StringUtil.isEmpty(loginVO.getName())) loginVO.setName("홍길동");
model.addAttribute("loginVO", loginVO);
return "nlib/sample/getMemberInfoFromQRCode";
}
/**
* 샘플 : 입력받은 회원정보를 가지고 QR 2D 바코드를 생성하는 예를 보여준다.
* 결과값은 JPG 바코드 이미지 이다. (Zxing Lib 사용)
*
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value="/sample/barcode/getMemberQRCode.do", produces=MediaType.IMAGE_JPEG_VALUE)
public @ResponseBody byte[] getMemberQRCode(@ModelAttribute("loginVO") NlibLoginVO loginVO, HttpServletRequest request, HttpServletResponse response) throws Exception {
log.debug("getMemberQRCode : loginVO=" + loginVO.toString());
BufferedImage bufferedImage = qrCodeService.generateMemberQRCodeImage(loginVO);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write( bufferedImage , "jpg", byteArrayOutputStream);
byte[] bs = byteArrayOutputStream.toByteArray();
response.setContentLength(bs.length);
return byteArrayOutputStream.toByteArray();
}
/**
* 샘플 : 회원정보 QR 2D 바코드 내용을 입력받아 사용자VO 정보를 추출하는 예를 보여준다.
*
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value="/sample/barcode/getMemberInfoFromQRCode.do")
public String getMemberInfoFromQRCode(@RequestParam String barcodeText, ModelMap model) throws Exception {
log.debug("getMemberInfoFromQRCode : barcodeText=" + barcodeText);
NlibLoginVO loginVO = qrCodeService.getMemberInfoFromQRCode(barcodeText);
log.debug("getMemberInfoFromQRCode : loginVO=" + loginVO.toString());
model.addAttribute("loginVO", loginVO);
return "nlib/sample/getMemberInfoFromQRCode";
}
}
package nlib.sample.web;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.security.access.annotation.Secured;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import nlib.cmm.qrcode.QRCodeUtil;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
@Controller
public class BarcodeController {
private static final Logger log = LoggerFactory.getLogger(BarcodeController.class);
/** QRCodeService */
@Resource(name = "qrCodeService")
private QRCodeUtil qrCodeService;
/**
* 샘플 : 회원정보를 입력받을 있는 폼을 구성하여 표출한다.
*
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value="/sample/barcode/getMemberQRCodeForm.do", produces=MediaType.IMAGE_JPEG_VALUE)
@Secured("ROLE_ADMIN")
public String getMemberQRCodeForm(@ModelAttribute("loginVO") NlibLoginVO loginVO, ModelMap model) throws Exception {
log.debug("getMemberQRCodeForm : loginVO=" + loginVO.toString());
if(StringUtil.isEmpty(loginVO.getUniqId())) loginVO.setUniqId("USER0001-000001");
if(StringUtil.isEmpty(loginVO.getEmail())) loginVO.setEmail("myid@digitalship.co.kr");
if(StringUtil.isEmpty(loginVO.getName())) loginVO.setName("홍길동");
model.addAttribute("loginVO", loginVO);
return "nlib/sample/getMemberInfoFromQRCode";
}
/**
* 샘플 : 입력받은 회원정보를 가지고 QR 2D 바코드를 생성하는 예를 보여준다.
* 결과값은 JPG 바코드 이미지 이다. (Zxing Lib 사용)
*
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value="/sample/barcode/getMemberQRCode.do", produces=MediaType.IMAGE_JPEG_VALUE)
public @ResponseBody byte[] getMemberQRCode(@ModelAttribute("loginVO") NlibLoginVO loginVO, HttpServletRequest request, HttpServletResponse response) throws Exception {
log.debug("getMemberQRCode : loginVO=" + loginVO.toString());
BufferedImage bufferedImage = qrCodeService.generateMemberQRCodeImage(loginVO);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write( bufferedImage , "jpg", byteArrayOutputStream);
byte[] bs = byteArrayOutputStream.toByteArray();
response.setContentLength(bs.length);
return byteArrayOutputStream.toByteArray();
}
/**
* 샘플 : 회원정보 QR 2D 바코드 내용을 입력받아 사용자VO 정보를 추출하는 예를 보여준다.
*
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value="/sample/barcode/getMemberInfoFromQRCode.do")
public String getMemberInfoFromQRCode(@RequestParam String barcodeText, ModelMap model) throws Exception {
log.debug("getMemberInfoFromQRCode : barcodeText=" + barcodeText);
NlibLoginVO loginVO = qrCodeService.getMemberInfoFromQRCode(barcodeText);
log.debug("getMemberInfoFromQRCode : loginVO=" + loginVO.toString());
model.addAttribute("loginVO", loginVO);
return "nlib/sample/getMemberInfoFromQRCode";
}
}

View File

@ -1,85 +1,85 @@
package nlib.sample.web;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.sample.service.SampleDataApiService;
/**
* <pre>
* @Class Name : SampleDataApiController.java
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
@Controller
public class SampleDataApiController {
/** SampleDataApiService */
@Resource(name = "sampleDataApiService")
private SampleDataApiService sampleDataApiService;
/* DataApi 접속 서버 정보 */
@Value("#{properties['dataapi.server.ip']}")
private String dataapiServerIp;
@Value("#{properties['dataapi.server.port']}")
private String dataapiServerPort;
@Value("#{properties['dataapi.server.protocol']}")
private String dataapiServerProtocol;
@RequestMapping("/sample/getSampleInfoForm.do")
public String getSampleInfoForm(ModelMap model) throws Exception {
model.addAttribute("serverProtocol", dataapiServerIp);
model.addAttribute("serverIp", dataapiServerPort);
model.addAttribute("serverPort", dataapiServerProtocol);
return "nlib/sample/getSampleInfoForm";
}
@RequestMapping("/sample/getSampleInfo.do")
public String getSampleInfo(@RequestParam Map<String, Object> commandMap, ModelMap model) throws Exception {
String authKey = (String) commandMap.get("authKey");
String page = (String) commandMap.get("page");
String rows = (String) commandMap.get("rows");
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(authKey);
reqVO.setPageIndex(page);
reqVO.setPageSize(rows);
DataApiResVO resVO = sampleDataApiService.getSampleInfo(reqVO);
model.addAttribute("result", resVO);
return "nlib/sample/getSampleInfo";
}
}
package nlib.sample.web;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.sample.service.SampleDataApiService;
/**
* <pre>
* @Class Name : SampleDataApiController.java
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 22.
* @version 1.0
*
*/
@Controller
public class SampleDataApiController {
/** SampleDataApiService */
@Resource(name = "sampleDataApiService")
private SampleDataApiService sampleDataApiService;
/* DataApi 접속 서버 정보 */
@Value("#{properties['dataapi.server.ip']}")
private String dataapiServerIp;
@Value("#{properties['dataapi.server.port']}")
private String dataapiServerPort;
@Value("#{properties['dataapi.server.protocol']}")
private String dataapiServerProtocol;
@RequestMapping("/sample/getSampleInfoForm.do")
public String getSampleInfoForm(ModelMap model) throws Exception {
model.addAttribute("serverProtocol", dataapiServerIp);
model.addAttribute("serverIp", dataapiServerPort);
model.addAttribute("serverPort", dataapiServerProtocol);
return "nlib/sample/getSampleInfoForm";
}
@RequestMapping("/sample/getSampleInfo.do")
public String getSampleInfo(@RequestParam Map<String, Object> commandMap, ModelMap model) throws Exception {
String authKey = (String) commandMap.get("authKey");
String page = (String) commandMap.get("page");
String rows = (String) commandMap.get("rows");
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setAuthKey(authKey);
reqVO.setPageIndex(page);
reqVO.setPageSize(rows);
DataApiResVO resVO = sampleDataApiService.getSampleInfo(reqVO);
model.addAttribute("result", resVO);
return "nlib/sample/getSampleInfo";
}
}

View File

@ -1,108 +1,108 @@
package nlib.sample.web;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import egovframework.rte.fdl.cryptography.EgovEnvCryptoService;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
import egovframework.rte.fdl.cryptography.impl.EgovARIACryptoServiceImpl;
import nlib.cmm.crypto.AriaCrypto;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : SampleEncoderController.java
*
* @Description : 비밀번호 인코딩값 조회/생성
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 8. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 8.
* @version 1.0
*
*/
@Controller
public class SampleEncoderController {
private static final Logger log = LoggerFactory.getLogger(SampleEncoderController.class);
/** 암호화서비스 */
@Resource(name = "egovEnvCryptoService")
EgovEnvCryptoService cryptoService;
@Resource(name = "egovEnvPasswordEncoderService")
EgovPasswordEncoder egovPasswordEncoder;
@Resource(name = "ariaCrypto")
AriaCrypto ariaCrypto;
@Value("#{properties['dataapi.server.ip']}")
private String dataapiServerIp;
@RequestMapping("/sample/password/getSampleEncoder.do")
public String getSampleInfoForm(ModelMap model
, @RequestParam(required=false) String hash
, @RequestParam(required=false) String plainText
, @RequestParam(required=false) String key
) throws Exception {
String msg = null;
String encodedText = null;
String decodedText = null;
if(StringUtil.isEmpty(hash)) {
msg = "암호화 알고리즘을 선택하여 주시기 바랍니다.";
} else if(StringUtil.isEmpty(plainText)) {
msg = "암호화할 문자열을 입력하여 주시기 바랍니다.";
} else {
log.debug("암호화 처리 시작 =" + plainText + "=");
if("sha-256".equals(hash)) {
encodedText = egovPasswordEncoder.encryptPassword(plainText);
} else if("aria".equals(hash)) {
if(StringUtil.isEmpty(key)) encodedText = ariaCrypto.encode(plainText);
else encodedText = ariaCrypto.encode(plainText, key);
log.debug(" Aria plainText=" + plainText);
log.debug(" Aria encodedText=" + encodedText);
if(StringUtil.isEmpty(key)) decodedText = ariaCrypto.decode(encodedText);
else decodedText = ariaCrypto.decode(encodedText, key);
log.debug(" Aria after decoding, decodedText=" + decodedText);
} else {
msg = "암호화 알고리즘이 적합하지 않습니다.";
}
}
model.addAttribute("msg", msg);
model.addAttribute("hash", hash);
model.addAttribute("plainText", plainText);
model.addAttribute("encodedText", encodedText);
model.addAttribute("decodedText", decodedText);
model.addAttribute("key", key);
return "nlib/sample/getSampleEncoder";
}
}
package nlib.sample.web;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import egovframework.rte.fdl.cryptography.EgovEnvCryptoService;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
import egovframework.rte.fdl.cryptography.impl.EgovARIACryptoServiceImpl;
import nlib.cmm.crypto.AriaCrypto;
import nlib.util.StringUtil;
/**
* <pre>
* @Class Name : SampleEncoderController.java
*
* @Description : 비밀번호 인코딩값 조회/생성
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 8. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 8.
* @version 1.0
*
*/
@Controller
public class SampleEncoderController {
private static final Logger log = LoggerFactory.getLogger(SampleEncoderController.class);
/** 암호화서비스 */
@Resource(name = "egovEnvCryptoService")
EgovEnvCryptoService cryptoService;
@Resource(name = "egovEnvPasswordEncoderService")
EgovPasswordEncoder egovPasswordEncoder;
@Resource(name = "ariaCrypto")
AriaCrypto ariaCrypto;
@Value("#{properties['dataapi.server.ip']}")
private String dataapiServerIp;
@RequestMapping("/sample/password/getSampleEncoder.do")
public String getSampleInfoForm(ModelMap model
, @RequestParam(required=false) String hash
, @RequestParam(required=false) String plainText
, @RequestParam(required=false) String key
) throws Exception {
String msg = null;
String encodedText = null;
String decodedText = null;
if(StringUtil.isEmpty(hash)) {
msg = "암호화 알고리즘을 선택하여 주시기 바랍니다.";
} else if(StringUtil.isEmpty(plainText)) {
msg = "암호화할 문자열을 입력하여 주시기 바랍니다.";
} else {
log.debug("암호화 처리 시작 =" + plainText + "=");
if("sha-256".equals(hash)) {
encodedText = egovPasswordEncoder.encryptPassword(plainText);
} else if("aria".equals(hash)) {
if(StringUtil.isEmpty(key)) encodedText = ariaCrypto.encode(plainText);
else encodedText = ariaCrypto.encode(plainText, key);
log.debug(" Aria plainText=" + plainText);
log.debug(" Aria encodedText=" + encodedText);
if(StringUtil.isEmpty(key)) decodedText = ariaCrypto.decode(encodedText);
else decodedText = ariaCrypto.decode(encodedText, key);
log.debug(" Aria after decoding, decodedText=" + decodedText);
} else {
msg = "암호화 알고리즘이 적합하지 않습니다.";
}
}
model.addAttribute("msg", msg);
model.addAttribute("hash", hash);
model.addAttribute("plainText", plainText);
model.addAttribute("encodedText", encodedText);
model.addAttribute("decodedText", decodedText);
model.addAttribute("key", key);
return "nlib/sample/getSampleEncoder";
}
}

View File

@ -1,77 +1,77 @@
package nlib.user.web;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import nlib.restful.service.DataApiReqVO;
import nlib.security.SecUserVO;
/**
* <pre>
* @Class Name : userInfoController.java
*
* @Description : 회원 정보 controller
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 14. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 14.
* @version 1.0
*
*/
@Controller
public class userInfoController {
/**
* 정보 조회
* @exception Exception
*/
@RequestMapping(value="/userInfo/getMyInfo.do")
public String getMyInfo(HttpServletResponse response,HttpServletRequest request) throws Exception{
return "nlib/userInfo/getMyInfo";
}
/**
* 정보 수정
* @exception Exception
*/
@RequestMapping(value="/userInfo/putMyInfo.do")
public String putMyInfo(HttpServletResponse response,HttpServletRequest request,Authentication authentication,ModelMap model) throws Exception{
SecUserVO vo=(SecUserVO) authentication.getPrincipal();
HashMap map = new HashMap();
map.put("id", vo.getId());
//회원 ID로 회원의 정보를 조회해온다.
DataApiReqVO reqvo=new DataApiReqVO();
reqvo.setInfo(map);
model.addAttribute("result",vo);
return "nlib/userInfo/putMyInfo";
}
/**
* 정보 수정 password 인증
* @exception Exception
*/
@RequestMapping(value="/userInfo/pwCertMyInfo.do")
public String pwCertMyInfo(HttpServletResponse response,HttpServletRequest request) throws Exception{
return "nlib/userInfo/pwCertMyInfo";
}
package nlib.user.web;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import nlib.restful.service.DataApiReqVO;
import nlib.security.SecUserVO;
/**
* <pre>
* @Class Name : userInfoController.java
*
* @Description : 회원 정보 controller
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 14. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 14.
* @version 1.0
*
*/
@Controller
public class userInfoController {
/**
* 정보 조회
* @exception Exception
*/
@RequestMapping(value="/userInfo/getMyInfo.do")
public String getMyInfo(HttpServletResponse response,HttpServletRequest request) throws Exception{
return "nlib/userInfo/getMyInfo";
}
/**
* 정보 수정
* @exception Exception
*/
@RequestMapping(value="/userInfo/putMyInfo.do")
public String putMyInfo(HttpServletResponse response,HttpServletRequest request,Authentication authentication,ModelMap model) throws Exception{
SecUserVO vo=(SecUserVO) authentication.getPrincipal();
HashMap map = new HashMap();
map.put("id", vo.getId());
//회원 ID로 회원의 정보를 조회해온다.
DataApiReqVO reqvo=new DataApiReqVO();
reqvo.setInfo(map);
model.addAttribute("result",vo);
return "nlib/userInfo/putMyInfo";
}
/**
* 정보 수정 password 인증
* @exception Exception
*/
@RequestMapping(value="/userInfo/pwCertMyInfo.do")
public String pwCertMyInfo(HttpServletResponse response,HttpServletRequest request) throws Exception{
return "nlib/userInfo/pwCertMyInfo";
}
}

View File

@ -1,48 +1,48 @@
package nlib.util;
import egovframework.com.utl.fcc.service.EgovFormBasedFileUtil;
import egovframework.com.utl.fcc.service.EgovFormBasedUUID;
/**
* <pre>
* @Class Name : UUID.java
*
* @Description : UUID를 생성한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 13. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 13.
* @version 1.0
*
*/
public class UUID {
/**
* 새로운 UUID를 생성하여 리턴한다.
*
* @return
*/
public static String getNewUUID() {
return EgovFormBasedUUID.randomUUID().toString();
}
/**
* 파일용 UUID로 생성한 파일명을 리턴한다.
*
* @return
*/
public static String getPhysicalFileName() {
return "F" + StringUtil.getTimeStamp() + "_" + getNewUUID().replaceAll("-", "").toUpperCase();
}
}
package nlib.util;
import egovframework.com.utl.fcc.service.EgovFormBasedFileUtil;
import egovframework.com.utl.fcc.service.EgovFormBasedUUID;
/**
* <pre>
* @Class Name : UUID.java
*
* @Description : UUID를 생성한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 13. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 13.
* @version 1.0
*
*/
public class UUID {
/**
* 새로운 UUID를 생성하여 리턴한다.
*
* @return
*/
public static String getNewUUID() {
return EgovFormBasedUUID.randomUUID().toString();
}
/**
* 파일용 UUID로 생성한 파일명을 리턴한다.
*
* @return
*/
public static String getPhysicalFileName() {
return "F" + StringUtil.getTimeStamp() + "_" + getNewUUID().replaceAll("-", "").toUpperCase();
}
}

View File

@ -1,77 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.0.xsd
">
<context:component-scan base-package="egovframework, nlib">
<!-- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> -->
</context:component-scan>
<context:annotation-config />
<!-- NLIB PROPERTIES 추가 (DIGITALSHIP 2021.06.17) -->
<util:properties id="properties" location="classpath:nlib/nlib.properties" />
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:/egovframework/message/message-common</value>
<value>classpath:/egovframework/rte/fdl/idgnr/messages/idgnr</value>
<value>classpath:/egovframework/rte/fdl/property/messages/properties</value>
</list>
</property>
<property name="cacheSeconds">
<value>60</value>
</property>
</bean>
<bean id="leaveaTrace" class="egovframework.rte.fdl.cmmn.trace.LeaveaTrace">
<property name="traceHandlerServices">
<list>
<ref bean="traceHandlerService" />
</list>
</property>
</bean>
<bean id="traceHandlerService" class="egovframework.rte.fdl.cmmn.trace.manager.DefaultTraceHandleManager">
<property name="reqExpMatcher">
<ref bean="antPathMater" />
</property>
<property name="patterns">
<list>
<value>*</value>
</list>
</property>
<property name="handlers">
<list>
<ref bean="defaultTraceHandler" />
</list>
</property>
</bean>
<bean id="antPathMater" class="org.springframework.util.AntPathMatcher" />
<bean id="defaultTraceHandler" class="egovframework.rte.fdl.cmmn.trace.handler.DefaultTraceHandler" />
<!-- MULTIPART RESOLVERS -->
<!-- regular spring resolver -->
<bean id="spring.RegularCommonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="600000000" />
<property name="maxInMemorySize" value="100000000" />
</bean>
<alias name="spring.RegularCommonsMultipartResolver" alias="multipartResolver" />
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.0.xsd
">
<context:component-scan base-package="egovframework, nlib">
<!-- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> -->
</context:component-scan>
<context:annotation-config />
<!-- NLIB PROPERTIES 추가 (DIGITALSHIP 2021.06.17) -->
<util:properties id="properties" location="classpath:nlib/nlib.properties" />
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:/egovframework/message/message-common</value>
<value>classpath:/egovframework/rte/fdl/idgnr/messages/idgnr</value>
<value>classpath:/egovframework/rte/fdl/property/messages/properties</value>
</list>
</property>
<property name="cacheSeconds">
<value>60</value>
</property>
</bean>
<bean id="leaveaTrace" class="egovframework.rte.fdl.cmmn.trace.LeaveaTrace">
<property name="traceHandlerServices">
<list>
<ref bean="traceHandlerService" />
</list>
</property>
</bean>
<bean id="traceHandlerService" class="egovframework.rte.fdl.cmmn.trace.manager.DefaultTraceHandleManager">
<property name="reqExpMatcher">
<ref bean="antPathMater" />
</property>
<property name="patterns">
<list>
<value>*</value>
</list>
</property>
<property name="handlers">
<list>
<ref bean="defaultTraceHandler" />
</list>
</property>
</bean>
<bean id="antPathMater" class="org.springframework.util.AntPathMatcher" />
<bean id="defaultTraceHandler" class="egovframework.rte.fdl.cmmn.trace.handler.DefaultTraceHandler" />
<!-- MULTIPART RESOLVERS -->
<!-- regular spring resolver -->
<bean id="spring.RegularCommonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="600000000" />
<property name="maxInMemorySize" value="100000000" />
</bean>
<alias name="spring.RegularCommonsMultipartResolver" alias="multipartResolver" />
</beans>

View File

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<!-- <bean id="beanValidator" class="org.springmodules.validation.commons.DefaultBeanValidator">
<property name="validatorFactory" ref="validatorFactory"/>
</bean> -->
<!--
<bean id="validatorFactory" class="org.springmodules.validation.commons.DefaultValidatorFactory">
<property name="validationConfigLocations">
<list>
<value>/WEB-INF/config/egovframework/validator/validator-rules.xml</value>
<value>/WEB-INF/config/egovframework/validator/validator.xml</value>
</list>
</property>
</bean> -->
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<!-- <bean id="beanValidator" class="org.springmodules.validation.commons.DefaultBeanValidator">
<property name="validatorFactory" ref="validatorFactory"/>
</bean> -->
<!--
<bean id="validatorFactory" class="org.springmodules.validation.commons.DefaultValidatorFactory">
<property name="validationConfigLocations">
<list>
<value>/WEB-INF/config/egovframework/validator/validator-rules.xml</value>
<value>/WEB-INF/config/egovframework/validator/validator.xml</value>
</list>
</property>
</bean> -->
</beans>

View File

@ -1,26 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %5p [%c] %m%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="java.sql" level="INFO" additivity="false">
<AppenderRef ref="console" />
</Logger>
<Logger name="egovframework" level="DEBUG" additivity="false">
<AppenderRef ref="console" />
</Logger>
<!-- log SQL with timing information, post execution -->
<Logger name="jdbc.sqltiming" level="INFO" additivity="false">
<AppenderRef ref="console" />
</Logger>
<Logger name="org.springframework" level="DEBUG" additivity="false">
<AppenderRef ref="console" />
</Logger>
<Root level="DEBUG">
<AppenderRef ref="console" />
</Root>
</Loggers>
</Configuration>
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %5p [%c] %m%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="java.sql" level="INFO" additivity="false">
<AppenderRef ref="console" />
</Logger>
<Logger name="egovframework" level="DEBUG" additivity="false">
<AppenderRef ref="console" />
</Logger>
<!-- log SQL with timing information, post execution -->
<Logger name="jdbc.sqltiming" level="INFO" additivity="false">
<AppenderRef ref="console" />
</Logger>
<Logger name="org.springframework" level="DEBUG" additivity="false">
<AppenderRef ref="console" />
</Logger>
<Root level="DEBUG">
<AppenderRef ref="console" />
</Root>
</Loggers>
</Configuration>

View File

@ -1,62 +1,62 @@
#-----------------------------------------------------------------------
#
# nlib.properties : \uc628\ub77c\uc778\uc790\ub8cc\ub300\ucd9c\uad00\ub9ac\uc2dc\uc2a4\ud15c
#
# @\ud504\ub85c\uc81d\ud2b8\uba85: \uc9c0\ubc29\ubb38\ud654\uc6d0 \ud1b5\ud569\uc790\ub8cc\uad00\ub9ac\uc2dc\uc2a4\ud15c \uad6c\ucd95\uc0ac\uc5c5 (2021)
#-----------------------------------------------------------------------
# 1. key = value \uad6c\uc870\uc785\ub2c8\ub2e4.
# 2. key\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \ud3ec\ud568\ubd88\uac00, value\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \uac00\ub2a5
# 3. key\uac12\uc73c\ub85c \ud55c\uae00\uc744 \uc0ac\uc6a9\ubd88\uac00, value\uac12\uc740 \ud55c\uae00\uc0ac\uc6a9\uc774 \uac00\ub2a5
# 4. \uc904\uc744 \ubc14\uafc0 \ud544\uc694\uac00 \uc788\uc73c\uba74 '\'\ub97c \ub77c\uc778\uc758 \ub05d\uc5d0 \ucd94\uac00(\ub9cc\uc57d '\'\ubb38\uc790\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\ub294 '\\'\ub97c \uc0ac\uc6a9)
# 5. Windows\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '\\' or '/' ('\' \uc0ac\uc6a9\ud558\uba74 \uc548\ub428)
# 6. Unix\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '/'
# 7. \uc8fc\uc11d\ubb38 \ucc98\ub9ac\ub294 #\uc0ac\uc6a9
# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83
#-----------------------------------------------------------------------
#----------------------------------------
# DataAPI \uc811\uc18d\uc815\ubcf4
#----------------------------------------
# \uac1c\ubc1c \uc11c\ubc84
#dataapi.server.ip = 210.181.197.70
#dataapi.server.port = 80
#dataapi.server.protocol = http
# \ub85c\uceec \uc11c\ubc84
dataapi.server.ip = localhost
dataapi.server.port = 8088
dataapi.server.protocol = http
# \ub85c\uceec \uac1c\ubc1c\uc6a9 XML \ud30c\uc77c \uc704\uce58
dataapi.temp.xml.path = C:/iams/workspace/nlib/data/dataxml
# Aria \uc54c\uace0\ub9ac\uc998
crypto.aria.defaultKey = TheFederationOfKoreaCultureCenter027042322
#----------------------------------------
# \ubaa9\ub85d \ud398\uc774\uc9d5
#----------------------------------------
list.paging.page.size = 10
#----------------------------------------
# \ucca8\ubd80\ud30c\uc77c \uacbd\ub85c \uc815\ubcf4
#----------------------------------------
# \ucca8\ubd80\ud30c\uc77c \ucd5c\uc0c1\uc704 \uc704\uce58
fileupload.base.path = C:/iams/workspace/nlib/data/fileupload
# \uc784\uc2dc \uc800\uc7a5 \uc704\uce58
fileupload.temp.subpath = /temp
# \ubb3b\uace0\ub2f5\ud558\uae30 \uac8c\uc2dc\ud310 \uc11c\ube0c\uc704\uce58 : \ucca8\ubd80\ud30c\uc77c \ucd5c\uc0c1\uc704 \uc704\uce58 \uc774\ud558\uc758 \uc704\uce58 \uc815\ubcf4\ub97c \uc124\uc815
fileupload.bbs.qna.subpath = /bbs/qna
# \uba54\uc77c \uacbd\ub85c
mailing.sender.membership.template = C:/iams/workspace/nlib/src/main/webapp/mail/mail_template.html
#\uba54\uc77c \ubcf4\ub0b4\ub294 \uc8fc\uc18c
mailing.sender.membership.email = no-reply@nlib.org
#\uba54\uc77c \ubcf4\ub0b4\ub294\uc0ac\ub78c \uc774\ub984
mailing.sender.membership.name = Nlib
#-----------------------------------------------------------------------
#
# nlib.properties : \uc628\ub77c\uc778\uc790\ub8cc\ub300\ucd9c\uad00\ub9ac\uc2dc\uc2a4\ud15c
#
# @\ud504\ub85c\uc81d\ud2b8\uba85: \uc9c0\ubc29\ubb38\ud654\uc6d0 \ud1b5\ud569\uc790\ub8cc\uad00\ub9ac\uc2dc\uc2a4\ud15c \uad6c\ucd95\uc0ac\uc5c5 (2021)
#-----------------------------------------------------------------------
# 1. key = value \uad6c\uc870\uc785\ub2c8\ub2e4.
# 2. key\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \ud3ec\ud568\ubd88\uac00, value\uac12\uc740 \uacf5\ubc31\ubb38\uc790\ub97c \uac00\ub2a5
# 3. key\uac12\uc73c\ub85c \ud55c\uae00\uc744 \uc0ac\uc6a9\ubd88\uac00, value\uac12\uc740 \ud55c\uae00\uc0ac\uc6a9\uc774 \uac00\ub2a5
# 4. \uc904\uc744 \ubc14\uafc0 \ud544\uc694\uac00 \uc788\uc73c\uba74 '\'\ub97c \ub77c\uc778\uc758 \ub05d\uc5d0 \ucd94\uac00(\ub9cc\uc57d '\'\ubb38\uc790\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\ub294 '\\'\ub97c \uc0ac\uc6a9)
# 5. Windows\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '\\' or '/' ('\' \uc0ac\uc6a9\ud558\uba74 \uc548\ub428)
# 6. Unix\uc5d0\uc11c\uc758 \ub514\ub809\ud1a0\ub9ac \ud45c\uc2dc : '/'
# 7. \uc8fc\uc11d\ubb38 \ucc98\ub9ac\ub294 #\uc0ac\uc6a9
# 8. value\uac12 \ub4a4\uc5d0 \uc2a4\ud398\uc774\uc2a4\uac00 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0 \uc11c\ube14\ub9bf\uc5d0\uc11c \ucc38\uc870\ud560\ub54c\ub294 \uc5d0\ub7ec\ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c trim()\ud558\uac70\ub098 \ub9c8\uc9c0\ub9c9 \uacf5\ubc31\uc5c6\uc774 properties \uac12\uc744 \uc124\uc815\ud560\uac83
#-----------------------------------------------------------------------
#----------------------------------------
# DataAPI \uc811\uc18d\uc815\ubcf4
#----------------------------------------
# \uac1c\ubc1c \uc11c\ubc84
#dataapi.server.ip = 210.181.197.70
#dataapi.server.port = 80
#dataapi.server.protocol = http
# \ub85c\uceec \uc11c\ubc84
dataapi.server.ip = localhost
dataapi.server.port = 8088
dataapi.server.protocol = http
# \ub85c\uceec \uac1c\ubc1c\uc6a9 XML \ud30c\uc77c \uc704\uce58
dataapi.temp.xml.path = C:/iams/workspace/nlib/data/dataxml
# Aria \uc54c\uace0\ub9ac\uc998
crypto.aria.defaultKey = TheFederationOfKoreaCultureCenter027042322
#----------------------------------------
# \ubaa9\ub85d \ud398\uc774\uc9d5
#----------------------------------------
list.paging.page.size = 10
#----------------------------------------
# \ucca8\ubd80\ud30c\uc77c \uacbd\ub85c \uc815\ubcf4
#----------------------------------------
# \ucca8\ubd80\ud30c\uc77c \ucd5c\uc0c1\uc704 \uc704\uce58
fileupload.base.path = C:/iams/workspace/nlib/data/fileupload
# \uc784\uc2dc \uc800\uc7a5 \uc704\uce58
fileupload.temp.subpath = /temp
# \ubb3b\uace0\ub2f5\ud558\uae30 \uac8c\uc2dc\ud310 \uc11c\ube0c\uc704\uce58 : \ucca8\ubd80\ud30c\uc77c \ucd5c\uc0c1\uc704 \uc704\uce58 \uc774\ud558\uc758 \uc704\uce58 \uc815\ubcf4\ub97c \uc124\uc815
fileupload.bbs.qna.subpath = /bbs/qna
# \uba54\uc77c \uacbd\ub85c
mailing.sender.membership.template = C:/iams/workspace/nlib/src/main/webapp/mail/mail_template.html
#\uba54\uc77c \ubcf4\ub0b4\ub294 \uc8fc\uc18c
mailing.sender.membership.email = no-reply@nlib.org
#\uba54\uc77c \ubcf4\ub0b4\ub294\uc0ac\ub78c \uc774\ub984
mailing.sender.membership.name = Nlib

View File

@ -1,85 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<context:component-scan base-package="egovframework, nlib">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="egovframework.com.cmm.web.EgovBindingInitializer"/>
</property>
<!-- @ResponseBody : application/json 변경 (2021.7.20 KKN) -->
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
</list>
</property>
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
<!-- 쿠키를 이용한 Locale 이용시 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> -->
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language" />
</bean>
<!--
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="cmmn/egovError"/>
<property name="exceptionMappings">
<props>
<prop key="egovframework.rte.fdl.cmmn.exception.EgovBizException">cmmn/egovError</prop>
<prop key="org.springframework.security.AccessDeniedException">cmmn/egovError</prop>
</props>
</property>
</bean>
-->
<!-- tiles 설정 : 시작 -->
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
<property name="order" value="1" />
</bean>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles/tiles-layout.xml</value>
</list>
</property>
</bean>
<!-- tiles 설정 : 종료 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
<property name="order" value="1" />
</bean>
<!-- For Pagination Tag -->
<bean id="imageRenderer" class="egovframework.com.cmm.web.EgovImgPaginationRenderer"/>
<bean id="paginationManager" class="egovframework.rte.ptl.mvc.tags.ui.pagination.DefaultPaginationManager">
<property name="rendererType">
<map>
<entry key="image" value-ref="imageRenderer"/>
</map>
</property>
</bean>
<!-- /For Pagination Tag -->
<!-- <mvc:view-controller path="/cmmn/validator.do" view-name="cmmn/validator"/> -->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<context:component-scan base-package="egovframework, nlib">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="egovframework.com.cmm.web.EgovBindingInitializer"/>
</property>
<!-- @ResponseBody : application/json 변경 (2021.7.20 KKN) -->
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
</list>
</property>
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
<!-- 쿠키를 이용한 Locale 이용시 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> -->
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language" />
</bean>
<!--
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="cmmn/egovError"/>
<property name="exceptionMappings">
<props>
<prop key="egovframework.rte.fdl.cmmn.exception.EgovBizException">cmmn/egovError</prop>
<prop key="org.springframework.security.AccessDeniedException">cmmn/egovError</prop>
</props>
</property>
</bean>
-->
<!-- tiles 설정 : 시작 -->
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
<property name="order" value="1" />
</bean>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles/tiles-layout.xml</value>
</list>
</property>
</bean>
<!-- tiles 설정 : 종료 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
<property name="order" value="1" />
</bean>
<!-- For Pagination Tag -->
<bean id="imageRenderer" class="egovframework.com.cmm.web.EgovImgPaginationRenderer"/>
<bean id="paginationManager" class="egovframework.rte.ptl.mvc.tags.ui.pagination.DefaultPaginationManager">
<property name="rendererType">
<map>
<entry key="image" value-ref="imageRenderer"/>
</map>
</property>
</bean>
<!-- /For Pagination Tag -->
<!-- <mvc:view-controller path="/cmmn/validator.do" view-name="cmmn/validator"/> -->
</beans>

View File

@ -1,83 +1,83 @@
<%
/**
* <pre>
* @Class Name : getSampleInfo.jsp
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 15. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 15.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">QRCode 회원정보</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- W2UI -->
<link rel="stylesheet" type="text/css" href="/nlib/js/w2ui/w2ui-nlib.css" />
<script type="text/javascript" src="/nlib/js/w2ui/w2ui-1.5.min.js"></script>
</head>
<body>
<!-- javascript warning tag -->
<noscript class="noScriptTitle"><spring:message code="common.noScriptTitle.msg" /></noscript>
<form:form commandName="reqInfo"
action="${pageContext.request.contextPath}/sample/barcode/getMemberQRCode.do" method="post"
target="_blank"
onSubmit="fncAuthorInsert(document.forms[0]); return false;">
<div id="grid" style="width: 100%; height: 250px;"></div>
</form:form>
<script type="text/javaScript" language="javascript">
$(function () {
$('#grid').w2grid({
name: 'grid',
header: 'List of Names',
columns: [
{ field: 'fname', text: '이름', size: '30%' },
{ field: 'lname', text: '성명', size: '30%' },
{ field: 'email', text: '이메일', size: '40%' },
{ field: 'sdate', text: '시작일자', size: '120px' }
],
records: [
{ recid: 1, fname: "Peter", lname: "Jeremia", email: 'peter@mail.com', sdate: '2/1/2010' },
{ recid: 2, fname: "Bruce", lname: "Wilkerson", email: 'bruce@mail.com', sdate: '6/1/2010' },
{ recid: 3, fname: "John", lname: "McAlister", email: 'john@mail.com', sdate: '1/16/2010' },
{ recid: 4, fname: "Ravi", lname: "Zacharies", email: 'ravi@mail.com', sdate: '3/13/2007' },
{ recid: 5, fname: "William", lname: "Dembski", email: 'will@mail.com', sdate: '9/30/2011' },
{ recid: 6, fname: "David", lname: "Peterson", email: 'david@mail.com', sdate: '4/5/2010' }
]
});
});
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : getSampleInfo.jsp
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 15. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 15.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">QRCode 회원정보</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- W2UI -->
<link rel="stylesheet" type="text/css" href="/nlib/js/w2ui/w2ui-nlib.css" />
<script type="text/javascript" src="/nlib/js/w2ui/w2ui-1.5.min.js"></script>
</head>
<body>
<!-- javascript warning tag -->
<noscript class="noScriptTitle"><spring:message code="common.noScriptTitle.msg" /></noscript>
<form:form commandName="reqInfo"
action="${pageContext.request.contextPath}/sample/barcode/getMemberQRCode.do" method="post"
target="_blank"
onSubmit="fncAuthorInsert(document.forms[0]); return false;">
<div id="grid" style="width: 100%; height: 250px;"></div>
</form:form>
<script type="text/javaScript" language="javascript">
$(function () {
$('#grid').w2grid({
name: 'grid',
header: 'List of Names',
columns: [
{ field: 'fname', text: '이름', size: '30%' },
{ field: 'lname', text: '성명', size: '30%' },
{ field: 'email', text: '이메일', size: '40%' },
{ field: 'sdate', text: '시작일자', size: '120px' }
],
records: [
{ recid: 1, fname: "Peter", lname: "Jeremia", email: 'peter@mail.com', sdate: '2/1/2010' },
{ recid: 2, fname: "Bruce", lname: "Wilkerson", email: 'bruce@mail.com', sdate: '6/1/2010' },
{ recid: 3, fname: "John", lname: "McAlister", email: 'john@mail.com', sdate: '1/16/2010' },
{ recid: 4, fname: "Ravi", lname: "Zacharies", email: 'ravi@mail.com', sdate: '3/13/2007' },
{ recid: 5, fname: "William", lname: "Dembski", email: 'will@mail.com', sdate: '9/30/2011' },
{ recid: 6, fname: "David", lname: "Peterson", email: 'david@mail.com', sdate: '4/5/2010' }
]
});
});
</script>
</body>
</html>

View File

@ -1,121 +1,121 @@
<%
/**
* <pre>
* @Class Name : listQnAs.jsp
*
* @Description : 묻고답하기 목록을 조회한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 13. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 13.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">묻고답하기 - 글쓰기</c:set>
<!-- File Upload : 시작 -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/js/fileupload/dropzone.css" />
<link rel="stylesheet" href="${pageContext.request.contextPath}/js/fileupload/style.css" />
<script src="${pageContext.request.contextPath}/js/fileupload/dropzone.js"></script>
<!-- File Upload : 종료 -->
<h3>${pageTitle }</h3>
<!-- 글쓰기 : 폼 -->
<form:form commandName="reqInfo"
action="${pageContext.request.contextPath}/board/insertQnA.do"
method="post">
<table>
<tr>
<td>제목</td>
<td><input type="input" name="title" id="title" value="" /></td>
</tr>
<tr>
<td>작성자명</td>
<td><input type="input" name="writerName" id="writerName" value="" /></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="input" name="password" id="password" value="" /></td>
</tr>
<tr>
<td>이메일</td>
<td><input type="input" name="email" id="email" value="" /></td>
</tr>
<tr>
<td>내용</td>
<td><textarea name="content" id="content" value=""></textarea></td>
</tr>
<tr>
<td>첨부파일</td>
<td><input type="input" name="email" id="email" value="" /></td>
</tr>
</table>
<input type="button" name="btnNew" id="btnNew" value="확인"
onclick="javascript:fileUploadNow();" />
<input type="button" name="btnNew" id="btnNew" value="취소"
onclick="javascript:location.href='${pageContext.request.contextPath}/board/listQnAs.do';" />
</form:form>
<div id="dropzone">
<form action="${pageContext.request.contextPath}/fileupload/uploadFile.do"
class="dropzone needsclick" id="myDropzone" name="myDropzone">
<div class="dz-message needsclick">
<button type="button" class="dz-button">Drop files here or click to select files.</button><br />
<span class="note needsclick">이곳에 파일을 끌어다 놓거나, 클릭하여 올릴 파일을 선택하세요.</span>
</div>
</form>
</div>
<script type="text/javaScript" language="javascript">
// 파일업로드 객체 생성
var myDropzone = new Dropzone("form#myDropzone", { url: "${pageContext.request.contextPath}/fileupload/uploadFilesAjax.do?subPathKey=fileupload.bbs.qna.subpath"});
// 각 파일별 업로드 성공시 호출됨
myDropzone.on("success", function(file) {
alert("success : " + file.name);
});
myDropzone.on("complete", function(file) {
alert("complete : " + file.name);
});
myDropzone.on("queuecomplete", function() {
alert("queuecomplete : " + file.name);
});
function fileUploadNow() {
myDropzone.processQueue();
}
</script>
<%
/**
* <pre>
* @Class Name : listQnAs.jsp
*
* @Description : 묻고답하기 목록을 조회한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 13. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 13.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">묻고답하기 - 글쓰기</c:set>
<!-- File Upload : 시작 -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/js/fileupload/dropzone.css" />
<link rel="stylesheet" href="${pageContext.request.contextPath}/js/fileupload/style.css" />
<script src="${pageContext.request.contextPath}/js/fileupload/dropzone.js"></script>
<!-- File Upload : 종료 -->
<h3>${pageTitle }</h3>
<!-- 글쓰기 : 폼 -->
<form:form commandName="reqInfo"
action="${pageContext.request.contextPath}/board/insertQnA.do"
method="post">
<table>
<tr>
<td>제목</td>
<td><input type="input" name="title" id="title" value="" /></td>
</tr>
<tr>
<td>작성자명</td>
<td><input type="input" name="writerName" id="writerName" value="" /></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="input" name="password" id="password" value="" /></td>
</tr>
<tr>
<td>이메일</td>
<td><input type="input" name="email" id="email" value="" /></td>
</tr>
<tr>
<td>내용</td>
<td><textarea name="content" id="content" value=""></textarea></td>
</tr>
<tr>
<td>첨부파일</td>
<td><input type="input" name="email" id="email" value="" /></td>
</tr>
</table>
<input type="button" name="btnNew" id="btnNew" value="확인"
onclick="javascript:fileUploadNow();" />
<input type="button" name="btnNew" id="btnNew" value="취소"
onclick="javascript:location.href='${pageContext.request.contextPath}/board/listQnAs.do';" />
</form:form>
<div id="dropzone">
<form action="${pageContext.request.contextPath}/fileupload/uploadFile.do"
class="dropzone needsclick" id="myDropzone" name="myDropzone">
<div class="dz-message needsclick">
<button type="button" class="dz-button">Drop files here or click to select files.</button><br />
<span class="note needsclick">이곳에 파일을 끌어다 놓거나, 클릭하여 올릴 파일을 선택하세요.</span>
</div>
</form>
</div>
<script type="text/javaScript" language="javascript">
// 파일업로드 객체 생성
var myDropzone = new Dropzone("form#myDropzone", { url: "${pageContext.request.contextPath}/fileupload/uploadFilesAjax.do?subPathKey=fileupload.bbs.qna.subpath"});
// 각 파일별 업로드 성공시 호출됨
myDropzone.on("success", function(file) {
alert("success : " + file.name);
});
myDropzone.on("complete", function(file) {
alert("complete : " + file.name);
});
myDropzone.on("queuecomplete", function() {
alert("queuecomplete : " + file.name);
});
function fileUploadNow() {
myDropzone.processQueue();
}
</script>

View File

@ -1,83 +1,83 @@
<%
/**
* <pre>
* @Class Name : getSampleInfo.jsp
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 15. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 15.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">QRCode 회원정보</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- W2UI -->
<link rel="stylesheet" type="text/css" href="/nlib/js/w2ui/w2ui-nlib.css" />
<script type="text/javascript" src="/nlib/js/w2ui/w2ui-1.5.min.js"></script>
</head>
<body>
<!-- javascript warning tag -->
<noscript class="noScriptTitle"><spring:message code="common.noScriptTitle.msg" /></noscript>
<form:form commandName="reqInfo"
action="${pageContext.request.contextPath}/sample/barcode/getMemberQRCode.do" method="post"
target="_blank"
onSubmit="fncAuthorInsert(document.forms[0]); return false;">
<div id="grid" style="width: 100%; height: 250px;"></div>
</form:form>
<script type="text/javaScript" language="javascript">
$(function () {
$('#grid').w2grid({
name: 'grid',
header: 'List of Names',
columns: [
{ field: 'fname', text: '이름', size: '30%' },
{ field: 'lname', text: '성명', size: '30%' },
{ field: 'email', text: '이메일', size: '40%' },
{ field: 'sdate', text: '시작일자', size: '120px' }
],
records: [
{ recid: 1, fname: "Peter", lname: "Jeremia", email: 'peter@mail.com', sdate: '2/1/2010' },
{ recid: 2, fname: "Bruce", lname: "Wilkerson", email: 'bruce@mail.com', sdate: '6/1/2010' },
{ recid: 3, fname: "John", lname: "McAlister", email: 'john@mail.com', sdate: '1/16/2010' },
{ recid: 4, fname: "Ravi", lname: "Zacharies", email: 'ravi@mail.com', sdate: '3/13/2007' },
{ recid: 5, fname: "William", lname: "Dembski", email: 'will@mail.com', sdate: '9/30/2011' },
{ recid: 6, fname: "David", lname: "Peterson", email: 'david@mail.com', sdate: '4/5/2010' }
]
});
});
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : getSampleInfo.jsp
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 15. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 15.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">QRCode 회원정보</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- W2UI -->
<link rel="stylesheet" type="text/css" href="/nlib/js/w2ui/w2ui-nlib.css" />
<script type="text/javascript" src="/nlib/js/w2ui/w2ui-1.5.min.js"></script>
</head>
<body>
<!-- javascript warning tag -->
<noscript class="noScriptTitle"><spring:message code="common.noScriptTitle.msg" /></noscript>
<form:form commandName="reqInfo"
action="${pageContext.request.contextPath}/sample/barcode/getMemberQRCode.do" method="post"
target="_blank"
onSubmit="fncAuthorInsert(document.forms[0]); return false;">
<div id="grid" style="width: 100%; height: 250px;"></div>
</form:form>
<script type="text/javaScript" language="javascript">
$(function () {
$('#grid').w2grid({
name: 'grid',
header: 'List of Names',
columns: [
{ field: 'fname', text: '이름', size: '30%' },
{ field: 'lname', text: '성명', size: '30%' },
{ field: 'email', text: '이메일', size: '40%' },
{ field: 'sdate', text: '시작일자', size: '120px' }
],
records: [
{ recid: 1, fname: "Peter", lname: "Jeremia", email: 'peter@mail.com', sdate: '2/1/2010' },
{ recid: 2, fname: "Bruce", lname: "Wilkerson", email: 'bruce@mail.com', sdate: '6/1/2010' },
{ recid: 3, fname: "John", lname: "McAlister", email: 'john@mail.com', sdate: '1/16/2010' },
{ recid: 4, fname: "Ravi", lname: "Zacharies", email: 'ravi@mail.com', sdate: '3/13/2007' },
{ recid: 5, fname: "William", lname: "Dembski", email: 'will@mail.com', sdate: '9/30/2011' },
{ recid: 6, fname: "David", lname: "Peterson", email: 'david@mail.com', sdate: '4/5/2010' }
]
});
});
</script>
</body>
</html>

View File

@ -1,146 +1,146 @@
<%
/**
* <pre>
* @Class Name : listNotices.jsp
*
* @Description : JS-GRID 샘플 화면
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 15. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 15.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">공지사항</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
</head>
<body>
<form:form commandName="reqInfo"
action="${pageContext.request.contextPath}/sample/barcode/getMemberQRCode.do" method="post"
target="_blank"
onSubmit="fncAuthorInsert(document.forms[0]); return false;">
<div id="jsGrid" name="jsGrid" ></div>
</form:form>
<script type="text/javaScript" language="javascript">
// 그리드 데이터
var clients = [
{ "noticeNo": 1, "noticeType": "01", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 2, "noticeType": "02", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 3, "noticeType": "03", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 4, "noticeType": "04", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 5, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 6, "noticeType": "06", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 7, "noticeType": "06", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 9, "noticeType": "01", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" }
];
// 그리드내 콤보박스 값
var noticeTypes = [
{ Name: "공지" , Id: "01" },
{ Name: "자료" , Id: "02" },
{ Name: "모집" , Id: "03" },
{ Name: "입찰" , Id: "04" },
{ Name: "발표" , Id: "05" },
{ Name: "이벤트", Id: "06" }
];
// 그리드 생성
$("#jsGrid").jsGrid({
width: "100%",
height: "100%",
inserting: false,
editing: false,
sorting: true,
paging: true,
pageSize: 10,
pageButtonCount: 10,
pageIndex: 1,
pageFirstText: " << ",
pagePrevText: " < ",
pageLastText: " >> ",
pageNextText: " > ",
pagerFormat: "{first} {prev} {pages} {next} {last}",
data: clients,
fields: [
{ title:"번호", name: "noticeNo" , type: "number" , width: 50, align: "center"},
{ title:"유형", name: "noticeType", type: "select", width: 80, align: "center", items: noticeTypes, valueField: "Id", textField: "Name" },
{ title:"제목", name: "title", type: "text" , width: 200, align: "left" },
{ title:"조회수", name: "readCount", type: "number", width: 50, align: "center" },
{ title:"등록일", name: "regDate", type: "text", width: 100, align: "center"}
]
});
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : listNotices.jsp
*
* @Description : JS-GRID 샘플 화면
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 15. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 15.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">공지사항</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
</head>
<body>
<form:form commandName="reqInfo"
action="${pageContext.request.contextPath}/sample/barcode/getMemberQRCode.do" method="post"
target="_blank"
onSubmit="fncAuthorInsert(document.forms[0]); return false;">
<div id="jsGrid" name="jsGrid" ></div>
</form:form>
<script type="text/javaScript" language="javascript">
// 그리드 데이터
var clients = [
{ "noticeNo": 1, "noticeType": "01", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 2, "noticeType": "02", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 3, "noticeType": "03", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 4, "noticeType": "04", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 5, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 6, "noticeType": "06", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 7, "noticeType": "06", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 9, "noticeType": "01", "title": "공지사항 제목입니다.", "readCount": 7, "regDate": "2021-07-11" }
];
// 그리드내 콤보박스 값
var noticeTypes = [
{ Name: "공지" , Id: "01" },
{ Name: "자료" , Id: "02" },
{ Name: "모집" , Id: "03" },
{ Name: "입찰" , Id: "04" },
{ Name: "발표" , Id: "05" },
{ Name: "이벤트", Id: "06" }
];
// 그리드 생성
$("#jsGrid").jsGrid({
width: "100%",
height: "100%",
inserting: false,
editing: false,
sorting: true,
paging: true,
pageSize: 10,
pageButtonCount: 10,
pageIndex: 1,
pageFirstText: " << ",
pagePrevText: " < ",
pageLastText: " >> ",
pageNextText: " > ",
pagerFormat: "{first} {prev} {pages} {next} {last}",
data: clients,
fields: [
{ title:"번호", name: "noticeNo" , type: "number" , width: 50, align: "center"},
{ title:"유형", name: "noticeType", type: "select", width: 80, align: "center", items: noticeTypes, valueField: "Id", textField: "Name" },
{ title:"제목", name: "title", type: "text" , width: 200, align: "left" },
{ title:"조회수", name: "readCount", type: "number", width: 50, align: "center" },
{ title:"등록일", name: "regDate", type: "text", width: 100, align: "center"}
]
});
</script>
</body>
</html>

View File

@ -1,183 +1,183 @@
<%
/**
* <pre>
* @Class Name : listQnAs.jsp
*
* @Description : 묻고답하기 목록을 조회한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 13. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 13.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">묻고답하기</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
<script type="text/javaScript" language="javascript">
window.onload = function() {
//=======================================================
// 그리드 생성 환경설정
//=======================================================
$("#jsGrid").jsGrid({
pageSize : $("#pageSize").val(),
controller: {
loadData: function (filter) { // 그리드에 데이터를 가져올 때 실팽되는 함수
var data = $.Deferred();
//======================================
// 요청 정보 구성 : 시작 (각 요청에 맞게 조정)
//======================================
var reqUrl = "${pageContext.request.contextPath}/board/listQnAsAjax.do";
var searchKeyword = document.articleForm.searchKeyword.value;
var pageIndex = ( filter && filter.pageIndex ? filter.pageIndex : $("#pageIndex").val());
var pageSize = ( filter && filter.pageSize ? filter.pageSize : $("#pageSize").val());
$("#pageIndex").val(pageIndex);
var inputData = {
"searchKeyword" : searchKeyword
, "pageIndex" : pageIndex
, "pageSize": pageSize};
//--------------------------------------
// 요청 처리
//--------------------------------------
$.ajax({
type: "post",
contentType: "application/json; charset=utf-8",
url: reqUrl,
dataType: "json",
data: JSON.stringify(inputData),
}).done(function(response){
<%
// 그리드 데이터 예시 :
// (1) 페이징 클라이언트에서 수행하는 경우(pageloading = false) : [{ "articleNo": 1, "articleType": "01" }, { "articleNo": 2, "articleType": "02" }]
// (2) 페이징 서버에서 수행하는 경우(pageloading = true) : {data: [{...}], itemsCount: 255}
%>
data.resolve(JSON.parse(response));
});
return data.promise();
} // loadData
},
rowClick: function(args) { // 행 클릭 시, 실행되는 이벤트 함수
// 클릭된 행의 자료 객체
var getData = args.item;
// 추출할 컬럼의 데이터 가져오기
var articleNo = getData["articleNo"];
// 상세 내용 보기
fn_view_detail(articleNo);
},
//======================================
// 그리드 컬럼 정의 (각 요청에 맞게 조정)
//======================================
fields: [
{ title:"번호", name: "articleNo" , type: "number" , width: 50, align: "center"},
{ title:"제목", name: "title", type: "text" , width: 200, align: "left" },
{ title:"작성자", name: "writerName", type: "number", width: 50, align: "center" },
{ title:"등록일", name: "regDate", type: "text", width: 100, align: "center"},
{ title:"상태", name: "replyStatus", type: "text", width: 80, align: "center" }
]
});
// 페이지 크기 변경시 재조회
$("#pageSize").on("change", function(e) {
fn_search_article($("#pageSize").val(), 1);
});
// 검색 버튼 클릭
$("#btnSearch").on("click", function(e) {
fn_search_article($("#pageSize").val(), 1);
});
//초기 자료 조회
fn_search_article();
}; // window.onload
// 선택한 게시글 상세 보기로 이동
function fn_view_detail(articleNo) {
$("#articleNo").val(articleNo);
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/selectQnA.do");
$("#articleForm").submit();
}
// 그리드 데이터 조회 호출
function fn_search_article(pageSize, pageIndex) {
$("#jsGrid").jsGrid("search"
, {'pageSize' : (pageSize ? pageSize : fn_getIntValue("pageSize", ${pageSize} )),
'pageIndex': (pageIndex ? pageIndex : fn_getIntValue("pageIndex", 1))
}
);
}
</script>
</head>
<body>
<h1>${pageTitle }</h1>
<form name="articleForm" id="articleForm"
action="${pageContext.request.contextPath}/board/listQnAs.do"
method="post">
<!-- 검색조건 -->
<select name="pageSize" id="pageSize" title="목록에 보여줄 글 개수">
<c:forEach var="pageSizeItem" items="${pageSizeCodes}" varStatus="status">
<option value="<c:out value="${pageSizeItem.code }" />" <c:if test="${pageSizeItem.code == pageSize }">selected</c:if> ><c:out value="${pageSizeItem.name }" /></option>
</c:forEach>
</select>
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${pageIndex }" size="5" maxlength="5" />
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="${searchKeyword }" size="35" maxlength="50" />
<input type="button" name="btnSearch" id="btnSearch" value="검색" />
<div id="jsGrid" name="jsGrid" style="height: 100%"></div>
<button type="button" name="btnNew" id="btnNew" class="float"
onclick="javascript:location.href='${pageContext.request.contextPath}/board/insertQnAForm.do';">글쓰기</button>
<input type="text" name="articleNo" id="articleNo" value="" title="선택글번호" readonly />
</form>
</body>
</html>
<%
/**
* <pre>
* @Class Name : listQnAs.jsp
*
* @Description : 묻고답하기 목록을 조회한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 13. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 13.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">묻고답하기</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
<script type="text/javaScript" language="javascript">
window.onload = function() {
//=======================================================
// 그리드 생성 환경설정
//=======================================================
$("#jsGrid").jsGrid({
pageSize : $("#pageSize").val(),
controller: {
loadData: function (filter) { // 그리드에 데이터를 가져올 때 실팽되는 함수
var data = $.Deferred();
//======================================
// 요청 정보 구성 : 시작 (각 요청에 맞게 조정)
//======================================
var reqUrl = "${pageContext.request.contextPath}/board/listQnAsAjax.do";
var searchKeyword = document.articleForm.searchKeyword.value;
var pageIndex = ( filter && filter.pageIndex ? filter.pageIndex : $("#pageIndex").val());
var pageSize = ( filter && filter.pageSize ? filter.pageSize : $("#pageSize").val());
$("#pageIndex").val(pageIndex);
var inputData = {
"searchKeyword" : searchKeyword
, "pageIndex" : pageIndex
, "pageSize": pageSize};
//--------------------------------------
// 요청 처리
//--------------------------------------
$.ajax({
type: "post",
contentType: "application/json; charset=utf-8",
url: reqUrl,
dataType: "json",
data: JSON.stringify(inputData),
}).done(function(response){
<%
// 그리드 데이터 예시 :
// (1) 페이징 클라이언트에서 수행하는 경우(pageloading = false) : [{ "articleNo": 1, "articleType": "01" }, { "articleNo": 2, "articleType": "02" }]
// (2) 페이징 서버에서 수행하는 경우(pageloading = true) : {data: [{...}], itemsCount: 255}
%>
data.resolve(JSON.parse(response));
});
return data.promise();
} // loadData
},
rowClick: function(args) { // 행 클릭 시, 실행되는 이벤트 함수
// 클릭된 행의 자료 객체
var getData = args.item;
// 추출할 컬럼의 데이터 가져오기
var articleNo = getData["articleNo"];
// 상세 내용 보기
fn_view_detail(articleNo);
},
//======================================
// 그리드 컬럼 정의 (각 요청에 맞게 조정)
//======================================
fields: [
{ title:"번호", name: "articleNo" , type: "number" , width: 50, align: "center"},
{ title:"제목", name: "title", type: "text" , width: 200, align: "left" },
{ title:"작성자", name: "writerName", type: "number", width: 50, align: "center" },
{ title:"등록일", name: "regDate", type: "text", width: 100, align: "center"},
{ title:"상태", name: "replyStatus", type: "text", width: 80, align: "center" }
]
});
// 페이지 크기 변경시 재조회
$("#pageSize").on("change", function(e) {
fn_search_article($("#pageSize").val(), 1);
});
// 검색 버튼 클릭
$("#btnSearch").on("click", function(e) {
fn_search_article($("#pageSize").val(), 1);
});
//초기 자료 조회
fn_search_article();
}; // window.onload
// 선택한 게시글 상세 보기로 이동
function fn_view_detail(articleNo) {
$("#articleNo").val(articleNo);
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/selectQnA.do");
$("#articleForm").submit();
}
// 그리드 데이터 조회 호출
function fn_search_article(pageSize, pageIndex) {
$("#jsGrid").jsGrid("search"
, {'pageSize' : (pageSize ? pageSize : fn_getIntValue("pageSize", ${pageSize} )),
'pageIndex': (pageIndex ? pageIndex : fn_getIntValue("pageIndex", 1))
}
);
}
</script>
</head>
<body>
<h1>${pageTitle }</h1>
<form name="articleForm" id="articleForm"
action="${pageContext.request.contextPath}/board/listQnAs.do"
method="post">
<!-- 검색조건 -->
<select name="pageSize" id="pageSize" title="목록에 보여줄 글 개수">
<c:forEach var="pageSizeItem" items="${pageSizeCodes}" varStatus="status">
<option value="<c:out value="${pageSizeItem.code }" />" <c:if test="${pageSizeItem.code == pageSize }">selected</c:if> ><c:out value="${pageSizeItem.name }" /></option>
</c:forEach>
</select>
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${pageIndex }" size="5" maxlength="5" />
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="${searchKeyword }" size="35" maxlength="50" />
<input type="button" name="btnSearch" id="btnSearch" value="검색" />
<div id="jsGrid" name="jsGrid" style="height: 100%"></div>
<button type="button" name="btnNew" id="btnNew" class="float"
onclick="javascript:location.href='${pageContext.request.contextPath}/board/insertQnAForm.do';">글쓰기</button>
<input type="text" name="articleNo" id="articleNo" value="" title="선택글번호" readonly />
</form>
</body>
</html>

View File

@ -1,157 +1,157 @@
<%
/**
* <pre>
* @Class Name : selectQnA.jsp
*
* @Description : 묻고답하기 상세내용을 조회한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 22.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">묻고답하기 - 상세조회</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
</head>
<body>
<h1>${pageTitle }</h1>
<span style="color:red;">${message }</span>
<br />
<form name="articleForm" id="articleForm"
action="${pageContext.request.contextPath}/board/listQnAs.do"
method="post">
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${pageIndex}" size="5" maxlength="5" readonly />
<input type="text" name="pageSize" id="pageSize" title="목록에 보여줄 글 개" value="${pageSize}" size="5" maxlength="5" readonly />
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="${searchKeyword}" size="35" maxlength="50" readonly />
<input type="text" name="articleNo" id="articleNo" value="${articleNo}" title="선택글번호" readonly />
<input type="text" name="articlePassword" id="articlePassword" value="${articlePassword}" title="글비밀번호" readonly />
<table class="table_content" style="width:100% !important;">
<tr>
<td>유형</td>
<td>Q & A</td>
<td>작성자 : ${article.regUserName }</td>
<td>작성일 : ${article.regDate }</td>
<td>상태 : ${article.repStatus }</td>
</tr>
<tr>
<td rowspan="2">질문내용</td>
<td colspan="4">${article.contentQeust}</td>
</tr>
<tr>
<td colspan="4">${article.contentQeustFile}</td>
</tr>
<tr>
<td rowspan="2">답변내용</td>
<td colspan="4">${article.contentReply}</td>
</tr>
<tr>
<td colspan="4">${article.contentReplyFile}</td>
</tr>
</table>
<br/>
<table class="table_content" style="width:100% !important;">
<tr>
<td>이전글</td>
<td>Q&A</td>
<td><a href=#" onclick="fn_view_detail('${preArticle.articleNo }')">${preArticle.title }</a></td>
<td>작성자 : ${preArticle.regUserName }</td>
<td>작성일 : ${preArticle.regDate }</td>
<td>상태 : ${preArticle.repStatus }</td>
</tr>
<tr>
<td>다음글</td>
<td>Q&A</td>
<td><a href=#" onclick="fn_view_detail('${nextArticle.articleNo }')">${nextArticle.title }</a></td>
<td>작성자 : ${nextArticle.regUserName }</td>
<td>작성일 : ${nextArticle.regDate }</td>
<td>상태 : ${nextArticle.repStatus }</td>
</tr>
</table>
<button type="button" name="btnNew" id="btnNew" class="float"
onclick="fn_list()">목록</button>
<button type="button" name="btnNew" id="btnNew" class="float"
onclick="fn_updatePassword()">수정</button>
</form>
<script type="text/javaScript" language="javascript">
//선택한 게시글 상세 보기로 이동
function fn_view_detail(articleNo) {
$("#articleNo").val(articleNo);
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/selectQnA.do");
$("#articleForm").submit();
}
// 선택한 게시글 상세 보기로 이동
function fn_list() {
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/listQnAs.do");
$("#articleForm").submit();
}
// 수정을 위한 비밀번호 입력
function fn_updateForm(passwd) {
if(passwd == null || passwd == "") {
alert("수정을 위한 게시물의 비밀번호를 입력하여 주시기 바랍니다.");
return;
}
$("#articlePassword").val(passwd);
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/updateQnAForm.do");
$("#articleForm").submit();
}
// 게시글 수정 화면으로 이동
function fn_updatePassword() {
fn_promptPassword("비밀번호를 입력하여 주시기 바랍니다.", "fn_updateForm")
}
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : selectQnA.jsp
*
* @Description : 묻고답하기 상세내용을 조회한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 22. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 22.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">묻고답하기 - 상세조회</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
</head>
<body>
<h1>${pageTitle }</h1>
<span style="color:red;">${message }</span>
<br />
<form name="articleForm" id="articleForm"
action="${pageContext.request.contextPath}/board/listQnAs.do"
method="post">
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${pageIndex}" size="5" maxlength="5" readonly />
<input type="text" name="pageSize" id="pageSize" title="목록에 보여줄 글 개" value="${pageSize}" size="5" maxlength="5" readonly />
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="${searchKeyword}" size="35" maxlength="50" readonly />
<input type="text" name="articleNo" id="articleNo" value="${articleNo}" title="선택글번호" readonly />
<input type="text" name="articlePassword" id="articlePassword" value="${articlePassword}" title="글비밀번호" readonly />
<table class="table_content" style="width:100% !important;">
<tr>
<td>유형</td>
<td>Q & A</td>
<td>작성자 : ${article.regUserName }</td>
<td>작성일 : ${article.regDate }</td>
<td>상태 : ${article.repStatus }</td>
</tr>
<tr>
<td rowspan="2">질문내용</td>
<td colspan="4">${article.contentQeust}</td>
</tr>
<tr>
<td colspan="4">${article.contentQeustFile}</td>
</tr>
<tr>
<td rowspan="2">답변내용</td>
<td colspan="4">${article.contentReply}</td>
</tr>
<tr>
<td colspan="4">${article.contentReplyFile}</td>
</tr>
</table>
<br/>
<table class="table_content" style="width:100% !important;">
<tr>
<td>이전글</td>
<td>Q&A</td>
<td><a href=#" onclick="fn_view_detail('${preArticle.articleNo }')">${preArticle.title }</a></td>
<td>작성자 : ${preArticle.regUserName }</td>
<td>작성일 : ${preArticle.regDate }</td>
<td>상태 : ${preArticle.repStatus }</td>
</tr>
<tr>
<td>다음글</td>
<td>Q&A</td>
<td><a href=#" onclick="fn_view_detail('${nextArticle.articleNo }')">${nextArticle.title }</a></td>
<td>작성자 : ${nextArticle.regUserName }</td>
<td>작성일 : ${nextArticle.regDate }</td>
<td>상태 : ${nextArticle.repStatus }</td>
</tr>
</table>
<button type="button" name="btnNew" id="btnNew" class="float"
onclick="fn_list()">목록</button>
<button type="button" name="btnNew" id="btnNew" class="float"
onclick="fn_updatePassword()">수정</button>
</form>
<script type="text/javaScript" language="javascript">
//선택한 게시글 상세 보기로 이동
function fn_view_detail(articleNo) {
$("#articleNo").val(articleNo);
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/selectQnA.do");
$("#articleForm").submit();
}
// 선택한 게시글 상세 보기로 이동
function fn_list() {
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/listQnAs.do");
$("#articleForm").submit();
}
// 수정을 위한 비밀번호 입력
function fn_updateForm(passwd) {
if(passwd == null || passwd == "") {
alert("수정을 위한 게시물의 비밀번호를 입력하여 주시기 바랍니다.");
return;
}
$("#articlePassword").val(passwd);
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/updateQnAForm.do");
$("#articleForm").submit();
}
// 게시글 수정 화면으로 이동
function fn_updatePassword() {
fn_promptPassword("비밀번호를 입력하여 주시기 바랍니다.", "fn_updateForm")
}
</script>
</body>
</html>

View File

@ -1,143 +1,143 @@
<%
/**
* <pre>
* @Class Name : updateQnAForm.jsp
*
* @Description : 묻고답하기 수정화면을 표출한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 23. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 23.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">묻고답하기 - 수정</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
</head>
<body>
<h1>${pageTitle }</h1>
<span style="color:red;">${message }</span>
<br />
<form name="articleForm" id="articleForm"
action="${pageContext.request.contextPath}/board/listQnAs.do"
method="post">
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${pageIndex}" size="5" maxlength="5" readonly />
<input type="text" name="pageSize" id="pageSize" title="목록에 보여줄 글 개" value="${pageSize}" size="5" maxlength="5" readonly />
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="${searchKeyword}" size="35" maxlength="50" readonly />
<input type="text" name="articleNo" id="articleNo" value="${articleNo}" title="선택글번호" readonly />
<input type="text" name="articlePassword" id="articlePassword" value="${articlePassword}" title="글비밀번호" readonly />
<table class="table_content" style="width:100% !important;">
<tr>
<td>제목</td>
<td><input type="text" name="title" id="title" title="제목" value="${article.title}" size="100" maxlength="200" /></td>
</tr>
<tr>
<td>작성자</td>
<td><input type="text" name="regUserName" id="regUserName" title="제목" value="${article.regUserName}" size="100" maxlength="200" /></td>
</tr>
<tr>
<td>이메일</td>
<td><input type="text" name="email" id="email" title="이메일" value="${article.email}" size="100" maxlength="200" /></td>
</tr>
<tr>
<td>기존비밀번호</td>
<td><input type="text" name="encArticlePassword" id="encArticlePassword" title="제목" value="${encArticlePassword}" size="100" maxlength="200" readonly /></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="text" name="articlePassword" id="articlePassword" title="비밀번호" value="${article.articlePassword}" size="100" maxlength="200" /></td>
</tr>
<tr>
<td>질문내용</td>
<td><textarea name="contentQeust" id="contentQeust">${article.contentQeust}</textarea></td>
</tr>
</table>
<br/>
<button type="button" name="btnNew" id="btnNew" class="float"
onclick="fn_view_detail('${articleNo}')">취소</button>
<button type="button" name="btnNew" id="btnNew" class="float"
onclick="fn_update()">저장</button>
</form>
<script type="text/javaScript" language="javascript">
//선택한 게시글 상세 보기로 이동
function fn_view_detail(articleNo) {
$("#articleNo").val(articleNo);
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/selectQnA.do");
$("#articleForm").submit();
}
// 선택한 게시글 상세 보기로 이동
function fn_list() {
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/listQnAs.do");
$("#articleForm").submit();
}
var fn_updateForm = function (passwd) {
if(passwd == null || passwd == "") {
alert("수정을 위한 게시물의 비밀번호를 입력하여 주시기 바랍니다.");
return;
}
$("#articlePassword").val(passwd);
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/updateQnAForm.do");
$("#articleForm").submit();
}
// 수정 처리
function fn_update() {
if(!confirm("저장하시겠습니까?")) return;
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/updateQnA.do");
$("#articleForm").submit();
}
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : updateQnAForm.jsp
*
* @Description : 묻고답하기 수정화면을 표출한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 23. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 23.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">묻고답하기 - 수정</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
</head>
<body>
<h1>${pageTitle }</h1>
<span style="color:red;">${message }</span>
<br />
<form name="articleForm" id="articleForm"
action="${pageContext.request.contextPath}/board/listQnAs.do"
method="post">
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${pageIndex}" size="5" maxlength="5" readonly />
<input type="text" name="pageSize" id="pageSize" title="목록에 보여줄 글 개" value="${pageSize}" size="5" maxlength="5" readonly />
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="${searchKeyword}" size="35" maxlength="50" readonly />
<input type="text" name="articleNo" id="articleNo" value="${articleNo}" title="선택글번호" readonly />
<input type="text" name="articlePassword" id="articlePassword" value="${articlePassword}" title="글비밀번호" readonly />
<table class="table_content" style="width:100% !important;">
<tr>
<td>제목</td>
<td><input type="text" name="title" id="title" title="제목" value="${article.title}" size="100" maxlength="200" /></td>
</tr>
<tr>
<td>작성자</td>
<td><input type="text" name="regUserName" id="regUserName" title="제목" value="${article.regUserName}" size="100" maxlength="200" /></td>
</tr>
<tr>
<td>이메일</td>
<td><input type="text" name="email" id="email" title="이메일" value="${article.email}" size="100" maxlength="200" /></td>
</tr>
<tr>
<td>기존비밀번호</td>
<td><input type="text" name="encArticlePassword" id="encArticlePassword" title="제목" value="${encArticlePassword}" size="100" maxlength="200" readonly /></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="text" name="articlePassword" id="articlePassword" title="비밀번호" value="${article.articlePassword}" size="100" maxlength="200" /></td>
</tr>
<tr>
<td>질문내용</td>
<td><textarea name="contentQeust" id="contentQeust">${article.contentQeust}</textarea></td>
</tr>
</table>
<br/>
<button type="button" name="btnNew" id="btnNew" class="float"
onclick="fn_view_detail('${articleNo}')">취소</button>
<button type="button" name="btnNew" id="btnNew" class="float"
onclick="fn_update()">저장</button>
</form>
<script type="text/javaScript" language="javascript">
//선택한 게시글 상세 보기로 이동
function fn_view_detail(articleNo) {
$("#articleNo").val(articleNo);
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/selectQnA.do");
$("#articleForm").submit();
}
// 선택한 게시글 상세 보기로 이동
function fn_list() {
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/listQnAs.do");
$("#articleForm").submit();
}
var fn_updateForm = function (passwd) {
if(passwd == null || passwd == "") {
alert("수정을 위한 게시물의 비밀번호를 입력하여 주시기 바랍니다.");
return;
}
$("#articlePassword").val(passwd);
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/updateQnAForm.do");
$("#articleForm").submit();
}
// 수정 처리
function fn_update() {
if(!confirm("저장하시겠습니까?")) return;
$("#articleForm").attr("action", "${pageContext.request.contextPath}/board/updateQnA.do");
$("#articleForm").submit();
}
</script>
</body>
</html>

View File

@ -1,38 +1,38 @@
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<c:set var="pageTitle"><spring:message code="comCmmErr.accessDenied.code"/></c:set><!-- 사용자접근권한 에러 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title><spring:message code="title.html"/></title>
<link href="<c:url value='/css/egovframework/com/com.css' />" rel="stylesheet" type="text/css" />
<script language="javascript">
function fncGoAfterErrorPage(){
history.back(-2);
}
</script>
</head>
<body>
<div style="width: 1000px; margin: 50px auto 50px;">
<p style="font-size: 18px; color: #000; margin-bottom: 10px; "><img src="<c:url value='/images/egovframework/com/cmm/er_logo.jpg' />" width="379" height="57" /></p>
<div style="border: ppx solid #666; padding: 20px;">
<!-- Xss(Cross Site Scripting) Error -->
<p style="color:red; margin-bottom: 8px; ">${pageTitle}</p>
<div class="boxType1" style="width: 700px;">
<div class="box">
<div class="error">
<p class="title"><spring:message code="comCmmErr.accessDenied.title" /></p><!-- 현재 페이지에 대한 접근권한이 없습니다! -->
<p class="cont mb20">${pageTitle}<br /></p>
<span class="btn_style1 blue"><a href="javascript:fncGoAfterErrorPage();"><spring:message code="comCmmErr.button" /><!-- 이전 페이지 --></a></span>
</div>
</div>
</div>
</div>
</div>
</body>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<c:set var="pageTitle"><spring:message code="comCmmErr.accessDenied.code"/></c:set><!-- 사용자접근권한 에러 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title><spring:message code="title.html"/></title>
<link href="<c:url value='/css/egovframework/com/com.css' />" rel="stylesheet" type="text/css" />
<script language="javascript">
function fncGoAfterErrorPage(){
history.back(-2);
}
</script>
</head>
<body>
<div style="width: 1000px; margin: 50px auto 50px;">
<p style="font-size: 18px; color: #000; margin-bottom: 10px; "><img src="<c:url value='/images/egovframework/com/cmm/er_logo.jpg' />" width="379" height="57" /></p>
<div style="border: ppx solid #666; padding: 20px;">
<!-- Xss(Cross Site Scripting) Error -->
<p style="color:red; margin-bottom: 8px; ">${pageTitle}</p>
<div class="boxType1" style="width: 700px;">
<div class="box">
<div class="error">
<p class="title"><spring:message code="comCmmErr.accessDenied.title" /></p><!-- 현재 페이지에 대한 접근권한이 없습니다! -->
<p class="cont mb20">${pageTitle}<br /></p>
<span class="btn_style1 blue"><a href="javascript:fncGoAfterErrorPage();"><spring:message code="comCmmErr.button" /><!-- 이전 페이지 --></a></span>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,39 +1,39 @@
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<c:set var="pageTitle"><spring:message code="comCmmErr.bizException.code"/></c:set><!-- 비즈니스로직처리 에러 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title><spring:message code="title.html"/></title>
<link href="<c:url value='/css/egovframework/com/com.css' />" rel="stylesheet" type="text/css" />
<script language="javascript">
function fncGoAfterErrorPage(){
history.back(-2);
}
</script>
</head>
<body>
<div style="width: 1000px; margin: 50px auto 50px;">
<p style="font-size: 18px; color: #000; margin-bottom: 10px; "><img src="<c:url value='/images/egovframework/com/cmm/er_logo.jpg' />" width="379" height="57" /></p>
<div style="border: ppx solid #666; padding: 20px;">
<!-- Xss(Cross Site Scripting) Error -->
<p style="color:red; margin-bottom: 8px; ">${pageTitle}<br /></p>
<div class="boxType1" style="width: 700px;">
<div class="box">
<div class="error">
<p class="title"><spring:message code="comCmmErr.bizException.title" /></p><!-- 비즈니스 로직 처리 중 발생했습니다! -->
<p class="cont mb20">${pageTitle}<br /></p>
<span class="btn_style1 blue"><a href="javascript:fncGoAfterErrorPage();"><spring:message code="comCmmErr.button" /><!-- 이전 페이지 --></a></span>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<c:set var="pageTitle"><spring:message code="comCmmErr.bizException.code"/></c:set><!-- 비즈니스로직처리 에러 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title><spring:message code="title.html"/></title>
<link href="<c:url value='/css/egovframework/com/com.css' />" rel="stylesheet" type="text/css" />
<script language="javascript">
function fncGoAfterErrorPage(){
history.back(-2);
}
</script>
</head>
<body>
<div style="width: 1000px; margin: 50px auto 50px;">
<p style="font-size: 18px; color: #000; margin-bottom: 10px; "><img src="<c:url value='/images/egovframework/com/cmm/er_logo.jpg' />" width="379" height="57" /></p>
<div style="border: ppx solid #666; padding: 20px;">
<!-- Xss(Cross Site Scripting) Error -->
<p style="color:red; margin-bottom: 8px; ">${pageTitle}<br /></p>
<div class="boxType1" style="width: 700px;">
<div class="box">
<div class="error">
<p class="title"><spring:message code="comCmmErr.bizException.title" /></p><!-- 비즈니스 로직 처리 중 발생했습니다! -->
<p class="cont mb20">${pageTitle}<br /></p>
<span class="btn_style1 blue"><a href="javascript:fncGoAfterErrorPage();"><spring:message code="comCmmErr.button" /><!-- 이전 페이지 --></a></span>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,4 +1,4 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="application/javascript" pageEncoding="UTF-8"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="application/javascript" pageEncoding="UTF-8"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<validator:javascript dynamicJavascript="false" staticJavascript="true"/>

View File

@ -1,59 +1,59 @@
<%
/**
* <pre>
* @Class Name : selectGreeting.jsp
*
* @Description : 인사말 조회
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 27. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 27.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">인사말 </c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
</head>
<body>
<h1>${pageTitle } - ${deptName }</h1>
<img src="${logoUrl }" />
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent }
</div>
<script type="text/javaScript" language="javascript">
window.onload = function() {
};
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : selectGreeting.jsp
*
* @Description : 인사말 조회
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 27. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 27.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">인사말 </c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
</head>
<body>
<h1>${pageTitle } - ${deptName }</h1>
<img src="${logoUrl }" />
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent }
</div>
<script type="text/javaScript" language="javascript">
window.onload = function() {
};
</script>
</body>
</html>

View File

@ -1,63 +1,63 @@
<%
/**
* <pre>
* @Class Name : selectNCultureLocationInfo.jsp
*
* @Description : 찾아오시는길 조회
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 27. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 27.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">찾아오시는길 </c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
</head>
<body>
<h1>${pageTitle }</h1>
주소 : ${zipcode } ${addr1 } ${addr2 } <br />
전화번호 : ${tel } <br />
팩스번호 : ${fax } <br />
&nbsp;<br/>
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent }
</div>
<script type="text/javaScript" language="javascript">
window.onload = function() {
};
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : selectNCultureLocationInfo.jsp
*
* @Description : 찾아오시는길 조회
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 27. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 27.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">찾아오시는길 </c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
</head>
<body>
<h1>${pageTitle }</h1>
주소 : ${zipcode } ${addr1 } ${addr2 } <br />
전화번호 : ${tel } <br />
팩스번호 : ${fax } <br />
&nbsp;<br/>
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent }
</div>
<script type="text/javaScript" language="javascript">
window.onload = function() {
};
</script>
</body>
</html>

View File

@ -1,58 +1,58 @@
<%
/**
* <pre>
* @Class Name : selectNCultureOperationInfo.jsp
*
* @Description : 이용안내 조회
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 27. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 27.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">이용안내 </c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
</head>
<body>
<h1>${pageTitle }</h1>
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent }
</div>
<script type="text/javaScript" language="javascript">
window.onload = function() {
};
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : selectNCultureOperationInfo.jsp
*
* @Description : 이용안내 조회
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 27. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 27.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">이용안내 </c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
</head>
<body>
<h1>${pageTitle }</h1>
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent }
</div>
<script type="text/javaScript" language="javascript">
window.onload = function() {
};
</script>
</body>
</html>

View File

@ -1,58 +1,58 @@
<%
/**
* <pre>
* @Class Name : selectPrivacyInfo.jsp
*
* @Description : 개인정보처리방침 조회
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 27. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 27.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">개인정보처리방침 </c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
</head>
<body>
<h1>${pageTitle }</h1>
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent }
</div>
<script type="text/javaScript" language="javascript">
window.onload = function() {
};
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : selectPrivacyInfo.jsp
*
* @Description : 개인정보처리방침 조회
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 27. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 27.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">개인정보처리방침 </c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
</head>
<body>
<h1>${pageTitle }</h1>
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent }
</div>
<script type="text/javaScript" language="javascript">
window.onload = function() {
};
</script>
</body>
</html>

View File

@ -1,58 +1,58 @@
<%
/**
* <pre>
* @Class Name : selectTermsInfo.jsp
*
* @Description : 이용약관 조회
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 27. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 27.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">이용약관</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
</head>
<body>
<h1>${pageTitle }</h1>
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent }
</div>
<script type="text/javaScript" language="javascript">
window.onload = function() {
};
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : selectTermsInfo.jsp
*
* @Description : 이용약관 조회
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 27. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 7. 27.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">이용약관</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
</head>
<body>
<h1>${pageTitle }</h1>
<div id="informContent" name="informContent" style="width: 100%; border:1px solid gray;">
${informContent }
</div>
<script type="text/javaScript" language="javascript">
window.onload = function() {
};
</script>
</body>
</html>

View File

@ -1,36 +1,36 @@
<%
/**
* <pre>
* @Class Name : initPasswordResult.jsp
*
* @Description : 비밀번호 찾기 결과
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
비밀번호찾기 결과페이지
</body>
<%
/**
* <pre>
* @Class Name : initPasswordResult.jsp
*
* @Description : 비밀번호 찾기 결과
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
비밀번호찾기 결과페이지
</body>
</html>

View File

@ -1,393 +1,393 @@
<%
/**
* <pre>
* @Class Name : insertMemberInfoForm.jsp
*
* @Description : 회원가입폼
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle} <spring:message code="title.create" /></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javaScript" language="javascript" defer="defer">
function signUp(){
var p = document.getElementById('password');
var p_cf = document.getElementById('passwordConfirm');
if(p.value != p_cf.value)
{
alert("비밀번호가 일치하지 않습니다. 확인해 주세요.");
p_cf.focus();
return false;
}
if($("#phoneCertYn").val()!="Y")
{
alert("휴대전화 인증이 필요합니다.");
return false;
}
if($("#zipNo").val()=="" || $("#roadAddrPart").val()=="" || $("#addrDetail").val()=="")
{
alert("주소를 입력해주세요.");
return false;
}
if(confirm("회원가입하시겠습니까?")){
alert("회원가입 되었습니다.");
return true;
}else{
return false;
}
}
function goPopup(){
// 주소검색을 수행할 팝업 페이지를 호출합니다.
// 호출된 페이지(jusopopup.jsp)에서 실제 주소검색URL(http://www.juso.go.kr/addrlink/addrLinkUrl.do)를 호출하게 됩니다.
var pop = window.open("/nlib/popup/jusoPopup.do","pop","width=570,height=420, scrollbars=yes, resizable=yes");
// 모바일 웹인 경우, 호출된 페이지(jusopopup.jsp)에서 실제 주소검색URL(http://www.juso.go.kr/addrlink/addrMobileLinkUrl.do)를 호출하게 됩니다.
//var pop = window.open("/popup/jusoPopup.jsp","pop","scrollbars=yes, resizable=yes");
}
$(document).ready(function() {
<%
//핸드폰 번호가 변하는것 실시간 감지
%>
$("#phone").on("propertychange change keyup paste input", function() {
$("#phoneCertYn").val("N");
});
})
<%
//핸드폰 인증번호 받기
%>
function phoneCert(){
$("#phone").val($("#phone").val().replace(/-/gi,""));
var regExp = /^\d{3}\d{3,4}\d{4}$/;
if(!regExp.test($("#phone").val()) || $("#phone").val()==""){
alert("형식에 맞지 않는 번호입니다.");
return false;
}
$.ajax({
url : "/nlib/member/phoneCertNum.ajax",
type : "POST",
async: false,
data : {"phone" : $("#phone").val()},
success : function(result){
alert("인증번호가 발송됐습니다.");
//인증번호 확인창
$("#phoneCertForm").css("display","block")
},error : function(){
}
})
}
<%
//핸드폰 인증번호 확인
%>
function certNumCheck(){
<%
//ajax 사용자가 입력한 번호를 보내 RESTfull server에서 확인 success or fail 반환 (3분이내인지도)
%>
$.ajax({
url : "/nlib/member/phoneCertNumChk.ajax",
type : "POST",
data : {"phoneCertNum" : $("#phoneCertNum").val(),
"phone" : $("#phone").val()},
async: false,
success : function(result){
if(result=="true")
{
alert("인증되었습니다.");
$("#phoneCertYn").val("Y");
}else{
alert("인증에 실패했습니다.");
}
},error : function(){
}
})
}
function jusoCallBack(zipNo,roadAddrPart,addrDetail){
// 팝업페이지에서 주소입력한 정보를 받아서, 현 페이지에 정보를 등록합니다.
$("#zipNo").val(zipNo);
$("#roadAddrPart").val(roadAddrPart);
$("#addrDetail").val(addrDetail);
}
document.addEventListener('keydown', function(event) {
if (event.keyCode === 13) {
event.preventDefault();
}
}, true);
function checkBirthday() {
var birthday;
var yy = $("#birth_yy").val();
var mm = $("#birth_mm option:selected").val();
var dd = $("#birth_dd").val();
var lang = "ko_KR";
var oyy = $("#birth_yy");
var omm = $("#birth_mm");
var odd = $("#birth_dd");
if (mm.length == 1) {
mm = "0" + mm;
}
if (dd.length == 1) {
dd = "0" + dd;
}
birthday = yy + mm + dd;
if (!isValidDate(birthday)) {
return false;
}
var age = calcAge(birthday);
if (age < 0) {
return false;
} else if (yy < 1900) {
return false;
} else {
return true;
}
}
function isValidDate(param) {
try {
param = param.replace(/-/g, '');
// 자리수가 맞지않을때
if (isNaN(param) || param.length != 8) {
return false;
}
var year = Number(param.substring(0, 4));
var month = Number(param.substring(4, 6));
var day = Number(param.substring(6, 8));
if (month < 1 || month > 12) {
return false;
}
var maxDaysInMonth = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
var maxDay = maxDaysInMonth[month - 1];
// 윤년 체크
if (month == 2 && (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) {
maxDay = 29;
}
if (day <= 0 || day > maxDay) {
return false;
}
return true;
} catch (err) {
return false;
}
;
}
function calcAge(birth) {
var date = new Date();
var year = date.getFullYear();
var month = (date.getMonth() + 1);
var day = date.getDate();
if (month < 10)
month = '0' + month;
if (day < 10)
day = '0' + day;
var monthDay = month + '' + day;
birth = birth.replace('-', '').replace('-', '');
var birthdayy = birth.substr(0, 4);
var birthdaymd = birth.substr(4, 4);
var age = monthDay < birthdaymd ? year - birthdayy - 1 : year - birthdayy;
return age;
}
</script>
<style type="text/css">
body {
padding-top:0px;
margin-top:0px;
background-color:#f5f5f5;
}
.page-header {
padding-top:0px;
margin-top:0px;
}
.form-horizontal .control-label.text-left{
text-align:left;
}
.form-horizontal .form-group {
height:50px;
}
h3 span.ok {
color:#01A9DB;
}
label.error {
font-family:"돋움", Dotum, "Apple SD Gothic Neo", Helvetica, Sans-serif;
font-size:9pt;
font-weight:600;
padding:3px 0 0 10px;
color:#FF0000;
display:block;
}
</style>
</head>
<body>
<div id="wrap">
<br><br>
<b><font size="6" color="gray">회원가입</font></b>
<br><br><br>
<form id="joinForm" name="joinForm" action="/nlib/member/insertMemberInfo.do" method="post" onsubmit="return signUp()">
<table>
<tr>
<td id="title">아이디</td>
<td>
<input type="email" id="id" name="id" maxlength="30" value=<c:out value="${loginVO.id}"/> required readonly >
</td>
</tr>
<tr>
<td id="title">비밀번호</td>
<td>
<input type="password" id="password" name="password" minlength="8" maxlength="16"
oninvalid="this.setCustomValidity('8~16자 영문 대 소문자, 숫자, 특수문자를 사용하세요.')"
oninput="this.setCustomValidity('')"
pattern="^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,16}$" required>
</td>
</tr>
<tr>
<td id="title">비밀번호 확인</td>
<td>
<input type="password" id="passwordConfirm" name="passwordConfirm" minlength="8" maxlength="16" required>
</td>
</tr>
<tr>
<td id="title">이름</td>
<td>
<input type="text" id="name" name="name" maxlength="20" required value=<c:out value="${loginVO.name}"/> >
</td>
</tr>
<tr>
<td id="title">생일</td>
<td>
<input type="text" id="birth_yy" name="birth_yy" maxlength="4" placeholder="년(4자)" required pattern="^(19|20)\d{2}$" value=<c:out value="${loginVO.birth_yy}"/> >
<select id="birth_mm" name="birth_mm" value=<c:out value="${loginVO.birth_mm}"/> required>
<option value="">월</option>
<option value="01" >1</option>
<option value="02" >2</option>
<option value="03" >3</option>
<option value="04" >4</option>
<option value="05" >5</option>
<option value="06" >6</option>
<option value="07" >7</option>
<option value="08" >8</option>
<option value="09" >9</option>
<option value="10" >10</option>
<option value="11" >11</option>
<option value="12" >12</option>
</select>
<input type="text" id="birth_dd" name="birth_dd" size="2" maxlength="2" placeholder="일" size="4" value=<c:out value="${loginVO.birth_dd}"/> required pattern="^(0[1-9]|[12][0-9]|3[0-1])$">
</td>
</tr>
<tr>
<td id="title">휴대전화</td>
<td id="Cert">
<input type="text" id="phone" name="phone" required value=<c:out value="${loginVO.phone}"/>><button type="button" style="text-align:left;" class="btn-warning" onclick="phoneCert()" required>인증번호 받기</button>
<div id="phoneCertForm" style="display:none;"><br><input type='text' id='phoneCertNum' name='phoneCertNum'> <button type='button' style='text-align:left;' class='btn-warning' onclick='certNumCheck()' >인증번호 확인</button></div>
</td>
</tr>
<tr>
<td id="title">주소</td>
<td>
<input type="text" id="zipNo" name="zipNo" readonly ><button type="button" style="text-align:left;" class="btn-warning" onclick="goPopup()">주소검색</button><br>
<input type="text" id="roadAddrPart" name="roadAddrPart" readonly ><input type="text" id="addrDetail" name="addrDetail" readonly >
</td>
</tr>
</table>
<br>
<input type="hidden" id="phoneCertYn" name="phoneCertYn" value=<c:out value="N"/>>
<input type="submit" value="가입"/> <input type="button" value="취소">
</form>
</div>
</body>
</html>
<%
/**
* <pre>
* @Class Name : insertMemberInfoForm.jsp
*
* @Description : 회원가입폼
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle} <spring:message code="title.create" /></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javaScript" language="javascript" defer="defer">
function signUp(){
var p = document.getElementById('password');
var p_cf = document.getElementById('passwordConfirm');
if(p.value != p_cf.value)
{
alert("비밀번호가 일치하지 않습니다. 확인해 주세요.");
p_cf.focus();
return false;
}
if($("#phoneCertYn").val()!="Y")
{
alert("휴대전화 인증이 필요합니다.");
return false;
}
if($("#zipNo").val()=="" || $("#roadAddrPart").val()=="" || $("#addrDetail").val()=="")
{
alert("주소를 입력해주세요.");
return false;
}
if(confirm("회원가입하시겠습니까?")){
alert("회원가입 되었습니다.");
return true;
}else{
return false;
}
}
function goPopup(){
// 주소검색을 수행할 팝업 페이지를 호출합니다.
// 호출된 페이지(jusopopup.jsp)에서 실제 주소검색URL(http://www.juso.go.kr/addrlink/addrLinkUrl.do)를 호출하게 됩니다.
var pop = window.open("/nlib/popup/jusoPopup.do","pop","width=570,height=420, scrollbars=yes, resizable=yes");
// 모바일 웹인 경우, 호출된 페이지(jusopopup.jsp)에서 실제 주소검색URL(http://www.juso.go.kr/addrlink/addrMobileLinkUrl.do)를 호출하게 됩니다.
//var pop = window.open("/popup/jusoPopup.jsp","pop","scrollbars=yes, resizable=yes");
}
$(document).ready(function() {
<%
//핸드폰 번호가 변하는것 실시간 감지
%>
$("#phone").on("propertychange change keyup paste input", function() {
$("#phoneCertYn").val("N");
});
})
<%
//핸드폰 인증번호 받기
%>
function phoneCert(){
$("#phone").val($("#phone").val().replace(/-/gi,""));
var regExp = /^\d{3}\d{3,4}\d{4}$/;
if(!regExp.test($("#phone").val()) || $("#phone").val()==""){
alert("형식에 맞지 않는 번호입니다.");
return false;
}
$.ajax({
url : "/nlib/member/phoneCertNum.ajax",
type : "POST",
async: false,
data : {"phone" : $("#phone").val()},
success : function(result){
alert("인증번호가 발송됐습니다.");
//인증번호 확인창
$("#phoneCertForm").css("display","block")
},error : function(){
}
})
}
<%
//핸드폰 인증번호 확인
%>
function certNumCheck(){
<%
//ajax 사용자가 입력한 번호를 보내 RESTfull server에서 확인 success or fail 반환 (3분이내인지도)
%>
$.ajax({
url : "/nlib/member/phoneCertNumChk.ajax",
type : "POST",
data : {"phoneCertNum" : $("#phoneCertNum").val(),
"phone" : $("#phone").val()},
async: false,
success : function(result){
if(result=="true")
{
alert("인증되었습니다.");
$("#phoneCertYn").val("Y");
}else{
alert("인증에 실패했습니다.");
}
},error : function(){
}
})
}
function jusoCallBack(zipNo,roadAddrPart,addrDetail){
// 팝업페이지에서 주소입력한 정보를 받아서, 현 페이지에 정보를 등록합니다.
$("#zipNo").val(zipNo);
$("#roadAddrPart").val(roadAddrPart);
$("#addrDetail").val(addrDetail);
}
document.addEventListener('keydown', function(event) {
if (event.keyCode === 13) {
event.preventDefault();
}
}, true);
function checkBirthday() {
var birthday;
var yy = $("#birth_yy").val();
var mm = $("#birth_mm option:selected").val();
var dd = $("#birth_dd").val();
var lang = "ko_KR";
var oyy = $("#birth_yy");
var omm = $("#birth_mm");
var odd = $("#birth_dd");
if (mm.length == 1) {
mm = "0" + mm;
}
if (dd.length == 1) {
dd = "0" + dd;
}
birthday = yy + mm + dd;
if (!isValidDate(birthday)) {
return false;
}
var age = calcAge(birthday);
if (age < 0) {
return false;
} else if (yy < 1900) {
return false;
} else {
return true;
}
}
function isValidDate(param) {
try {
param = param.replace(/-/g, '');
// 자리수가 맞지않을때
if (isNaN(param) || param.length != 8) {
return false;
}
var year = Number(param.substring(0, 4));
var month = Number(param.substring(4, 6));
var day = Number(param.substring(6, 8));
if (month < 1 || month > 12) {
return false;
}
var maxDaysInMonth = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
var maxDay = maxDaysInMonth[month - 1];
// 윤년 체크
if (month == 2 && (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) {
maxDay = 29;
}
if (day <= 0 || day > maxDay) {
return false;
}
return true;
} catch (err) {
return false;
}
;
}
function calcAge(birth) {
var date = new Date();
var year = date.getFullYear();
var month = (date.getMonth() + 1);
var day = date.getDate();
if (month < 10)
month = '0' + month;
if (day < 10)
day = '0' + day;
var monthDay = month + '' + day;
birth = birth.replace('-', '').replace('-', '');
var birthdayy = birth.substr(0, 4);
var birthdaymd = birth.substr(4, 4);
var age = monthDay < birthdaymd ? year - birthdayy - 1 : year - birthdayy;
return age;
}
</script>
<style type="text/css">
body {
padding-top:0px;
margin-top:0px;
background-color:#f5f5f5;
}
.page-header {
padding-top:0px;
margin-top:0px;
}
.form-horizontal .control-label.text-left{
text-align:left;
}
.form-horizontal .form-group {
height:50px;
}
h3 span.ok {
color:#01A9DB;
}
label.error {
font-family:"돋움", Dotum, "Apple SD Gothic Neo", Helvetica, Sans-serif;
font-size:9pt;
font-weight:600;
padding:3px 0 0 10px;
color:#FF0000;
display:block;
}
</style>
</head>
<body>
<div id="wrap">
<br><br>
<b><font size="6" color="gray">회원가입</font></b>
<br><br><br>
<form id="joinForm" name="joinForm" action="/nlib/member/insertMemberInfo.do" method="post" onsubmit="return signUp()">
<table>
<tr>
<td id="title">아이디</td>
<td>
<input type="email" id="id" name="id" maxlength="30" value=<c:out value="${loginVO.id}"/> required readonly >
</td>
</tr>
<tr>
<td id="title">비밀번호</td>
<td>
<input type="password" id="password" name="password" minlength="8" maxlength="16"
oninvalid="this.setCustomValidity('8~16자 영문 대 소문자, 숫자, 특수문자를 사용하세요.')"
oninput="this.setCustomValidity('')"
pattern="^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,16}$" required>
</td>
</tr>
<tr>
<td id="title">비밀번호 확인</td>
<td>
<input type="password" id="passwordConfirm" name="passwordConfirm" minlength="8" maxlength="16" required>
</td>
</tr>
<tr>
<td id="title">이름</td>
<td>
<input type="text" id="name" name="name" maxlength="20" required value=<c:out value="${loginVO.name}"/> >
</td>
</tr>
<tr>
<td id="title">생일</td>
<td>
<input type="text" id="birth_yy" name="birth_yy" maxlength="4" placeholder="년(4자)" required pattern="^(19|20)\d{2}$" value=<c:out value="${loginVO.birth_yy}"/> >
<select id="birth_mm" name="birth_mm" value=<c:out value="${loginVO.birth_mm}"/> required>
<option value="">월</option>
<option value="01" >1</option>
<option value="02" >2</option>
<option value="03" >3</option>
<option value="04" >4</option>
<option value="05" >5</option>
<option value="06" >6</option>
<option value="07" >7</option>
<option value="08" >8</option>
<option value="09" >9</option>
<option value="10" >10</option>
<option value="11" >11</option>
<option value="12" >12</option>
</select>
<input type="text" id="birth_dd" name="birth_dd" size="2" maxlength="2" placeholder="일" size="4" value=<c:out value="${loginVO.birth_dd}"/> required pattern="^(0[1-9]|[12][0-9]|3[0-1])$">
</td>
</tr>
<tr>
<td id="title">휴대전화</td>
<td id="Cert">
<input type="text" id="phone" name="phone" required value=<c:out value="${loginVO.phone}"/>><button type="button" style="text-align:left;" class="btn-warning" onclick="phoneCert()" required>인증번호 받기</button>
<div id="phoneCertForm" style="display:none;"><br><input type='text' id='phoneCertNum' name='phoneCertNum'> <button type='button' style='text-align:left;' class='btn-warning' onclick='certNumCheck()' >인증번호 확인</button></div>
</td>
</tr>
<tr>
<td id="title">주소</td>
<td>
<input type="text" id="zipNo" name="zipNo" readonly ><button type="button" style="text-align:left;" class="btn-warning" onclick="goPopup()">주소검색</button><br>
<input type="text" id="roadAddrPart" name="roadAddrPart" readonly ><input type="text" id="addrDetail" name="addrDetail" readonly >
</td>
</tr>
</table>
<br>
<input type="hidden" id="phoneCertYn" name="phoneCertYn" value=<c:out value="N"/>>
<input type="submit" value="가입"/> <input type="button" value="취소">
</form>
</div>
</body>
</html>

View File

@ -1,37 +1,37 @@
<%
/**
* <pre>
* @Class Name : insertMemberInfoResult.jsp
*
* @Description : 회원가입 결과
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
환영합니다
</body>
<%
/**
* <pre>
* @Class Name : insertMemberInfoResult.jsp
*
* @Description : 회원가입 결과
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
환영합니다
</body>
</html>

View File

@ -1,76 +1,76 @@
<%
/**
* <pre>
* @Class Name : searchIdForm.jsp
*
* @Description : ID 비밀번호 찾기
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
function goFindId(){
$("#searchIdPhoneNum").val($("#searchIdPhoneNum").val().replace(/-/gi,""));
var regExp = /^\d{3}\d{3,4}\d{4}$/;
if(!regExp.test($("#searchIdPhoneNum").val()) || $("#searchIdPhoneNum").val()==""){
alert("형식에 맞지 않는 번호입니다.");
return false;
}
document.findId.action="/nlib/member/searchId.do";
document.findId.submit();
}
function goFindPw(){
$("#initPasswordPhoneNum").val($("#initPasswordPhoneNum").val().replace(/-/gi,""));
var regExp = /^\d{3}\d{3,4}\d{4}$/;
if(!regExp.test($("#initPasswordPhoneNum").val()) || $("#initPasswordPhoneNum").val()==""){
alert("형식에 맞지 않는 번호입니다.");
return false;
}
document.findPw.action="/nlib/member/initPassword.do";
document.findPw.submit();
}
</script>
</head>
<body>
<h1>아이디 찾기</h1>
<form id="findId" name="findId" method="post">
이름 <input type="text" id="name" name="name">
핸드폰 번호 <input type="text" id="searchIdPhoneNum" name="searchIdPhoneNum">
<input type="button" onclick ="goFindId();" value="아이디 찾기">
</form>
<form id="findPw" name="findPw" method="post">
<h1>비밀번호 찾기</h1>
ID <input type="text" id="username" name="username">
핸드폰 번호 <input type="text" id="initPasswordPhoneNum" name="initPasswordPhoneNum">
<input type="button" onclick ="goFindPw();" value="임시비밀번호 받기">
</form>
</body>
<%
/**
* <pre>
* @Class Name : searchIdForm.jsp
*
* @Description : ID 비밀번호 찾기
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
function goFindId(){
$("#searchIdPhoneNum").val($("#searchIdPhoneNum").val().replace(/-/gi,""));
var regExp = /^\d{3}\d{3,4}\d{4}$/;
if(!regExp.test($("#searchIdPhoneNum").val()) || $("#searchIdPhoneNum").val()==""){
alert("형식에 맞지 않는 번호입니다.");
return false;
}
document.findId.action="/nlib/member/searchId.do";
document.findId.submit();
}
function goFindPw(){
$("#initPasswordPhoneNum").val($("#initPasswordPhoneNum").val().replace(/-/gi,""));
var regExp = /^\d{3}\d{3,4}\d{4}$/;
if(!regExp.test($("#initPasswordPhoneNum").val()) || $("#initPasswordPhoneNum").val()==""){
alert("형식에 맞지 않는 번호입니다.");
return false;
}
document.findPw.action="/nlib/member/initPassword.do";
document.findPw.submit();
}
</script>
</head>
<body>
<h1>아이디 찾기</h1>
<form id="findId" name="findId" method="post">
이름 <input type="text" id="name" name="name">
핸드폰 번호 <input type="text" id="searchIdPhoneNum" name="searchIdPhoneNum">
<input type="button" onclick ="goFindId();" value="아이디 찾기">
</form>
<form id="findPw" name="findPw" method="post">
<h1>비밀번호 찾기</h1>
ID <input type="text" id="username" name="username">
핸드폰 번호 <input type="text" id="initPasswordPhoneNum" name="initPasswordPhoneNum">
<input type="button" onclick ="goFindPw();" value="임시비밀번호 받기">
</form>
</body>
</html>

View File

@ -1,37 +1,37 @@
<%
/**
* <pre>
* @Class Name : searchIdResult.jsp
*
* @Description : 아이디 찾기 결과
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
아이디찾기 결과페이지
</body>
<%
/**
* <pre>
* @Class Name : searchIdResult.jsp
*
* @Description : 아이디 찾기 결과
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
아이디찾기 결과페이지
</body>
</html>

View File

@ -1,52 +1,52 @@
<%
/**
* <pre>
* @Class Name : selectMemberJoiningInfo.jsp
*
* @Description : 회원가입 이용약관
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script>
function snsCertForm(){
if(document.getElementById('agree').checked)
<%
/**
* <pre>
* @Class Name : selectMemberJoiningInfo.jsp
*
* @Description : 회원가입 이용약관
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script>
function snsCertForm(){
if(document.getElementById('agree').checked)
{
location.href="/nlib/member/snsCertForm.do";
}
else{
alert("약관에 동의해주세요");
}
}
</script>
</head>
<body>
<div style="width:500px;">
<textarea style="height:200px;width:500px;">${result.info["terms"]}</textarea>
<br><div style="float: right;"><input type="checkbox" id="agree" >동의</div>
<br><br><input type="button" value="다음" onclick="snsCertForm();" style="float: right;">
</div>
</body>
location.href="/nlib/member/snsCertForm.do";
}
else{
alert("약관에 동의해주세요");
}
}
</script>
</head>
<body>
<div style="width:500px;">
<textarea style="height:200px;width:500px;">${result.info["terms"]}</textarea>
<br><div style="float: right;"><input type="checkbox" id="agree" >동의</div>
<br><br><input type="button" value="다음" onclick="snsCertForm();" style="float: right;">
</div>
</body>
</html>

View File

@ -1,221 +1,221 @@
<%
/**
* <pre>
* @Class Name : snsCertForm.jsp
*
* @Description : 회원가입 SNS 인증
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
/**
* <pre>
* @Class Name : snsCertForm.jsp
*
* @Description : 회원가입시 sns인증
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>LoginTest</title>
<meta name ="google-signin-client_id" content="879126511006-jro7bld7b2epl3n5mkksp0p24k2inbpu.apps.googleusercontent.com">
<script type="text/javascript" src="https://static.nid.naver.com/js/naverLogin_implicit-1.0.2.js" charset="utf-8"></script>
<script src = "//developers.kakao.com/sdk/js/kakao.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" type="text/css">
<script src="https://apis.google.com/js/api:client.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
window.snsLogin = function(){
var f=document.loginForm;
f.action="<c:url value='/member/insertMemberInfoForm.do'/>";
f.submit();
}
</script>
<style type="text/css">
#GgCustomLogin {
display: inline-block;
background: white;
color: #444;
width: 222px;
height: 49px;
border-radius: 5px;
border: thin solid #888;
box-shadow: 1px 1px 1px grey;
white-space: nowrap;
}
#GgCustomLogin {
cursor: pointer;
}
span.label {
font-family: serif;
font-weight: normal;
}
span.icon {
background: url('/nlib/images/nlib/sign-in/g-normal.png') transparent 5px 50% no-repeat;
display: inline-block;
vertical-align: middle;
width: 42px;
height: 42px;
}
span.buttonText {
display: inline-block;
vertical-align: middle;
padding-left: 10px;
padding-right: 42px;
font-size: 14px;
width:140px;
font-weight: bold;
/* Use the Roboto font that is loaded in the <head> */
font-family: 'Roboto', sans-serif;
}
</style>
</head>
<body>
SNS 인증<br>
<form id="infoForm" name="loginForm" method="post">
<div> <input type="hidden" id="id" name="id">
<input type="hidden" id="name" name="name">
<input type="hidden" id="birth_yy" name="birth_yy">
<input type="hidden" id="birth_mm" name="birth_mm">
<input type="hidden" id="birth_dd" name="birth_dd">
<input type="hidden" id="phone" name="phone">
</div>
<div id = "naver_id_login"></div>
<a id="kakao-login-btn"></a>
<a href="http://developers.kakao.com/logout"></a>
<ul>
<div id="GgCustomLogin">
<a href="javascript:void(0)">
<span class="icon"></span>
<span class="buttonText">구글아이디로 로그인</span>
</a>
</div>
</ul>
</form>
<script type="text/javascript">
//----------네이버--------------
var naver_id_login = new naver_id_login("jefkoYhSfrQ3TtZz5mTp", "http://www.example.com/nlib/member/naverSignResultPopup.do"); // Client ID, CallBack URL 삽입
// 단 'localhost'가 포함된 CallBack URL
var state = naver_id_login.getUniqState();
naver_id_login.setButton("green", 6, 48);
naver_id_login.setDomain("http://www.example.com/nlib/member/snsCertForm.do"); // URL
naver_id_login.setState(state);
naver_id_login.setPopup();
naver_id_login.init_naver_id_login();
//----------네이버--------------
//----------카카오--------------
Kakao.init('c449bf78ccf8dc336e43694099a1f4da'); //아까 카카오개발자홈페이지에서 발급받은 자바스크립트 키를 입력함
//카카오 로그인 버튼을 생성합니다.
Kakao.Auth.createLoginButton({
container: '#kakao-login-btn',
success: function(authObj) {
Kakao.API.request({
url: '/v2/user/me',
success: function(res) {
//onsole.log(res.id);//<---- 콘솔 로그에 id 정보 출력(id는 res안에 있기 때문에 res.id 로 불러온다)
//console.log(res.kakao_account.email);//<---- 콘솔 로그에 email 정보 출력 (어딨는지 알겠죠?)
//console.log(authObj.access_token);//<---- 콘솔 로그에 토큰값 출력
//로그인으로 타야함
$("#id").val(res.kakao_account.email);
snsLogin();
}
})
},
fail: function(error) {
alert(JSON.stringify(error));
}
});
//----------카카오--------------
//----------구글---------------
//처음 실행하는 함수
function init() {
gapi.load('auth2', function() {
gapi.auth2.init();
options = new gapi.auth2.SigninOptionsBuilder();
options.setPrompt('select_account');
// 추가는 Oauth 승인 권한 추가 후 띄어쓰기 기준으로 추가
options.setScope('email profile openid https://www.googleapis.com/auth/user.birthday.read');
// 인스턴스의 함수 호출 - element에 로그인 기능 추가
// GgCustomLogin은 li태그안에 있는 ID, 위에 설정한 options와 아래 성공,실패시 실행하는 함수들
gapi.auth2.getAuthInstance().attachClickHandler('GgCustomLogin', options, onSignIn, onSignInFailure);
})
}
function onSignIn(googleUser) {
var access_token = googleUser.getAuthResponse().access_token
$.ajax({
// people api를 이용하여 프로필 및 생년월일에 대한 선택동의후 가져온다.
url: 'https://people.googleapis.com/v1/people/me'
// key에 자신의 API 키를 넣습니다.phoneNumbers birthdays names
, data: {personFields:'emailAddresses,birthdays,names,phoneNumbers', key:'AIzaSyCmVKytZ2Ea6x1Em-iXPkah29LSq6ELH1M', 'access_token': access_token}
, method:'GET'
})
.done(function(e){
//프로필을 가져온다.
$("#id").val(e.emailAddresses[0].value);
$("#name").val(e.names[0].displayName);
$("#birth_yy").val(e.birthdays[1].date.year);
$("#birth_mm").val(e.birthdays[1].date.month);
$("#birth_dd").val(e.birthdays[1].date.day);
snsLogin();
})
.fail(function(e){
console.log(e);
})
}
function onSignInFailure(t){
console.log(t);
}
</script>
<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : snsCertForm.jsp
*
* @Description : 회원가입 SNS 인증
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
/**
* <pre>
* @Class Name : snsCertForm.jsp
*
* @Description : 회원가입시 sns인증
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>LoginTest</title>
<meta name ="google-signin-client_id" content="879126511006-jro7bld7b2epl3n5mkksp0p24k2inbpu.apps.googleusercontent.com">
<script type="text/javascript" src="https://static.nid.naver.com/js/naverLogin_implicit-1.0.2.js" charset="utf-8"></script>
<script src = "//developers.kakao.com/sdk/js/kakao.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" type="text/css">
<script src="https://apis.google.com/js/api:client.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
window.snsLogin = function(){
var f=document.loginForm;
f.action="<c:url value='/member/insertMemberInfoForm.do'/>";
f.submit();
}
</script>
<style type="text/css">
#GgCustomLogin {
display: inline-block;
background: white;
color: #444;
width: 222px;
height: 49px;
border-radius: 5px;
border: thin solid #888;
box-shadow: 1px 1px 1px grey;
white-space: nowrap;
}
#GgCustomLogin {
cursor: pointer;
}
span.label {
font-family: serif;
font-weight: normal;
}
span.icon {
background: url('/nlib/images/nlib/sign-in/g-normal.png') transparent 5px 50% no-repeat;
display: inline-block;
vertical-align: middle;
width: 42px;
height: 42px;
}
span.buttonText {
display: inline-block;
vertical-align: middle;
padding-left: 10px;
padding-right: 42px;
font-size: 14px;
width:140px;
font-weight: bold;
/* Use the Roboto font that is loaded in the <head> */
font-family: 'Roboto', sans-serif;
}
</style>
</head>
<body>
SNS 인증<br>
<form id="infoForm" name="loginForm" method="post">
<div> <input type="hidden" id="id" name="id">
<input type="hidden" id="name" name="name">
<input type="hidden" id="birth_yy" name="birth_yy">
<input type="hidden" id="birth_mm" name="birth_mm">
<input type="hidden" id="birth_dd" name="birth_dd">
<input type="hidden" id="phone" name="phone">
</div>
<div id = "naver_id_login"></div>
<a id="kakao-login-btn"></a>
<a href="http://developers.kakao.com/logout"></a>
<ul>
<div id="GgCustomLogin">
<a href="javascript:void(0)">
<span class="icon"></span>
<span class="buttonText">구글아이디로 로그인</span>
</a>
</div>
</ul>
</form>
<script type="text/javascript">
//----------네이버--------------
var naver_id_login = new naver_id_login("jefkoYhSfrQ3TtZz5mTp", "http://www.example.com/nlib/member/naverSignResultPopup.do"); // Client ID, CallBack URL 삽입
// 단 'localhost'가 포함된 CallBack URL
var state = naver_id_login.getUniqState();
naver_id_login.setButton("green", 6, 48);
naver_id_login.setDomain("http://www.example.com/nlib/member/snsCertForm.do"); // URL
naver_id_login.setState(state);
naver_id_login.setPopup();
naver_id_login.init_naver_id_login();
//----------네이버--------------
//----------카카오--------------
Kakao.init('c449bf78ccf8dc336e43694099a1f4da'); //아까 카카오개발자홈페이지에서 발급받은 자바스크립트 키를 입력함
//카카오 로그인 버튼을 생성합니다.
Kakao.Auth.createLoginButton({
container: '#kakao-login-btn',
success: function(authObj) {
Kakao.API.request({
url: '/v2/user/me',
success: function(res) {
//onsole.log(res.id);//<---- 콘솔 로그에 id 정보 출력(id는 res안에 있기 때문에 res.id 로 불러온다)
//console.log(res.kakao_account.email);//<---- 콘솔 로그에 email 정보 출력 (어딨는지 알겠죠?)
//console.log(authObj.access_token);//<---- 콘솔 로그에 토큰값 출력
//로그인으로 타야함
$("#id").val(res.kakao_account.email);
snsLogin();
}
})
},
fail: function(error) {
alert(JSON.stringify(error));
}
});
//----------카카오--------------
//----------구글---------------
//처음 실행하는 함수
function init() {
gapi.load('auth2', function() {
gapi.auth2.init();
options = new gapi.auth2.SigninOptionsBuilder();
options.setPrompt('select_account');
// 추가는 Oauth 승인 권한 추가 후 띄어쓰기 기준으로 추가
options.setScope('email profile openid https://www.googleapis.com/auth/user.birthday.read');
// 인스턴스의 함수 호출 - element에 로그인 기능 추가
// GgCustomLogin은 li태그안에 있는 ID, 위에 설정한 options와 아래 성공,실패시 실행하는 함수들
gapi.auth2.getAuthInstance().attachClickHandler('GgCustomLogin', options, onSignIn, onSignInFailure);
})
}
function onSignIn(googleUser) {
var access_token = googleUser.getAuthResponse().access_token
$.ajax({
// people api를 이용하여 프로필 및 생년월일에 대한 선택동의후 가져온다.
url: 'https://people.googleapis.com/v1/people/me'
// key에 자신의 API 키를 넣습니다.phoneNumbers birthdays names
, data: {personFields:'emailAddresses,birthdays,names,phoneNumbers', key:'AIzaSyCmVKytZ2Ea6x1Em-iXPkah29LSq6ELH1M', 'access_token': access_token}
, method:'GET'
})
.done(function(e){
//프로필을 가져온다.
$("#id").val(e.emailAddresses[0].value);
$("#name").val(e.names[0].displayName);
$("#birth_yy").val(e.birthdays[1].date.year);
$("#birth_mm").val(e.birthdays[1].date.month);
$("#birth_dd").val(e.birthdays[1].date.day);
snsLogin();
})
.fail(function(e){
console.log(e);
})
}
function onSignInFailure(t){
console.log(t);
}
</script>
<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>
</body>
</html>

View File

@ -1,76 +1,76 @@
<%
/**
* <pre>
* @Class Name : jusoPopup.jsp
*
* @Description : 주소 API
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%
request.setCharacterEncoding("UTF-8"); //한글깨지면 주석제거
//request.setCharacterEncoding("EUC-KR"); //해당시스템의 인코딩타입이 EUC-KR일경우에
String inputYn = request.getParameter("inputYn");
String zipNo = request.getParameter("zipNo");
String roadAddrPart1 = request.getParameter("roadAddrPart1");
String roadAddrPart2 = request.getParameter("roadAddrPart2");
String addrDetail = request.getParameter("addrDetail");
%>
</head>
<script language="javascript">
// opener관련 오류가 발생하는 경우 아래 주석을 해지하고, 사용자의 도메인정보를 입력합니다. ("주소입력화면 소스"도 동일하게 적용시켜야 합니다.)
//document.domain = "abc.go.kr";
function init(){
var url = location.href;
var confmKey = "devU01TX0FVVEgyMDIxMDYzMDEwNTQyMDExMTM0MTg=";
var resultType = "4"; // 도로명주소 검색결과 화면 출력내용, 1 : 도로명, 2 : 도로명+지번, 3 : 도로명+상세건물명, 4 : 도로명+지번+상세건물명
var inputYn= "<%=inputYn%>";
if(inputYn != "Y"){
document.form.confmKey.value = confmKey;
document.form.returnUrl.value = url;
document.form.resultType.value = resultType;
document.form.action="http://www.juso.go.kr/addrlink/addrLinkUrl.do"; //인터넷망
//document.form.action="http://www.juso.go.kr/addrlink/addrMobileLinkUrl.do"; //모바일 웹인 경우, 인터넷망
document.form.submit();
}else{
opener.jusoCallBack("<%=zipNo%>","<%=roadAddrPart1+roadAddrPart2%>","<%=addrDetail%>");
window.close();
}
}
</script>
<body onload="init();">
<form id="form" name="form" method="post">
<input type="hidden" id="confmKey" name="confmKey" value=""/>
<input type="hidden" id="returnUrl" name="returnUrl" value=""/>
<input type="hidden" id="resultType" name="resultType" value=""/>
<!-- 해당시스템의 인코딩타입이 EUC-KR일경우에만 추가 START-->
<!--
<input type="hidden" id="encodingType" name="encodingType" value="EUC-KR"/>
-->
<!-- 해당시스템의 인코딩타입이 EUC-KR일경우에만 추가 END-->
</form>
</body>
<%
/**
* <pre>
* @Class Name : jusoPopup.jsp
*
* @Description : 주소 API
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%
request.setCharacterEncoding("UTF-8"); //한글깨지면 주석제거
//request.setCharacterEncoding("EUC-KR"); //해당시스템의 인코딩타입이 EUC-KR일경우에
String inputYn = request.getParameter("inputYn");
String zipNo = request.getParameter("zipNo");
String roadAddrPart1 = request.getParameter("roadAddrPart1");
String roadAddrPart2 = request.getParameter("roadAddrPart2");
String addrDetail = request.getParameter("addrDetail");
%>
</head>
<script language="javascript">
// opener관련 오류가 발생하는 경우 아래 주석을 해지하고, 사용자의 도메인정보를 입력합니다. ("주소입력화면 소스"도 동일하게 적용시켜야 합니다.)
//document.domain = "abc.go.kr";
function init(){
var url = location.href;
var confmKey = "devU01TX0FVVEgyMDIxMDYzMDEwNTQyMDExMTM0MTg=";
var resultType = "4"; // 도로명주소 검색결과 화면 출력내용, 1 : 도로명, 2 : 도로명+지번, 3 : 도로명+상세건물명, 4 : 도로명+지번+상세건물명
var inputYn= "<%=inputYn%>";
if(inputYn != "Y"){
document.form.confmKey.value = confmKey;
document.form.returnUrl.value = url;
document.form.resultType.value = resultType;
document.form.action="http://www.juso.go.kr/addrlink/addrLinkUrl.do"; //인터넷망
//document.form.action="http://www.juso.go.kr/addrlink/addrMobileLinkUrl.do"; //모바일 웹인 경우, 인터넷망
document.form.submit();
}else{
opener.jusoCallBack("<%=zipNo%>","<%=roadAddrPart1+roadAddrPart2%>","<%=addrDetail%>");
window.close();
}
}
</script>
<body onload="init();">
<form id="form" name="form" method="post">
<input type="hidden" id="confmKey" name="confmKey" value=""/>
<input type="hidden" id="returnUrl" name="returnUrl" value=""/>
<input type="hidden" id="resultType" name="resultType" value=""/>
<!-- 해당시스템의 인코딩타입이 EUC-KR일경우에만 추가 START-->
<!--
<input type="hidden" id="encodingType" name="encodingType" value="EUC-KR"/>
-->
<!-- 해당시스템의 인코딩타입이 EUC-KR일경우에만 추가 END-->
</form>
</body>
</html>

View File

@ -1,50 +1,50 @@
<%
/**
* <pre>
* @Class Name : naverLoginResultPopup.jsp
*
* @Description : 로그인시 naver로그인 페이지
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!doctype html>
<html lang="ko">
<head>
<script type="text/javascript"
src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript"
src="https://static.nid.naver.com/js/naverLogin_implicit-1.0.2.js"
charset="utf-8"></script>
</head>
<script type="text/javascript">
var naver_id_login = new naver_id_login("jefkoYhSfrQ3TtZz5mTp", "http://www.example.com/nlib/login/naverLoginResultPopup.do"); // 역시 마찬가지로 'localhost'가 포함된 CallBack URL
// 네이버 사용자 프로필 조회
naver_id_login.get_naver_userprofile("naverSignInCallback()");
// 네이버 사용자 프로필 조회 이후 프로필 정보를 처리할 callback function
function naverSignInCallback() {
opener.snsLogin(naver_id_login.getProfileData('email'));
self.close();
}
</script>
</html>
<%
/**
* <pre>
* @Class Name : naverLoginResultPopup.jsp
*
* @Description : 로그인시 naver로그인 페이지
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!doctype html>
<html lang="ko">
<head>
<script type="text/javascript"
src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript"
src="https://static.nid.naver.com/js/naverLogin_implicit-1.0.2.js"
charset="utf-8"></script>
</head>
<script type="text/javascript">
var naver_id_login = new naver_id_login("jefkoYhSfrQ3TtZz5mTp", "http://www.example.com/nlib/login/naverLoginResultPopup.do"); // 역시 마찬가지로 'localhost'가 포함된 CallBack URL
// 네이버 사용자 프로필 조회
naver_id_login.get_naver_userprofile("naverSignInCallback()");
// 네이버 사용자 프로필 조회 이후 프로필 정보를 처리할 callback function
function naverSignInCallback() {
opener.snsLogin(naver_id_login.getProfileData('email'));
self.close();
}
</script>
</html>

View File

@ -1,56 +1,56 @@
<%
/**
* <pre>
* @Class Name : naverSignResultPopup.jsp
*
* @Description : 회원가입시 naver로그인 페이지
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!doctype html>
<html lang="ko">
<head>
<script type="text/javascript"
src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript"
src="https://static.nid.naver.com/js/naverLogin_implicit-1.0.2.js"
charset="utf-8"></script>
</head>
<script type="text/javascript">
var naver_id_login = new naver_id_login("jefkoYhSfrQ3TtZz5mTp", "http://www.example.com/login/naverSignResultPopup.do"); // 역시 마찬가지로 'localhost'가 포함된 CallBack URL
// 네이버 사용자 프로필 조회
naver_id_login.get_naver_userprofile("naverSignInCallback()");
// 네이버 사용자 프로필 조회 이후 프로필 정보를 처리할 callback function
function naverSignInCallback() {
$("#id",opener.document).val(naver_id_login.getProfileData('email'));
$("#name",opener.document).val(naver_id_login.getProfileData('name'));
$("#birth_yy",opener.document).val(naver_id_login.getProfileData('birthyear'));
$("#birth_mm",opener.document).val(naver_id_login.getProfileData('birthday').substring(0,2).replace(/(^0+)/, ""));
$("#birth_dd",opener.document).val(naver_id_login.getProfileData('birthday').substring(3,5).replace(/(^0+)/, ""));
$("#phone",opener.document).val(naver_id_login.getProfileData('mobile'));
opener.snsLogin();
self.close();
}
</script>
</html>
<%
/**
* <pre>
* @Class Name : naverSignResultPopup.jsp
*
* @Description : 회원가입시 naver로그인 페이지
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!doctype html>
<html lang="ko">
<head>
<script type="text/javascript"
src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript"
src="https://static.nid.naver.com/js/naverLogin_implicit-1.0.2.js"
charset="utf-8"></script>
</head>
<script type="text/javascript">
var naver_id_login = new naver_id_login("jefkoYhSfrQ3TtZz5mTp", "http://www.example.com/login/naverSignResultPopup.do"); // 역시 마찬가지로 'localhost'가 포함된 CallBack URL
// 네이버 사용자 프로필 조회
naver_id_login.get_naver_userprofile("naverSignInCallback()");
// 네이버 사용자 프로필 조회 이후 프로필 정보를 처리할 callback function
function naverSignInCallback() {
$("#id",opener.document).val(naver_id_login.getProfileData('email'));
$("#name",opener.document).val(naver_id_login.getProfileData('name'));
$("#birth_yy",opener.document).val(naver_id_login.getProfileData('birthyear'));
$("#birth_mm",opener.document).val(naver_id_login.getProfileData('birthday').substring(0,2).replace(/(^0+)/, ""));
$("#birth_dd",opener.document).val(naver_id_login.getProfileData('birthday').substring(3,5).replace(/(^0+)/, ""));
$("#phone",opener.document).val(naver_id_login.getProfileData('mobile'));
opener.snsLogin();
self.close();
}
</script>
</html>

View File

@ -1,181 +1,181 @@
<%
/**
* <pre>
* @Class Name : listCancelRentItems.jsp
*
* @Description : 대출 취소목록을 조회한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 21. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 21.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">대출 취소</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
</head>
<body onload="fn_init()">
<h1>대출 취소</h1>
<form name="articleForm"
action="${pageContext.request.contextPath}/board/listQnAs.do"
method="post"
onSubmit="fn_search_article(); return false;">
<!-- 검색조건 -->
<select name="pageSize" id="pageSize" title="목록에 보여줄 글 개수">
<option value="10">10개씩 보기</option>
<option value="50">50개씩 보기</option>
<option value="100">100개씩 보기</option>
</select>
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="1" size="5" maxlength="5" />
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="" size="35" maxlength="50" />
<input type="submit" name="btnSearch" id="btnSearch" value="검색" />
<input type="button" name="btnNew" id="btnNew" value="글쓰기"
onclick="javascript:location.href='${pageContext.request.contextPath}/board/insertQnAForm.do';" />
<div id="jsGrid" name="jsGrid" ></div>
</form>
<script type="text/javaScript" language="javascript">
// 그리드 데이터
var clients = [
{ "noticeNo": 1, "noticeType": "01", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 2, "noticeType": "02", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 3, "noticeType": "03", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 4, "noticeType": "04", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 5, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 6, "noticeType": "06", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 7, "noticeType": "06", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 9, "noticeType": "01", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" }
];
// 그리드내 콤보박스 값
var noticeTypes = [
{ Name: "공지" , Id: "01" },
{ Name: "자료" , Id: "02" },
{ Name: "모집" , Id: "03" },
{ Name: "입찰" , Id: "04" },
{ Name: "발표" , Id: "05" },
{ Name: "이벤트", Id: "06" }
];
// 그리드 생성
$("#jsGrid").jsGrid({
width: "100%",
height: "100%",
inserting: false,
editing: false,
sorting: true,
paging: true,
pageSize: 10,
pageButtonCount: 10,
pageIndex: 1,
pageFirstText: " << ",
pagePrevText: " < ",
pageLastText: " >> ",
pageNextText: " > ",
pagerFormat: "{first} {prev} {pages} {next} {last}",
/* 이하만 설정 */
data: clients,
fields: [
{ title:"번호", name: "noticeNo" , type: "number" , width: 50, align: "center"},
{ title:"유형", name: "noticeType", type: "select", width: 80, align: "center", items: noticeTypes, valueField: "Id", textField: "Name" },
{ title:"제목", name: "title", type: "text" , width: 200, align: "left" },
{ title:"조회수", name: "readCount", type: "number", width: 50, align: "center" },
{ title:"등록일", name: "regDate", type: "text", width: 100, align: "center"}
]
});
function fn_search_article() {
var searchKeyword = document.articleForm.searchKeyword.value;
var pageIndex = document.articleForm.pageIndex.value;
var pageSize = document.articleForm.pageSize.value;
var inputData = {
"searchKeyword" : searchKeyword /*encodeURIComponent(searchKeyword)*/
, "pageIndex" : pageIndex
, "pageSize": pageSize};
//lert(JSON.stringify(inputData));
}
function fn_init() {
}
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : listCancelRentItems.jsp
*
* @Description : 대출 취소목록을 조회한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 21. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 21.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">대출 취소</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
</head>
<body onload="fn_init()">
<h1>대출 취소</h1>
<form name="articleForm"
action="${pageContext.request.contextPath}/board/listQnAs.do"
method="post"
onSubmit="fn_search_article(); return false;">
<!-- 검색조건 -->
<select name="pageSize" id="pageSize" title="목록에 보여줄 글 개수">
<option value="10">10개씩 보기</option>
<option value="50">50개씩 보기</option>
<option value="100">100개씩 보기</option>
</select>
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="1" size="5" maxlength="5" />
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="" size="35" maxlength="50" />
<input type="submit" name="btnSearch" id="btnSearch" value="검색" />
<input type="button" name="btnNew" id="btnNew" value="글쓰기"
onclick="javascript:location.href='${pageContext.request.contextPath}/board/insertQnAForm.do';" />
<div id="jsGrid" name="jsGrid" ></div>
</form>
<script type="text/javaScript" language="javascript">
// 그리드 데이터
var clients = [
{ "noticeNo": 1, "noticeType": "01", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 2, "noticeType": "02", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 3, "noticeType": "03", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 4, "noticeType": "04", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 5, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 6, "noticeType": "06", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 7, "noticeType": "06", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 9, "noticeType": "01", "title": "대출 취소 제목입니다.", "readCount": 7, "regDate": "2021-07-11" }
];
// 그리드내 콤보박스 값
var noticeTypes = [
{ Name: "공지" , Id: "01" },
{ Name: "자료" , Id: "02" },
{ Name: "모집" , Id: "03" },
{ Name: "입찰" , Id: "04" },
{ Name: "발표" , Id: "05" },
{ Name: "이벤트", Id: "06" }
];
// 그리드 생성
$("#jsGrid").jsGrid({
width: "100%",
height: "100%",
inserting: false,
editing: false,
sorting: true,
paging: true,
pageSize: 10,
pageButtonCount: 10,
pageIndex: 1,
pageFirstText: " << ",
pagePrevText: " < ",
pageLastText: " >> ",
pageNextText: " > ",
pagerFormat: "{first} {prev} {pages} {next} {last}",
/* 이하만 설정 */
data: clients,
fields: [
{ title:"번호", name: "noticeNo" , type: "number" , width: 50, align: "center"},
{ title:"유형", name: "noticeType", type: "select", width: 80, align: "center", items: noticeTypes, valueField: "Id", textField: "Name" },
{ title:"제목", name: "title", type: "text" , width: 200, align: "left" },
{ title:"조회수", name: "readCount", type: "number", width: 50, align: "center" },
{ title:"등록일", name: "regDate", type: "text", width: 100, align: "center"}
]
});
function fn_search_article() {
var searchKeyword = document.articleForm.searchKeyword.value;
var pageIndex = document.articleForm.pageIndex.value;
var pageSize = document.articleForm.pageSize.value;
var inputData = {
"searchKeyword" : searchKeyword /*encodeURIComponent(searchKeyword)*/
, "pageIndex" : pageIndex
, "pageSize": pageSize};
//lert(JSON.stringify(inputData));
}
function fn_init() {
}
</script>
</body>
</html>

View File

@ -1,181 +1,181 @@
<%
/**
* <pre>
* @Class Name : listRentItems.jsp
*
* @Description : 대출 목록을 조회한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 21. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 21.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">대출 목록</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
</head>
<body onload="fn_init()">
<h1>대출 목록</h1>
<form name="articleForm"
action="${pageContext.request.contextPath}/board/listQnAs.do"
method="post"
onSubmit="fn_search_article(); return false;">
<!-- 검색조건 -->
<select name="pageSize" id="pageSize" title="목록에 보여줄 글 개수">
<option value="10">10개씩 보기</option>
<option value="50">50개씩 보기</option>
<option value="100">100개씩 보기</option>
</select>
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="1" size="5" maxlength="5" />
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="" size="35" maxlength="50" />
<input type="submit" name="btnSearch" id="btnSearch" value="검색" />
<input type="button" name="btnNew" id="btnNew" value="글쓰기"
onclick="javascript:location.href='${pageContext.request.contextPath}/board/insertQnAForm.do';" />
<div id="jsGrid" name="jsGrid" ></div>
</form>
<input type="button" value="대출 취소목록" onClick="location.href='http://www.example.com/nlib/rent/listCancelRentItems.do'">
<script type="text/javaScript" language="javascript">
// 그리드 데이터
var clients = [
{ "noticeNo": 1, "noticeType": "01", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 2, "noticeType": "02", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 3, "noticeType": "03", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 4, "noticeType": "04", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 5, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 6, "noticeType": "06", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 7, "noticeType": "06", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 9, "noticeType": "01", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" }
];
// 그리드내 콤보박스 값
var noticeTypes = [
{ Name: "공지" , Id: "01" },
{ Name: "자료" , Id: "02" },
{ Name: "모집" , Id: "03" },
{ Name: "입찰" , Id: "04" },
{ Name: "발표" , Id: "05" },
{ Name: "이벤트", Id: "06" }
];
// 그리드 생성
$("#jsGrid").jsGrid({
width: "100%",
height: "100%",
inserting: false,
editing: false,
sorting: true,
paging: true,
pageSize: 10,
pageButtonCount: 10,
pageIndex: 1,
pageFirstText: " << ",
pagePrevText: " < ",
pageLastText: " >> ",
pageNextText: " > ",
pagerFormat: "{first} {prev} {pages} {next} {last}",
/* 이하만 설정 */
data: clients,
fields: [
{ title:"번호", name: "noticeNo" , type: "number" , width: 50, align: "center"},
{ title:"유형", name: "noticeType", type: "select", width: 80, align: "center", items: noticeTypes, valueField: "Id", textField: "Name" },
{ title:"제목", name: "title", type: "text" , width: 200, align: "left" },
{ title:"조회수", name: "readCount", type: "number", width: 50, align: "center" },
{ title:"등록일", name: "regDate", type: "text", width: 100, align: "center"}
]
});
function fn_search_article() {
var searchKeyword = document.articleForm.searchKeyword.value;
var pageIndex = document.articleForm.pageIndex.value;
var pageSize = document.articleForm.pageSize.value;
var inputData = {
"searchKeyword" : searchKeyword /*encodeURIComponent(searchKeyword)*/
, "pageIndex" : pageIndex
, "pageSize": pageSize};
//lert(JSON.stringify(inputData));
}
function fn_init() {
}
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : listRentItems.jsp
*
* @Description : 대출 목록을 조회한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 21. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 21.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">대출 목록</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
</head>
<body onload="fn_init()">
<h1>대출 목록</h1>
<form name="articleForm"
action="${pageContext.request.contextPath}/board/listQnAs.do"
method="post"
onSubmit="fn_search_article(); return false;">
<!-- 검색조건 -->
<select name="pageSize" id="pageSize" title="목록에 보여줄 글 개수">
<option value="10">10개씩 보기</option>
<option value="50">50개씩 보기</option>
<option value="100">100개씩 보기</option>
</select>
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="1" size="5" maxlength="5" />
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="" size="35" maxlength="50" />
<input type="submit" name="btnSearch" id="btnSearch" value="검색" />
<input type="button" name="btnNew" id="btnNew" value="글쓰기"
onclick="javascript:location.href='${pageContext.request.contextPath}/board/insertQnAForm.do';" />
<div id="jsGrid" name="jsGrid" ></div>
</form>
<input type="button" value="대출 취소목록" onClick="location.href='http://www.example.com/nlib/rent/listCancelRentItems.do'">
<script type="text/javaScript" language="javascript">
// 그리드 데이터
var clients = [
{ "noticeNo": 1, "noticeType": "01", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 2, "noticeType": "02", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 3, "noticeType": "03", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 4, "noticeType": "04", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 5, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 6, "noticeType": "06", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 7, "noticeType": "06", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 9, "noticeType": "01", "title": "대출 목록 제목입니다.", "readCount": 7, "regDate": "2021-07-11" }
];
// 그리드내 콤보박스 값
var noticeTypes = [
{ Name: "공지" , Id: "01" },
{ Name: "자료" , Id: "02" },
{ Name: "모집" , Id: "03" },
{ Name: "입찰" , Id: "04" },
{ Name: "발표" , Id: "05" },
{ Name: "이벤트", Id: "06" }
];
// 그리드 생성
$("#jsGrid").jsGrid({
width: "100%",
height: "100%",
inserting: false,
editing: false,
sorting: true,
paging: true,
pageSize: 10,
pageButtonCount: 10,
pageIndex: 1,
pageFirstText: " << ",
pagePrevText: " < ",
pageLastText: " >> ",
pageNextText: " > ",
pagerFormat: "{first} {prev} {pages} {next} {last}",
/* 이하만 설정 */
data: clients,
fields: [
{ title:"번호", name: "noticeNo" , type: "number" , width: 50, align: "center"},
{ title:"유형", name: "noticeType", type: "select", width: 80, align: "center", items: noticeTypes, valueField: "Id", textField: "Name" },
{ title:"제목", name: "title", type: "text" , width: 200, align: "left" },
{ title:"조회수", name: "readCount", type: "number", width: 50, align: "center" },
{ title:"등록일", name: "regDate", type: "text", width: 100, align: "center"}
]
});
function fn_search_article() {
var searchKeyword = document.articleForm.searchKeyword.value;
var pageIndex = document.articleForm.pageIndex.value;
var pageSize = document.articleForm.pageSize.value;
var inputData = {
"searchKeyword" : searchKeyword /*encodeURIComponent(searchKeyword)*/
, "pageIndex" : pageIndex
, "pageSize": pageSize};
//lert(JSON.stringify(inputData));
}
function fn_init() {
}
</script>
</body>
</html>

View File

@ -1,181 +1,181 @@
<%
/**
* <pre>
* @Class Name : listReserVations.jsp
*
* @Description : 대출 예약 목록을 조회한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 21. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 21.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">대출 예약</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
</head>
<body onload="fn_init()">
<h1>대출 예약</h1>
<form name="articleForm"
action="${pageContext.request.contextPath}/board/listQnAs.do"
method="post"
onSubmit="fn_search_article(); return false;">
<!-- 검색조건 -->
<select name="pageSize" id="pageSize" title="목록에 보여줄 글 개수">
<option value="10">10개씩 보기</option>
<option value="50">50개씩 보기</option>
<option value="100">100개씩 보기</option>
</select>
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="1" size="5" maxlength="5" />
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="" size="35" maxlength="50" />
<input type="submit" name="btnSearch" id="btnSearch" value="검색" />
<input type="button" name="btnNew" id="btnNew" value="글쓰기"
onclick="javascript:location.href='${pageContext.request.contextPath}/board/insertQnAForm.do';" />
<div id="jsGrid" name="jsGrid" ></div>
</form>
<script type="text/javaScript" language="javascript">
// 그리드 데이터
var clients = [
{ "noticeNo": 1, "noticeType": "01", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 2, "noticeType": "02", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 3, "noticeType": "03", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 4, "noticeType": "04", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 5, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 6, "noticeType": "06", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 7, "noticeType": "06", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 9, "noticeType": "01", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" }
];
// 그리드내 콤보박스 값
var noticeTypes = [
{ Name: "공지" , Id: "01" },
{ Name: "자료" , Id: "02" },
{ Name: "모집" , Id: "03" },
{ Name: "입찰" , Id: "04" },
{ Name: "발표" , Id: "05" },
{ Name: "이벤트", Id: "06" }
];
// 그리드 생성
$("#jsGrid").jsGrid({
width: "100%",
height: "100%",
inserting: false,
editing: false,
sorting: true,
paging: true,
pageSize: 10,
pageButtonCount: 10,
pageIndex: 1,
pageFirstText: " << ",
pagePrevText: " < ",
pageLastText: " >> ",
pageNextText: " > ",
pagerFormat: "{first} {prev} {pages} {next} {last}",
/* 이하만 설정 */
data: clients,
fields: [
{ title:"번호", name: "noticeNo" , type: "number" , width: 50, align: "center"},
{ title:"유형", name: "noticeType", type: "select", width: 80, align: "center", items: noticeTypes, valueField: "Id", textField: "Name" },
{ title:"제목", name: "title", type: "text" , width: 200, align: "left" },
{ title:"조회수", name: "readCount", type: "number", width: 50, align: "center" },
{ title:"등록일", name: "regDate", type: "text", width: 100, align: "center"}
]
});
function fn_search_article() {
var searchKeyword = document.articleForm.searchKeyword.value;
var pageIndex = document.articleForm.pageIndex.value;
var pageSize = document.articleForm.pageSize.value;
var inputData = {
"searchKeyword" : searchKeyword /*encodeURIComponent(searchKeyword)*/
, "pageIndex" : pageIndex
, "pageSize": pageSize};
//lert(JSON.stringify(inputData));
}
function fn_init() {
}
</script>
</body>
</html>
<%
/**
* <pre>
* @Class Name : listReserVations.jsp
*
* @Description : 대출 예약 목록을 조회한다.
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 21. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 21.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">대출 예약</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<!-- GRID -->
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid.css" />
<link type="text/css" rel="stylesheet" href="/nlib/js/jsgrid/nlib-jsgrid-theme.css" />
<script src="/nlib/js/jsgrid/nlib-jsgrid.js"></script>
</head>
<body onload="fn_init()">
<h1>대출 예약</h1>
<form name="articleForm"
action="${pageContext.request.contextPath}/board/listQnAs.do"
method="post"
onSubmit="fn_search_article(); return false;">
<!-- 검색조건 -->
<select name="pageSize" id="pageSize" title="목록에 보여줄 글 개수">
<option value="10">10개씩 보기</option>
<option value="50">50개씩 보기</option>
<option value="100">100개씩 보기</option>
</select>
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="1" size="5" maxlength="5" />
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="" size="35" maxlength="50" />
<input type="submit" name="btnSearch" id="btnSearch" value="검색" />
<input type="button" name="btnNew" id="btnNew" value="글쓰기"
onclick="javascript:location.href='${pageContext.request.contextPath}/board/insertQnAForm.do';" />
<div id="jsGrid" name="jsGrid" ></div>
</form>
<script type="text/javaScript" language="javascript">
// 그리드 데이터
var clients = [
{ "noticeNo": 1, "noticeType": "01", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 2, "noticeType": "02", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 3, "noticeType": "03", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 4, "noticeType": "04", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 5, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 6, "noticeType": "06", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 7, "noticeType": "06", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 8, "noticeType": "05", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" },
{ "noticeNo": 9, "noticeType": "01", "title": "대출예약 제목입니다.", "readCount": 7, "regDate": "2021-07-11" }
];
// 그리드내 콤보박스 값
var noticeTypes = [
{ Name: "공지" , Id: "01" },
{ Name: "자료" , Id: "02" },
{ Name: "모집" , Id: "03" },
{ Name: "입찰" , Id: "04" },
{ Name: "발표" , Id: "05" },
{ Name: "이벤트", Id: "06" }
];
// 그리드 생성
$("#jsGrid").jsGrid({
width: "100%",
height: "100%",
inserting: false,
editing: false,
sorting: true,
paging: true,
pageSize: 10,
pageButtonCount: 10,
pageIndex: 1,
pageFirstText: " << ",
pagePrevText: " < ",
pageLastText: " >> ",
pageNextText: " > ",
pagerFormat: "{first} {prev} {pages} {next} {last}",
/* 이하만 설정 */
data: clients,
fields: [
{ title:"번호", name: "noticeNo" , type: "number" , width: 50, align: "center"},
{ title:"유형", name: "noticeType", type: "select", width: 80, align: "center", items: noticeTypes, valueField: "Id", textField: "Name" },
{ title:"제목", name: "title", type: "text" , width: 200, align: "left" },
{ title:"조회수", name: "readCount", type: "number", width: 50, align: "center" },
{ title:"등록일", name: "regDate", type: "text", width: 100, align: "center"}
]
});
function fn_search_article() {
var searchKeyword = document.articleForm.searchKeyword.value;
var pageIndex = document.articleForm.pageIndex.value;
var pageSize = document.articleForm.pageSize.value;
var inputData = {
"searchKeyword" : searchKeyword /*encodeURIComponent(searchKeyword)*/
, "pageIndex" : pageIndex
, "pageSize": pageSize};
//lert(JSON.stringify(inputData));
}
function fn_init() {
}
</script>
</body>
</html>

View File

@ -1,43 +1,43 @@
<%
/**
* <pre>
* @Class Name : getSampleInfo.jsp
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 15. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 15.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<c:set var="pageTitle"><spring:message code="nlib.title"/> - 결과</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javaScript" language="javascript">
</script>
</head>
<body>
All
</body>
</html>
<%
/**
* <pre>
* @Class Name : getSampleInfo.jsp
*
* @Description : RESTful API 호출 샘플
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 6. 15. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 6. 15.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<c:set var="pageTitle"><spring:message code="nlib.title"/> - 결과</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javaScript" language="javascript">
</script>
</head>
<body>
All
</body>
</html>

View File

@ -1,40 +1,40 @@
<%
/**
* <pre>
* @Class Name : getMyInfo.jsp
*
* @Description : 내 정보 조회
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/userInfo/pwCertMyInfo.do';">내 정보 수정</a>
</body>
<%
/**
* <pre>
* @Class Name : getMyInfo.jsp
*
* @Description : 내 정보 조회
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/userInfo/pwCertMyInfo.do';">내 정보 수정</a>
</body>
</html>

View File

@ -1,254 +1,254 @@
<%
/**
* <pre>
* @Class Name : putMyInfo.jsp
*
* @Description : 내 정보 수정
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<title>Insert title here</title>
<script type="text/javaScript" language="javascript" defer="defer">
function goPopup(){
// 주소검색을 수행할 팝업 페이지를 호출합니다.
// 호출된 페이지(jusopopup.jsp)에서 실제 주소검색URL(http://www.juso.go.kr/addrlink/addrLinkUrl.do)를 호출하게 됩니다.
var pop = window.open("/nlib/popup/jusoPopup.do","pop","width=570,height=420, scrollbars=yes, resizable=yes");
// 모바일 웹인 경우, 호출된 페이지(jusopopup.jsp)에서 실제 주소검색URL(http://www.juso.go.kr/addrlink/addrMobileLinkUrl.do)를 호출하게 됩니다.
//var pop = window.open("/popup/jusoPopup.jsp","pop","scrollbars=yes, resizable=yes");
}
$(document).ready(function() {
<%
//핸드폰 번호가 변하는것 실시간 감지
%>
$("#phone").on("propertychange change keyup paste input", function() {
$("#phoneCertYn").val("N");
});
})
<%
//핸드폰 인증번호 받기
%>
function phoneCert(){
$("#phone").val($("#phone").val().replace(/-/gi,""));
var regExp = /^\d{3}\d{3,4}\d{4}$/;
if(!regExp.test($("#phone").val()) || $("#phone").val()==""){
alert("형식에 맞지 않는 번호입니다.");
return false;
}
$.ajax({
url : "/nlib/member/phoneCertNum.ajax",
type : "POST",
async: false,
data : {"phone" : $("#phone").val()},
success : function(result){
alert("인증번호가 발송됐습니다.");
//인증번호 확인창
$("#phoneCertForm").css("display","block")
},error : function(){
}
})
}
<%
//핸드폰 인증번호 확인
%>
function certNumCheck(){
<%
//ajax 사용자가 입력한 번호를 보내 RESTfull server에서 확인 success or fail 반환 (3분이내인지도)
%>
$.ajax({
url : "/nlib/member/phoneCertNumChk.ajax",
type : "POST",
data : {"phoneCertNum" : $("#phoneCertNum").val(),
"phone" : $("#phone").val()},
async: false,
success : function(result){
if(result=="true")
{
alert("인증되었습니다.");
$("#phoneCertYn").val("Y");
}else{
alert("인증에 실패했습니다.");
}
},error : function(){
}
})
}
function jusoCallBack(zipNo,roadAddrPart,addrDetail){
// 팝업페이지에서 주소입력한 정보를 받아서, 현 페이지에 정보를 등록합니다.
$("#zipNo").val(zipNo);
$("#roadAddrPart").val(roadAddrPart);
$("#addrDetail").val(addrDetail);
}
document.addEventListener('keydown', function(event) {
if (event.keyCode === 13) {
event.preventDefault();
}
}, true);
function update(){
if($("#phoneCertYn").val()!="Y")
{
alert("휴대전화 인증이 필요합니다.");
return false;
}
if($("#zipNo").val()=="" || $("#roadAddrPart").val()=="" || $("#addrDetail").val()=="")
{
alert("주소를 입력해주세요.");
return false;
}
if(confirm("수정하시겠습니까?")){
alert("수정되었습니다.");
return true;
}else{
return false;
}
}
</script>
<style type="text/css">
body {
padding-top:0px;
margin-top:0px;
background-color:#f5f5f5;
}
.page-header {
padding-top:0px;
margin-top:0px;
}
.form-horizontal .control-label.text-left{
text-align:left;
}
.form-horizontal .form-group {
height:50px;
}
h3 span.ok {
color:#01A9DB;
}
label.error {
font-family:"돋움", Dotum, "Apple SD Gothic Neo", Helvetica, Sans-serif;
font-size:9pt;
font-weight:600;
padding:3px 0 0 10px;
color:#FF0000;
display:block;
}
</style>
</head>
<body>
<div id="wrap">
<br><br>
<b><font size="6" color="gray">정보수정</font></b>
<br><br><br>
<form id="updateForm" name="updateForm" method="post" onsubmit="return update()" action="/nlib/userInfo/getMyInfo.do">
<table>
<tr>
<td id="title">아이디</td>
<td>
<input type="text" id="id" name="id" maxlength="30" value=<c:out value="${result.id}"/> required readonly >
</td>
</tr>
<tr>
<td id="title">이름</td>
<td>
<input type="text" id="name" name="name" maxlength="20" value=<c:out value="${result.name}"/> required>
</td>
</tr>
<tr>
<td id="title">휴대전화</td>
<td>
<input type="text" id="phone" name="phone" required value=<c:out value="${result.phone}"/> ><button type="button" style="text-align:left;" class="btn-warning" onclick="phoneCert()">인증번호 받기</button>
<div id="phoneCertForm" style="display:none;"><br><input type='text' id='phoneCertNum' name='phoneCertNum'> <button type='button' style='text-align:left;' class='btn-warning' onclick='certNumCheck()' >인증번호 확인</button></div>
</td>
</tr>
<tr>
<td id="title">주소</td>
<td>
<input type="text" id="zipNo" name="zipNo" readonly value=<c:out value="${result.zipNo}"/> ><button type="button" style="text-align:left;" class="btn-warning" onclick="goPopup()" >주소검색</button><br>
<input type="text" id="roadAddrPart" name="roadAddrPart" readonly value=<c:out value="${result.roadAddrPart}"/> ><input type="text" id="addrDetail" name="addrDetail" readonly value=<c:out value="${result.addrDetail}"/> >
</td>
</tr>
</table>
<br>
<input type="hidden" id="phoneCertYn" name="phoneCertYn" value=<c:out value="N"/>>
<input type="submit" value="수정"/> <input type="button" onclick="javascript:location.href='${pageContext.request.contextPath}/userInfo/getMyInfo.do';" value="취소">
</form>
</div>
</body>
</body>
<%
/**
* <pre>
* @Class Name : putMyInfo.jsp
*
* @Description : 내 정보 수정
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<title>Insert title here</title>
<script type="text/javaScript" language="javascript" defer="defer">
function goPopup(){
// 주소검색을 수행할 팝업 페이지를 호출합니다.
// 호출된 페이지(jusopopup.jsp)에서 실제 주소검색URL(http://www.juso.go.kr/addrlink/addrLinkUrl.do)를 호출하게 됩니다.
var pop = window.open("/nlib/popup/jusoPopup.do","pop","width=570,height=420, scrollbars=yes, resizable=yes");
// 모바일 웹인 경우, 호출된 페이지(jusopopup.jsp)에서 실제 주소검색URL(http://www.juso.go.kr/addrlink/addrMobileLinkUrl.do)를 호출하게 됩니다.
//var pop = window.open("/popup/jusoPopup.jsp","pop","scrollbars=yes, resizable=yes");
}
$(document).ready(function() {
<%
//핸드폰 번호가 변하는것 실시간 감지
%>
$("#phone").on("propertychange change keyup paste input", function() {
$("#phoneCertYn").val("N");
});
})
<%
//핸드폰 인증번호 받기
%>
function phoneCert(){
$("#phone").val($("#phone").val().replace(/-/gi,""));
var regExp = /^\d{3}\d{3,4}\d{4}$/;
if(!regExp.test($("#phone").val()) || $("#phone").val()==""){
alert("형식에 맞지 않는 번호입니다.");
return false;
}
$.ajax({
url : "/nlib/member/phoneCertNum.ajax",
type : "POST",
async: false,
data : {"phone" : $("#phone").val()},
success : function(result){
alert("인증번호가 발송됐습니다.");
//인증번호 확인창
$("#phoneCertForm").css("display","block")
},error : function(){
}
})
}
<%
//핸드폰 인증번호 확인
%>
function certNumCheck(){
<%
//ajax 사용자가 입력한 번호를 보내 RESTfull server에서 확인 success or fail 반환 (3분이내인지도)
%>
$.ajax({
url : "/nlib/member/phoneCertNumChk.ajax",
type : "POST",
data : {"phoneCertNum" : $("#phoneCertNum").val(),
"phone" : $("#phone").val()},
async: false,
success : function(result){
if(result=="true")
{
alert("인증되었습니다.");
$("#phoneCertYn").val("Y");
}else{
alert("인증에 실패했습니다.");
}
},error : function(){
}
})
}
function jusoCallBack(zipNo,roadAddrPart,addrDetail){
// 팝업페이지에서 주소입력한 정보를 받아서, 현 페이지에 정보를 등록합니다.
$("#zipNo").val(zipNo);
$("#roadAddrPart").val(roadAddrPart);
$("#addrDetail").val(addrDetail);
}
document.addEventListener('keydown', function(event) {
if (event.keyCode === 13) {
event.preventDefault();
}
}, true);
function update(){
if($("#phoneCertYn").val()!="Y")
{
alert("휴대전화 인증이 필요합니다.");
return false;
}
if($("#zipNo").val()=="" || $("#roadAddrPart").val()=="" || $("#addrDetail").val()=="")
{
alert("주소를 입력해주세요.");
return false;
}
if(confirm("수정하시겠습니까?")){
alert("수정되었습니다.");
return true;
}else{
return false;
}
}
</script>
<style type="text/css">
body {
padding-top:0px;
margin-top:0px;
background-color:#f5f5f5;
}
.page-header {
padding-top:0px;
margin-top:0px;
}
.form-horizontal .control-label.text-left{
text-align:left;
}
.form-horizontal .form-group {
height:50px;
}
h3 span.ok {
color:#01A9DB;
}
label.error {
font-family:"돋움", Dotum, "Apple SD Gothic Neo", Helvetica, Sans-serif;
font-size:9pt;
font-weight:600;
padding:3px 0 0 10px;
color:#FF0000;
display:block;
}
</style>
</head>
<body>
<div id="wrap">
<br><br>
<b><font size="6" color="gray">정보수정</font></b>
<br><br><br>
<form id="updateForm" name="updateForm" method="post" onsubmit="return update()" action="/nlib/userInfo/getMyInfo.do">
<table>
<tr>
<td id="title">아이디</td>
<td>
<input type="text" id="id" name="id" maxlength="30" value=<c:out value="${result.id}"/> required readonly >
</td>
</tr>
<tr>
<td id="title">이름</td>
<td>
<input type="text" id="name" name="name" maxlength="20" value=<c:out value="${result.name}"/> required>
</td>
</tr>
<tr>
<td id="title">휴대전화</td>
<td>
<input type="text" id="phone" name="phone" required value=<c:out value="${result.phone}"/> ><button type="button" style="text-align:left;" class="btn-warning" onclick="phoneCert()">인증번호 받기</button>
<div id="phoneCertForm" style="display:none;"><br><input type='text' id='phoneCertNum' name='phoneCertNum'> <button type='button' style='text-align:left;' class='btn-warning' onclick='certNumCheck()' >인증번호 확인</button></div>
</td>
</tr>
<tr>
<td id="title">주소</td>
<td>
<input type="text" id="zipNo" name="zipNo" readonly value=<c:out value="${result.zipNo}"/> ><button type="button" style="text-align:left;" class="btn-warning" onclick="goPopup()" >주소검색</button><br>
<input type="text" id="roadAddrPart" name="roadAddrPart" readonly value=<c:out value="${result.roadAddrPart}"/> ><input type="text" id="addrDetail" name="addrDetail" readonly value=<c:out value="${result.addrDetail}"/> >
</td>
</tr>
</table>
<br>
<input type="hidden" id="phoneCertYn" name="phoneCertYn" value=<c:out value="N"/>>
<input type="submit" value="수정"/> <input type="button" onclick="javascript:location.href='${pageContext.request.contextPath}/userInfo/getMyInfo.do';" value="취소">
</form>
</div>
</body>
</body>
</html>

View File

@ -1,52 +1,52 @@
<%
/**
* <pre>
* @Class Name : putMyInfo.jsp
*
* @Description : 내 정보 수정
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<title>Insert title here</title>
<script>
function goPutMyInfo(){
document.pwInputForm.action="/nlib/userInfo/putMyInfo.do";
document.pwInputForm.submit();
}
</script>
</head>
<body>
<h2>비밀번호를 입력해주세요</h2>
<form id="pwInputForm" name="pwInputForm" method="POST">
<input type="password" id="password" name="password"><button style="text-align:left;" class="btn-warning" onclick="goPutMyInfo();">확인</button>
</form>
</body>
<%
/**
* <pre>
* @Class Name : putMyInfo.jsp
*
* @Description : 내 정보 수정
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 12. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 7. 12.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<title>Insert title here</title>
<script>
function goPutMyInfo(){
document.pwInputForm.action="/nlib/userInfo/putMyInfo.do";
document.pwInputForm.submit();
}
</script>
</head>
<body>
<h2>비밀번호를 입력해주세요</h2>
<form id="pwInputForm" name="pwInputForm" method="POST">
<input type="password" id="password" name="password"><button style="text-align:left;" class="btn-warning" onclick="goPutMyInfo();">확인</button>
</form>
</body>
</html>

View File

@ -1,35 +1,35 @@
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<ul class="gnb">
<!-- 이용/소개 -->
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/inform/selectGreeting.do';">인사말</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/inform/selectNCultureOperationInfo.do';">이용안내</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listNotices.do';">공지사항</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listFAQs.do';">자주하는질문</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listQnAs.do';">묻고답하기</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/inform/selectNCultureLocationInfo.do';">찾아오시는길</a></li>
<!-- 자료검색 -->
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/collection/listItems.do';">소장자료검색</a></li>
<!-- 내정보 : 조회/수정 -->
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/member/selectMemberInfo.do';">내정보</a></li>
<!-- 내정보 : 대출/예약/열람/관심자료 -->
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/rent/listRentItems.do';">대출</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/rent/listReservations.do';">예약</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/rent/listRequestsForViewingItem.do';">열람요청</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/collection/listInterests.do';">관심자료</a></li>
<!-- 개발자용 메뉴 -->
<li><a href="#" style="color:#FF5;" onclick="javascript:location.href='${pageContext.request.contextPath}/sample/getSampleInfoForm.do';">통신API</a></li>
<li><a href="#" style="color:#FF5;" onclick="javascript:location.href='${pageContext.request.contextPath}/sample/barcode/getMemberQRCodeForm.do';">QR코드</a></li>
<li><a href="#" style="color:#FF5;" onclick="javascript:location.href='${pageContext.request.contextPath}/sample/password/getSampleEncoder.do';">암호화</a></li>
<li><a href="#" style="color:#FF5;" onclick="javascript:location.href='${pageContext.request.contextPath}/system/reloadProperties.do';">프로퍼티갱신</a></li>
</ul>
<script type="text/javascript">
$(function() {
});
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<ul class="gnb">
<!-- 이용/소개 -->
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/inform/selectGreeting.do';">인사말</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/inform/selectNCultureOperationInfo.do';">이용안내</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listNotices.do';">공지사항</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listFAQs.do';">자주하는질문</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/board/listQnAs.do';">묻고답하기</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/inform/selectNCultureLocationInfo.do';">찾아오시는길</a></li>
<!-- 자료검색 -->
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/collection/listItems.do';">소장자료검색</a></li>
<!-- 내정보 : 조회/수정 -->
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/member/selectMemberInfo.do';">내정보</a></li>
<!-- 내정보 : 대출/예약/열람/관심자료 -->
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/rent/listRentItems.do';">대출</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/rent/listReservations.do';">예약</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/rent/listRequestsForViewingItem.do';">열람요청</a></li>
<li><a href="#" onclick="javascript:location.href='${pageContext.request.contextPath}/collection/listInterests.do';">관심자료</a></li>
<!-- 개발자용 메뉴 -->
<li><a href="#" style="color:#FF5;" onclick="javascript:location.href='${pageContext.request.contextPath}/sample/getSampleInfoForm.do';">통신API</a></li>
<li><a href="#" style="color:#FF5;" onclick="javascript:location.href='${pageContext.request.contextPath}/sample/barcode/getMemberQRCodeForm.do';">QR코드</a></li>
<li><a href="#" style="color:#FF5;" onclick="javascript:location.href='${pageContext.request.contextPath}/sample/password/getSampleEncoder.do';">암호화</a></li>
<li><a href="#" style="color:#FF5;" onclick="javascript:location.href='${pageContext.request.contextPath}/system/reloadProperties.do';">프로퍼티갱신</a></li>
</ul>
<script type="text/javascript">
$(function() {
});
</script>

View File

@ -1,53 +1,53 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<link href="${pageContext.request.contextPath}/css/nlib.css" rel="stylesheet" type="text/css" />
<script src="${pageContext.request.contextPath}/js/jquery/jquery.min.js"></script>
<script src="${pageContext.request.contextPath}/js/nlib.js"></script>
<title>온라인 자료대출관리 (N-LIB)</title>
</head>
<body>
<div id="page-container">
<div id="header">
<!-- 머리말 : 시작 -->
<tiles:insertAttribute name="header" />
<!-- 머리말 : 종료 -->
</div>
<div id="menu">
<!-- 메뉴 : 시작 -->
<tiles:insertAttribute name="menu" />
<!-- 메뉴 : 종료 -->
</div>
<div id="content-wrap">
<!-- 메인 : 시작 -->
<tiles:insertAttribute name="main" />
<!-- 메인 : 종료 -->
</div>
<div id="footer">
<!-- 꼬리말 : 시작 -->
<tiles:insertAttribute name="footer" />
<!-- 꼬리말 : 종료 -->
</div>
</div>
<script type="text/javascript">
$(function() {
});
</script>
</body>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<link href="${pageContext.request.contextPath}/css/nlib.css" rel="stylesheet" type="text/css" />
<script src="${pageContext.request.contextPath}/js/jquery/jquery.min.js"></script>
<script src="${pageContext.request.contextPath}/js/nlib.js"></script>
<title>온라인 자료대출관리 (N-LIB)</title>
</head>
<body>
<div id="page-container">
<div id="header">
<!-- 머리말 : 시작 -->
<tiles:insertAttribute name="header" />
<!-- 머리말 : 종료 -->
</div>
<div id="menu">
<!-- 메뉴 : 시작 -->
<tiles:insertAttribute name="menu" />
<!-- 메뉴 : 종료 -->
</div>
<div id="content-wrap">
<!-- 메인 : 시작 -->
<tiles:insertAttribute name="main" />
<!-- 메인 : 종료 -->
</div>
<div id="footer">
<!-- 꼬리말 : 시작 -->
<tiles:insertAttribute name="footer" />
<!-- 꼬리말 : 종료 -->
</div>
</div>
<script type="text/javascript">
$(function() {
});
</script>
</body>
</html>

View File

@ -1,40 +1,40 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<!-- 메뉴 탭 타일즈 -->
<definition name="template" template="/WEB-INF/tiles/tiles-layout.jsp">
<put-attribute name="header" value="/WEB-INF/tiles/inc/header.jsp" />
<put-attribute name="menu" value="/WEB-INF/tiles/inc/menu.jsp" />
<put-attribute name="footer" value="/WEB-INF/tiles/inc/footer.jsp" />
</definition>
<definition name="popup" template="/WEB-INF/tiles/tiles-layout-popup.jsp">
<put-attribute name="header" value="/WEB-INF/tiles/inc-popup/header.jsp" />
<put-attribute name="menu" value="/WEB-INF/tiles/inc-popup/menu.jsp" />
<put-attribute name="footer" value="/WEB-INF/tiles/inc-popup/footer.jsp" />
</definition>
<definition name="*" extends="template">
<put-attribute name="main" value="/WEB-INF/jsp/{1}.jsp" />
</definition>
<definition name="*/*" extends="template">
<put-attribute name="main" value="/WEB-INF/jsp/{1}/{2}.jsp" />
</definition>
<definition name="*/*/*" extends="template">
<put-attribute name="main" value="/WEB-INF/jsp/{1}/{2}/{3}.jsp" />
</definition>
<definition name="*/*/*/*" extends="template">
<put-attribute name="main" value="/WEB-INF/jsp/{1}/{2}/{3}/{4}.jsp" />
</definition>
<definition name="*/*Popup" extends="popup">
<put-attribute name="main" value="/WEB-INF/jsp/{1}/{2}*Popup.jsp" />
</definition>
<definition name="*/*/*Popup" extends="popup">
<put-attribute name="main" value="/WEB-INF/jsp/{1}/{2}/{3}*Popup.jsp" />
</definition>
</tiles-definitions>
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<!-- 메뉴 탭 타일즈 -->
<definition name="template" template="/WEB-INF/tiles/tiles-layout.jsp">
<put-attribute name="header" value="/WEB-INF/tiles/inc/header.jsp" />
<put-attribute name="menu" value="/WEB-INF/tiles/inc/menu.jsp" />
<put-attribute name="footer" value="/WEB-INF/tiles/inc/footer.jsp" />
</definition>
<definition name="popup" template="/WEB-INF/tiles/tiles-layout-popup.jsp">
<put-attribute name="header" value="/WEB-INF/tiles/inc-popup/header.jsp" />
<put-attribute name="menu" value="/WEB-INF/tiles/inc-popup/menu.jsp" />
<put-attribute name="footer" value="/WEB-INF/tiles/inc-popup/footer.jsp" />
</definition>
<definition name="*" extends="template">
<put-attribute name="main" value="/WEB-INF/jsp/{1}.jsp" />
</definition>
<definition name="*/*" extends="template">
<put-attribute name="main" value="/WEB-INF/jsp/{1}/{2}.jsp" />
</definition>
<definition name="*/*/*" extends="template">
<put-attribute name="main" value="/WEB-INF/jsp/{1}/{2}/{3}.jsp" />
</definition>
<definition name="*/*/*/*" extends="template">
<put-attribute name="main" value="/WEB-INF/jsp/{1}/{2}/{3}/{4}.jsp" />
</definition>
<definition name="*/*Popup" extends="popup">
<put-attribute name="main" value="/WEB-INF/jsp/{1}/{2}*Popup.jsp" />
</definition>
<definition name="*/*/*Popup" extends="popup">
<put-attribute name="main" value="/WEB-INF/jsp/{1}/{2}/{3}*Popup.jsp" />
</definition>
</tiles-definitions>

View File

@ -1,88 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>nlib</display-name>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter>
<filter-name>HTMLTagFilter</filter-name>
<filter-class>egovframework.rte.ptl.mvc.filter.HTMLTagFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HTMLTagFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<!-- Spring Security Filter : DIGITALSHIP 2021.07.02 -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:egovframework/spring/context-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.ajax</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/common/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/common/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/common/error.jsp</location>
</error-page>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>nlib</display-name>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter>
<filter-name>HTMLTagFilter</filter-name>
<filter-class>egovframework.rte.ptl.mvc.filter.HTMLTagFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HTMLTagFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<!-- Spring Security Filter : DIGITALSHIP 2021.07.02 -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:egovframework/spring/context-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.ajax</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/common/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/common/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/common/error.jsp</location>
</error-page>
</web-app>

View File

@ -1,159 +1,159 @@
/********************************************************************************/
/* */
/* Design RIAN */
/* Date : 2007-03-21 */
/* */
/* */
/********************************************************************************/
* {margin:0;padding:0;}
h1 {
padding-bottom:20px;
}
html {
height: 100%;
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
position: relative;
margin: 0;
padding-bottom: 6rem;
width: 100%;
}
html, body { height: 100%; }
#page-container {
padding-op: 150px;
}
#content-wrap {
position: relative;
display: block;
padding: 20px;
top:120px;
padding-bottom: 100px;
}
.gnb li {
float: left;
padding: 0px;
padding-right: 20px;
}
.gnb li a {
color: #fff;
font-weight: 600;
font-size: 16px;
}
.gnb-right {
padding-right: 40px;
position:relative;
top:-20px;
}
.gnb-right li {
float: right;
padding: 0px;
padding-right: 20px;
color: orange;
}
.gnb-right li a {
color: #333;
font-weight: bolder;
font-size: 14px;
}
#header {
width: 100%;
height: 60px;
font-weight:bolder;
position: fixed;
background: #fff;
padding: 20px;
color: #000;
font-weight: 900;
font: 16px "Noto Sans KR", sans-serif;
z-index: 10000;
}
#menu {
width: 100%;
height: 60px; /* Footer height */
position: fixed;
top:60px;
font-weight:bold;
background: #2781C1;
padding: 20px;
z-index: 10000;
font: 16px "Noto Sans KR", sans-serif;
}
#footer {
margin: 0;
padding: 1rem;
color: #AAAAAA;
background-color: #333333;
position: fixed;
width: 100%;
display: block;
text-align: center;
right: 0;
bottom: 0;
left: 0;
bottom: 0;
}
#jsGrid {
margin-top: 20px;
margin-bottom: 10px;
}
ul, ol, li {
list-style: none;
}
a {
color: inherit;
text-decoration: none;
background-color: transparent;
font: 16px "Noto Sans KR", sans-serif;
color: blue;
}
button {
floating: right;
cursor: pointer;
}
.float{
height:40px;
float: right;
background-color:#ddd;
color:#000;
text-align:center;
box-shadow: 2px 2px 3px #999;
padding: 10px;
margin-right: 10px;
margin-top: 10px;
}
.table_content table {
width: 100% !important;
margin-top: 10px;
}
.table_content table, th, td {
border: 1px solid #444444;
}
/********************************************************************************/
/* */
/* Design RIAN */
/* Date : 2007-03-21 */
/* */
/* */
/********************************************************************************/
* {margin:0;padding:0;}
h1 {
padding-bottom:20px;
}
html {
height: 100%;
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
position: relative;
margin: 0;
padding-bottom: 6rem;
width: 100%;
}
html, body { height: 100%; }
#page-container {
padding-op: 150px;
}
#content-wrap {
position: relative;
display: block;
padding: 20px;
top:120px;
padding-bottom: 100px;
}
.gnb li {
float: left;
padding: 0px;
padding-right: 20px;
}
.gnb li a {
color: #fff;
font-weight: 600;
font-size: 16px;
}
.gnb-right {
padding-right: 40px;
position:relative;
top:-20px;
}
.gnb-right li {
float: right;
padding: 0px;
padding-right: 20px;
color: orange;
}
.gnb-right li a {
color: #333;
font-weight: bolder;
font-size: 14px;
}
#header {
width: 100%;
height: 60px;
font-weight:bolder;
position: fixed;
background: #fff;
padding: 20px;
color: #000;
font-weight: 900;
font: 16px "Noto Sans KR", sans-serif;
z-index: 10000;
}
#menu {
width: 100%;
height: 60px; /* Footer height */
position: fixed;
top:60px;
font-weight:bold;
background: #2781C1;
padding: 20px;
z-index: 10000;
font: 16px "Noto Sans KR", sans-serif;
}
#footer {
margin: 0;
padding: 1rem;
color: #AAAAAA;
background-color: #333333;
position: fixed;
width: 100%;
display: block;
text-align: center;
right: 0;
bottom: 0;
left: 0;
bottom: 0;
}
#jsGrid {
margin-top: 20px;
margin-bottom: 10px;
}
ul, ol, li {
list-style: none;
}
a {
color: inherit;
text-decoration: none;
background-color: transparent;
font: 16px "Noto Sans KR", sans-serif;
color: blue;
}
button {
floating: right;
cursor: pointer;
}
.float{
height:40px;
float: right;
background-color:#ddd;
color:#000;
text-align:center;
box-shadow: 2px 2px 3px #999;
padding: 10px;
margin-right: 10px;
margin-top: 10px;
}
.table_content table {
width: 100% !important;
margin-top: 10px;
}
.table_content table, th, td {
border: 1px solid #444444;
}

View File

@ -1,394 +1,394 @@
@-webkit-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-moz-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-webkit-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-moz-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-webkit-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@-moz-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
.dropzone, .dropzone * {
box-sizing: border-box; }
.dropzone {
min-height: 80px; /* NLIB */
border: 2px solid rgba(0, 0, 0, 0.3);
background: white;
padding: 0px 10px; /* NLIB */
}
.dropzone.dz-clickable {
cursor: pointer; }
.dropzone.dz-clickable * {
cursor: default; }
.dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {
cursor: pointer; }
.dropzone.dz-started .dz-message {
display: none; }
.dropzone.dz-drag-hover {
border-style: solid; }
.dropzone.dz-drag-hover .dz-message {
opacity: 0.5; }
.dropzone .dz-message {
text-align: center;
margin: 1em 0; }
.dropzone .dz-message .dz-button {
background: none;
color: inherit;
border: none;
padding: 0;
font: inherit;
cursor: pointer;
outline: inherit; }
.dropzone .dz-preview {
position: relative;
display: inline-block;
vertical-align: top;
margin: 16px;
min-height: 60px; /* NLIB */
}
.dropzone .dz-preview:hover {
z-index: 1000; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-file-preview .dz-image {
border-radius: 20px;
background: #999;
background: linear-gradient(to bottom, #eee, #ddd); }
.dropzone .dz-preview.dz-file-preview .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-image-preview {
background: white; }
.dropzone .dz-preview.dz-image-preview .dz-details {
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
-ms-transition: opacity 0.2s linear;
-o-transition: opacity 0.2s linear;
transition: opacity 0.2s linear; }
.dropzone .dz-preview .dz-remove {
font-size: 14px;
text-align: center;
display: block;
cursor: pointer;
border: none; }
.dropzone .dz-preview .dz-remove:hover {
text-decoration: underline; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview .dz-details {
z-index: 20;
position: absolute;
top: 0;
left: 0;
opacity: 0;
font-size: 13px;
min-width: 100%;
max-width: 100%;
padding: 0em 1em; /* NLIB */
text-align: center;
color: rgba(0, 0, 0, 0.9);
line-height: 150%; }
.dropzone .dz-preview .dz-details .dz-size {
margin-bottom: 1em;
font-size: 16px; }
.dropzone .dz-preview .dz-details .dz-filename {
white-space: nowrap; }
.dropzone .dz-preview .dz-details .dz-filename:hover span {
border: 1px solid rgba(200, 200, 200, 0.8);
background-color: rgba(255, 255, 255, 0.8); }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
overflow: hidden;
text-overflow: ellipsis; }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
border: 1px solid transparent; }
.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {
background-color: rgba(255, 255, 255, 0.4);
padding: 0 0.4em;
border-radius: 3px; }
.dropzone .dz-preview:hover .dz-image img {
-webkit-transform: scale(1.05, 1.05);
-moz-transform: scale(1.05, 1.05);
-ms-transform: scale(1.05, 1.05);
-o-transform: scale(1.05, 1.05);
transform: scale(1.05, 1.05);
-webkit-filter: blur(8px);
filter: blur(8px); }
.dropzone .dz-preview .dz-image {
border-radius: 20px;
overflow: hidden;
width: 120px;
height: 60px; /* NLIB */
position: relative;
display: block;
z-index: 10; }
.dropzone .dz-preview .dz-image img {
display: block; }
.dropzone .dz-preview.dz-success .dz-success-mark {
-webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview.dz-error .dz-error-mark {
opacity: 1;
-webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {
pointer-events: none;
opacity: 0;
z-index: 500;
position: absolute;
display: block;
top: 50%;
left: 50%;
margin-left: -27px;
margin-top: -27px; }
.dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {
display: block;
width: 54px;
height: 54px; }
.dropzone .dz-preview.dz-processing .dz-progress {
opacity: 1;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-ms-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear; }
.dropzone .dz-preview.dz-complete .dz-progress {
opacity: 0;
-webkit-transition: opacity 0.4s ease-in;
-moz-transition: opacity 0.4s ease-in;
-ms-transition: opacity 0.4s ease-in;
-o-transition: opacity 0.4s ease-in;
transition: opacity 0.4s ease-in; }
.dropzone .dz-preview:not(.dz-processing) .dz-progress {
-webkit-animation: pulse 6s ease infinite;
-moz-animation: pulse 6s ease infinite;
-ms-animation: pulse 6s ease infinite;
-o-animation: pulse 6s ease infinite;
animation: pulse 6s ease infinite; }
.dropzone .dz-preview .dz-progress {
opacity: 1;
z-index: 1000;
pointer-events: none;
position: absolute;
height: 16px;
left: 50%;
top: 50%;
margin-top: -8px;
width: 80px;
margin-left: -40px;
background: rgba(255, 255, 255, 0.9);
-webkit-transform: scale(1);
border-radius: 8px;
overflow: hidden; }
.dropzone .dz-preview .dz-progress .dz-upload {
background: #333;
background: linear-gradient(to bottom, #666, #444);
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 0;
-webkit-transition: width 300ms ease-in-out;
-moz-transition: width 300ms ease-in-out;
-ms-transition: width 300ms ease-in-out;
-o-transition: width 300ms ease-in-out;
transition: width 300ms ease-in-out; }
.dropzone .dz-preview.dz-error .dz-error-message {
display: block; }
.dropzone .dz-preview.dz-error:hover .dz-error-message {
opacity: 1;
pointer-events: auto; }
.dropzone .dz-preview .dz-error-message {
pointer-events: none;
z-index: 1000;
position: absolute;
display: block;
display: none;
opacity: 0;
-webkit-transition: opacity 0.3s ease;
-moz-transition: opacity 0.3s ease;
-ms-transition: opacity 0.3s ease;
-o-transition: opacity 0.3s ease;
transition: opacity 0.3s ease;
border-radius: 8px;
font-size: 13px;
top: 130px;
left: -10px;
width: 140px;
background: #be2626;
background: linear-gradient(to bottom, #be2626, #a92222);
padding: 0.5em 1.2em;
color: white; }
.dropzone .dz-preview .dz-error-message:after {
content: '';
position: absolute;
top: -6px;
left: 64px;
width: 0;
height: 0;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #be2626; }
@-webkit-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-moz-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-webkit-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-moz-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-webkit-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@-moz-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
.dropzone, .dropzone * {
box-sizing: border-box; }
.dropzone {
min-height: 80px; /* NLIB */
border: 2px solid rgba(0, 0, 0, 0.3);
background: white;
padding: 0px 10px; /* NLIB */
}
.dropzone.dz-clickable {
cursor: pointer; }
.dropzone.dz-clickable * {
cursor: default; }
.dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {
cursor: pointer; }
.dropzone.dz-started .dz-message {
display: none; }
.dropzone.dz-drag-hover {
border-style: solid; }
.dropzone.dz-drag-hover .dz-message {
opacity: 0.5; }
.dropzone .dz-message {
text-align: center;
margin: 1em 0; }
.dropzone .dz-message .dz-button {
background: none;
color: inherit;
border: none;
padding: 0;
font: inherit;
cursor: pointer;
outline: inherit; }
.dropzone .dz-preview {
position: relative;
display: inline-block;
vertical-align: top;
margin: 16px;
min-height: 60px; /* NLIB */
}
.dropzone .dz-preview:hover {
z-index: 1000; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-file-preview .dz-image {
border-radius: 20px;
background: #999;
background: linear-gradient(to bottom, #eee, #ddd); }
.dropzone .dz-preview.dz-file-preview .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-image-preview {
background: white; }
.dropzone .dz-preview.dz-image-preview .dz-details {
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
-ms-transition: opacity 0.2s linear;
-o-transition: opacity 0.2s linear;
transition: opacity 0.2s linear; }
.dropzone .dz-preview .dz-remove {
font-size: 14px;
text-align: center;
display: block;
cursor: pointer;
border: none; }
.dropzone .dz-preview .dz-remove:hover {
text-decoration: underline; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview .dz-details {
z-index: 20;
position: absolute;
top: 0;
left: 0;
opacity: 0;
font-size: 13px;
min-width: 100%;
max-width: 100%;
padding: 0em 1em; /* NLIB */
text-align: center;
color: rgba(0, 0, 0, 0.9);
line-height: 150%; }
.dropzone .dz-preview .dz-details .dz-size {
margin-bottom: 1em;
font-size: 16px; }
.dropzone .dz-preview .dz-details .dz-filename {
white-space: nowrap; }
.dropzone .dz-preview .dz-details .dz-filename:hover span {
border: 1px solid rgba(200, 200, 200, 0.8);
background-color: rgba(255, 255, 255, 0.8); }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
overflow: hidden;
text-overflow: ellipsis; }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
border: 1px solid transparent; }
.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {
background-color: rgba(255, 255, 255, 0.4);
padding: 0 0.4em;
border-radius: 3px; }
.dropzone .dz-preview:hover .dz-image img {
-webkit-transform: scale(1.05, 1.05);
-moz-transform: scale(1.05, 1.05);
-ms-transform: scale(1.05, 1.05);
-o-transform: scale(1.05, 1.05);
transform: scale(1.05, 1.05);
-webkit-filter: blur(8px);
filter: blur(8px); }
.dropzone .dz-preview .dz-image {
border-radius: 20px;
overflow: hidden;
width: 120px;
height: 60px; /* NLIB */
position: relative;
display: block;
z-index: 10; }
.dropzone .dz-preview .dz-image img {
display: block; }
.dropzone .dz-preview.dz-success .dz-success-mark {
-webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview.dz-error .dz-error-mark {
opacity: 1;
-webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {
pointer-events: none;
opacity: 0;
z-index: 500;
position: absolute;
display: block;
top: 50%;
left: 50%;
margin-left: -27px;
margin-top: -27px; }
.dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {
display: block;
width: 54px;
height: 54px; }
.dropzone .dz-preview.dz-processing .dz-progress {
opacity: 1;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-ms-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear; }
.dropzone .dz-preview.dz-complete .dz-progress {
opacity: 0;
-webkit-transition: opacity 0.4s ease-in;
-moz-transition: opacity 0.4s ease-in;
-ms-transition: opacity 0.4s ease-in;
-o-transition: opacity 0.4s ease-in;
transition: opacity 0.4s ease-in; }
.dropzone .dz-preview:not(.dz-processing) .dz-progress {
-webkit-animation: pulse 6s ease infinite;
-moz-animation: pulse 6s ease infinite;
-ms-animation: pulse 6s ease infinite;
-o-animation: pulse 6s ease infinite;
animation: pulse 6s ease infinite; }
.dropzone .dz-preview .dz-progress {
opacity: 1;
z-index: 1000;
pointer-events: none;
position: absolute;
height: 16px;
left: 50%;
top: 50%;
margin-top: -8px;
width: 80px;
margin-left: -40px;
background: rgba(255, 255, 255, 0.9);
-webkit-transform: scale(1);
border-radius: 8px;
overflow: hidden; }
.dropzone .dz-preview .dz-progress .dz-upload {
background: #333;
background: linear-gradient(to bottom, #666, #444);
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 0;
-webkit-transition: width 300ms ease-in-out;
-moz-transition: width 300ms ease-in-out;
-ms-transition: width 300ms ease-in-out;
-o-transition: width 300ms ease-in-out;
transition: width 300ms ease-in-out; }
.dropzone .dz-preview.dz-error .dz-error-message {
display: block; }
.dropzone .dz-preview.dz-error:hover .dz-error-message {
opacity: 1;
pointer-events: auto; }
.dropzone .dz-preview .dz-error-message {
pointer-events: none;
z-index: 1000;
position: absolute;
display: block;
display: none;
opacity: 0;
-webkit-transition: opacity 0.3s ease;
-moz-transition: opacity 0.3s ease;
-ms-transition: opacity 0.3s ease;
-o-transition: opacity 0.3s ease;
transition: opacity 0.3s ease;
border-radius: 8px;
font-size: 13px;
top: 130px;
left: -10px;
width: 140px;
background: #be2626;
background: linear-gradient(to bottom, #be2626, #a92222);
padding: 0.5em 1.2em;
color: white; }
.dropzone .dz-preview .dz-error-message:after {
content: '';
position: absolute;
top: -6px;
left: 64px;
width: 0;
height: 0;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #be2626; }

File diff suppressed because it is too large Load Diff

View File

@ -1,392 +1,392 @@
@-webkit-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-moz-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-webkit-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-moz-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-webkit-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@-moz-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
.dropzone, .dropzone * {
box-sizing: border-box; }
.dropzone {
min-height: 150px;
border: 2px solid rgba(0, 0, 0, 0.3);
background: white;
padding: 54px 54px; }
.dropzone.dz-clickable {
cursor: pointer; }
.dropzone.dz-clickable * {
cursor: default; }
.dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {
cursor: pointer; }
.dropzone.dz-started .dz-message {
display: none; }
.dropzone.dz-drag-hover {
border-style: solid; }
.dropzone.dz-drag-hover .dz-message {
opacity: 0.5; }
.dropzone .dz-message {
text-align: center;
margin: 2em 0; }
.dropzone .dz-message .dz-button {
background: none;
color: inherit;
border: none;
padding: 0;
font: inherit;
cursor: pointer;
outline: inherit; }
.dropzone .dz-preview {
position: relative;
display: inline-block;
vertical-align: top;
margin: 16px;
min-height: 100px; }
.dropzone .dz-preview:hover {
z-index: 1000; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-file-preview .dz-image {
border-radius: 20px;
background: #999;
background: linear-gradient(to bottom, #eee, #ddd); }
.dropzone .dz-preview.dz-file-preview .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-image-preview {
background: white; }
.dropzone .dz-preview.dz-image-preview .dz-details {
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
-ms-transition: opacity 0.2s linear;
-o-transition: opacity 0.2s linear;
transition: opacity 0.2s linear; }
.dropzone .dz-preview .dz-remove {
font-size: 14px;
text-align: center;
display: block;
cursor: pointer;
border: none; }
.dropzone .dz-preview .dz-remove:hover {
text-decoration: underline; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview .dz-details {
z-index: 20;
position: absolute;
top: 0;
left: 0;
opacity: 0;
font-size: 13px;
min-width: 100%;
max-width: 100%;
padding: 2em 1em;
text-align: center;
color: rgba(0, 0, 0, 0.9);
line-height: 150%; }
.dropzone .dz-preview .dz-details .dz-size {
margin-bottom: 1em;
font-size: 16px; }
.dropzone .dz-preview .dz-details .dz-filename {
white-space: nowrap; }
.dropzone .dz-preview .dz-details .dz-filename:hover span {
border: 1px solid rgba(200, 200, 200, 0.8);
background-color: rgba(255, 255, 255, 0.8); }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
overflow: hidden;
text-overflow: ellipsis; }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
border: 1px solid transparent; }
.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {
background-color: rgba(255, 255, 255, 0.4);
padding: 0 0.4em;
border-radius: 3px; }
.dropzone .dz-preview:hover .dz-image img {
-webkit-transform: scale(1.05, 1.05);
-moz-transform: scale(1.05, 1.05);
-ms-transform: scale(1.05, 1.05);
-o-transform: scale(1.05, 1.05);
transform: scale(1.05, 1.05);
-webkit-filter: blur(8px);
filter: blur(8px); }
.dropzone .dz-preview .dz-image {
border-radius: 20px;
overflow: hidden;
width: 120px;
height: 120px;
position: relative;
display: block;
z-index: 10; }
.dropzone .dz-preview .dz-image img {
display: block; }
.dropzone .dz-preview.dz-success .dz-success-mark {
-webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview.dz-error .dz-error-mark {
opacity: 1;
-webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {
pointer-events: none;
opacity: 0;
z-index: 500;
position: absolute;
display: block;
top: 50%;
left: 50%;
margin-left: -27px;
margin-top: -27px; }
.dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {
display: block;
width: 54px;
height: 54px; }
.dropzone .dz-preview.dz-processing .dz-progress {
opacity: 1;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-ms-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear; }
.dropzone .dz-preview.dz-complete .dz-progress {
opacity: 0;
-webkit-transition: opacity 0.4s ease-in;
-moz-transition: opacity 0.4s ease-in;
-ms-transition: opacity 0.4s ease-in;
-o-transition: opacity 0.4s ease-in;
transition: opacity 0.4s ease-in; }
.dropzone .dz-preview:not(.dz-processing) .dz-progress {
-webkit-animation: pulse 6s ease infinite;
-moz-animation: pulse 6s ease infinite;
-ms-animation: pulse 6s ease infinite;
-o-animation: pulse 6s ease infinite;
animation: pulse 6s ease infinite; }
.dropzone .dz-preview .dz-progress {
opacity: 1;
z-index: 1000;
pointer-events: none;
position: absolute;
height: 16px;
left: 50%;
top: 50%;
margin-top: -8px;
width: 80px;
margin-left: -40px;
background: rgba(255, 255, 255, 0.9);
-webkit-transform: scale(1);
border-radius: 8px;
overflow: hidden; }
.dropzone .dz-preview .dz-progress .dz-upload {
background: #333;
background: linear-gradient(to bottom, #666, #444);
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 0;
-webkit-transition: width 300ms ease-in-out;
-moz-transition: width 300ms ease-in-out;
-ms-transition: width 300ms ease-in-out;
-o-transition: width 300ms ease-in-out;
transition: width 300ms ease-in-out; }
.dropzone .dz-preview.dz-error .dz-error-message {
display: block; }
.dropzone .dz-preview.dz-error:hover .dz-error-message {
opacity: 1;
pointer-events: auto; }
.dropzone .dz-preview .dz-error-message {
pointer-events: none;
z-index: 1000;
position: absolute;
display: block;
display: none;
opacity: 0;
-webkit-transition: opacity 0.3s ease;
-moz-transition: opacity 0.3s ease;
-ms-transition: opacity 0.3s ease;
-o-transition: opacity 0.3s ease;
transition: opacity 0.3s ease;
border-radius: 8px;
font-size: 13px;
top: 130px;
left: -10px;
width: 140px;
background: #be2626;
background: linear-gradient(to bottom, #be2626, #a92222);
padding: 0.5em 1.2em;
color: white; }
.dropzone .dz-preview .dz-error-message:after {
content: '';
position: absolute;
top: -6px;
left: 64px;
width: 0;
height: 0;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #be2626; }
@-webkit-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-moz-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-webkit-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-moz-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-webkit-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@-moz-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
.dropzone, .dropzone * {
box-sizing: border-box; }
.dropzone {
min-height: 150px;
border: 2px solid rgba(0, 0, 0, 0.3);
background: white;
padding: 54px 54px; }
.dropzone.dz-clickable {
cursor: pointer; }
.dropzone.dz-clickable * {
cursor: default; }
.dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {
cursor: pointer; }
.dropzone.dz-started .dz-message {
display: none; }
.dropzone.dz-drag-hover {
border-style: solid; }
.dropzone.dz-drag-hover .dz-message {
opacity: 0.5; }
.dropzone .dz-message {
text-align: center;
margin: 2em 0; }
.dropzone .dz-message .dz-button {
background: none;
color: inherit;
border: none;
padding: 0;
font: inherit;
cursor: pointer;
outline: inherit; }
.dropzone .dz-preview {
position: relative;
display: inline-block;
vertical-align: top;
margin: 16px;
min-height: 100px; }
.dropzone .dz-preview:hover {
z-index: 1000; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-file-preview .dz-image {
border-radius: 20px;
background: #999;
background: linear-gradient(to bottom, #eee, #ddd); }
.dropzone .dz-preview.dz-file-preview .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-image-preview {
background: white; }
.dropzone .dz-preview.dz-image-preview .dz-details {
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
-ms-transition: opacity 0.2s linear;
-o-transition: opacity 0.2s linear;
transition: opacity 0.2s linear; }
.dropzone .dz-preview .dz-remove {
font-size: 14px;
text-align: center;
display: block;
cursor: pointer;
border: none; }
.dropzone .dz-preview .dz-remove:hover {
text-decoration: underline; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview .dz-details {
z-index: 20;
position: absolute;
top: 0;
left: 0;
opacity: 0;
font-size: 13px;
min-width: 100%;
max-width: 100%;
padding: 2em 1em;
text-align: center;
color: rgba(0, 0, 0, 0.9);
line-height: 150%; }
.dropzone .dz-preview .dz-details .dz-size {
margin-bottom: 1em;
font-size: 16px; }
.dropzone .dz-preview .dz-details .dz-filename {
white-space: nowrap; }
.dropzone .dz-preview .dz-details .dz-filename:hover span {
border: 1px solid rgba(200, 200, 200, 0.8);
background-color: rgba(255, 255, 255, 0.8); }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
overflow: hidden;
text-overflow: ellipsis; }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
border: 1px solid transparent; }
.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {
background-color: rgba(255, 255, 255, 0.4);
padding: 0 0.4em;
border-radius: 3px; }
.dropzone .dz-preview:hover .dz-image img {
-webkit-transform: scale(1.05, 1.05);
-moz-transform: scale(1.05, 1.05);
-ms-transform: scale(1.05, 1.05);
-o-transform: scale(1.05, 1.05);
transform: scale(1.05, 1.05);
-webkit-filter: blur(8px);
filter: blur(8px); }
.dropzone .dz-preview .dz-image {
border-radius: 20px;
overflow: hidden;
width: 120px;
height: 120px;
position: relative;
display: block;
z-index: 10; }
.dropzone .dz-preview .dz-image img {
display: block; }
.dropzone .dz-preview.dz-success .dz-success-mark {
-webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview.dz-error .dz-error-mark {
opacity: 1;
-webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {
pointer-events: none;
opacity: 0;
z-index: 500;
position: absolute;
display: block;
top: 50%;
left: 50%;
margin-left: -27px;
margin-top: -27px; }
.dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {
display: block;
width: 54px;
height: 54px; }
.dropzone .dz-preview.dz-processing .dz-progress {
opacity: 1;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-ms-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear; }
.dropzone .dz-preview.dz-complete .dz-progress {
opacity: 0;
-webkit-transition: opacity 0.4s ease-in;
-moz-transition: opacity 0.4s ease-in;
-ms-transition: opacity 0.4s ease-in;
-o-transition: opacity 0.4s ease-in;
transition: opacity 0.4s ease-in; }
.dropzone .dz-preview:not(.dz-processing) .dz-progress {
-webkit-animation: pulse 6s ease infinite;
-moz-animation: pulse 6s ease infinite;
-ms-animation: pulse 6s ease infinite;
-o-animation: pulse 6s ease infinite;
animation: pulse 6s ease infinite; }
.dropzone .dz-preview .dz-progress {
opacity: 1;
z-index: 1000;
pointer-events: none;
position: absolute;
height: 16px;
left: 50%;
top: 50%;
margin-top: -8px;
width: 80px;
margin-left: -40px;
background: rgba(255, 255, 255, 0.9);
-webkit-transform: scale(1);
border-radius: 8px;
overflow: hidden; }
.dropzone .dz-preview .dz-progress .dz-upload {
background: #333;
background: linear-gradient(to bottom, #666, #444);
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 0;
-webkit-transition: width 300ms ease-in-out;
-moz-transition: width 300ms ease-in-out;
-ms-transition: width 300ms ease-in-out;
-o-transition: width 300ms ease-in-out;
transition: width 300ms ease-in-out; }
.dropzone .dz-preview.dz-error .dz-error-message {
display: block; }
.dropzone .dz-preview.dz-error:hover .dz-error-message {
opacity: 1;
pointer-events: auto; }
.dropzone .dz-preview .dz-error-message {
pointer-events: none;
z-index: 1000;
position: absolute;
display: block;
display: none;
opacity: 0;
-webkit-transition: opacity 0.3s ease;
-moz-transition: opacity 0.3s ease;
-ms-transition: opacity 0.3s ease;
-o-transition: opacity 0.3s ease;
transition: opacity 0.3s ease;
border-radius: 8px;
font-size: 13px;
top: 130px;
left: -10px;
width: 140px;
background: #be2626;
background: linear-gradient(to bottom, #be2626, #a92222);
padding: 0.5em 1.2em;
color: white; }
.dropzone .dz-preview .dz-error-message:after {
content: '';
position: absolute;
top: -6px;
left: 64px;
width: 0;
height: 0;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #be2626; }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More