franta-hg@21: /** franta-hg@21: * RAII v Javě franta-hg@21: * Copyright © 2014 František Kučera (frantovo.cz) franta-hg@21: * franta-hg@21: * This program is free software: you can redistribute it and/or modify franta-hg@21: * it under the terms of the GNU General Public License as published by franta-hg@21: * the Free Software Foundation, either version 3 of the License, or franta-hg@21: * (at your option) any later version. franta-hg@21: * franta-hg@21: * This program is distributed in the hope that it will be useful, franta-hg@21: * but WITHOUT ANY WARRANTY; without even the implied warranty of franta-hg@21: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the franta-hg@21: * GNU General Public License for more details. franta-hg@21: * franta-hg@21: * You should have received a copy of the GNU General Public License franta-hg@21: * along with this program. If not, see . franta-hg@21: */ franta-hg@21: package cz.frantovo.priklady.raii; franta-hg@21: franta-hg@21: /** franta-hg@21: * franta-hg@21: * @author Ing. František Kučera (frantovo.cz) franta-hg@21: */ franta-hg@21: public class Zdroj implements AutoCloseable { franta-hg@21: franta-hg@21: private final String název; franta-hg@21: private final boolean chybaVytváření; franta-hg@21: private final boolean chybaDělání; franta-hg@21: private final boolean chybaZavírání; franta-hg@21: franta-hg@21: public Zdroj(String název, boolean chybaVytváření, boolean chybaDělání, boolean chybaZavírání) throws ChybaVytváření { franta-hg@21: this.název = název; franta-hg@21: System.err.println("Vytváříme: " + this + " chyba=" + chybaVytváření); franta-hg@21: this.chybaVytváření = chybaVytváření; franta-hg@21: this.chybaDělání = chybaDělání; franta-hg@21: this.chybaZavírání = chybaZavírání; franta-hg@21: franta-hg@21: if (this.chybaVytváření) { franta-hg@21: throw new ChybaVytváření(this); franta-hg@21: } franta-hg@21: } franta-hg@21: franta-hg@21: public void něcoDělej() throws ChybaDělání { franta-hg@21: System.err.println("Něco děláme: " + this + " chyba=" + chybaDělání); franta-hg@21: franta-hg@21: if (chybaDělání) { franta-hg@21: throw new ChybaDělání(this); franta-hg@21: } franta-hg@21: } franta-hg@21: franta-hg@21: @Override franta-hg@21: public void close() throws ChybaZavírání { franta-hg@21: System.err.println("Zavíráme: " + this + " chyba=" + chybaZavírání); franta-hg@21: franta-hg@21: if (chybaZavírání) { franta-hg@21: throw new ChybaZavírání(this); franta-hg@21: } franta-hg@21: } franta-hg@21: franta-hg@21: @Override franta-hg@21: protected void finalize() throws Throwable { franta-hg@25: try { franta-hg@25: System.err.println("Finalizujeme: " + this); franta-hg@25: } finally { franta-hg@25: super.finalize(); franta-hg@25: } franta-hg@21: } franta-hg@21: franta-hg@21: @Override franta-hg@21: public String toString() { franta-hg@21: return getClass().getSimpleName() + " [" + název + "]"; franta-hg@21: } franta-hg@21: franta-hg@21: }