區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應...

49
區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應用實例 桃園區網中心 楊素秋 ( 2015-11-05 )

Transcript of 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應...

Page 1: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應用實例

桃園區網中心 楊素秋 ( 2015-11-05 )

Page 2: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

OUTLINE

•1. 基本軟體

–OS, jdk, mongoDB,

–apache-maven, apache-tomcat,

•2. Integrate Zk, Spring Security , MongoDB

– TycMgt.tar.gz

•3. ZK MVC

•4. ZK MVVM

•5. Conclusion

Page 3: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

1. 基本軟體

•Xen Server (6.1 version)

–On PC

–On Blade server

•XenCenter

•new VM

•export VM

•import VM

•Virtual machine

–CentOS 64-bits ( 6.4 version)

Page 5: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

1.基本軟體(cont.)

•mongo DB Installation

–vi /etc/yum.repos.d/mongodb.repo

•[10gen]

•name=10gen Repository

•baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64

•gpgcheck=0

•enabled=1

–yum install mongo-10gen mongo-10gen-server

–service mongod start

–service mongod stop

–chkconfig mongod on

Page 6: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

1. 基本軟體 (cont.)

•MongoDB

–Mongo Shell

•show dbs

•use simpletasks

•show collections

●db.task.find(), db.task.remove(), db.task.drop()

●Program with java

●MongoClient

●Google morphia, Spring data repositive/template

Page 7: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

1.基本軟體 (cont.)

•mongoDB Backup (備份) ●# mongodump --db todo

●ls -l ~yang/Mongo*/dump/todo

●-rw-r--r--. 1 root root 163374798 2014-01-23 18:48 dnssec.bson

●-rw-r--r--. 1 root root 93 2014-01-23 18:48 dnssec.metadata.json

●-rw-r--r--. 1 root root 776661 2014-01-23 18:48 dormip.bson

●-rw-r--r--. 1 root root 93 2014-01-23 18:48 dormip.metadata.json

●-rw-r--r--. 1 root root 607 2014-01-23 18:48 system.indexes.bson

•mongoDB Restore (還原) ●# mongorestore --db todo dump/todo

●# mongorestore --collection dormip --db todo Mongo_DB/dump/todo/dormip.bson

●connected to: 127.0.0.1

●Wed Feb 5 17:53:52.846 Mongo_DB/dump/todo/dormip.bson

●Wed Feb 5 17:53:52.846 going into namespace [todo.dormip]

●5529 objects found

●Wed Feb 5 17:53:52.957 Creating index: { key: { _id: 1 }, ns: "todo.dormip", name: "_id_" }

Page 8: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

•apache-maven installation

–Download Apache Maven 3.1.1

•cd /opt

• wget ftp://mirror.reverse.net/pub/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz

–tar zxvf apache-maven-3.1.1-bin.tar.gz

–ls –l apache-maven-3.1.1/bin

•-rw-r--r--. 1 root root 228 2013-09-17 23:24 m2.conf

•-rwxr-xr-x. 1 root root 5806 2013-09-17 23:24 mvn

1.基本軟體 (cont.)

Page 9: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

–Maven command

–mvn clean

–mvn compile

–mvn package

– mvn archetype:generate -DgroupId=ncu.app -DartifactId=ncu_app - DarchetypeArtifactId=maven-

archetype-quickstart

•-rw-r--r--. 1 root root 634 2014-01-28 14:51 pom.xml

•drwxr-xr-x. 4 root root 4096 2014-01-28 14:51 src

–ls –l ncu_app/src/main/java/ncu/app

–-rw-r--r--. 1 root root 170 2014-01-28 14:51 App.java

1.基本軟體 (cont.)

Page 10: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

–more ncu_app/src/main/java/ncu/app/App.java

•package ncu.app;

–public class App {

– public static void main( String[] args ) {

– System.out.println( "Hello World!" );

– }

–}

•mvn clean compile package

– ncu_app-1.0-SNAPSHOT.jar

–Java -cp target/ncu_app-1.0-SNAPSHOT.jar ncu.app.App

–mvn exec:java -Dexec.mainClass="ncu.app.App

• Hello World!

1.基本軟體 (cont.)

Page 12: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade
Page 13: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

13

Page 14: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

2. Integrate Zk, SpringSecurity , MongoDB

•Spring Security

–Spring Security 設定

●src/main/webapp/WEB-INF/web.xml

●src/main/webapp/WEB-INF/spring-security.xml

–Secured 的目錄 (例)

●secured/

●upload/

Page 15: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

2. Integrate Zk, Spring Security, MongoDB (cont.)

A) cd /home5

Get TycMgt.tar.gz

tar zxvf TycMgt.tar.gz

B) cd /home5/TycMgt

mvn clean compile package

C)Connect URL

http://host.domain/TycMgt/

Page 16: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

2. Integrate Zk, Spring Security, MongoDB (cont.)

... <context-param>

<param-name>contextConfigLocation</param-name> <param-value>

/WEB-INF/spring-security.xml </param-value> </context-param> <listener> <display-name>Spring Context Loader</display-name> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <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> <url-pattern>/secured/*</url-pattern> </filter-mapping>

...

{ web.xml 檔 }

Page 17: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

2. Integrate Zk, Spring Security, MongoDB (cont.)

... <!-- Enable the @Secured annotation to secure service layer methods -->

<global-method-security secured-annotations="enabled" /> <http auto-config="true"> <form-login login-page="/login.zul" authentication-failure-url="/login.zul?login_error=1" default-target-url="/index.zul" /> <intercept-url pattern="/login.zul" access="IS_AUTHENTICATED_ANONYMOUSLY" /> <intercept-url pattern="/index.zul" access="ROLE_USER" /> <intercept-url pattern="/*.zul" access="ROLE_USER" /> <intercept-url pattern="/secured/*" access="ROLE_ADMIN"/> <intercept-url pattern="/secured/index.zul" access="ROLE_ADMIN"/> <intercept-url pattern="/secured/DbUserCRUD.zul" access="ROLE_ADMIN"/> <intercept-url pattern="/secured/DbUserList.zul" access="ROLE_ADMIN"/> <access-denied-handler error-page="/fail_secured.zul" /> </http> <authentication-manager> <authentication-provider user-service-ref="myUserDetailsService"> <password-encoder hash="md5" /> </authentication-provider> </authentication-manager> <beans:bean id="myUserDetailsService" class="zkloginexample3.MyUserDetailsService" /> </beans:beans>

...

{ spring-security.xml 檔 }

Page 18: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade
Page 19: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade
Page 20: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

3. ZK MVC

•ZK

–AJAX/XUL/Java based 網頁應用程式開發框架

–以AJAX為基礎、事件驅動(event-driven)、高互動性的引擎

–提供多樣豐富、可重複使用的XUL與HTML元件

–使用ZK User-interfaces Markup Language(ZUML)

●直接以Java控制 120個XUL元件 及80個XHTML元件

●listbox, slider, audio, tree, combobox, tabbox,

●auto-completion, FCKeditor,Dojo, Google Maps 等

–AJAX

Page 21: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

3. ZK MVC (cont.)

•View

–UI : a composition of components

•Controller

–a Java program to glue UI (view) and Data (model) together

•Model

–data and application handles

•could be anything as long as your controller knows it

Page 22: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

3. ZK MVC (cont.)

Page 23: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

3. ZK MVC (cont.)

Page 24: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

3. ZK MVC (cont.)

Page 25: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

3. ZK MVC (cont.)

<window width="100%" border="normal" apply="fiddle.CuteComposer">

<caption label="可愛動物 圖片" style="color: #663322; font-size : 20px; font-

weight: bold;" > </caption> <div id="slider" class="the-slider"> <div id="container"> <image id="imgOne" /> <image id="imgTwo" /> <image id="imgThree" /> </div> </div>

<intbox id="interval" value="3" /> [間隔秒數]

<button id="start" label="播放" style="color: #119922; font-weight: bold;" />

<button id="stop" label="暫停" style="color: #991122; font-weight: bold;" />

</window>

Page 26: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

3. ZK MVC (cont.) <script type="text/javascript"><![CDATA[ var contentList = [], contentLength, index = 3, frameWidth = 620, animateTime = 410, slideShow;

function setContent (content) {

contentList = content.split(','); contentLength = contentList.length }

function startSlideShow (delay) {

var $slider = jq('$slider'), $container = jq('$container');

slideShow = setInterval (function () { $slider.animate({'scrollLeft': '+='+frameWidth+'px'}, animateTime, null, function (){ var firstImage = $container.find('img')[0]; firstImage.src = contentList[index]; index = (index+1) % contentLength; $container[0].appendChild(firstImage); $slider[0].scrollLeft = 0; }); }, delay); }

function stopSlideShow () { clearInterval (slideShow); } ]]></script>

Page 27: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

3. ZK MVC (cont.)

public class CuteComposer extends GenericForwardComposer {

Image imgOne, imgTwo, imgThree;

Intbox interval;

Button start, stop;

List<String> contentList = null;

int length = 10; int index = 0, fcount = 0;

public void doAfterCompose (Component comp) throws Exception {

super.doAfterCompose(comp); // init first part image imgOne.setSrc(getSrc()); imgTwo.setSrc(getSrc()); imgThree.setSrc(getSrc()); Clients.evalJavaScript("setContent('"+getContentString()+"')"); }

Page 28: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

3. ZK MVC (cont.)

public void onClick$start () {

int delay = interval.getValue();

String command = "startSlideShow(" + delay*1000 + ")";

System.out.println(command);

Clients.evalJavaScript(command);

}

public void onClick$stop () {

String command = "stopSlideShow()";

Clients.evalJavaScript(command);

Page 29: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM

Page 30: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.)

•Model : data and application handles

•View : UI

•View model : a special Controller for the View

–responsible for exposing data from the Model to the View

–providing required action and logic for user requests from the View.

•Binder : a broker, the key role to operate the whole

mechanism

Page 31: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade
Page 32: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.)

Page 33: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.)

<window title="PPT 檔案分享" border="normal" id="list"

apply="org.zkoss.bind.BindComposer"

viewModel="@id('myvm') @init('org.zkoss.mongodb.appVM.PptListVM')">

<listbox sclass="mylist" id="test“ model="@load(myvm.allPpts)"

selectedItem="@bind(myvm.curSelectedPpt)">

<listhead sizable="true">

<listheader label="檔案名稱" width="450px" sort="auto(files)" />

<listheader label="內容簡述" width="450px" sort="auto(content)" />

<listheader label="Action" />

</listhead>

Page 34: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.) <template name="model" var="p1"> <listitem> <listcell label="@load(p1.files)" onClick="@command('openAsReadOnly')" sclass="highlightcell" /> <listcell label="@load(p1.content)" onClick="@command('openAsReadOnly')" sclass="highlightcell" /> <listcell> <hbox spacing="20px"> <fImageEdit onClick="@command('editThisPpt')" /> <fImageDelete onClick="@command('deleteThisPpt')" /> <fImageDownload onClick="@command('doDownLoadPpt')" /> </hbox> </listcell> </listitem> </template> </listbox> </window> </zk>

Page 35: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade
Page 36: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.)

<window title="Ppt CRUD" border="normal" id="PptCRUD"

width="850px" height="auto" apply="org.zkoss.bind.BindComposer"

sclass="mymodal" minimizable="false" mode="modal" maximizable="false"

closable="true" position="center"

viewModel="@id('vm') @init('org.zkoss.mongodb.appVM.PptCRUDVM')">

<flabeltitle value="Ppt information" />

<rows>

<row> <hbox> <label value="檔案名稱" /> </hbox>

<textbox name="Files" readonly="@load(vm.makeAsReadOnly)"

value="@bind(vm.selectedPpt.files)" cols="350" /> </row>

<row> <box> <flabel value="內容陳述" /> </hbox>

<textbox name="Content" readonly="@load(vm.makeAsReadOnly)"

PptCRUD.zul

Page 37: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.)

...

<row>

<hbox> <flabel value="建立日期" /> </hbox>

<textbox name="Created"

readonly="@load(vm.makeAsReadOnly)"

value="@bind(vm.selectedPpt.created)" cols = "60" />

</row>

</rows>

<div align="center">

Page 38: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.)

<fbutton id="submit" label="Submit"

onClick="@command('save')" visible="@load(not vm.makeAsReadOnly)" />

<fbutton id="Cancel"

label="@load(vm.makeAsReadOnly ?'Ok':'Cancel')"

onClick="@command('closeThis')" />

</div>

Page 39: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.)

public class PptCRUDVM {

@Wire("#PptCRUD")

private Window win_ppt;

private Ppt selectedPpt;

public void initSetup(@ContextParam(ContextType.VIEW) Component view,

@ExecutionArgParam("sPpt") Ppt b1,

@ExecutionArgParam("recordMode") String recordMode)

throws CloneNotSupportedException {

Selectors.wireComponents(view, this, false);

if (recordMode.equals("NEW")) {

this.selectedPpt = new Ppt(); }

Page 40: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.)

if (recordMode.equals("EDIT")) {

this.selectedPpt = (Ppt) b1.clone(); }

if (recordMode == "READ") {

setMakeAsReadOnly(true);

this.selectedPpt = (Ppt) b1.clone();

win_ppt.setTitle(win_ppt.getTitle() + " (Readonly)");

}

}

}

Page 41: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.)

...

@Command

public void addNewPpt() {

final HashMap<String, Object> map = new HashMap<String, Object>();

map.put("sPpt", null);

map.put("recordMode", "NEW");

Executions.createComponents("PptCRUD.zul", null, map);

}

....

Page 42: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

@Command

public void doDownLoadPpt() {

String sPath = "/opt/apache-tomcat/webapps/ROOT/ppt/";

String cur_url = curSelectedPpt.getFiles() ;

String[] aArray = cur_url.split("\\/");

String sFilename = aArray[aArray.length -1];

try {

File f = new File(sPath + sFilename);

FileInputStream fs = new FileInputStream(f);

if (fs != null)

Filedownload.save(fs, "application/vnd.ms-powerpoint", sFilename );

} catch(FileNotFoundException e) { }

}

Page 43: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.)

@SuppressWarnings({ "unchecked", "rawtypes" })

@Command

public void deleteThisPpt() {

int OkCancel;

String str = "The Selected Ppt File \"“ + curSelectedPpt.getFiles() + "\" will be deleted.";

OkCancel = Messagebox.show(str, "Confirm", Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION);

if (OkCancel == Messagebox.CANCEL) {

return; }

});

}

Page 44: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

str = "The Selected Ppt File \"" + curSelectedPpt.getFiles() + "\" will be permanently deleted.";

Messagebox.show(str, "Confirm", Messagebox.OK | Messagebox.CANCEL,

Messagebox.QUESTION, new EventListener() {

@Override

public void onEvent(Event event) throws Exception {

if (((Integer) event.getData()).intValue() == Messagebox.OK) {

// pptList.remove(pptList.indexOf(curSelectedPpt));

Ppt ppt_del = (Ppt) curSelectedPpt;

deletePpt(ppt_del);

BindUtils.postNotifyChange(null, null, PptListVM.this, "allPpts");

}

}

Page 45: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.)

public Ppt savePpt( Ppt ppt) {

try {

PptDAO pptDao = new PptDAO(MongoDBManager.getMongo(), MongoDBManager.getMorphia());

pptDao.save(ppt);

} catch (Exception e) {

e.printStackTrace();

}

return ppt ;

Page 46: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

4. ZK MVVM (cont.)

public void deletePpt( Ppt ppt) {

try {

PptDAO pptDao = new PptDAO(MongoDBManager.getMongo(), MongoDBManager.getMorphia());

pptDao.delete(ppt);

} catch (Exception e) {

e.printStackTrace();

}

Page 47: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

5. Conclusion

•區網網管人員服務平台

–文件共享 : ppt, doc, jpg, png, …

–網路設備維護資訊

–研習活動資訊傳達

•Spring Security

•ZK MVC v.s. ZK MVVM

•Content 維護 ***

Page 48: 區網中心網管服務平台 整合 Zk, SpringData ,MongoDB應 …tyrc.tanet.edu.tw/images/8/8f/1041105101.pdf · 1. 基本軟體 • Xen Server (6.1 version) –On PC –On Blade

Referances

•Spring Data MongoDB

–http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/

•ZK Examples Index Page

–http://emrpms.blogspot.in/2013/08/zk-examples-index-page.html

•ZK + Spring Security Login form

–http://emrpms.blogspot.in/2013/04/zk-spring-security-custom-login-form.html

•ZK With Spring + JPA + Hibernate Entity Manager

–http://emrpms.blogspot.in/2013/01/in-this-article-let-us-see-how-we-can.html