Пояснительная записка к диплому (1228397), страница 13
Текст из файла (страница 13)
}
public T find(Object id) {
return getEntityManager().find(entityClass, id);
}
public List<T> Search(String TableName, String[] Parameters, String[] Values, String TypeFDate, int[] range) {
Query query = QueryFormer(TableName, Parameters, Values, TypeFDate, false);
if (range[0] != -1 && range[1] != -1) {
query.setMaxResults(range[1] - range[0]);
query.setFirstResult(range[0]);
}
return query.getResultList();
}
public int countFiltr(String TableName, String[] Parameters, String[] Values, String TypeFDate) {
return ((Long) QueryFormer(TableName, Parameters, Values, TypeFDate, true).getSingleResult()).intValue();
}
private Query QueryFormer(String TableName, String[] Parameters, String[] Values, String TypeFDate, boolean Count) {
String SQuery;
Date D1=null, D2=null;
if (Count == true) {
SQuery = "select COUNT (s) from " + TableName + " s ";
} else {
SQuery = "select s from " + TableName + " s ";
}
boolean FirstVal = true;
for (int i = 0; i < Parameters.length; i++) {
boolean NextVal = false;
for (int j = i; j < Values.length; j++) {
if (Values[j] != null && !Values[j].isEmpty()) {
if (!FirstVal) {
SQuery = SQuery + " AND ";
}
NextVal = true;
i = j;
break;
}
}
if (NextVal == true) {
if (FirstVal == true) {
SQuery = SQuery + "where ";
FirstVal = false;
}
if (!Parameters[i].contains("date")) {
SQuery = SQuery + "s." + Parameters[i] + " like :";
} else {
if (!TypeFDate.equals("between")) {
SQuery = SQuery + "s." + Parameters[i] + " " + TypeFDate + " :";
try {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
D1 = format.parse(Values[i]);
} catch (ParseException e) {
}
} else {
String SD1 = "", SD2 = "";
int Del = Values[i].indexOf("|");
for (int z = 0; z < Values[i].length(); z++) {
if (z < Del) {
SD1 = SD1 + Values[i].charAt(z);
}
if (z > Del) {
SD2 = SD2 + Values[i].charAt(z);
}
}
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
D1 = format.parse(SD1);
} catch (ParseException e) {
}
try {
D2 = format.parse(SD2);
} catch (ParseException e) {
}
SQuery = SQuery + "s." + Parameters[i] + " between :";
}
}
if (TypeFDate.equals("between") && Parameters[i].contains("date")) {
SQuery = SQuery + "parameter" + i + " AND :parameter" + 100 * i+" ";
} else {
SQuery = SQuery + "parameter" + i + " ";
}
}
}
System.out.println(SQuery);
Query query = getEntityManager().createQuery(SQuery);
for (int i = 0; i < Parameters.length; i++) {
boolean NextVal = false;
for (int j = i; j < Values.length; j++) {
if (Values[j] != null && !Values[j].isEmpty()) {
NextVal = true;
i = j;
break;
}
}
if (NextVal == true) {
if (!Parameters[i].contains("date")) {
Values[i] = Values[i] + "%";
query.setParameter("parameter" + i, Values[i]);
}
if (TypeFDate.equals("between") && Parameters[i].contains("date")) {
query.setParameter("parameter" + i, D1);
query.setParameter("parameter" + i * 100, D2);
}
if (!TypeFDate.equals("between") && Parameters[i].contains("date")) {
query.setParameter("parameter" + i, D1);
}
}
}
return query;
}
}
Код контроллера фасада адресов
package ViewSession;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.TemporalType;
import models.Adress;
import models.Cities;
@Stateless
public class AdressFacade extends AbstractFacade<Adress> {
@PersistenceContext(unitName = "ManualTestPU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
public AdressFacade() {
super(Adress.class);
}
}
А.3 Код обработчика постраничной навигации
package ViewControllers.util;
import javax.faces.model.DataModel;
public abstract class PaginationHelper {
private int pageSize;
private int page;
private int lastPage;
public PaginationHelper(int pageSize) {
this.pageSize = pageSize;
}
public abstract int getItemsCount();
public abstract DataModel createPageDataModel();
public int getPageFirstItem() {
return page * pageSize;
}
public int getPageLastItem() {
int i = getPageFirstItem() + pageSize - 1;
int count = getItemsCount() - 1;
if (i > count) {
i = count;
}
return i;
}
public void begining()
{
page=0;
}
public void ending()
{
page=getLastPage();
}
public boolean isHasNextPage() {
return (page + 1) * pageSize + 1 <= getItemsCount();
}
public void nextPage() {
if (isHasNextPage()) {
page++;
}
}
public boolean isHasPreviousPage() {
return page > 0;
}
public void previousPage() {
if (isHasPreviousPage()) {
page--;
}
}
public int getLastPage() {
lastPage=(getItemsCount()/pageSize);
return lastPage;
}
public int getPageSize() {
return pageSize;
}
public int getPage() {
return page;
}
}
А.4. Код вспомогательного класса
package ViewControllers.util;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.model.SelectItem;
public class JsfUtil {
public static boolean CheckStr(String CheckStr)
{
boolean Flag=false;
if(CheckStr != null && !CheckStr.isEmpty())
{
Flag=true;
}
return Flag;
}
public static SelectItem[] getSelectItems(List<?> entities, boolean selectOne) {
int size = selectOne ? entities.size() + 1 : entities.size();
SelectItem[] items = new SelectItem[size];
int i = 0;
if (selectOne) {
items[0] = new SelectItem(null, "---");
i++;
}
for (Object x : entities) {
items[i++] = new SelectItem(x, x.toString());
}
return items;
}
public static void addErrorMessage(Exception ex, String defaultMsg) {
String msg = ex.getLocalizedMessage();
if (msg != null && msg.length() > 0) {
addErrorMessage(msg);
} else {
addErrorMessage(defaultMsg);
}
}
public static void addErrorMessages(List<String> messages) {
for (String message : messages) {
addErrorMessage(message);
}
}
public static void addErrorMessage(String msg) {
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg);
FacesContext.getCurrentInstance().addMessage(null, facesMsg);
}
public static void addSuccessMessage(String msg) {
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg);
FacesContext.getCurrentInstance().addMessage("successInfo", facesMsg);
}
}
А.5 Код контроллера представлений блока адресов
package ViewControllers;
import models.Adress;
import ViewControllers.util.JsfUtil;
import ViewControllers.util.PaginationHelper;
import ViewSession.AdressFacade;
import java.io.IOException;
import java.io.Serializable;
import java.util.ResourceBundle;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
import models.Streets;
@ManagedBean(name = "adressController")
@SessionScoped
public class AdressController implements Serializable {
private Adress current;
private DataModel items = null;
@EJB
private ViewSession.AdressFacade ejbFacade;
private PaginationHelper pagination;
private String Shouse;
private String Scity;
private String Sstreet;
private boolean adressForWorkerChoose = false;
private boolean adressForWarehouseChoose = false;
public String getShouse() {
return Shouse;
}
public void setShouse(String Shouse) {
this.Shouse = Shouse;
}
public String getScity() {
return Scity;
}
public void setScity(String Scity) {
this.Scity = Scity;
}
public String getSstreet() {
return Sstreet;
}
public void setSstreet(String Sstreet) {
this.Sstreet = Sstreet;
}
public boolean isAdressForWorkerChoose() {
return adressForWorkerChoose;
}
public void setAdressForWorkerChoose(boolean adressForWorkerChoose) {
this.adressForWorkerChoose = adressForWorkerChoose;
}
public boolean isAdressForWarehouseChoose() {
return adressForWarehouseChoose;
}
public void setAdressForWarehouseChoose(boolean adressForWarehouseChoose) {
this.adressForWarehouseChoose = adressForWarehouseChoose;
}
public String goChooseAdressForWorkers(Adress CurrEl) {
Scity = "";
Sstreet = "";
Shouse = "";
if (CurrEl != null) {
Scity = CurrEl.getCityR().getCity();
Sstreet = CurrEl.getStreetR().getStreet();
Shouse = CurrEl.getHouse();
}
adressForWorkerChoose = true;
return "/adress/SearchForm";
}
public String goChooseAdressForWarehouse(Adress CurrEl) {
Scity = CurrEl.getCityR().getCity();
Sstreet = CurrEl.getStreetR().getStreet();
Shouse = CurrEl.getHouse();
adressForWarehouseChoose = true;
return "/adress/SearchForm";
}
public String TrySearch() {
if (JsfUtil.CheckStr(Scity) || JsfUtil.CheckStr(Shouse)
|| JsfUtil.CheckStr(Sstreet)) {
recreateModel();
return "List";
} else {
JsfUtil.addErrorMessage("Не задан поисковый фильтр");
return null;
}
}
public String DoneOperationWithList(boolean Edit) {