diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html index 282c25caf8..24d89c1df7 100644 --- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html +++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.html @@ -7,15 +7,14 @@ <body> <wicket:extend> <div class="span-24 last"> - <!-- Left column --> -<!-- <div class="span-11 last"> --> -<!-- <div wicket:id="cCLPanel"></div> --> -<!-- </div> --> - <!-- Right column --> -<!-- <div class="span-11 last"> --> - <div wicket:id="listCLPanel"></div> -<!-- <div wicket:id="flcltp"></div> --> -<!-- </div> --> + + <div wicket:id="dialog"> + <div wicket:id="editpanel"></div> + </div> + + <!--<div wicket:id="listCLPanel"></div>--> + <div wicket:id="datapanel"></div> + </div> </wicket:extend> </body> diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java index 6754ced4c7..26dc471f3a 100644 --- a/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java +++ b/src/main/java/se/su/dsv/scipro/admin/pages/AdminCheckListPage.java @@ -2,27 +2,61 @@ package se.su.dsv.scipro.admin.pages; import org.apache.wicket.PageParameters; -import se.su.dsv.scipro.admin.panels.AdminListCheckListTemplatePanel; -import se.su.dsv.scipro.data.enums.CheckListRole; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.markup.html.panel.EmptyPanel; +import org.apache.wicket.model.IModel; +import org.odlabs.wiquery.ui.dialog.Dialog; +import se.su.dsv.scipro.checklists.panels.FunctionalEditChecklistTemplatePanel; +import se.su.dsv.scipro.checklists.panels.FunctionalListCheckListTemplatePanel; +import se.su.dsv.scipro.data.dataobjects.CheckListTemplate; +import se.su.dsv.scipro.datatables.checklist.CheckListTemplateDataPanel; import se.su.dsv.scipro.security.auth.Authorization; import se.su.dsv.scipro.security.auth.roles.Roles; /** * @author Fredrik Norberg - fnorbe@dsv.su.se - * */ -@Authorization(authorizedRoles={Roles.SYSADMIN, Roles.ADMIN}) +@Authorization(authorizedRoles = {Roles.SYSADMIN, Roles.ADMIN}) public class AdminCheckListPage extends AbstractAdminPage { - - public static final String MAIN_MENU_LABEL = "CheckLists"; - - public AdminCheckListPage(PageParameters pp) { - super(pp); -// add(new CreateChecklistTemplatePanel("cCLPanel")); - add(new AdminListCheckListTemplatePanel("listCLPanel", pp, CheckListRole.ADMIN)); -// add(new FunctionalListCheckListTemplatePanel("flcltp")); - } + + public static final String MAIN_MENU_LABEL = "CheckLists"; + private Dialog dialog; + private CheckListTemplateDataPanel cltdp; + + public AdminCheckListPage(PageParameters pp) { + super(pp); + +// add(new AdminListCheckListTemplatePanel("listCLPanel", pp, CheckListRole.ADMIN)); + + + dialog = new Dialog("dialog"); + dialog.setModal(true); + dialog.setAutoOpen(false); + dialog.setWidth(550); + dialog.setHeight(700); + dialog.add(new EmptyPanel("editpanel")); + add(dialog); + + + add(cltdp = new CheckListTemplateDataPanel("datapanel", true) { + @Override + public void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target) { + System.out.println(clicked.getObject().getCreator()); + dialog.replace(new FunctionalEditChecklistTemplatePanel("editpanel", clicked.getObject()) { + @Override + public void onUpdate(AjaxRequestTarget target) { + dialog.close(target); + target.addComponent(cltdp); + } + }); + target.addComponent(dialog); + dialog.open(target); + } + }); + cltdp.setOutputMarkupId(true); + + } } diff --git a/src/main/java/se/su/dsv/scipro/data/dataobjects/ChecklistCategory.java b/src/main/java/se/su/dsv/scipro/data/dataobjects/ChecklistCategory.java index 2256449158..be55dd8ce9 100644 --- a/src/main/java/se/su/dsv/scipro/data/dataobjects/ChecklistCategory.java +++ b/src/main/java/se/su/dsv/scipro/data/dataobjects/ChecklistCategory.java @@ -83,6 +83,10 @@ public class ChecklistCategory extends DomainObject{ return false; return true; } - + + @Override + public String toString(){ + return categoryName; + } } diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.html b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.html new file mode 100644 index 0000000000..316f72bbb5 --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html + xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"> +<body> + <wicket:panel> + <div>Filter by title or creator:</div> + <div wicket:id="filterStringPanel"></div> + <div>Rows per page: <span wicket:id="numberDropDown"></span></div> + <table wicket:id="datatable"></table> + </wicket:panel> +</body> +</html> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java new file mode 100644 index 0000000000..74b20738f2 --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/CheckListTemplateDataPanel.java @@ -0,0 +1,151 @@ +package se.su.dsv.scipro.datatables.checklist; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.extensions.markup.html.repeater.data.table.*; +import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.spring.injection.annot.SpringBean; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import se.su.dsv.scipro.data.dataobjects.CheckListTemplate; +import se.su.dsv.scipro.reusable.AjaxDropDown; +import se.su.dsv.scipro.reusable.FilterBooleanPanel; +import se.su.dsv.scipro.reusable.FilterStringPanel; +import se.su.dsv.scipro.springdata.services.ChecklistTemplateService; + +import java.util.ArrayList; +import java.util.Iterator; + +/** + * Author: fred-fri + * Date: 5/2/12 + */ +public abstract class CheckListTemplateDataPanel extends Panel { + + @SpringBean + public ChecklistTemplateService checklistTemplateService; + + CheckListTemplateDataPanel cltdp; //must be kept as a reference to self for abstract method cascading + + DataTable<CheckListTemplate> table; + NavigationToolbar navigationToolbar; + FilterStringPanel filterStringPanel; + Integer number; + AjaxDropDown<Integer> numberDropDown; + ChecklistTemplateProvider checklistTemplateProvider; + + public abstract void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target); + + public CheckListTemplateDataPanel(String id, boolean adminPrivileges) { + super(id); + + cltdp = this; + + filterStringPanel = new FilterStringPanel("filterStringPanel") { + @Override + public void onUpdateFilter(AjaxRequestTarget target) { + checklistTemplateProvider.setFilterString(getFilterString()); + target.addComponent(table); + } + }; + add(filterStringPanel); + + number = new Integer(10); + ArrayList<Integer> numberList = new ArrayList<Integer>(); + numberList.add(new Integer(10)); + numberList.add(new Integer(25)); + numberList.add(new Integer(100)); + + numberDropDown = new AjaxDropDown<Integer>("numberDropDown", new Model<Integer>(number), new Model<ArrayList<Integer>>(numberList)) { + @Override + public void onNewSelection(AjaxRequestTarget target, Integer objectSelected) { + table.setRowsPerPage(objectSelected); + target.addComponent(table); + } + }; + add(numberDropDown); + + IColumn[] columns = new IColumn[4]; + + columns[0] = new ClickableTitleColumn<CheckListTemplate>(Model.of("Name"), "name", "name") { + @Override + protected void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target) { +// System.out.println(clicked.getObject().getName()); + cltdp.onClick(clicked, target); + } + }; + columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator"); + columns[2] = new PropertyColumn<CheckListTemplate>(Model.of("Categories"), "categories"); + columns[3] = new ClickableOrderColumn<CheckListTemplate>(Model.of("Order"), "templateNumber", "templateNumber", adminPrivileges) { + @Override + protected void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target, boolean up) { + System.out.println(up); + if (up){ + checklistTemplateService.upChecklistTemplate(clicked.getObject()); + target.addComponent(table); + } else { + checklistTemplateService.downChecklistTemplate(clicked.getObject()); + target.addComponent(table); + } + } + }; + + table = new DataTable<CheckListTemplate>("datatable", columns, checklistTemplateProvider = new ChecklistTemplateProvider(), 10); + table.setOutputMarkupId(true); + table.addBottomToolbar(navigationToolbar = new NavigationToolbar(table)); + table.addTopToolbar(new HeadersToolbar(table, checklistTemplateProvider)); + add(table); + + } + + private class ChecklistTemplateProvider extends SortableDataProvider<CheckListTemplate> { + + private String filterString; + + public ChecklistTemplateProvider() { + setSort("templateNumber", true); + } + + @Override + public Iterator<? extends CheckListTemplate> iterator(int first, int count) { +// Sort(Direction direction, String... properties) +// new Sort(Sort.Direction.ASC, "name") + Sort sort; + if (getSort().isAscending()){ + sort = new Sort(Sort.Direction.ASC, getSort().getProperty()); + } + else { + sort = new Sort(Sort.Direction.DESC, getSort().getProperty()); + } +// new Sort(Sort.Direction.ASC, getSort().toString()) + + //Changed from count to table.getRowsPerPage to make pagination work. + //return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), count, sort)).iterator(); + return checklistTemplateService.find(filterString, new PageRequest(table.getCurrentPage(), table.getRowsPerPage(), sort)).iterator(); + } + + @Override + public int size() { + return safeLongToInt(checklistTemplateService.count(filterString)); + } + + @Override + public IModel<CheckListTemplate> model(CheckListTemplate object) { + return Model.of(object); + } + + public void setFilterString(String filterString){ + this.filterString = filterString; + } + } + + public static int safeLongToInt(long l) { + if (l < Integer.MIN_VALUE || l > Integer.MAX_VALUE) { + throw new IllegalArgumentException + (l + " cannot be cast to int without changing its value."); + } + return (int) l; + } +} diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html new file mode 100644 index 0000000000..40a1d9ccd9 --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn$LinkPanel.html @@ -0,0 +1,3 @@ +<wicket:panel> + <span wicket:id="label"></span> <button wicket:id="uplink">+</button> <button wicket:id="downlink">-</button> +</wicket:panel> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java new file mode 100644 index 0000000000..683882351f --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableOrderColumn.java @@ -0,0 +1,70 @@ +package se.su.dsv.scipro.datatables.checklist; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; +import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.model.PropertyModel; +import se.su.dsv.scipro.icons.ImageObject; + +/** + * Author: fred-fri + * Date: 5/4/12 + */ +public abstract class ClickableOrderColumn<T> extends AbstractColumn<T> { + + private boolean adminPrivileges; + private final String property; + + public ClickableOrderColumn(IModel<String> displayModel, + String property, boolean adminPrivileges) { + this(displayModel, property, null, adminPrivileges); + } + + public ClickableOrderColumn(IModel<String> displayModel, + String property, String sort, boolean adminPrivileges) { + super(displayModel, sort); + this.property = property; + this.adminPrivileges = adminPrivileges; + } + + public void populateItem(Item<ICellPopulator<T>> cellItem, + String componentId, IModel<T> rowModel) { + cellItem.add(new LinkPanel(componentId, rowModel, + new PropertyModel<Object>(rowModel, property))); + } + + protected abstract void onClick(IModel<T> clicked, AjaxRequestTarget target, boolean up); + + private class LinkPanel extends Panel { + public LinkPanel(String id, IModel<T> rowModel, IModel<?> + labelModel) { + super(id); + + add(new Label("label", labelModel)); + + AjaxLink<T> uplink = new AjaxLink<T>("uplink", rowModel) { + @Override + public void onClick(AjaxRequestTarget target) { + ClickableOrderColumn.this.onClick(getModel(), target, true); + } + }; + uplink.setVisible(adminPrivileges); + add(uplink); + + AjaxLink<T> downlink = new AjaxLink<T>("downlink", rowModel) { + @Override + public void onClick(AjaxRequestTarget target) { + ClickableOrderColumn.this.onClick(getModel(), target, false); + } + }; + downlink.setVisible(adminPrivileges); + add(downlink); + } + } +} \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn$LinkPanel.html b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn$LinkPanel.html new file mode 100644 index 0000000000..e3845b572b --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn$LinkPanel.html @@ -0,0 +1,3 @@ +<wicket:panel> + <a wicket:id="link"><span wicket:id="label"></span></a> +</wicket:panel> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn.java b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn.java new file mode 100644 index 0000000000..ff94edf21d --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/datatables/checklist/ClickableTitleColumn.java @@ -0,0 +1,66 @@ +package se.su.dsv.scipro.datatables.checklist; + +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; +import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.markup.repeater.Item; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.PropertyModel; + +/** + * Author: fred-fri + * Date: 5/4/12 + */ +public abstract class ClickableTitleColumn<T> extends AbstractColumn<T> { + + private final String property; + + public ClickableTitleColumn(IModel<String> displayModel, + String property) { + this(displayModel, property, null); + } + + public ClickableTitleColumn(IModel<String> displayModel, + String property, String sort) { + super(displayModel, sort); + this.property = property; + } + + public void populateItem(Item<ICellPopulator<T>> cellItem, + String componentId, IModel<T> rowModel) { + cellItem.add(new LinkPanel(componentId, rowModel, + new PropertyModel<Object>(rowModel, property))); + } + + protected abstract void onClick(IModel<T> clicked, AjaxRequestTarget target); + + private class LinkPanel extends Panel { + public LinkPanel(String id, IModel<T> rowModel, IModel<?> + labelModel) { + super(id); + +// Link<T> link = new Link<T>("link", rowModel) { +// @Override +// public void onClick() { +// ClickableTitleColumn.this.onClick(getModel()); +// } +// }; +// add(link); +// link.add(new Label("label", labelModel)); + + AjaxLink<T> link = new AjaxLink<T>("link", rowModel) { + @Override + public void onClick(AjaxRequestTarget target) { + ClickableTitleColumn.this.onClick(getModel(), target); + } + }; + add(link); + link.add(new Label("label", labelModel)); + + + } + } +} \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java b/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java new file mode 100644 index 0000000000..bdee65bb50 --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/springdata/repos/ChecklistTemplateRepo.java @@ -0,0 +1,17 @@ +package se.su.dsv.scipro.springdata.repos; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.querydsl.QueryDslPredicateExecutor; +import org.springframework.transaction.annotation.Transactional; +import se.su.dsv.scipro.data.dataobjects.CheckListTemplate; + +/** + * @author: fred-fri + * date: 2012 03 26 + */ +@Transactional(readOnly = true) +public interface ChecklistTemplateRepo extends JpaRepository<CheckListTemplate, Long>, QueryDslPredicateExecutor<CheckListTemplate> { + + CheckListTemplate findByTemplateNumber(int templateNumber); + +} diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/AbstractServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/AbstractServiceImpl.java index 8d00eae6e7..cf65f607b4 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/AbstractServiceImpl.java +++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/AbstractServiceImpl.java @@ -43,8 +43,13 @@ public class AbstractServiceImpl<T, ID extends Serializable> implements CrudServ return repository.findOne(id); } + @Override + public Iterable<T> findAll() { + return repository.findAll(); + } - /** + + /** * Returns whether an entity with the given id exists. * * @param id diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java new file mode 100644 index 0000000000..fb42b2cebd --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ChecklistTemplateServiceImpl.java @@ -0,0 +1,103 @@ +package se.su.dsv.scipro.springdata.serviceimpls; + +import com.mysema.query.types.expr.BooleanExpression; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import se.su.dsv.scipro.data.dataobjects.CheckListTemplate; +import se.su.dsv.scipro.data.dataobjects.QCheckListTemplate; +import se.su.dsv.scipro.springdata.repos.ChecklistTemplateRepo; +import se.su.dsv.scipro.springdata.services.ChecklistTemplateService; + + +import javax.annotation.Resource; + +/** + * @author: fred-fri + * date: 2012 03 26 + */ +@Service ( "checkListTemplateService" ) +@Transactional ( readOnly = true ) +public class ChecklistTemplateServiceImpl extends AbstractQueryService<CheckListTemplate, Long> implements ChecklistTemplateService { + + @Resource + private ChecklistTemplateRepo checklistTemplateRepo; + + @Autowired + public ChecklistTemplateServiceImpl( + @Qualifier("checklistTemplateRepo") + ChecklistTemplateRepo checklistTemplateRepo) { + super(checklistTemplateRepo, checklistTemplateRepo); + System.out.println("CheckListTemplateServiceImpl instantiating..."); + } + + @Override + public Page<CheckListTemplate> findAll(Pageable pageable) { + return checklistTemplateRepo.findAll(pageable); + } + + @Override + public Page<CheckListTemplate> find(String filterString, Pageable pageable) { + if (filterString==null || filterString.isEmpty()){ + return checklistTemplateRepo.findAll(pageable); + } + else { + return checklistTemplateRepo.findAll(filterStringIsCreatorName(filterString).or(filterStringIsChecklistTemplateName(filterString)), pageable); + } + } + + @Override + public Long count(String filterString) { + if (filterString==null || filterString.isEmpty()){ + return checklistTemplateRepo.count(); + } + else { + return checklistTemplateRepo.count(filterStringIsCreatorName(filterString).or(filterStringIsChecklistTemplateName(filterString))); + } + } + + @Transactional ( readOnly = false ) + @Override + public void upChecklistTemplate(CheckListTemplate checkListTemplate) { + //if there is one above + if (checklistTemplateRepo.findByTemplateNumber(checkListTemplate.getTemplateNumber() + 1) !=null){ + //find the one with value 1 higher + CheckListTemplate downChecklistTemplate = checklistTemplateRepo.findByTemplateNumber(checkListTemplate.getTemplateNumber() + 1); + //give that one the one to be upped's value + downChecklistTemplate.setTemplateNumber(checkListTemplate.getTemplateNumber()); + //increase the value of the one to be upped with 1 + checkListTemplate.setTemplateNumber(checkListTemplate.getTemplateNumber() + 1); + //save both + checklistTemplateRepo.save(downChecklistTemplate); + checklistTemplateRepo.save(checkListTemplate); + } + } + + @Transactional ( readOnly = false ) + @Override + public void downChecklistTemplate(CheckListTemplate checkListTemplate) { + //if there is one below + if (checklistTemplateRepo.findByTemplateNumber(checkListTemplate.getTemplateNumber() -1) != null){ + //find the one with value 1 lower + CheckListTemplate upChecklistTemplate = checklistTemplateRepo.findByTemplateNumber(checkListTemplate.getTemplateNumber() -1); + //give that one the one to be downed's value + upChecklistTemplate.setTemplateNumber(checkListTemplate.getTemplateNumber()); + //decrease the value of the one to be downed with 1 + checkListTemplate.setTemplateNumber(checkListTemplate.getTemplateNumber() -1); + //save both + checklistTemplateRepo.save(upChecklistTemplate); + checklistTemplateRepo.save(checkListTemplate); + } + } + + private BooleanExpression filterStringIsCreatorName(String filterString){ + return QCheckListTemplate.checkListTemplate.creator.firstName.contains(filterString).or(QCheckListTemplate.checkListTemplate.creator.lastName.contains(filterString)); + } + + private BooleanExpression filterStringIsChecklistTemplateName(String filterString){ + return QCheckListTemplate.checkListTemplate.name.contains(filterString); + } +} diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java new file mode 100644 index 0000000000..91b506aee9 --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/springdata/services/ChecklistTemplateService.java @@ -0,0 +1,18 @@ +package se.su.dsv.scipro.springdata.services; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import se.su.dsv.scipro.data.dataobjects.CheckListTemplate; + +/** + * @author: fred-fri + * date: 2012 03 26 + */ +public interface ChecklistTemplateService extends CrudService<CheckListTemplate, Long>, QueryService<CheckListTemplate, Long> { + + Page<CheckListTemplate> findAll(Pageable pageable); + Page<CheckListTemplate> find(String filterString, Pageable pageable); + Long count(String filterString); + void upChecklistTemplate(CheckListTemplate checkListTemplate); + void downChecklistTemplate(CheckListTemplate checkListTemplate); +} diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/CrudService.java b/src/main/java/se/su/dsv/scipro/springdata/services/CrudService.java index 28a2d5e65b..3e5c55aeba 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/services/CrudService.java +++ b/src/main/java/se/su/dsv/scipro/springdata/services/CrudService.java @@ -27,6 +27,8 @@ public abstract interface CrudService<T, ID> { */ T findOne(ID id); + Iterable<T> findAll(); + /** * Returns whether an entity with the given id exists. *