001/* 002 * Licensed to DuraSpace under one or more contributor license agreements. 003 * See the NOTICE file distributed with this work for additional information 004 * regarding copyright ownership. 005 * 006 * DuraSpace licenses this file to you under the Apache License, 007 * Version 2.0 (the "License"); you may not use this file except in 008 * compliance with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.fcrepo.kernel.api.identifiers; 019 020import com.google.common.base.Converter; 021 022/** 023 * An {@link IdentifierConverter} accepts and returns identifiers, translating 024 * them in some type-specific manner. The typical use of this 025 * contract is for translating between internal and external identifiers. 026 * 027 * @author ajs6f 028 * @since Mar 26, 2014 029 * @param <B> the type to and from which we are translating 030 */ 031public abstract class IdentifierConverter<A, B> extends Converter<A, B> { 032 033 /** 034 * Check if the given resource is in the domain of this converter 035 * @param resource the given resource 036 * @return boolean value of the check 037 */ 038 public boolean inDomain(final A resource) { 039 return convert(resource) != null; 040 } 041 042 /** 043 * Convert a plain string to a resource appropriate to this converter 044 * @param resource the plain string resource 045 * @return the resource appropriate to this converter 046 */ 047 abstract public A toDomain(final String resource); 048 049 /** 050 * Convert the given resource into a plain string representation of the conversion to the resource 051 * @param resource the given resource 052 * @return a plain string representation of the conversion to the resource 053 */ 054 abstract public String asString(final A resource); 055}