diff --git a/src/main/java/info/bukova/isspst/StringUtils.java b/src/main/java/info/bukova/isspst/StringUtils.java index 2720016f..cf352fc3 100644 --- a/src/main/java/info/bukova/isspst/StringUtils.java +++ b/src/main/java/info/bukova/isspst/StringUtils.java @@ -1,5 +1,7 @@ package info.bukova.isspst; +import org.zkoss.util.resource.Labels; + public class StringUtils { public static String nullStr(String str) { @@ -10,4 +12,36 @@ public class StringUtils { return i == 0 ? "" : String.valueOf(i); } + public static String localizeDbErr(String sqlError) { + String splitMessage[] = sqlError.split("'"); + String message = ""; + + for (int i = 0; i < splitMessage.length; i++) { + if (i % 2 == 0) { + message += getLocalized(splitMessage[i]); + } else { + message += " '" + splitMessage[i] + "' "; + } + } + + return message; + } + + public static String localize(String key) { + return Labels.getLabel(key); + } + + private static String getLocalized(String str) { + String words[] = str.split(" "); + String key = ""; + + for (String word: words) { + if (!word.isEmpty()) { + key += word.substring(0, 1).toUpperCase() + word.substring(1); + } + } + + return Labels.getLabel("Db" + key); + } + } diff --git a/src/main/java/info/bukova/isspst/ui/FormViewModel.java b/src/main/java/info/bukova/isspst/ui/FormViewModel.java index f0dc3b4e..98460e30 100644 --- a/src/main/java/info/bukova/isspst/ui/FormViewModel.java +++ b/src/main/java/info/bukova/isspst/ui/FormViewModel.java @@ -1,11 +1,13 @@ package info.bukova.isspst.ui; +import info.bukova.isspst.StringUtils; import info.bukova.isspst.data.DataModel; import info.bukova.isspst.services.Service; import info.bukova.isspst.services.ValidationException; import java.util.Map; +import org.hibernate.exception.ConstraintViolationException; import org.springframework.security.access.AccessDeniedException; import org.zkoss.bind.annotation.BindingParam; import org.zkoss.bind.annotation.Command; @@ -63,12 +65,16 @@ public class FormViewModel { classErr = ""; } - Messagebox.show("Chyba validace", "Chyba", Messagebox.OK, Messagebox.ERROR); + Messagebox.show(StringUtils.localize("DbValidationError"), StringUtils.localize("Error"), Messagebox.OK, Messagebox.ERROR); } catch (AccessDeniedException e) { - Messagebox.show("K vykobání této operace nemáte dostatečná oprávnění", "Chyba", Messagebox.OK, Messagebox.ERROR); + Messagebox.show(StringUtils.localize("ErrorRights"), StringUtils.localize("Error"), Messagebox.OK, Messagebox.ERROR); + } catch (ConstraintViolationException e) { + Messagebox.show(StringUtils.localizeDbErr(e.getSQLException().getMessage()), StringUtils.localize("Error"), Messagebox.OK, Messagebox.ERROR); + dataBean.setValid(false); } catch (Exception e) { e.printStackTrace(); - Messagebox.show("Chyba při ukládání záznamu", "Chyba", Messagebox.OK, Messagebox.ERROR); + Messagebox.show(StringUtils.localize("DbSaveError"), StringUtils.localize("Error"), Messagebox.OK, Messagebox.ERROR); + dataBean.setValid(false); } } diff --git a/src/main/java/info/bukova/isspst/ui/ListViewModel.java b/src/main/java/info/bukova/isspst/ui/ListViewModel.java index ff5a7a34..d0fd12ba 100644 --- a/src/main/java/info/bukova/isspst/ui/ListViewModel.java +++ b/src/main/java/info/bukova/isspst/ui/ListViewModel.java @@ -1,5 +1,6 @@ package info.bukova.isspst.ui; +import info.bukova.isspst.StringUtils; import info.bukova.isspst.data.DataModel; import info.bukova.isspst.filters.Filter; import info.bukova.isspst.services.Service; @@ -140,7 +141,7 @@ public class ListViewModel { } catch (IllegalAccessException e) { e.printStackTrace(); } catch (AccessDeniedException e) { - Messagebox.show("K vykobání této operace nemáte dostatečná oprávnění", "Chyba", Messagebox.OK, Messagebox.ERROR); + Messagebox.show(StringUtils.localize("ErrorRights"), StringUtils.localize("Error"), Messagebox.OK, Messagebox.ERROR); } } @@ -164,7 +165,7 @@ public class ListViewModel { @Command @NotifyChange({ "dataList", "dataBean" }) public void delete() { - Messagebox.show("Opravdu smazat?", "Smazat záznam", Messagebox.YES + Messagebox.show(StringUtils.localize("DbReallyDelete"), StringUtils.localize("DbDeleteRecord"), Messagebox.YES | Messagebox.NO, Messagebox.QUESTION, new EventListener() { @@ -180,9 +181,9 @@ public class ListViewModel { BindUtils.postNotifyChange(null, null, ListViewModel.this, "dataBean"); } catch (DataIntegrityViolationException e) { - Messagebox.show("Chyba při mazání záznamu", "Chyba", Messagebox.OK, Messagebox.ERROR); + Messagebox.show(StringUtils.localize("DbCannotDelete"), StringUtils.localize("Error"), Messagebox.OK, Messagebox.ERROR); } catch (AccessDeniedException e) { - Messagebox.show("K vykobání této operace nemáte dostatečná oprávnění", "Chyba", Messagebox.OK, Messagebox.ERROR); + Messagebox.show(StringUtils.localize("ErrorRights"), StringUtils.localize("Error"), Messagebox.OK, Messagebox.ERROR); } } } @@ -198,7 +199,7 @@ public class ListViewModel { dataList.remove(dataBean); dataBean = null; } catch (DataIntegrityViolationException e) { - Messagebox.show("Chyba při mazání záznamu", "Chyba", Messagebox.OK, + Messagebox.show(StringUtils.localize("DbCannotDelete"), StringUtils.localize("Error"), Messagebox.OK, Messagebox.ERROR); } } diff --git a/src/main/webapp/WEB-INF/zk-label.properties b/src/main/webapp/WEB-INF/zk-label.properties index f9857d69..19c972fd 100644 --- a/src/main/webapp/WEB-INF/zk-label.properties +++ b/src/main/webapp/WEB-INF/zk-label.properties @@ -76,4 +76,16 @@ ReportReport=Sestava ReportSend=Odeslat ReportPrint=Tisk ReportReports=Sestavy -ReportTitle=Nadpis sestavy: \ No newline at end of file +ReportTitle=Nadpis sestavy: + +Error=Chyba +ErrorRights=K vykobání této operace nemáte dostatečná oprávnění + +DbDeleteRecord=Smazat záznam +DbReallyDelete=Opravdu chcete smazat tento záznam? +DbDuplicateEntry=Chyba při ukládání záznamu: Duplicitní záznam +DbForKey= pro klíč +DbCannotDelete=Chyba při mazání záznamu: Záznam nelze smazat protože na něj odkazuje jiný záznam +DbSaveError=Chyba při ukládání záznamu +DbValidationError=Chyba validace + \ No newline at end of file