/* * This file is part of the OSMembrane project. * More informations under www.osmembrane.de * * The project is licensed under the GNU GENERAL PUBLIC LICENSE 3.0. * for more details about the license see http://www.osmembrane.de/license/ * * Source: $HeadURL$ ($Revision$) * Last changed: $Date$ */ package de.osmembrane.model; import java.util.Random; /* not yet used! */ /** * Comparator for two classes, without checking the real contents. * * @author jakob_jarosch. */ public abstract class ObjectSignature { /** * Length of the signature String. */ private static final int SIGNATURE_LENGTH = 32; /** * Allowed chars in the signature String. */ private static final char[] SIGNATURE_CHARS = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; /** * The signature itself. */ private String signature = null; /** * Returns the signature. * * @return signature as String */ public String getSignature() { if (signature == null) { signature = createSignature(); } return signature; } /** * equals-operation for signature-objects */ @Override public boolean equals(Object obj) { if (this.getClass() == obj.getClass() && obj instanceof ObjectSignature) { ObjectSignature sigObj = (ObjectSignature) obj; if (sigObj.getSignature() == getSignature()) { return true; } } return false; } /** * Changes the signature (e.g. after copy the object). */ protected void changeSignature() { signature = createSignature(); } /** * Internal creator for the signature. * * @return signature String */ private String createSignature() { StringBuilder sb = new StringBuilder(); Random randomizer = new Random(); for (int i = 0; i < SIGNATURE_LENGTH; i++) { sb.append(SIGNATURE_CHARS[randomizer .nextInt(SIGNATURE_CHARS.length)]); } return sb.toString(); } }