Pro org.codehaus.castor přidána vazba na xercesImpl.

Implicitní plnění měrných jednotek.
Příprava položek pro nové požadavky.
Logování událostí probíhá od úrovně warning.
Logování hibernate dotazů deaktivováno.

refs 
multitenant
František Přibyl
parent dd369c5186
commit b633309b74

@ -294,6 +294,12 @@
<artifactId>spring-xml</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.8.1</version>
</dependency>
<!-- Reporting -->
<dependency>

@ -1,6 +1,7 @@
package info.bukova.isspst;
import info.bukova.isspst.data.GlobalSettings;
import info.bukova.isspst.data.MUnit;
import info.bukova.isspst.data.NumberSeries;
import info.bukova.isspst.data.Permission;
import info.bukova.isspst.data.RequirementType;
@ -9,6 +10,7 @@ import info.bukova.isspst.data.User;
import info.bukova.isspst.reporting.Report;
import info.bukova.isspst.reporting.ReportMapping;
import info.bukova.isspst.reporting.ReportType;
import info.bukova.isspst.services.munits.MUnitService;
import info.bukova.isspst.services.numberseries.NumberSeriesService;
import info.bukova.isspst.services.requirement.RequirementTypeService;
import info.bukova.isspst.services.settings.GlobalSettingsService;
@ -29,6 +31,7 @@ import org.springframework.web.context.support.WebApplicationContextUtils;
public class AppInitListener implements ServletContextListener {
private MUnitService mUnitsService;
private RoleService roleService;
private UserService userService;
private PermissionService permService;
@ -47,6 +50,7 @@ public class AppInitListener implements ServletContextListener {
logger.info("Initializing database");
WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(evt.getServletContext());
mUnitsService = ctx.getBean(MUnitService.class);
roleService = ctx.getBean(RoleService.class);
userService = ctx.getBean(UserService.class);
permService = ctx.getBean(PermissionService.class);
@ -55,6 +59,7 @@ public class AppInitListener implements ServletContextListener {
reqTypeService = ctx.getBean(RequirementTypeService.class);
userService.grantAdmin();
checkMUnits();
checkRoles();
checkUsers();
checkPermissions();
@ -67,6 +72,106 @@ public class AppInitListener implements ServletContextListener {
loadModuleReports();
}
private void checkMUnits()
{
List<MUnit> mUnits = mUnitsService.getAll();
if (mUnits.isEmpty())
{
MUnit mUnit = new MUnit();
mUnit.setCode("ks");
mUnit.setName("ks");
mUnit.setDescription("kus (množství)");
mUnitsService.add(mUnit);
mUnit.setCode("SI-m");
mUnit.setName("m");
mUnit.setDescription("metr (délka)");
mUnitsService.add(mUnit);
mUnit.setCode("VEDL-km");
mUnit.setName("km");
mUnit.setDescription("kilometr (délka)");
mUnitsService.add(mUnit);
mUnit.setCode("SI-kg");
mUnit.setName("kg");
mUnit.setDescription("kilogram (hmotnost)");
mUnitsService.add(mUnit);
mUnit.setCode("VEDL-g");
mUnit.setName("g");
mUnit.setDescription("gram (hmotnost)");
mUnitsService.add(mUnit);
mUnit.setCode("VEDL-dkg");
mUnit.setName("dkg");
mUnit.setDescription("dekagram (hmotnost)");
mUnitsService.add(mUnit);
mUnit.setCode("VEDL-t");
mUnit.setName("t");
mUnit.setDescription("tuna (hmotnost)");
mUnitsService.add(mUnit);
mUnit.setCode("SI-s");
mUnit.setName("s");
mUnit.setDescription("sekunda (čas)");
mUnitsService.add(mUnit);
mUnit.setCode("VEDL-min");
mUnit.setName("min");
mUnit.setDescription("minuta (čas)");
mUnitsService.add(mUnit);
mUnit.setCode("VEDL-hod");
mUnit.setName("hod");
mUnit.setDescription("hodina (čas)");
mUnitsService.add(mUnit);
mUnit.setCode("ODV-m2");
mUnit.setName("m[up]2[/up]");
mUnit.setDescription("metr čtverečný (plocha)");
mUnitsService.add(mUnit);
mUnit.setCode("ODV-ha");
mUnit.setName("ha");
mUnit.setDescription("hektar = 10.000 m² (plocha)");
mUnitsService.add(mUnit);
mUnit.setCode("ODV-m3");
mUnit.setName("m³");
mUnit.setDescription("metr krychlový (objem)");
mUnitsService.add(mUnit);
mUnit.setCode("ODV-l");
mUnit.setName("l");
mUnit.setDescription("litr = 10E-3 m³ (objem)");
mUnitsService.add(mUnit);
mUnit.setCode("SI-A");
mUnit.setName("A");
mUnit.setDescription("ampér (elektrický proud)");
mUnitsService.add(mUnit);
mUnit.setCode("SI-K");
mUnit.setName("K");
mUnit.setDescription("kelvin (termodynamická teplota)");
mUnitsService.add(mUnit);
mUnit.setCode("SI-cd");
mUnit.setName("cd");
mUnit.setDescription("kandela (svítivost)");
mUnitsService.add(mUnit);
mUnit.setCode("SI-mol");
mUnit.setName("mol");
mUnit.setDescription("mol (látkové množství)");
mUnitsService.add(mUnit);
}
}
private void checkRoles() {
for (Role role : Constants.ROLES)
{

@ -39,7 +39,7 @@ public class MUnit extends BaseData implements DataModel {
* @return the name
*/
public String getName() {
return name;
return this.name;
}
/**
@ -49,6 +49,29 @@ public class MUnit extends BaseData implements DataModel {
public void setName(String name) {
this.name = name;
}
public String getNameSpecial()
{
String special = this.getName();
if (special != null)
{
special = special.replace("[up]2[/up]", "²");
}
return special;
}
public void setNameSpecial(String special)
{
if (special != null)
{
special = special.replace("²", "[up]2[/up]");
}
this.setName(special);
}
/**
* @return the description

@ -1,12 +1,15 @@
package info.bukova.isspst.data;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@ -29,6 +32,20 @@ public class Requirement extends BaseData implements DataModel
@Column(name = "DESCRIPTION")
private String description;
@OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinColumn(name = "REQUIREMENT_ID")
private List<RequirementItem> items;
public List<RequirementItem> getItems()
{
return items;
}
public void setItems(List<RequirementItem> items)
{
this.items = items;
}
public String getNumser()
{
return numser;

@ -0,0 +1,136 @@
package info.bukova.isspst.data;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name = "REQUIREMENT_ITEMS")
public class RequirementItem
{
@Id
@Column(name="ID")
@GeneratedValue
private int id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "REQSUBJECT_ID")
private RequirementSubject reqSubject;
@Column(name = "CODE")
private String code;
@Column(name = "NAME")
private String name;
@Column(name = "QUANTITY", precision=15, scale=4)
private BigDecimal quantity;
@Embedded
private MUnitEmb mUnit;
@Column(name = "UNITPRICE", precision=15, scale=4)
private BigDecimal unitPrice;
@Column(name = "TOTAL", precision=15, scale=4)
private BigDecimal total;
@Column(name = "DESCRIPTION")
private String description;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public RequirementSubject getReqSubject()
{
return reqSubject;
}
public void setReqSubject(RequirementSubject reqSubject)
{
this.reqSubject = reqSubject;
}
public String getCode()
{
return code;
}
public void setCode(String code)
{
this.code = code;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public BigDecimal getQuantity()
{
return quantity;
}
public void setQuantity(BigDecimal quantity)
{
this.quantity = quantity;
}
public MUnitEmb getMUnit() {
return mUnit;
}
public void setMUnit(MUnitEmb mUnit) {
this.mUnit = mUnit;
}
public BigDecimal getUnitPrice()
{
return unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice)
{
this.unitPrice = unitPrice;
}
public BigDecimal getTotal()
{
return total;
}
public void setTotal(BigDecimal total)
{
this.total = total;
}
public String getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description = description;
}
}

@ -22,7 +22,7 @@ public abstract class RequirementSubject implements OwnedDataModel {
//OwnedDataModel
@Id
@Column(name =" ID")
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;
@ManyToOne(fetch=FetchType.LAZY)

@ -1,7 +1,7 @@
package info.bukova.isspst.ui.requirement;
import info.bukova.isspst.data.Requirement;
import info.bukova.isspst.data.RequirementSubject;
import info.bukova.isspst.data.RequirementItem;
import info.bukova.isspst.data.Workgroup;
import info.bukova.isspst.services.requirement.RequirementService;
import info.bukova.isspst.services.users.UserService;
@ -10,26 +10,31 @@ import info.bukova.isspst.ui.FormViewModel;
import java.util.List;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.Init;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.select.annotation.WireVariable;
import org.zkoss.zul.Window;
public class RequirementForm extends FormViewModel<Requirement>
{
@WireVariable
private UserService userService;
@WireVariable
private WorkgroupService workgroupService;
public List<Workgroup> getCentres() {
public List<Workgroup> getCentres()
{
return workgroupService.getUserCentres(userService.getCurrent());
}
@WireVariable
private RequirementService requirementService;
private RequirementSubject item;
private RequirementItem item;
private int selItemIndex;
@ -39,12 +44,12 @@ public class RequirementForm extends FormViewModel<Requirement>
this.setSelItemIndex(-1);
}
public RequirementSubject getItem()
public RequirementItem getItem()
{
return item;
}
public void setItem(RequirementSubject item)
public void setItem(RequirementItem item)
{
this.item = item;
}
@ -60,18 +65,19 @@ public class RequirementForm extends FormViewModel<Requirement>
}
@Command
@NotifyChange({"dataBean", "selItemIndex"})
public void addItem() {
// RequirementSubject item = new Material();
// requirementService.addItem(getDataBean(), item);
// selItemIndex = getDataBean().getItems().indexOf(item);
@NotifyChange({ "dataBean", "selItemIndex" })
public void addItem()
{
Window window = (Window) Executions.createComponents("/requirements/selectitems/selectItems.zul", null, null);
window.doModal();
}
/*
@Command
@NotifyChange({"dataBean", "selItemIndex"})
public void removeItem(@BindingParam("item") RequirementItem item) {
requirementService.removeItem(getDataBean(), item);
@NotifyChange({ "dataBean", "selItemIndex" })
public void removeItem(@BindingParam("item") RequirementItem item)
{
// requirementService.removeItem(getDataBean(), item);
selItemIndex = -1;
}
*/
}

@ -0,0 +1,82 @@
package info.bukova.isspst.ui.requirements;
import info.bukova.isspst.data.Material;
import info.bukova.isspst.data.ServiceItem;
import info.bukova.isspst.services.reqsubjects.MaterialService;
import info.bukova.isspst.services.reqsubjects.ServiceItemService;
import java.util.List;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.Init;
import org.zkoss.zk.ui.select.annotation.WireVariable;
public class SelectItems
{
@WireVariable
private MaterialService materialService;
@WireVariable
private ServiceItemService serviceItemService;
private List<Material> materialList;
private List<ServiceItem> serviceItemList;
private Material selectedMaterial;
private ServiceItem selectedServiceItem;
@Init
public void init()
{
this.setMaterialList(materialService.getAll());
this.setServiceItemList(serviceItemService.getAll());
}
public List<Material> getMaterialList()
{
return materialList;
}
public void setMaterialList(List<Material> materialList)
{
this.materialList = materialList;
}
public List<ServiceItem> getServiceItemList()
{
return serviceItemList;
}
public void setServiceItemList(List<ServiceItem> serviceItemList)
{
this.serviceItemList = serviceItemList;
}
public Material getSelectedMaterial()
{
return selectedMaterial;
}
public void setSelectedMaterial(Material selectedMaterial)
{
this.selectedMaterial = selectedMaterial;
}
public ServiceItem getSelectedServiceItem()
{
return selectedServiceItem;
}
public void setSelectedServiceItem(ServiceItem selectedServiceItem)
{
this.selectedServiceItem = selectedServiceItem;
}
@Command
public void addItem()
{
//this
}
}

@ -18,6 +18,7 @@
<mapping class="info.bukova.isspst.data.JobMapping"></mapping>
<mapping class="info.bukova.isspst.data.NumberSeries"></mapping>
<mapping class="info.bukova.isspst.data.Requirement"></mapping>
<mapping class="info.bukova.isspst.data.RequirementItem"></mapping>
<mapping class="info.bukova.isspst.data.Workflow"></mapping>
<mapping class="info.bukova.isspst.data.RequirementType"></mapping>
<mapping class="info.bukova.isspst.data.ServiceItem"></mapping>

@ -36,6 +36,10 @@
<level value="warn" />
</logger>
<logger name="org.springframework.core.type.classreading.AnnotationAttributesReadingVisitor">
<level value="error" />
</logger>
<!-- Root Logger -->
<root>
<priority value="warn" />

@ -22,6 +22,15 @@ RequirementsGridCenter=Středisko
RequirementsGridDescription=Popis
RequirementsGridDeliveryDate=Datum dodání
RequirementItemCode=Kód
RequirementItemName=Text
RequirementItemQuantity=Množství
RequirementItemMUnit=MJ
RequirementItemUnitPrice=Jedn. cena
RequirementItemTotal=Celkem
RequirementItemDescription=Poznámka
AgendaMyOrders=Aktuální
AgendaOrdersHistory=Ukončené
@ -180,4 +189,5 @@ false=Ne
DateFormat=dd. MM. yyyy
AddItem=Přidat položku...
RemoveItem=Smazat položku...

@ -26,7 +26,7 @@
<auxheader>
<div sclass="find-grid-cell">
<div sclass="find-grid-divtextbox">
<textbox value="@bind(vm.filterTemplate.name)" instant="true" onChange="@command('doFilter')" sclass="find-grid-textbox" />
<textbox value="@bind(vm.filterTemplate.nameSpecial)" instant="true" onChange="@command('doFilter')" sclass="find-grid-textbox" />
</div>
<div sclass="find-grid-img">
<image src="/img/funnel.png" />
@ -48,7 +48,7 @@
<template name="model">
<listitem>
<listcell label="@load(each.code)" />
<listcell label="@load(each.name)" />
<listcell label="@load(each.nameSpecial)" />
<listcell label="@load(each.description)" />
</listitem>
</template>

@ -82,6 +82,90 @@
onClick="@command('addItem')"
sclass="nicebutton" />
</hbox>
<listbox
height="180px"
model="@load(vm.dataBean.items)"
selectedItem="@bind(vm.item)"
selectedIndex="@bind(vm.selItemIndex)">
<listhead>
<listheader
hflex="1"
Label="${labels.RequirementItemCode}" />
<listheader
hflex="3"
label="${labels.RequirementItemName}" />
<listheader
hflex="1"
label="${labels.RequirementItemQuantity}" />
<listheader
hflex="1"
label="${labels.RequirementItemMUnit}" />
<listheader
hflex="2"
label="${labels.RequirementItemUnitPrice}" />
<listheader
hflex="2"
label="${labels.RequirementItemTotal}" />
<listheader
width="120px"
label="${labels.RequirementItemDescription}" />
<listheader hflex="2" />
</listhead>
<template name="model">
<listitem>
<listcell>
<textbox
inplace="true"
onFocus="@command('selectItem', item=each)"
value="@bind(each.code)" />
</listcell>
<listcell>
<textbox
inplace="true"
onFocus="@command('selectItem', item=each)"
value="@bind(each.name)" />
</listcell>
<listcell>
<spinner
inplace="true"
onFocus="@command('selectItem', item=each)"
__onChange="@command('recalculate', zeroPrice=false)"
value="@bind(each.quantity)" />
</listcell>
<listcell>
<textbox
inplace="true"
onFocus="@command('selectItem', item=each)"
value="@bind(each.mUnit)" />
</listcell>
<listcell>
<textbox
inplace="true"
onFocus="@command('selectItem', item=each)"
value="@bind(each.unitPrice) @converter(vm.numConverter)" />
</listcell>
<listcell>
<textbox
inplace="true"
onFocus="@command('selectItem', item=each)"
value="@bind(each.total) @converter(vm.numConverter)" />
</listcell>
<listcell>
<textbox
inplace="true"
onFocus="@command('selectItem', item=each)"
value="@bind(each.description)" />
</listcell>
<listcell>
<button
image="/img/item-remove.png"
label="${labels.RemoveItem}"
onClick="@command('removeItem', item=each)"
sclass="nicebutton" />
</listcell>
</listitem>
</template>
</listbox>
<include src="/app/formButtons.zul" />
</vlayout>
</window>

@ -0,0 +1,108 @@
<?page title="${labels.AddItem}" contentType="text/html;charset=UTF-8"?>
<zk>
<window
id="selectItemsWnd"
closable="true"
border="normal"
position="center"
apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('info.bukova.isspst.ui.requirements.SelectItems')">
<caption
src="/img/item-add.png"
zclass="form-caption"
label="${labels.AddItem}" />
<vlayout>
<tabbox
id="tabboxItems"
hflex="1">
<tabs>
<tab
id="tabMaterial"
label="${labels.AgendaMaterial}"
image="/img/material.png" />
<tab
id="tabService"
label="${labels.AgendaServices}"
image="/img/service.png" />
</tabs>
<tabpanels>
<tabpanel>
<listbox
model="@load(vm.materialList)"
selectedItem="@bind(vm.selectedMaterial)">
<listhead menupopup="auto">
<listheader
label="${labels.code}"
sort="czech(code)"
width="10%" />
<listheader
label="${labels.name}"
sort="czech(name)"
width="25%" />
<listheader
label="${labels.description}"
sort="czech(description)"
width="55%" />
<listheader
label="${labels.munit}"
width="10%" />
</listhead>
<template name="model">
<listitem>
<listcell label="@load(each.code)" />
<listcell label="@load(each.name)" />
<listcell label="@load(each.description)" />
<listcell label="@load(each.munit.code)" />
</listitem>
</template>
</listbox>
</tabpanel>
<tabpanel>
<listbox
model="@load(vm.serviceItemList)"
selectedItem="@bind(vm.selectedServiceItem)">
<listhead menupopup="auto">
<listheader
label="${labels.code}"
sort="czech(code)"
width="10%" />
<listheader
label="${labels.name}"
sort="czech(name)"
width="30%" />
<listheader
label="${labels.description}"
sort="czech(description)"
width="60%" />
</listhead>
<template name="model">
<listitem>
<listcell label="@load(each.code)" />
<listcell label="@load(each.name)" />
<listcell label="@load(each.description)" />
</listitem>
</template>
</listbox>
</tabpanel>
</tabpanels>
</tabbox>
</vlayout>
<vlayout>
<div
hflex="max"
align="right">
<button
image="~./zul/img/misc/drag-disallow.png"
label="${labels.ButtonStorno}"
onClick="selectItemsWnd.detach()"
sclass="nicebutton" />
<button
image="/img/item-add.png"
label="${labels.AddItem}"
onClick="@command('addItem', window=selectItemsWnd)"
disabled="false"
sclass="nicebutton" />
</div>
</vlayout>
</window>
</zk>
Loading…
Cancel
Save