Při ukládání duplicitní hodnoty do unikátního klíče se vypíše do

chybového dialogu důvod a záznam se neobjeví v gridu. 
Hlášky do messageboxů jsou načítány ze zk-label.properties. 
closes #75
multitenant
Josef Rokos 11 years ago
parent 1c19625ffb
commit c42913ed9b

@ -1,5 +1,7 @@
package info.bukova.isspst; package info.bukova.isspst;
import org.zkoss.util.resource.Labels;
public class StringUtils { public class StringUtils {
public static String nullStr(String str) { public static String nullStr(String str) {
@ -10,4 +12,36 @@ public class StringUtils {
return i == 0 ? "" : String.valueOf(i); 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);
}
} }

@ -1,11 +1,13 @@
package info.bukova.isspst.ui; package info.bukova.isspst.ui;
import info.bukova.isspst.StringUtils;
import info.bukova.isspst.data.DataModel; import info.bukova.isspst.data.DataModel;
import info.bukova.isspst.services.Service; import info.bukova.isspst.services.Service;
import info.bukova.isspst.services.ValidationException; import info.bukova.isspst.services.ValidationException;
import java.util.Map; import java.util.Map;
import org.hibernate.exception.ConstraintViolationException;
import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.AccessDeniedException;
import org.zkoss.bind.annotation.BindingParam; import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Command;
@ -63,12 +65,16 @@ public class FormViewModel<T extends DataModel> {
classErr = ""; 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) { } 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) { } catch (Exception e) {
e.printStackTrace(); 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);
} }
} }

@ -1,5 +1,6 @@
package info.bukova.isspst.ui; package info.bukova.isspst.ui;
import info.bukova.isspst.StringUtils;
import info.bukova.isspst.data.DataModel; import info.bukova.isspst.data.DataModel;
import info.bukova.isspst.filters.Filter; import info.bukova.isspst.filters.Filter;
import info.bukova.isspst.services.Service; import info.bukova.isspst.services.Service;
@ -140,7 +141,7 @@ public class ListViewModel<T extends DataModel> {
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
e.printStackTrace(); e.printStackTrace();
} catch (AccessDeniedException e) { } 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<T extends DataModel> {
@Command @Command
@NotifyChange({ "dataList", "dataBean" }) @NotifyChange({ "dataList", "dataBean" })
public void delete() { 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, | Messagebox.NO, Messagebox.QUESTION,
new EventListener<Event>() { new EventListener<Event>() {
@ -180,9 +181,9 @@ public class ListViewModel<T extends DataModel> {
BindUtils.postNotifyChange(null, null, BindUtils.postNotifyChange(null, null,
ListViewModel.this, "dataBean"); ListViewModel.this, "dataBean");
} catch (DataIntegrityViolationException e) { } 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) { } 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<T extends DataModel> {
dataList.remove(dataBean); dataList.remove(dataBean);
dataBean = null; dataBean = null;
} catch (DataIntegrityViolationException e) { } 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); Messagebox.ERROR);
} }
} }

@ -77,3 +77,15 @@ ReportSend=Odeslat
ReportPrint=Tisk ReportPrint=Tisk
ReportReports=Sestavy ReportReports=Sestavy
ReportTitle=Nadpis sestavy: 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
Loading…
Cancel
Save