Implementováno zadávání hlaviček Požadavků.

Implementována číselná řada.
Přidány metody pro porovnání String a Date pro filtry.
Upraveno logování aplikace - loguje se až úroveň warning.

refs #100
This commit is contained in:
2014-07-06 17:35:28 +02:00
parent a074dd376d
commit 8bcfc04c15
22 changed files with 394 additions and 126 deletions
@@ -11,7 +11,7 @@ import info.bukova.isspst.reporting.Report;
import info.bukova.isspst.reporting.ReportMapping;
import info.bukova.isspst.reporting.ReportType;
import info.bukova.isspst.services.numberseries.NumberSeriesService;
import info.bukova.isspst.services.requirements.RequirementTypeService;
import info.bukova.isspst.services.requirement.RequirementTypeService;
import info.bukova.isspst.services.users.PermissionService;
import info.bukova.isspst.services.users.RoleService;
import info.bukova.isspst.services.users.UserService;
@@ -8,9 +8,10 @@ import info.bukova.isspst.reporting.Report;
import info.bukova.isspst.reporting.ReportMapping;
import info.bukova.isspst.services.addressbook.AdbService;
import info.bukova.isspst.services.buildings.BuildingService;
import info.bukova.isspst.services.munits.MUnitService;
import info.bukova.isspst.services.material.MaterialService;
import info.bukova.isspst.services.requirements.RequirementTypeService;
import info.bukova.isspst.services.munits.MUnitService;
import info.bukova.isspst.services.requirement.RequirementService;
import info.bukova.isspst.services.requirement.RequirementTypeService;
import info.bukova.isspst.services.users.RoleService;
import info.bukova.isspst.services.users.UserService;
import info.bukova.isspst.services.workgroups.WorkgroupService;
@@ -68,7 +69,7 @@ public class Constants {
new Module(MOD_MUNITS, "Měrné jednotky", MUnitService.class),
new Module(MOD_MATERIAL, "Materiál", MaterialService.class),
new Module(MOD_WORKGROUPS, "Pracovní skupiny", WorkgroupService.class),
new Module(MOD_REQUIREMENTS, "Požadavky", null),
new Module(MOD_REQUIREMENTS, "Požadavky", RequirementService.class),
new Module(MOD_WORKFLOW, "Procesy schválení", RequirementTypeService.class)
};
@@ -0,0 +1,57 @@
package info.bukova.isspst;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang.time.DateUtils;
public class DateTimeUtils
{
public static Date getDate(Date value)
{
if (value == null)
{
return value;
}
// Keep date - truncate time
return DateUtils.truncate(value, Calendar.DAY_OF_MONTH);
}
public static boolean isEqualByDate(Date d1, Date d2)
{
if (d1 != null && d2 != null)
{
d1 = DateTimeUtils.getDate(d1);
d2 = DateTimeUtils.getDate(d2);
boolean equals = (d1.compareTo(d2) == 0);
return equals;
}
return false;
}
public static boolean isEqualByDateForFilter(Date value, Date search)
{
if (search == null)
{
return true;
}
else if (value != null)
{
return DateTimeUtils.isEqualByDate(value, search);
}
return false;
}
public static Date getCurrDateTime()
{
return new Date();
}
public static Date getCurrDate()
{
return DateTimeUtils.getDate(DateTimeUtils.getCurrDateTime());
}
}
@@ -44,4 +44,10 @@ public class StringUtils {
return Labels.getLabel("Db" + key);
}
public static boolean isEqualForFilter(String value, String search)
{
value = StringUtils.nullStr(value).toLowerCase();
search = StringUtils.nullStr(search).toLowerCase();
return value.contains(search);
}
}
@@ -1,6 +1,7 @@
package info.bukova.isspst.filters;
import static info.bukova.isspst.StringUtils.nullStr;
import info.bukova.isspst.DateTimeUtils;
import info.bukova.isspst.StringUtils;
import info.bukova.isspst.data.Requirement;
import org.hamcrest.Description;
@@ -37,10 +38,11 @@ public class RequirementFilter implements Filter<Requirement>
@Override
public boolean matchesSafely(Requirement item)
{
return nullStr(item.getNumser()).toLowerCase().contains(nullStr(condition.getNumser()).toLowerCase())
&& item.getReqDate().equals(condition.getReqDate())
&& item.getDeliveryDate().equals(condition.getDeliveryDate())
&& nullStr(item.getDescription()).toLowerCase().contains(nullStr(condition.getDescription()).toLowerCase());
boolean foundNumser = StringUtils.isEqualForFilter(item.getNumser(), condition.getNumser());
boolean foundReqDate = DateTimeUtils.isEqualByDateForFilter(item.getReqDate(), condition.getReqDate());
boolean foundDescription = StringUtils.isEqualForFilter(item.getDescription(), condition.getDescription());
boolean foundDeliveryDate = DateTimeUtils.isEqualByDateForFilter(item.getDeliveryDate(), condition.getDeliveryDate());
return foundNumser && foundReqDate && foundDescription && foundDeliveryDate;
}
@Factory
@@ -5,8 +5,10 @@ import info.bukova.isspst.Constants;
import info.bukova.isspst.Module;
import info.bukova.isspst.dao.BaseDao;
import info.bukova.isspst.data.DataModel;
import info.bukova.isspst.data.NumberSeries;
import info.bukova.isspst.filters.Filter;
import info.bukova.isspst.reporting.Report;
import info.bukova.isspst.services.numberseries.NumberSeriesService;
import java.util.Arrays;
import java.util.Date;
@@ -25,7 +27,20 @@ public abstract class AbstractService<T extends DataModel> implements Service<T>
protected BaseDao<T> dao;
private Validator validator;
private NumberSeriesService numberSeriesService;
public NumberSeriesService getNumberSeriesService()
{
return numberSeriesService;
}
public void setNumberSeriesService(NumberSeriesService numberSeriesService)
{
this.numberSeriesService = numberSeriesService;
}
public void setDao(BaseDao<T> dao) {
this.dao = dao;
}
@@ -150,4 +165,22 @@ public abstract class AbstractService<T extends DataModel> implements Service<T>
}
}
protected String getNumberSerie()
{
String currentNumber = "";
if (numberSeriesService != null)
{
String moduleName = this.getModule().getId();
NumberSeries ns = numberSeriesService.getNumberSerie(moduleName);
if (ns != null)
{
currentNumber = ns.getCurrentNumber();
numberSeriesService.increase(ns);
}
}
return currentNumber;
}
}
@@ -1,10 +1,10 @@
package info.bukova.isspst.services.numberseries;
import org.springframework.transaction.annotation.Transactional;
import info.bukova.isspst.data.NumberSeries;
import info.bukova.isspst.services.AbstractService;
import org.springframework.transaction.annotation.Transactional;
public class NumberSeriesServiceImpl extends AbstractService<NumberSeries> implements NumberSeriesService
{
@Transactional
@@ -1,9 +1,31 @@
package info.bukova.isspst.services.requirement;
import info.bukova.isspst.data.Requirement;
import info.bukova.isspst.services.AbstractService;
import info.bukova.isspst.services.AbstractOwnedService;
public class RequirementServiceImpl extends AbstractService<Requirement> implements RequirementService
import java.util.Date;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
public class RequirementServiceImpl extends AbstractOwnedService<Requirement> implements RequirementService
{
@Override
protected Requirement createEntity()
{
Requirement entity = new Requirement();
entity.setReqDate(new Date());
return entity;
}
@Override
@Transactional
@PreAuthorize("hasPermission(this, 'PERM_ADD')")
public void add(Requirement entity)
{
entity.setNumser(this.getNumberSerie());
super.add(entity);
}
}
@@ -1,4 +1,4 @@
package info.bukova.isspst.services.requirements;
package info.bukova.isspst.services.requirement;
import info.bukova.isspst.data.RequirementType;
import info.bukova.isspst.services.Service;
@@ -1,4 +1,4 @@
package info.bukova.isspst.services.requirements;
package info.bukova.isspst.services.requirement;
import info.bukova.isspst.data.RequirementType;
import info.bukova.isspst.services.AbstractOwnedService;
@@ -1,15 +1,77 @@
package info.bukova.isspst.ui.requirement;
import info.bukova.isspst.data.Requirement;
import info.bukova.isspst.data.RequirementSubject;
import info.bukova.isspst.data.Workgroup;
import info.bukova.isspst.services.requirement.RequirementService;
import info.bukova.isspst.services.users.UserService;
import info.bukova.isspst.services.workgroups.WorkgroupService;
import info.bukova.isspst.ui.FormViewModel;
import java.util.List;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.Init;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.select.annotation.WireVariable;
public class RequirementForm extends FormViewModel<Requirement>
{
@WireVariable
private UserService userService;
@WireVariable
private WorkgroupService workgroupService;
public List<Workgroup> getCentres() {
return workgroupService.getUserCentres(userService.getCurrent());
}
@WireVariable
private RequirementService requirementService;
private RequirementSubject item;
private int selItemIndex;
@Init(superclass = true)
public void init()
{
this.setSelItemIndex(-1);
}
public RequirementSubject getItem()
{
return item;
}
public void setItem(RequirementSubject item)
{
this.item = item;
}
public int getSelItemIndex()
{
return selItemIndex;
}
public void setSelItemIndex(int selItemIndex)
{
this.selItemIndex = selItemIndex;
}
@Command
@NotifyChange({"dataBean", "selItemIndex"})
public void addItem() {
// RequirementSubject item = new Material();
// requirementService.addItem(getDataBean(), item);
// selItemIndex = getDataBean().getItems().indexOf(item);
}
/*
@Command
@NotifyChange({"dataBean", "selItemIndex"})
public void removeItem(@BindingParam("item") RequirementItem item) {
requirementService.removeItem(getDataBean(), item);
selItemIndex = -1;
}
*/
}
@@ -1,10 +1,10 @@
package info.bukova.isspst.ui.requirements;
package info.bukova.isspst.ui.requirement;
import info.bukova.isspst.Constants;
import info.bukova.isspst.data.RequirementType;
import info.bukova.isspst.data.Role;
import info.bukova.isspst.data.Workflow;
import info.bukova.isspst.services.requirements.RequirementTypeService;
import info.bukova.isspst.services.requirement.RequirementTypeService;
import info.bukova.isspst.services.users.RoleService;
import java.util.ArrayList;