[jboss-user] [JBoss Seam] - my CRUD way, is it right? show yours please!

kaiak do-not-reply at jboss.com
Sun Mar 18 23:15:09 EDT 2007


jboss-seam-1.2.0
jboss-4.0.5.GA
jdk1.5.0_0.8

the following is my way to do CRUD,it works!
but I'm not sure if it will cause some potential problems ,like performance.

please show me yours!

I like seam so much!

package org.kaiak.model;
  | 
  | import java.io.Serializable;
  | 
  | import javax.persistence.Entity;
  | import javax.persistence.GeneratedValue;
  | import javax.persistence.Id;
  | import javax.persistence.Table;
  | import javax.persistence.Version;
  | 
  | import org.hibernate.validator.Length;
  | import org.jboss.seam.annotations.Name;
  | 
  | @Entity
  | @Name("permission")
  | @Table(name = "t_myor_permission")
  | public class Permission implements Serializable {
  | 	
  | 	//seam-gen attributes (you should probably edit these)
  | 	private Long id;
  | 	private Integer version;
  | 	private String name;
  | 	
  |     //add additional entity attributes
  | 	
  | 	//seam-gen attribute getters/setters with annotations (you probably should edit)
  | 		
  | 	@Id @GeneratedValue
  | 	public Long getId() {
  | 	     return id;
  | 	}
  | 
  | 	public void setId(Long id) {
  | 	     this.id = id;
  | 	}
  | 	
  | 	@Version
  | 	public Integer getVersion() {
  | 	     return version;
  | 	}
  | 
  | 	private void setVersion(Integer version) {
  | 	     this.version = version;
  | 	}   	
  | 	
  | 	@Length(max=20)
  | 	public String getName() {
  | 	     return name;
  | 	}
  | 
  | 	public void setName(String name) {
  | 	     this.name = name;
  | 	}   	
  | }
  | 

  | package org.kaiak.service;
  | 
  | import javax.ejb.Local;
  | 
  | @Local
  | public interface PermissionManager {  
  | 	public String persist();
  | 	public String edit();
  | 	public String delete();
  | 	public void findPermissions();	public void destroy();
  | 	
  |    //add additional interface methods here
  | }
  | 
  | package org.kaiak.service;
  | 
  | import java.util.List;
  | 
  | import javax.ejb.Remove;
  | import javax.ejb.Stateful;
  | import javax.persistence.EntityManager;
  | 
  | import org.jboss.seam.annotations.Begin;
  | import org.jboss.seam.annotations.Destroy;
  | import org.jboss.seam.annotations.End;
  | import org.jboss.seam.annotations.Factory;
  | import org.jboss.seam.annotations.In;
  | import org.jboss.seam.annotations.Logger;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Out;
  | import org.jboss.seam.annotations.datamodel.DataModel;
  | import org.jboss.seam.annotations.datamodel.DataModelSelection;
  | import org.jboss.seam.core.FacesMessages;
  | import org.jboss.seam.log.Log;
  | import org.kaiak.model.Permission;
  | 
  | @Stateful
  | @Name("permissionManager")
  | public class PermissionManagerBean implements PermissionManager {
  | 
  | 	@Logger
  | 	private Log log;
  | 
  | 	@In
  | 	FacesMessages facesMessages;
  | 
  | 	@In
  | 	EntityManager entityManager;
  | 
  | 	@DataModel
  | 	private List<Permission> permissionList;
  | 
  | 	@In(required = false)
  | 	@Out(required = false)
  | 	private Permission permission;
  | 
  | 	@DataModelSelection
  | 	private Permission selectedPermission;
  | 
  | 	@Begin
  | 	@Factory("permissionList")	public void findPermissions() {
  | 		permissionList = entityManager.createQuery(
  | 				"select perm from Permission perm order by perm.id")
  | 				.getResultList();
  | 	}
  | 
  | 	@End(beforeRedirect = true)
  | 	public String persist() {
  | 		entityManager.persist(permission);
  | 		return "list";
  | 	}
  | 
  | 	@End(beforeRedirect = true)
  | 	public String delete() {
  | 		permission = selectedPermission;
  | 		permissionList.remove(permission);
  | 		entityManager.remove(permission);
  | 		return "list";
  | 	}
  | 
  | 	public String edit() {
  | 		if (selectedPermission != null)
  | 			permission = selectedPermission;
  | 		return "form";
  | 	}
  | 
  | 	@Destroy
  | 	@Remove
  | 	public void destroy() {
  | 	}
  | }
  | 
  | 


  | permissionList.xhtml
  | 
  | <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  |                              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  | <ui:composition xmlns="http://www.w3.org/1999/xhtml"
  |                 xmlns:s="http://jboss.com/products/seam/taglib"
  |                 xmlns:ui="http://java.sun.com/jsf/facelets"
  |                 xmlns:f="http://java.sun.com/jsf/core"
  |                 xmlns:h="http://java.sun.com/jsf/html"
  |                 template="layout/template.xhtml">
  |                        
  | <ui:define name="body">
  | 
  |     <h1>permissionList</h1>
  |     <p>Generated list page</p>
  |     
  |     <h:messages globalOnly="true" styleClass="message"/>
  |     
  |     <h:outputText value="No permission exists" 
  |             rendered="#{permissionList.rowCount==0}"/>
  |     <h:dataTable id="permissionList" var="p"
  |             value="#{permissionList}" 
  |             rendered="#{permissionList.rowCount>0}">
  |         <h:column>
  |             <f:facet name="header">Id</f:facet>
  |             #{p.id}
  |         </h:column>
  |         <h:column>
  |             <f:facet name="header">Name</f:facet>
  |             <s:link id="permission" value="#{p.name}" action="#{permissionManager.edit}"/>
  |         </h:column>
  |         <h:column>
  |             <f:facet name="header">Action</f:facet>
  |             <s:link id="user" value="Delete" action="#{permissionManager.delete}"/>
  |         </h:column>
  |     </h:dataTable>
  |     
  |     <div class="actionButtons"><h3><h:outputText value="#{permission.name}"/></h3>
  |         <s:button id="done" value="Create permission"
  |             action="#{permissionManager.edit}"/>			  
  |     </div>
  |     
  | </ui:define>
  | 
  | </ui:composition>
  | 
  | 
  | 

permissionForm.xhtml
  | 
  | <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  |                              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  | <ui:composition xmlns="http://www.w3.org/1999/xhtml"
  |                 xmlns:s="http://jboss.com/products/seam/taglib"
  |                 xmlns:ui="http://java.sun.com/jsf/facelets"
  |                 xmlns:f="http://java.sun.com/jsf/core"
  |                 xmlns:h="http://java.sun.com/jsf/html"
  |                 template="layout/template.xhtml">
  |                        
  | <ui:define name="body">
  | 
  |     <h1>permissionForm</h1>
  |     <p>Generated edit page</p>
  |     
  |     <h:messages globalOnly="true" styleClass="message"/>
  |     
  |     <h:form id="perm">
  |         <div class="dialog">
  |         <s:validateAll>
  |             <div class="prop">
  |                 <span class="name">Name</span>
  |                 <span class="value">
  |                     <s:decorate>
  |                         <h:inputText id="name" required="true"
  |                             value="#{permission.name}"/>
  |                     </s:decorate>
  |                 </span>
  |             </div>
  |         </s:validateAll>
  |         </div>
  |         <div class="actionButtons">
  |             <h:commandButton id="save" value="Save" 
  |                 action="#{permissionManager.persist}"/>     			  
  |             <s:button id="done" value="Done"
  |                 propagation="end" view="/permissionList.xhtml"/>			  
  |         </div>
  |     </h:form>
  |     
  | </ui:define>
  | 
  | </ui:composition>
  | 
  | 
  | 

pages.xml
  | 
  | <!DOCTYPE pages PUBLIC
  |           "-//JBoss/Seam Pages Configuration DTD 1.2//EN"
  |           "http://jboss.com/products/seam/pages-1.2.dtd">
  | 
  | <pages no-conversation-view-id="/home.xhtml"
  |                  login-view-id="/login.xhtml">
  | 
  |     <page view-id="*">
  |         <navigation>
  |             <rule if-outcome="home">
  |                 <redirect view-id="/home.xhtml"/>
  |             </rule>
  |         </navigation>
  |     </page>
  | 	
  | 	<page view-id="/permissionList.xhtml">
  |         <navigation>
  |             <rule if-outcome="list">
  |                 <redirect view-id="/permissionList.xhtml"/>
  |             </rule>
  |             <rule if-outcome="form">
  |                 <redirect view-id="/permissionForm.xhtml"/>
  |             </rule>
  |         </navigation>
  |     </page>
  |     
  |     <page view-id="/permissionForm.xhtml">
  |         <navigation>
  |             <rule if-outcome="list">
  |                 <redirect view-id="/permissionList.xhtml"/>
  |             </rule>
  |         </navigation>
  |     </page>
  |     
  |     <exception class="org.jboss.seam.framework.EntityNotFoundException">
  |         <redirect view-id="/error.xhtml">
  |             <message>Not found</message>
  |         </redirect>
  |     </exception>
  |     
  |     <exception class="javax.persistence.EntityNotFoundException">
  |         <redirect view-id="/error.xhtml">
  |             <message>Not found</message>
  |         </redirect>
  |     </exception>
  |     
  |     <exception class="javax.persistence.OptimisticLockException">
  |         <end-conversation/>
  |         <redirect view-id="/error.xhtml">
  |             <message>Another user changed the same data, please try again</message>
  |         </redirect>
  |     </exception>
  |     
  |     <exception class="org.jboss.seam.security.AuthorizationException">
  |         <redirect>
  |             <message>You don't have permission to do this</message>
  |         </redirect>
  |     </exception>
  |     
  |     <exception class="org.jboss.seam.security.NotLoggedInException">
  |         <redirect view-id="/login.xhtml">
  |             <message>Please log in first</message>
  |         </redirect>
  |     </exception>
  |      
  |     <exception>
  |         <redirect view-id="/error.xhtml">
  |             <message>Unexpected error, please try again</message>
  |         </redirect>
  |     </exception>
  | </pages>
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4029190#4029190

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4029190



More information about the jboss-user mailing list