1 /*
2 * Copyright (c) 2021-2023. Roland T. Lichti, Kaiserpfalz EDV-Service.
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 */
17
18 package de.kaiserpfalzedv.commons.api.store;
19
20 import de.kaiserpfalzedv.commons.api.BaseSystemException;
21
22 /**
23 * OptimisticLockStoreException -- The data has been changed.
24 * <p>
25 * If the generation does not match (a newer generation is already in data store) then this exception is thrown.
26 *
27 * @author klenkes74 {@literal <rlichti@kaiserpfalz-edv.de>}
28 * @since 2.0.0 2021-05-24
29 */
30 public class OptimisticLockStoreException extends BaseSystemException {
31 private final long storedGeneration;
32 private final long saveGeneration;
33
34 /**
35 * @param storedGeneration the generation already in store.
36 * @param saveGeneration the generation to save.
37 * @since 2.0.0 2021-05-24
38 */
39 public OptimisticLockStoreException(final long storedGeneration, final long saveGeneration) {
40 super(String.format("Tried to save generation '%d'. But generation '%d' already in store.",
41 saveGeneration, storedGeneration));
42
43 this.storedGeneration = storedGeneration;
44 this.saveGeneration = saveGeneration;
45 }
46
47 /**
48 * @return the generation stored in the data store.
49 */
50 public long getStoredGeneration() {
51 return this.storedGeneration;
52 }
53
54 /**
55 * @return the generation that should be saved.
56 */
57 public long getSaveGeneration() {
58 return this.saveGeneration;
59 }
60 }