Pages

13 Ağustos 2010 Cuma

örnek proje : online sınav - 12 - Sayfa giriş/değişiklik

Sayfa liste giriş değişlik işlemeri için gerekli dosyalar :

PAGES
CREATE TABLE PAGES (
    PAGE_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    PAGE_CODE VARCHAR( 255 ) NOT NULL ,
    PAGE_DESC VARCHAR( 255 ) NOT NULL ,
    ROLE_ID INT NOT NULL
) ENGINE = MYISAM ;

Page.java
package entity;

import java.io.Serializable;

public class Page implements Serializable {

 private static final long serialVersionUID = -1869745073687894593L;
 private Integer id;
 private String code;
 private String desc;
 private Role role;

 public Integer getId() {
  return id;
 }

 public void setId(Integer id) {
  this.id = id;
 }

 public String getCode() {
  return code;
 }

 public void setCode(String code) {
  this.code = code;
 }

 public String getDesc() {
  return desc;
 }

 public void setDesc(String desc) {
  this.desc = desc;
 }

 public Role getRole() {
  return role;
 }

 public void setRole(Role role) {
  this.role = role;
 }

}

PageDAO.java
package data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import entity.Page;
import entity.Role;

public class PageDAO implements Serializable {

 /**
  * 
  */
 private static final long serialVersionUID = 4783917742082486720L;
 private static String SQL_SELECT = "SELECT A.* "
   + " ,B.ROLE_CODE,B.ROLE_DESC FROM PAGES A"
   + " INNER JOIN ROLES B ON A.ROLE_ID=B.ROLE_ID ";
 private static String SQL_SELECT_BY_ID = SQL_SELECT + " WHERE A.PAGE_ID=?";
 private static String SQL_SELECT_BY_CODE = SQL_SELECT + " WHERE A.PAGE_CODE=?";
 private static String SQL_INSERT = "INSERT INTO PAGES VALUES(null, ?, ?, ?)";
 private static String SQL_UPDATE = "UPDATE PAGES SET PAGE_CODE=?, PAGE_DESC=?, ROLE_ID=? WHERE PAGE_ID=?";

 private List<Page> getTable(String query, Object... values) {
  List<Page> table = new ArrayList<Page>();
  List<Map<String, Object>> data = DataAdapter.getData(query, values);
  for (int i = 0; i < data.size(); i++) {
   Map<String, Object> row = new HashMap<String, Object>();
   Page page = new Page();
   Role role = new Role();
   row = data.get(i);
   role.setId((Integer) row.get("ROLE_ID"));
   role.setCode((String) row.get("ROLE_CODE"));
   role.setDesc((String) row.get("ROLE_DESC"));
   page.setId((Integer) row.get("PAGE_ID"));
   page.setCode((String) row.get("PAGE_CODE"));
   page.setDesc((String) row.get("PAGE_DESC"));
   page.setRole(role);
   table.add(page);
  }
  return table;
 }

 public List<Page> getPages() {
  return getTable(SQL_SELECT);
 }

 public Page getPage(long id) {
  List<Page> pages = getTable(SQL_SELECT_BY_ID, id);
  if (pages.size() > 0) {
   return pages.get(0);
  } else {
   return null;
  }
 }

 public Page getPage(String code) {
  List<Page> pages = getTable(SQL_SELECT_BY_CODE, code);
  if (pages.size() > 0) {
   return pages.get(0);
  } else {
   return null;
  }
 }

 public void insert(Page page) {
  Object values[] = { page.getCode(), page.getDesc(),
    page.getRole().getId() };
  DataAdapter.persist(SQL_INSERT, values);
 }

 public void update(Page page) {
  Object values[] = { page.getCode(), page.getDesc(),
    page.getRole().getId(), page.getId() };
  DataAdapter.persist(SQL_UPDATE, values);
 }

}
PageList.java

package controller;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import data.PageDAO;
import entity.Page;

@ManagedBean(name = "pageList")
@ViewScoped
public class PageList implements Serializable {

 private static final long serialVersionUID = 1L;
 private List<Page> pages;

 public PageList() {
  pages = new PageDAO().getPages();
 }

 public List<Page> getPages() {
  return pages;
 }

 public void setPages(List<Page> pages) {
  this.pages = pages;
 }

}


pageList.xhtml
<!DOCTYPE html 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:h="http://java.sun.com/jsf/html"
 xmlns:f="http://java.sun.com/jsf/core"
 xmlns:ui="http://java.sun.com/jsf/facelets"
 xmlns:fn="http://java.sun.com/jsp/jstl/functions"
 template="/resources/template.xhtml">

 <ui:param name="title" value="Sayfa Listesi" />
 <ui:define name="content">
  <h:form prependId="false">
   <h:button outcome="pageEdit.xhtml" value="Yeni Kayıt" />

   <h:dataTable value="#{pageList.pages}" var="page"
    rendered="#{fn:length(pageList.pages)>0}">
    <h:column>
     <f:facet name="header">Id</f:facet>
        #{page.id}
      </h:column>
    <h:column>
     <f:facet name="header">Kod</f:facet>
        #{page.code}
      </h:column>
    <h:column>
     <f:facet name="header">Tanım</f:facet>
        #{page.desc}
      </h:column>
    <h:column>
     <f:facet name="header">Rol</f:facet>
        #{page.role.desc}
      </h:column>
    <h:column>
     <f:facet name="header">İşlem</f:facet>
     <h:link outcome="pageEdit.xhtml?faces-redirect=true"
      value="Düzenle">
      <f:param name="id" value="#{page.id}" />
     </h:link>
    </h:column>

   </h:dataTable>
  </h:form>

 </ui:define>
</ui:composition>

PageEdit.java
package controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

import util.FacesUtil;
import data.PageDAO;
import data.RoleDAO;
import entity.Page;
import entity.Role;

@ManagedBean(name = "pageEdit")
@ViewScoped
public class PageEdit implements Serializable {

 private static final long serialVersionUID = 1L;
 private Page page = new Page();

 private List<SelectItem> selectRoles = new ArrayList<SelectItem>();
 private PageDAO pageDAO = new PageDAO();

 public PageEdit() {
  if (FacesUtil.getRequestParameter("id") != null) {
   int id = Integer.parseInt(FacesUtil.getRequestParameter("id"));
   page = pageDAO.getPage(id);
  } else {
   page.setRole(new Role());
  }
  List<Role> roles = new RoleDAO().getRoles();
  selectRoles.clear();
  for (Role role : roles) {
   selectRoles.add(new SelectItem(role.getId(), role.getDesc()));
  }

 }

 public Page getPage() {
  return page;
 }

 public void setPage(Page page) {
  this.page = page;
 }

 public List<SelectItem> getSelectRoles() {
  return selectRoles;
 }

 public void setSelectRoles(List<SelectItem> selectRoles) {
  this.selectRoles = selectRoles;
 }

 public String save() {
  if (control()) {
   if (page.getId() == null || page.getId() == 0)
    pageDAO.insert(page);
   else
    pageDAO.update(page);
   return "pageList.xhtml?faces-redirect=true";
  }
  return null;
 }

 public boolean control() {
  if (page.getId() != null && page.getId() > 0) {
   Page dbPage = pageDAO.getPage(page.getCode());
   if (dbPage != null && (page.getId() != dbPage.getId())) {
    FacesUtil.addMessage("Sayfa kodu önce kullanılmış",
      FacesMessage.SEVERITY_ERROR);
    return false;
   }
  }
  return true;
 }
}

pageEdit.xhtml
<!DOCTYPE html 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:h="http://java.sun.com/jsf/html"
 xmlns:f="http://java.sun.com/jsf/core"
 xmlns:ui="http://java.sun.com/jsf/facelets"
 xmlns:fn="http://java.sun.com/jsp/jstl/functions"
 template="/resources/template.xhtml">

 <ui:param name="title" value="Sayfa Giriş/Düzenle" />
 <ui:define name="content">
  <h:form prependId="false">
   <h:panelGrid columns="2">
    <h:outputText value="Kod" />
    <h:inputText value="#{pageEdit.page.code}" required="true"
     requiredMessage="Kod alanı boş geçilemez..." />
    <h:outputText value="Tanım" />
    <h:inputText value="#{pageEdit.page.desc}" required="true"
     requiredMessage="Tanım alanı boş geçilemez..." />
    <h:outputText value="Rol" />
    <h:selectOneMenu value="#{pageEdit.page.role.id}">
     <f:selectItems value="#{pageEdit.selectRoles}" />
    </h:selectOneMenu>
    <h:panelGroup>
     <h:commandButton action="#{pageEdit.save}" value="Kaydet" />
     #{' '}
     <h:button outcome="pageList.xhtml?faces-redirect=true"
      value="Vazgeç" />
    </h:panelGroup>
   </h:panelGrid>
  </h:form>
 </ui:define>
</ui:composition>