Commit 052eee2e by Tuomas Riihimäki

Logijuttua, showBill:n billLines..

1 parent ac499fc7
......@@ -64,7 +64,7 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote {
if (user.isAnonymous()) {
logger.info("logging in as anonymous!!!");
} else if (!user.checkPassword(password)) {
secubean.logMessage(SecurityLogType.permissionDenied, eventUser.getUser(), "Login failed: wrong password for username ", username);
secubean.logMessage(SecurityLogType.permissionDenied, eventUser, "Login failed: wrong password for username ", username);
eventUser = null;
user = null;
}
......@@ -78,7 +78,7 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote {
eventUser.setCreator(eventUser);
}
} else {
secubean.logMessage(SecurityLogType.permissionDenied, (User) null, "Login failed: Username not found: ", username);
secubean.logMessage(SecurityLogType.permissionDenied, eventbean.getCurrentEvent(), null, "Login failed: Username not found: ", username);
}
return eventUser;
......
......@@ -14,6 +14,7 @@ import org.slf4j.Logger;
import fi.insomnia.bortal.facade.LogEntryFacade;
import fi.insomnia.bortal.facade.LogEntryTypeFacade;
import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.LogEntry;
import fi.insomnia.bortal.model.LogEntryType;
import fi.insomnia.bortal.model.User;
......@@ -33,6 +34,8 @@ public class LoggingBean implements LoggingBeanLocal {
private LogEntryTypeFacade typeFacade;
@EJB
private LogEntryFacade entryFacade;
@EJB
private EventBeanLocal eventbean;
@Resource
UserTransaction utx;
......@@ -86,14 +89,19 @@ public class LoggingBean implements LoggingBeanLocal {
// }
@Override
public LogEntry logMessage(SecurityLogType paramType, User user,
public LogEntry logMessage(SecurityLogType paramType, LanEvent event, User user,
Object... description) {
LogEntry entry = null;
if (event == null)
{
event = eventbean.getCurrentEvent();
}
try {
String desc = toString(description);
utx.begin();
LogEntryType type = typeFacade.findOrCreate(paramType);
entry = new LogEntry(Calendar.getInstance());
entry.setParentEvent(event);
entry.setType(type);
entry.setDescription(desc);
entry.setUser(user);
......@@ -113,9 +121,15 @@ public class LoggingBean implements LoggingBeanLocal {
}
@Override
public LogEntry logMessage(SecurityLogType paramType, EventUser user,
Object... description) {
return logMessage(paramType, user.getUser(), description);
public LogEntry logMessage(SecurityLogType paramType, EventUser user, Object... description) {
LanEvent event = null;
User usr = null;
if (user != null)
{
event = user.getEvent();
usr = user.getUser();
}
return logMessage(paramType, event, usr, description);
}
private static final String toString(Object... desc) {
......
......@@ -46,6 +46,7 @@ import fi.insomnia.bortal.model.UserImage;
import fi.insomnia.bortal.util.MailMessage;
import fi.insomnia.bortal.utilities.I18n;
import fi.insomnia.bortal.utilities.PasswordFunctions;
import fi.insomnia.bortal.utilities.SearchQuery;
import fi.insomnia.bortal.utilities.SearchResult;
/**
......@@ -309,8 +310,8 @@ public class UserBean implements UserBeanLocal {
@Override
@RolesAllowed(UserPermission.S_VIEW_ALL)
public SearchResult<User> getUsers(int page, int pagesize, String sort, String search) {
return userFacade.searchAllUsers(page, pagesize, sort, search);
public SearchResult<User> getUsers(SearchQuery search) {
return userFacade.searchAllUsers(search);
}
// @Override
......@@ -497,12 +498,12 @@ public class UserBean implements UserBeanLocal {
}
@Override
public SearchResult<User> getEventUsers(int page, int pagesize, String sort, String search) {
if (search == null || search.isEmpty())
public SearchResult<User> getEventUsers(SearchQuery search) {
if (search.getSearch() == null || search.getSearch().isEmpty())
{
return userFacade.searchEventUsers(page, pagesize, sort, search);
return userFacade.searchEventUsers(search);
} else {
return userFacade.searchAllUsers(page, pagesize, sort, search);
return userFacade.searchAllUsers(search);
}
}
......
......@@ -9,21 +9,20 @@ import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.facade.callbacks.FacadeCallback;
import fi.insomnia.bortal.utilities.SearchQuery;
import fi.insomnia.bortal.utilities.SearchResult;
import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public abstract class GenericFacade<C extends ModelInterface> {
private final Class<C> entClass;
private static final Logger logger = LoggerFactory.getLogger(GenericFacade.class);
// private static final Logger logger =
// LoggerFactory.getLogger(GenericFacade.class);
public GenericFacade(Class<C> entityClass) {
this.entClass = entityClass;
......@@ -110,53 +109,55 @@ public abstract class GenericFacade<C extends ModelInterface> {
return ret;
}
@Deprecated
protected List<C> search(String query, String[] fields, String orderfield) {
return search(0, 0, query, fields, orderfield);
}
@Deprecated
protected SearchResult<C> searcher(int page, int pagesize, String query, String[] fields, String orderfield) {
SearchResult<C> ret = new SearchResult<C>();
ret.setResults(search(page, pagesize, query, fields, orderfield));
ret.setResultcount(searchCount(query, fields));
return ret;
}
// @Deprecated
// protected List<C> search(String query, String[] fields, String
// orderfield) {
// return search(0, 0, query, fields, orderfield);
// }
//
// @Deprecated
// protected SearchResult<C> searcher(int page, int pagesize, String query,
// String[] fields, String orderfield) {
// SearchResult<C> ret = new SearchResult<C>();
// ret.setResults(search(page, pagesize, query, fields, orderfield));
// ret.setResultcount(searchCount(query, fields));
// return ret;
// }
// Le fu... Tuota.. generics ei hanskaa ... operaattoria.. tehdään siis
// näin... :(
protected SearchResult<C> searcher(int page, int pagesize, FacadeCallback<C> callback) {
return searcher(page, pagesize, Collections.singletonList(callback));
protected SearchResult<C> searcher(SearchQuery search, FacadeCallback<C> callback) {
return searcher(search, Collections.singletonList(callback));
}
protected SearchResult<C> searcher(int page, int pagesize, FacadeCallback<C> cb1, FacadeCallback<C> cb2) {
protected SearchResult<C> searcher(SearchQuery search, FacadeCallback<C> cb1, FacadeCallback<C> cb2) {
ArrayList<FacadeCallback<C>> cbs = new ArrayList<FacadeCallback<C>>();
cbs.add(cb1);
cbs.add(cb2);
return searcher(page, pagesize, cbs);
return searcher(search, cbs);
}
protected SearchResult<C> searcher(int page, int pagesize, FacadeCallback<C> cb1, FacadeCallback<C> cb2, FacadeCallback<C> cb3) {
protected SearchResult<C> searcher(SearchQuery search, FacadeCallback<C> cb1, FacadeCallback<C> cb2, FacadeCallback<C> cb3) {
ArrayList<FacadeCallback<C>> cbs = new ArrayList<FacadeCallback<C>>();
cbs.add(cb1);
cbs.add(cb2);
cbs.add(cb3);
return searcher(page, pagesize, cbs);
return searcher(search, cbs);
}
protected SearchResult<C> searcher(int page, int pagesize, FacadeCallback<C> cb1, FacadeCallback<C> cb2, FacadeCallback<C> cb3, FacadeCallback<C> cb4) {
protected SearchResult<C> searcher(SearchQuery search, FacadeCallback<C> cb1, FacadeCallback<C> cb2, FacadeCallback<C> cb3, FacadeCallback<C> cb4) {
ArrayList<FacadeCallback<C>> cbs = new ArrayList<FacadeCallback<C>>();
cbs.add(cb1);
cbs.add(cb2);
cbs.add(cb3);
cbs.add(cb4);
return searcher(page, pagesize, cbs);
return searcher(search, cbs);
}
protected SearchResult<C> searcher(int page, int pagesize, List<FacadeCallback<C>> list) {
protected SearchResult<C> searcher(SearchQuery search, List<FacadeCallback<C>> list) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<C> listCQuery = cb.createQuery(getEntityClass());
......@@ -169,9 +170,9 @@ public abstract class GenericFacade<C extends ModelInterface> {
TypedQuery<Long> countQ = getEm().createQuery(countCQuery);
TypedQuery<C> listQ = getEm().createQuery(listCQuery);
if (pagesize > 0) {
listQ.setFirstResult(page * pagesize);
listQ.setMaxResults(pagesize);
if (search.getPagesize() > 0) {
listQ.setFirstResult(search.getPage() * search.getPagesize());
listQ.setMaxResults(search.getPagesize());
}
......@@ -201,52 +202,55 @@ public abstract class GenericFacade<C extends ModelInterface> {
}
@Deprecated
protected List<C> search(int page, int pagesize, String query, String[] fields, String orderfield) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<C> cq = cb.createQuery(getEntityClass());
Root<C> root = cq.from(getEntityClass());
addPredicates(cq, root, query, fields);
TypedQuery<C> q = getEm().createQuery(cq);
if (pagesize > 0) {
q.setFirstResult(page * pagesize);
q.setMaxResults(pagesize);
}
List<C> ret = q.getResultList();
return ret;
}
@Deprecated
protected void addPredicates(CriteriaQuery<?> cq, Root<C> root, String query, String[] fields) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
if (query != null && !query.isEmpty() && fields != null && fields.length > 0) {
List<Predicate> preds = new ArrayList<Predicate>();
for (String field : fields) {
Path<String> rootfield = root.get(field);
preds.add(cb.like(cb.lower(rootfield), query));
}
cq.where(cb.or(preds.toArray(new Predicate[preds.size()])));
}
}
@Deprecated
protected long searchCount(String query, String[] fields) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<C> root = cq.from(getEntityClass());
addPredicates(cq, root, query, fields);
cq.select(getEm().getCriteriaBuilder().count(root));
TypedQuery<Long> q = getEm().createQuery(cq);
return q.getSingleResult();
}
// @Deprecated
// protected List<C> search(int page, int pagesize, String query, String[]
// fields, String orderfield) {
//
// CriteriaBuilder cb = getEm().getCriteriaBuilder();
// CriteriaQuery<C> cq = cb.createQuery(getEntityClass());
//
// Root<C> root = cq.from(getEntityClass());
//
// addPredicates(cq, root, query, fields);
//
// TypedQuery<C> q = getEm().createQuery(cq);
// if (pagesize > 0) {
// q.setFirstResult(page * pagesize);
// q.setMaxResults(pagesize);
//
// }
// List<C> ret = q.getResultList();
// return ret;
// }
//
// @Deprecated
// protected void addPredicates(CriteriaQuery<?> cq, Root<C> root, String
// query, String[] fields) {
// CriteriaBuilder cb = getEm().getCriteriaBuilder();
// if (query != null && !query.isEmpty() && fields != null && fields.length
// > 0) {
// List<Predicate> preds = new ArrayList<Predicate>();
// for (String field : fields) {
// Path<String> rootfield = root.get(field);
// preds.add(cb.like(cb.lower(rootfield), query));
// }
// cq.where(cb.or(preds.toArray(new Predicate[preds.size()])));
// }
//
// }
//
// @Deprecated
// protected long searchCount(String query, String[] fields) {
// CriteriaBuilder cb = getEm().getCriteriaBuilder();
// CriteriaQuery<Long> cq = cb.createQuery(Long.class);
// Root<C> root = cq.from(getEntityClass());
//
// addPredicates(cq, root, query, fields);
// cq.select(getEm().getCriteriaBuilder().count(root));
//
// TypedQuery<Long> q = getEm().createQuery(cq);
// return q.getSingleResult();
// }
// @Deprecated
// public List<C> findAll(int page, int pagesize, String sort) {
......
......@@ -27,6 +27,7 @@ import fi.insomnia.bortal.model.EventUser_;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.model.User_;
import fi.insomnia.bortal.utilities.SearchQuery;
import fi.insomnia.bortal.utilities.SearchResult;
@Stateless
......@@ -104,17 +105,17 @@ public class UserFacade extends IntegerPkGenericFacade<User> {
return super.merge(user);
}
public SearchResult<User> searchAllUsers(int page, int pagesize, String sort, String search) {
public SearchResult<User> searchAllUsers(SearchQuery search) {
List<FacadeCallback<User>> callbacks = new ArrayList<FacadeCallback<User>>();
if (sort == null || sort.isEmpty()) {
if (search.getSort() == null || search.getSort().isEmpty()) {
callbacks.add(new OrderCallback<User>(false, User_.id));
} else {
callbacks.add(new OrderCallback<User>(false, sort));
callbacks.add(new OrderCallback<User>(false, search.getSort()));
}
callbacks.add(new StringSearchPredicateCreator<User>(search, getAttrlist()));
callbacks.add(new StringSearchPredicateCreator<User>(search.getSearch(), getAttrlist()));
return super.searcher(page, pagesize, callbacks);
return super.searcher(search, callbacks);
// return this.search(page, pagesize, query, NAMEFIELDS, sort);
}
......@@ -147,7 +148,7 @@ public class UserFacade extends IntegerPkGenericFacade<User> {
return getEm().createQuery(cq).getResultList();
}
public SearchResult<User> searchEventUsers(int page, int pagesize, String sort, String search)
public SearchResult<User> searchEventUsers(SearchQuery query)
{
ArrayList<FacadeCallback<EventUser>> callbacks = new ArrayList<FacadeCallback<EventUser>>();
callbacks.add(new OrderCallback<EventUser>(false, EventUser_.id));
......@@ -167,9 +168,9 @@ public class UserFacade extends IntegerPkGenericFacade<User> {
TypedQuery<Long> countQ = getEm().createQuery(countCQuery);
TypedQuery<User> listQ = getEm().createQuery(listCQuery);
if (pagesize > 0) {
listQ.setFirstResult(page * pagesize);
listQ.setMaxResults(pagesize);
if (query.getPagesize() > 0) {
listQ.setFirstResult(query.getPage() * query.getPagesize());
listQ.setMaxResults(query.getPagesize());
}
return new SearchResult<User>(listQ.getResultList(), countQ.getSingleResult());
}
......
......@@ -3,13 +3,14 @@ package fi.insomnia.bortal.beans;
import javax.ejb.Local;
import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.LogEntry;
import fi.insomnia.bortal.model.User;
@Local
public interface LoggingBeanLocal {
LogEntry logMessage(SecurityLogType paramType, User user, Object... description);
LogEntry logMessage(SecurityLogType paramType, LanEvent event, User user, Object... description);
LogEntry logMessage(SecurityLogType paramType, EventUser user, Object... description);
......
......@@ -10,6 +10,7 @@ import fi.insomnia.bortal.model.GroupMembership;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.model.UserImage;
import fi.insomnia.bortal.utilities.SearchQuery;
import fi.insomnia.bortal.utilities.SearchResult;
@Local
......@@ -17,9 +18,9 @@ public interface UserBeanLocal {
List<EventUser> getUsers();
SearchResult<User> getUsers(int page, int pagesize, String sort, String search);
SearchResult<User> getUsers(SearchQuery search);
SearchResult<User> getEventUsers(int page, int pagesize, String sort, String search);
SearchResult<User> getEventUsers(SearchQuery search);
EventUser mergeChanges(EventUser user);
......
......@@ -5,7 +5,7 @@ import javax.annotation.Generated;
import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2012-05-12T19:23:44.258+0300")
@Generated(value="Dali", date="2012-09-11T02:27:08.849+0300")
@StaticMetamodel(LogEntry.class)
public class LogEntry_ extends GenericEntity_ {
public static volatile SingularAttribute<LogEntry, LanEvent> parentEvent;
......
......@@ -6,9 +6,10 @@ import javax.persistence.metamodel.ListAttribute;
import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel;
@Generated(value="Dali", date="2012-09-09T02:58:31.995+0300")
@Generated(value="Dali", date="2012-09-10T17:55:33.516+0300")
@StaticMetamodel(Reader.class)
public class Reader_ extends GenericEntity_ {
public static volatile SingularAttribute<Reader, ReaderType> type;
public static volatile SingularAttribute<Reader, LanEvent> event;
public static volatile SingularAttribute<Reader, Integer> gamepoints;
public static volatile SingularAttribute<Reader, Integer> maxEvents;
......@@ -20,5 +21,4 @@ public class Reader_ extends GenericEntity_ {
public static volatile SingularAttribute<Reader, Integer> mapX;
public static volatile SingularAttribute<Reader, Integer> mapY;
public static volatile ListAttribute<Reader, ReaderEvent> events;
public static volatile SingularAttribute<Reader, ReaderType> type;
}
package fi.insomnia.bortal.utilities;
import java.io.Serializable;
public class SearchQuery implements Serializable {
private static final long serialVersionUID = -8777921789916093938L;
private int page = 0;
private int pagesize = 20;
private String sort = null;
private String search = null;
public SearchQuery()
{
super();
}
public SearchQuery(int page, int pagesize, String sort, String search) {
super();
this.page = page;
this.pagesize = pagesize;
this.sort = sort;
this.search = search;
}
public int getPage() {
return page;
}
public void setPage(int page) {
if (page < 0) {
this.page = 0;
} else
{
this.page = page;
}
}
public int getPagesize() {
if (pagesize < 1) {
pagesize = 20;
}
return pagesize;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
public String getSearch() {
return search;
}
public void setSearch(String search) {
this.search = search;
}
public void addPage(Integer count) {
if (count != null) {
page += count;
}
}
}
......@@ -38,24 +38,24 @@
});
</script>
</ui:fragment>
<ui:fragment rendered="#{billEditView.checkoutFiAvailable}">
<table border="0">
<tr>
<ui:repeat varStatus="idx" value="#{billEditView.checkoutFiToken}" var="bank">
<td>
<form action="#{bank.url}" method="post">
<ui:repeat value="#{bank.postParams}" var="valp" >
<input type="hidden" name="#{valp.key}" value="#{valp.value}" />
</ui:repeat>
<input type='image' src='#{bank.icon}' />
</form>
</td>
<h:outputText escape="false" value="&lt;/tr>&lt;tr>" rendered="#{idx.index % 4 == 3}"/>
</ui:repeat>
</tr>
</table>
<ui:fragment rendered="#{billEditView.checkoutFiAvailable}">
<table border="0">
<tr>
<ui:repeat varStatus="idx" value="#{billEditView.checkoutFiToken}" var="bank">
<td>
<form action="#{bank.url}" method="post">
<ui:repeat value="#{bank.postParams}" var="valp">
<input type="hidden" name="#{valp.key}" value="#{valp.value}" />
</ui:repeat>
<input type='image' src='#{bank.icon}' />
</form>
</td>
<h:outputText escape="false" value="&lt;/tr>&lt;tr>" rendered="#{idx.index % 4 == 3}" />
</ui:repeat>
</tr>
</table>
</ui:fragment>
</ui:define>
......
......@@ -14,10 +14,10 @@
<h:panelGrid columns="2" columnClasses="topalign,topalign">
<h:outputLabel for="billnr" value="#{i18n['bill.billNumber']}:" />
<h:outputText id="billnr" value="#{cc.attrs.bill.billNumber}" />
<h:outputLabel for="refnr" value="#{i18n['bill.referencenumber']}" />
<h:outputText id="refnr" value="#{cc.attrs.bill.referenceNumber}" />
<h:outputLabel for="billAmount" value="#{i18n['bill.billAmount']}" />
<h:outputText id="billAmount" value="#{cc.attrs.bill.totalPrice()}">
<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
......@@ -71,6 +71,48 @@
</h:panelGrid>
</h:panelGrid>
<h2>#{i18n['bill.billLines']}</h2>
<h:dataTable styleClass="border" border="1" value="#{cc.attrs.bill.billLines}" var="line">
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['billine.name']}" />
</f:facet>
<h:outputText value="#{line.name}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['billine.quantity']}" />
</f:facet>
<h:outputText value="#{line.quantity}">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['billine.unitName']}" />
</f:facet>
<h:outputText value="#{line.unitName}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['billine.unitPrice']}" />
</f:facet>
<h:outputText value="#{line.unitPrice}">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="#{i18n['billine.linePrice']}" />
</f:facet>
<h:outputText value="#{line.linePrice}">
<f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
</h:outputText>
</h:column>
</h:dataTable>
</composite:implementation>
</html>
......@@ -221,4 +221,12 @@ td ul {
font-size: 9px;
float: left;
margin: 4px;
}
table {
border-collapse: collapse;
}
table.border td,table.border th {
padding: 1px 4px;
}
\ No newline at end of file
......@@ -38,6 +38,7 @@ bill.addr5 = Address 5
bill.address = Payers address
bill.billAmount = Bill amount
bill.billIsPaid = Bill is paid
bill.billLines = Products
bill.billNumber = Bill number
bill.billPaidDate = Paid date
bill.deliveryTerms = Delivery terms
......@@ -63,6 +64,7 @@ bill.totalPrice = Total
billedit.billnotfound = Bill not found. Select again.
billine.linePrice = Total
billine.name = Product
billine.quantity = Quantity
billine.referencedProduct = Referenced product
......
......@@ -38,6 +38,7 @@ bill.addr5 = Osoite 5
bill.address = Maksajan osoite
bill.billAmount = Laskun summa
bill.billIsPaid = Lasku on maksettu
bill.billLines = Tuotteet
bill.billNumber = Laskun numero
bill.billPaidDate = Maksup\u00E4iv\u00E4
bill.deliveryTerms = Toimitusehdot
......@@ -61,6 +62,7 @@ bill.show = N\u00E4yt\u00E4
bill.theirReference = Asiakkaan viite
bill.totalPrice = Laskun summa
billine.linePrice = Yhteens\u00E4
billine.name = Tuote
billine.quantity = Lukum\u00E4\u00E4r\u00E4
billine.referencedProduct = Tuoteviittaus
......@@ -421,14 +423,14 @@ resetMail.username = K\u00E4ytt\u00E4j\u00E4tunnus
resetmailSent.body = Antamasi k\u00E4ytt\u00E4j\u00E4tunnuksen s\u00E4hk\u00F6postiosoitteeseen on l\u00E4hetetty osoite jossa voit vaihtaa tunnuksen salasanan.
resetmailSent.header = S\u00E4hk\u00F6posti l\u00E4hetetty
role.cardtemplate = Korttipohja
role.create = Luo rooli
role.description = Kuvaus
role.edit = Muokkaa
role.edit.save = Tallenna
role.name = Nimi
role.parents = Periytyy
role.savePermissions = Tallenna oikeudet
role.cardtemplate = Korttipohja
role.create = Luo rooli
role.description = Kuvaus
role.edit = Muokkaa
role.edit.save = Tallenna
role.name = Nimi
role.parents = Periytyy
role.savePermissions = Tallenna oikeudet
sendPicture.header = L\u00E4het\u00E4 kuva
......
......@@ -7,18 +7,20 @@ import javax.faces.model.ListDataModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.utilities.SearchQuery;
import fi.insomnia.bortal.utilities.SearchResult;
import fi.insomnia.bortal.utilities.jpa.ModelInterface;
public abstract class PaginationView<T extends ModelInterface> extends GenericCDIView implements IPaginationView {
private static final long serialVersionUID = -1226554409762987631L;
protected Integer page = 0;
protected Integer pagesize = 20;
// protected Integer page = 0;
// protected Integer pagesize = 20;
private SearchQuery searchQuery = new SearchQuery();
protected Long resultcount = 0L;
private Long pagecount = 0L;
protected String sort;
protected String search;
// protected String sort;
// protected String search;
private List<T> results;
private ListDataModel<T> resultdatamodel;
private static Logger logger = LoggerFactory.getLogger(PaginationView.class);
......@@ -32,11 +34,10 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
public String addToPage(Integer count) {
pagechangeCallback();
if (count != null) {
page += count;
}
if (page >= pagecount) {
page = pagecount.intValue() - 1;
searchQuery.addPage(count);
if (searchQuery.getPage() >= pagecount) {
searchQuery.setPage(pagecount.intValue() - 1);
}
return null;
}
......@@ -50,17 +51,14 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
public String gotoFirstpage() {
// logger.info("Setting page to first page");
pagechangeCallback();
page = 0;
searchQuery.setPage(0);
return null;
}
public String gotoLastpage() {
// logger.info("Setting page to last page");
pagechangeCallback();
page = pagecount.intValue() - 1;
if (page < 0) {
page = 0;
}
searchQuery.setPage(pagecount.intValue() - 1);
return null;
}
......@@ -74,23 +72,20 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
@Override
public Integer getPage() {
return page;
return searchQuery.getPage();
}
public void setPage(Integer page) {
this.page = page;
searchQuery.setPage(page);
}
@Override
public Integer getPagesize() {
if (pagesize < 1) {
pagesize = 20;
}
return pagesize;
return searchQuery.getPagesize();
}
public void setPagesize(Integer pagesize) {
this.pagesize = pagesize;
searchQuery.setPagesize(pagesize);
}
@Override
......@@ -100,7 +95,7 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
public void setResultcount(Long resultcount) {
this.resultcount = resultcount;
pagecount = ((resultcount + pagesize - 1) / pagesize);
pagecount = ((resultcount + searchQuery.getPagesize() - 1) / searchQuery.getPagesize());
}
@Override
......@@ -113,24 +108,24 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
}
public String getSort() {
return sort;
return searchQuery.getSort();
}
public void setSort(String sort) {
this.sort = sort;
searchQuery.setSort(sort);
}
public String getSearch() {
return search;
return searchQuery.getSearch();
}
public void setSearch(String search) {
this.search = search;
searchQuery.setSearch(search);
}
public String newSearch() {
logger.info("Setting new Search for pagination..");
page = 0;
setPage(0);
setResults(null);
resultdatamodel = null;
return null;
......@@ -145,4 +140,12 @@ public abstract class PaginationView<T extends ModelInterface> extends GenericCD
resultdatamodel = null;
}
public SearchQuery getSearchQuery() {
return searchQuery;
}
public void setSearchQuery(SearchQuery searchQuery) {
this.searchQuery = searchQuery;
}
}
......@@ -23,6 +23,7 @@ import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.utilities.SearchQuery;
import fi.insomnia.bortal.web.annotations.SelectedUser;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
......@@ -41,7 +42,7 @@ public class PlaceView extends GenericCDIView {
@EJB
private transient UserBeanLocal userbean;
@EJB
private transient PlaceBeanLocal placebean;
......@@ -153,7 +154,7 @@ public class PlaceView extends GenericCDIView {
public String searchUser() {
super.beginConversation();
userlist = new ListDataModel<User>(userbean.getUsers(0, 0, null, searchuser).getResults());
userlist = new ListDataModel<User>(userbean.getUsers(new SearchQuery(0, 0, null, searchuser)).getResults());
return null;
}
......
......@@ -17,6 +17,7 @@ import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.ReaderEvent;
import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.utilities.SearchQuery;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
@Named
......@@ -72,7 +73,7 @@ public class ReaderView extends GenericCDIView {
if (usersearch == null || usersearch.length() < 2) {
super.addFaceMessage("user.tooShortSearch");
} else {
userlist = UserCardWrapper.initWrapper(userbean.getUsers(0, 0, null, usersearch).getResults(), userbean);
userlist = UserCardWrapper.initWrapper(userbean.getUsers(new SearchQuery(0, 0, null, usersearch)).getResults(), userbean);
}
return null;
......
......@@ -23,7 +23,7 @@ public class UserSearchView extends PaginationView<User> {
public void initView() {
if (requirePermissions(permbean.hasPermission(UserPermission.VIEW_ALL))) {
super.setResult(userbean.getEventUsers(page, pagesize, sort, search));
super.setResult(userbean.getEventUsers(getSearchQuery()));
}
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!