Project

General

Profile

Download (1.51 KB) Statistics
| Branch: | Tag: | Revision:
1 db6e8702 Andreas Müller
/**
2
 * Copyright (C) 2015 EDIT
3
 * European Distributed Institute of Taxonomy
4
 * http://www.e-taxonomy.eu
5
 *
6
 * The contents of this file are subject to the Mozilla Public License Version 1.1
7
 * See LICENSE.TXT at the top of this package for the full license terms.
8
 */
9 e26a406b Andreas Kohlbecker
package eu.etaxonomy.cdm.cache;
10
11
import eu.etaxonomy.cdm.model.common.CdmBase;
12
13 c5eb9820 Andreas Müller
public class CdmEntityCacheKey<T extends CdmBase> {
14 e26a406b Andreas Kohlbecker
15 c5eb9820 Andreas Müller
	private Class<T> persistenceClass;
16 db6e8702 Andreas Müller
	private int persistenceId;   //see #7709 for why we use id, not uuid
17 c5eb9820 Andreas Müller
18
	public CdmEntityCacheKey(T cdmBase) {
19
		this.persistenceClass = (Class<T>)cdmBase.getClass();
20 3c5c2395 Andreas Müller
		this.persistenceId = cdmBase.getId();
21 e26a406b Andreas Kohlbecker
	}
22 c5eb9820 Andreas Müller
23 3c5c2395 Andreas Müller
	public CdmEntityCacheKey(Class<T> clazz, int id) {
24 e26a406b Andreas Kohlbecker
		this.persistenceClass = clazz;
25 3c5c2395 Andreas Müller
		this.persistenceId = id;
26 e26a406b Andreas Kohlbecker
	}
27
28 c5eb9820 Andreas Müller
	public Class<? extends T> getPersistenceClass() {
29 e26a406b Andreas Kohlbecker
		return persistenceClass;
30
	}
31 c5eb9820 Andreas Müller
32 3c5c2395 Andreas Müller
	public int getPersistenceId() {
33 e26a406b Andreas Kohlbecker
		return persistenceId;
34
	}
35 db6e8702 Andreas Müller
36 e26a406b Andreas Kohlbecker
	@Override
37
	public boolean equals(Object obj) {
38
		if(obj == null || !(obj instanceof CdmEntityCacheKey)) {
39
			return false;
40
		}
41
		if(this == obj) {
42
			return true;
43
		}
44 67ff6af5 Andreas Müller
		CdmEntityCacheKey<?> that = (CdmEntityCacheKey<?>) obj;
45
		if(this.persistenceClass.equals(that.persistenceClass)
46 3c5c2395 Andreas Müller
		        && this.persistenceId == that.persistenceId) {
47 e26a406b Andreas Kohlbecker
			return true;
48
		}
49
		return false;
50
	}
51 c5eb9820 Andreas Müller
52 e26a406b Andreas Kohlbecker
	@Override
53
	public int hashCode() {
54 3c5c2395 Andreas Müller
		return (this.persistenceClass.getName() + String.valueOf(this.persistenceId)).hashCode();
55 e26a406b Andreas Kohlbecker
	}
56 c5eb9820 Andreas Müller
57 e26a406b Andreas Kohlbecker
	@Override
58
	public String toString() {
59 db6e8702 Andreas Müller
		return this.persistenceClass.getName() +":" + String.valueOf(this.persistenceId);
60 e26a406b Andreas Kohlbecker
	}
61
62
}