Java tutorial
/******************************************************************************* * Copyright 2017 Kansanelkelaitos * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy * of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. ******************************************************************************/ package fi.kela.kanta.exceptions; import java.util.LinkedHashMap; import java.util.Map; import org.apache.commons.lang.StringUtils; /** * Thn luokkaan voidan kert tiedot kaikista entiteteeist (tai miksei jostain muustakin), joita ei kyetty * ksittelemn bean validation virheiden vuoksi. Voidaan kytt siis mm. BeanValidation:in yhteydess JPA * entiteettien virheiden kapselointiin. <br/> * Thn virheeseen voidaan siis kapseloida joukko validointivirheit, jotta ensimminen kohdattu virhe ei katkaise * esimerkiksi kaikkien muiden entiteettien ksittely. * */ public class VirheellisetTiedotException extends Exception { private static final long serialVersionUID = 1L; private static final String list_start = "Objektissa seuraavia virheit ["; private static final String list_start_with_name = "Objektissa '%s' seuraavia virheit ["; private static final String list_end = "]"; private static final String sepr = ": "; private final LinkedHashMap<String, String> virheet; private final String objektinNimi; /** * Oletuskonstruktori. */ public VirheellisetTiedotException() { this(null); } /** * Oletuskonstruktori. */ public VirheellisetTiedotException(String objektinNimi) { virheet = new LinkedHashMap<String, String>(); this.objektinNimi = objektinNimi; } /** * Lis uuden virhemerkinnn. * * @param avain * Tunniste, mihin virhe liittyy. * @param arvo * Selite virheest. */ public void addVirhe(String avain, String arvo) { virheet.put(avain, arvo); } /** * @return Listaus virheist, jota thn poikkeukseen on lueteltu. */ public Map<String, String> getVirheet() { return virheet; } /** * @return <code>True</code> jos tss poikkeuksessa on listattu virheit. */ public boolean isVirheita() { return !virheet.isEmpty(); } @Override public String getMessage() { StringBuilder sb = new StringBuilder(); if (!StringUtils.isEmpty(getObjektinNimi())) { Object[] args = { this.getObjektinNimi() }; sb.append(String.format(VirheellisetTiedotException.list_start_with_name, args)); } else { sb.append(VirheellisetTiedotException.list_start); } for (Map.Entry<String, String> entry : virheet.entrySet()) { sb.append(entry.getKey()).append(VirheellisetTiedotException.sepr).append(entry.getValue()); sb.append(", "); } sb.replace(sb.length() - 2, sb.length(), ""); sb.append(VirheellisetTiedotException.list_end); return sb.toString(); } public String getObjektinNimi() { return objektinNimi; } }